ఈ పోస్ట్లో మేము గది ఉష్ణోగ్రత మరియు బాహ్య పరిసర ఉష్ణోగ్రతను పర్యవేక్షించగల ఆర్డునో ఆధారిత వైర్లెస్ థర్మామీటర్ను నిర్మించబోతున్నాము. డేటా 433 MHz RF లింక్ ద్వారా ప్రసారం చేయబడుతుంది మరియు స్వీకరించబడుతుంది.
433MHz RF మాడ్యూల్ మరియు DHT11 సెన్సార్ ఉపయోగించి
ప్రతిపాదిత ప్రాజెక్ట్ ఆర్డునోను మెదడుగా మరియు హృదయాన్ని ఉపయోగిస్తుంది 433 MHz ట్రాన్స్మిటర్ / రిసీవర్ మాడ్యూల్ .
ఈ ప్రాజెక్ట్ రెండు వేర్వేరు సర్క్యూట్లుగా విభజించబడింది, ఒకటి 433 MHz రిసీవర్, LCD డిస్ప్లే మరియు DHT11 సెన్సార్, ఇది గది లోపల మరియు గది ఉష్ణోగ్రతను కొలుస్తుంది .
మరొక సర్క్యూట్లో 433MHz ట్రాన్స్మిటర్ ఉంది, DHT11 సెన్సార్ పరిసర ఉష్ణోగ్రత వెలుపల కొలిచేందుకు. సర్క్యూట్లో ఒక్కొక్కటి ఒక్కొక్కటి ఉన్నాయి.
గది లోపల ఉంచిన సర్క్యూట్ LCD లో అంతర్గత మరియు బాహ్య ఉష్ణోగ్రత రీడింగులను ప్రదర్శిస్తుంది.
ఇప్పుడు 433 MHz ట్రాన్స్మిటర్ / రిసీవర్ మాడ్యూల్ చూద్దాం.
ట్రాన్స్మిటర్ మరియు రిసీవర్ మాడ్యూల్స్ సింప్లెక్స్ కమ్యూనికేషన్ (ఒక మార్గం) సామర్థ్యాన్ని కలిగి ఉంటాయి. రిసీవర్లో 4 పిన్స్ Vcc, GND మరియు DATA పిన్లు ఉన్నాయి. రెండు DATA పిన్లు ఉన్నాయి, అవి ఒకేలా ఉన్నాయి మరియు మేము రెండు పిన్ల నుండి డేటాను అవుట్పుట్ చేయవచ్చు.
ట్రాన్స్మిటర్ చాలా సరళమైనది, దీనికి కేవలం Vcc, GND మరియు DATA ఇన్పుట్ పిన్ ఉన్నాయి. వ్యాసం చివరలో వివరించబడిన రెండు మాడ్యూళ్ళకు మేము యాంటెన్నాను కనెక్ట్ చేయాలి, వాటి మధ్య యాంటెన్నా కమ్యూనికేషన్ లేకుండా కొన్ని అంగుళాలకు మించి స్థాపించబడదు.
ఇప్పుడు ఈ గుణకాలు ఎలా కమ్యూనికేట్ అవుతాయో చూద్దాం.
ఇప్పుడు మేము ట్రాన్స్మిటర్ యొక్క డేటా ఇన్పుట్ పిన్కు 100Hz యొక్క క్లాక్ పల్స్ను ఉపయోగిస్తున్నామని అనుకోండి. రిసీవర్ యొక్క డేటా పిన్ వద్ద రిసీవర్ సిగ్నల్ యొక్క ఖచ్చితమైన ప్రతిరూపాన్ని అందుకుంటుంది.
ఇది చాలా సరైనదేనా? అవును… కానీ ఈ మాడ్యూల్ AM లో పనిచేస్తుంది మరియు శబ్దానికి లోనవుతుంది. ట్రాన్స్మిటర్ యొక్క డేటా పిన్ 250 మిల్లీసెకన్ల కంటే ఎక్కువ సిగ్నల్ లేకుండా మిగిలి ఉంటే రచయిత యొక్క పరిశీలన నుండి, రిసీవర్ డేటా అవుట్పుట్ పిన్ యాదృచ్ఛిక సంకేతాలను ఉత్పత్తి చేస్తుంది.
కాబట్టి, ఇది నాన్-క్రిటికల్ డేటా ట్రాన్స్మిషన్లకు మాత్రమే అనుకూలంగా ఉంటుంది. అయితే ఈ ప్రాజెక్ట్ ఈ మాడ్యూల్తో బాగా పనిచేస్తుంది.
ఇప్పుడు స్కీమాటిక్స్ వైపు వెళ్దాం.
స్వీకర్త:
పై సర్క్యూట్ arduino నుండి LCD డిస్ప్లే కనెక్షన్. ఎల్సిడి డిస్ప్లేకు విరుద్ధంగా సర్దుబాటు చేయడానికి 10 కె పొటెన్టోమీటర్ అందించబడుతుంది.
పైన పేర్కొన్నది రిసీవర్ సర్క్యూట్. ఎల్సిడి డిస్ప్లేను ఈ ఆర్డునోతో అనుసంధానించాలి.
కోడ్ను కంపైల్ చేయడానికి ముందు దయచేసి క్రింది లైబ్రరీ ఫైల్లను డౌన్లోడ్ చేయండి
రేడియో హెడ్: github.com/PaulStoffregen/RadioHead
DHT సెన్సార్ లైబ్రరీ: https://arduino-info.wikispaces.com/file/detail/DHT-lib.zip
స్వీకర్త కోసం ప్రోగ్రామ్:
//--------Program Developed by R.Girish-----//
#include
#include
#include
#include
#define DHTxxPIN A0
LiquidCrystal lcd(12,11,5,4,3,2)
RH_ASK driver(2000, 7, 9, 10)
int ack = 0
dht DHT
void setup()
{
Serial.begin(9600)
lcd.begin(16,2)
if (!driver.init())
Serial.println('init failed')
}
void loop()
{
ack = 0
int chk = DHT.read11(DHTxxPIN)
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack = 1
lcd.setCursor(0,0)
lcd.print('INSIDE:')
lcd.print('NO DATA')
delay(1000)
break
}
if(ack == 0)
{
lcd.setCursor(0,0)
lcd.print('INSIDE:')
lcd.print(DHT.temperature)
lcd.print(' C')
delay(2000)
}
uint8_t buf[RH_ASK_MAX_MESSAGE_LEN]
uint8_t buflen = sizeof(buf)
if (driver.recv(buf, &buflen))
{
int i
String str = ''
for(i = 0 i
str += (char)buf[i]
}
lcd.setCursor(0,1)
lcd.print('OUTSIDE:')
lcd.print(str)
Serial.println(str)
delay(2000)
}
}
//--------Program Developed by R.Girish-----//
ట్రాన్స్మిటర్:
పైన పేర్కొన్నది ట్రాన్స్మిటర్ యొక్క స్కీమాటిక్, ఇది రిసీవర్ వలె చాలా సులభం. ఇక్కడ మేము మరొక arduino బోర్డుని ఉపయోగిస్తున్నాము. DHT11 సెన్సార్ పరిసర ఉష్ణోగ్రత వెలుపల గ్రహించి రిసీవర్ మాడ్యూల్కు తిరిగి పంపుతుంది.
ట్రాన్స్మిటర్ మరియు రిసీవర్ మధ్య దూరం 10 మీటర్లకు మించకూడదు. వాటి మధ్య ఏమైనా అడ్డంకులు ఉంటే, ప్రసార పరిధి తగ్గుతుంది.
ట్రాన్స్మిటర్ కోసం ప్రోగ్రామ్:
//------Program Developed by R.Girish----//
#include
#include
#define DHTxxPIN A0
#include
int ack = 0
RH_ASK driver(2000, 9, 2, 10)
dht DHT
void setup()
{
Serial.begin(9600)
if (!driver.init())
Serial.println('init failed')
}
void loop()
{
ack = 0
int chk = DHT.read11(DHTxxPIN)
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack = 1
const char *temp = 'NO DATA'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
break
}
if(ack == 0)
{
if(DHT.temperature == 15)
{
const char *temp = '15.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 16)
{
const char *temp = '16.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 17)
{
const char *temp = '17.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 18)
{
const char *temp = '18.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 19)
{
const char *temp = '19.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 20)
{
const char *temp = '20.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 21)
{
const char *temp = '21.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 22)
{
const char *temp = '22.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 23)
{
const char *temp = '23.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 24)
{
const char *temp = '24.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 25)
{
const char *temp = '25.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 26)
{
const char *temp = '26.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 27)
{
const char *temp = '27.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 28)
{
const char *temp = '28.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 29)
{
const char *temp = '29.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 30)
{
const char *temp = '30.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 31)
{
const char *temp = '31.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 32)
{
const char *temp = '32.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 33)
{
const char *temp = '33.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 34)
{
const char *temp = '34.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 35)
{
const char *temp = '35.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 36)
{
const char *temp = '36.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 37)
{
const char *temp = '37.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 38)
{
const char *temp = '38.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 39)
{
const char *temp = '39.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 40)
{
const char *temp = '40.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 41)
{
const char *temp = '41.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 42)
{
const char *temp = '42.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 43)
{
const char *temp = '43.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 44)
{
const char *temp = '44.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
delay(500)
if(DHT.temperature == 45)
{
const char *temp = '45.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 46)
{
const char *temp = '46.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 47)
{
const char *temp = '47.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 48)
{
const char *temp = '48.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 49)
{
const char *temp = '49.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
if(DHT.temperature == 50)
{
const char *temp = '50.00 C'
driver.send((uint8_t *)temp, strlen(temp))
driver.waitPacketSent()
}
delay(500)
}
}
//------Program Developed by R.Girish----//
యాంటెన్నా నిర్మాణం:
మీరు దీన్ని ఉపయోగించి ప్రాజెక్టులను నిర్మిస్తుంటే 433 MHz గుణకాలు , మంచి పరిధి కోసం కింది నిర్మాణ వివరాలను ఖచ్చితంగా అనుసరించండి.
ఈ నిర్మాణానికి మద్దతు ఇచ్చేంత గట్టిగా ఉండే సింగిల్ కోర్ వైర్ను ఉపయోగించండి. టంకము చేరడానికి దిగువన తొలగించబడిన ఇన్సులేషన్తో మీరు ఇన్సులేటెడ్ రాగి తీగను కూడా ఉపయోగించవచ్చు. వీటిలో రెండింటిని తయారు చేయండి, ఒకటి ట్రాన్స్మిటర్ మరియు మరొకటి రిసీవర్ కోసం.
ఆర్డునో మరియు 433 MHz RF లింక్ను ఉపయోగించి రచయిత యొక్క వైర్లెస్ థర్మామీటర్ ప్రోటోటైప్:
మునుపటి: నీటి స్థాయి నియంత్రిక కోసం తుప్పు నిరోధక ప్రోబ్స్ తర్వాత: ఎల్ 293 క్వాడ్ హాఫ్-హెచ్ డ్రైవర్ ఐసి పినౌట్, డేటాషీట్, అప్లికేషన్ సర్క్యూట్