वायरलेस थर्मामीटर Arduino का उपयोग कर 433 मेगाहर्ट्ज आरएफ लिंक का उपयोग कर

समस्याओं को खत्म करने के लिए हमारे साधन का प्रयास करें





इस पोस्ट में हम एक Arduino आधारित वायरलेस थर्मामीटर का निर्माण करने जा रहे हैं जो कमरे के तापमान और बाहरी परिवेश के तापमान की निगरानी कर सकता है। डेटा 433 मेगाहर्ट्ज आरएफ लिंक के माध्यम से प्रेषित और प्राप्त किया जाता है।

433MHz आरएफ मॉड्यूल और DHT11 सेंसर का उपयोग करना

प्रस्तावित परियोजना Arduino को मस्तिष्क और हृदय के रूप में उपयोग करती है 433 मेगाहर्ट्ज ट्रांसमीटर / रिसीवर मॉड्यूल ।



इस परियोजना को दो अलग-अलग सर्किटों में विभाजित किया गया है, 433 मेगाहर्ट्ज रिसीवर, एलसीडी डिस्प्ले और DHT11 सेंसर के साथ कमरे के तापमान को मापता है ।

एक अन्य सर्किट में 433MHz ट्रांसमीटर है, DHT11 सेंसर परिवेश के तापमान को मापने के लिए। दोनों सर्किट में एक-एक आर्डिनो है।



कमरे के अंदर रखा सर्किट एलसीडी पर आंतरिक और बाहरी तापमान रीडिंग प्रदर्शित करेगा।

अब 433 मेगाहर्ट्ज ट्रांसमीटर / रिसीवर मॉड्यूल पर एक नजर डालते हैं।

433 मेगाहर्ट्ज ट्रांसमीटर / रिसीवर मॉड्यूल।

ट्रांसमीटर और रिसीवर मॉड्यूल ऊपर दिखाए गए हैं यह सरल संचार (एक तरह से) में सक्षम है। रिसीवर में 4 पिन Vcc, GND और DATA पिन हैं। दो DATA पिन हैं, वे समान हैं और हम दो पिनों में से डेटा को आउटपुट कर सकते हैं।

ट्रांसमीटर बहुत सरल है इसमें सिर्फ Vcc, GND और DATA इनपुट पिन है। हमें ऐन्टेना को दोनों मॉड्यूल से जोड़ना होगा जो कि लेख के अंत में वर्णित है, बिना ऐन्टेना संचार के कुछ इंच से आगे स्थापित नहीं किया जाएगा।

अब देखते हैं कि ये मॉड्यूल कैसे संवाद करते हैं।

अब मान लें कि हम ट्रांसमीटर के डेटा इनपुट पिन पर 100Hz की घड़ी पल्स लगा रहे हैं। रिसीवर को रिसीवर के डेटा पिन पर सिग्नल की सटीक प्रतिकृति प्राप्त होगी।

यह सरल अधिकार है? हाँ ... लेकिन यह मॉड्यूल AM पर काम करता है और शोर के लिए अतिसंवेदनशील है। लेखक के अवलोकन से यदि ट्रांसमीटर का डेटा पिन 250 मिलीसेकंड से अधिक सिग्नल के बिना छोड़ा गया है, तो रिसीवर डेटा आउटपुट पिन यादृच्छिक सिग्नल उत्पन्न करता है।

तो, यह केवल गैर-महत्वपूर्ण डेटा प्रसारण के लिए उपयुक्त है। हालाँकि यह प्रोजेक्ट इस मॉड्यूल के साथ बहुत अच्छा काम करता है।

अब 'schematics' पर चलते हैं।

RECEIVER:


एलसीडी डिस्प्ले कनेक्शन के लिए arduino। 10K पोटेंशियोमीटर

उपरोक्त सर्किट एलसीडी डिस्प्ले कनेक्शन के लिए arduino है। एलसीडी डिस्प्ले के विपरीत समायोजन के लिए 10K पोटेंशियोमीटर प्रदान किया गया है।

433 मेगाहर्ट्ज आरएफ लिंक और Arduino का उपयोग कर वायरलेस थर्मामीटर

ऊपर रिसीवर सर्किट है। एलसीडी डिस्प्ले को इस आर्डिनो से जोड़ा जाना चाहिए।

कोड संकलित करने से पहले कृपया निम्न लाइब्रेरी फ़ाइलों को डाउनलोड करें

रेडियो हेड: github.com/PaulStoffregen/RadioHead

DHT सेंसर लाइब्रेरी: https://arduino-info.wikispaces.com/file/detail/DHT-live.ip

रिसीवर के लिए कार्यक्रम:

//--------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-----//

ट्रांसमीटर:

वायरलेस थर्मामीटर ट्रांसमीटर

ऊपर ट्रांसमीटर के लिए योजनाबद्ध है, जो रिसीवर के रूप में काफी सरल है। यहां हम एक और आर्डिनो बोर्ड का उपयोग कर रहे हैं। 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 मेगाहर्ट्ज मॉड्यूल , अच्छी श्रेणी के लिए नीचे दिए गए रचनात्मक विवरणों का सख्ती से पालन करें।

433 मेगाहर्ट्ज आरएफ एंटीना

एकल कोर तार का उपयोग करें जो इस संरचना का समर्थन करने के लिए पर्याप्त मजबूत होना चाहिए। आप सोल्डर जॉइन के लिए नीचे इंसुलेशन के साथ इंसुलेटेड कॉपर वायर का भी इस्तेमाल कर सकते हैं। इनमें से दो बनाएं, एक ट्रांसमीटर के लिए और दूसरा रिसीवर के लिए।

Arduino और 433 MHz RF लिंक का उपयोग करते हुए लेखक का वायरलेस थर्मामीटर प्रोटोटाइप:

433 मेगाहर्ट्ज आरएफ लिंक और Arduino का उपयोग कर वायरलेस थर्मामीटर प्रोटोटाइप


की एक जोड़ी: जल स्तर नियंत्रक के लिए भ्रष्टाचार निरोधक जांच अगला: L293 क्वाड हाफ-एच ड्राइवर आईसी पिनआउट, डेटाशीट, एप्लीकेशन सर्किट