מדחום אלחוטי באמצעות קישור RF 433 מגה-הרץ באמצעות ארדואינו

נסה את הכלי שלנו לביטול בעיות





בהודעה זו אנו הולכים לבנות מדחום אלחוטי מבוסס Arduino שיכול לפקח על טמפרטורת החדר וטמפרטורת הסביבה החיצונית. הנתונים מועברים ומתקבלים דרך קישור RF 433 מגה-הרץ.

באמצעות מודול RF 433MHz וחיישן DHT11

הפרויקט המוצע משתמש בארדואינו כמוח ובלב כמוח משדר / מקלט 433 מגהרץ .



הפרויקט מחולק לשני מעגלים נפרדים, זה עם מקלט 433 מגהרץ, תצוגת LCD וחיישן DHT11 שיוצבו בתוך החדר וגם מודד את טמפרטורת החדר .

במעגל אחר יש משדר 433 מגה-הרץ, חיישן DHT11 למדידת טמפרטורת הסביבה החיצונית. בשני המעגלים יש ארדואינו אחד לכל אחד.



המעגל הממוקם בתוך החדר יציג את קריאות הטמפרטורה הפנימיות והחיצוניות על גבי LCD.

עכשיו בואו נסתכל על משדר / מקלט 433 מגה הרץ.

משדר / מקלט 433 מגהרץ.

מודולי המשדר והמקלט מוצגים לעיל והוא מסוגל לתקשורת סימפלקס (כיוון אחד). למקלט 4 פינים מסוג Vcc, GND ו- DATA. ישנם שני סיכות DATA, הם זהים ואנחנו יכולים להפיק את הנתונים משני הפינים.

המשדר הוא הרבה יותר פשוט שיש לו רק סיכות קלט Vcc, GND ו- DATA. עלינו לחבר אנטנה לשני המודולים המתואר בסוף המאמר, ללא תקשורת אנטנה ביניהם לא תיווצר מעבר לסנטימטרים ספורים.

עכשיו בואו נראה איך המודולים האלה מתקשרים.

כעת נניח שאנו מפעילים דופק שעון של 100 הרץ על סיכת קלט הנתונים של המשדר. המקלט יקבל העתק מדויק של האות בסיכת הנתונים של המקלט.

זה פשוט נכון? כן ... אבל המודול הזה עובד על AM ורגיש לרעש. מהתצפית של המחבר אם סיכת הנתונים של המשדר נותרה ללא כל אות במשך יותר מ -250 אלפיות השנייה, סיכת פלט נתוני המקלט מייצרת אותות אקראיים.

לכן, הוא מתאים רק להעברת נתונים שאינם קריטיים. עם זאת פרויקט זה עובד טוב מאוד עם מודול זה.

עכשיו בואו נעבור לסכימות.

מַקְלֵט:


חיבור תצוגת LCD ל arduino. פוטנציומטר 10K

המעגל הנ'ל הוא חיבור לתצוגת LCD של ארדואינו. פוטנציומטר 10K מסופק להתאמת הניגודיות של תצוגת LCD.

מדחום אלחוטי באמצעות קישור RF 433 מגה הרץ וארדואינו

האמור לעיל הוא מעגל המקלט. יש לחבר את תצוגת ה- LCD לארדואינו זה.

אנא הורד את קבצי הספרייה הבאים לפני הידור הקוד

ראש רדיו: 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-----//

מַשׁדֵר:

משדר מדחום אלחוטי

האמור לעיל הוא סכמטי המשדר, שהוא פשוט למדי כמקלט. כאן אנו משתמשים בלוח ארדואינו אחר. חיישן 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 מגה-הרץ מודולים , עקוב אחר פרטי הבנייה להלן אך ורק לטווח טוב.

אנטנת RF 433 מגה-הרץ

השתמש בחוט ליבה יחיד שאמור להיות יציב מספיק כדי לתמוך במבנה זה. אתה יכול גם להשתמש בחוט נחושת מבודד עם בידוד שהוסר בתחתית לחיבור הלחמה. הכינו שניים כאלה, אחד למשדר ואחד למקלט.

אב טיפוס של מדחום אלחוטי של המחבר באמצעות ארדואינו וקישור RF 433 מגה-הרץ:

אב טיפוס מדחום אלחוטי באמצעות קישור RF 433 מגה-הרץ וארדואינו


קודם: בדיקות נגד קורוזיה לבקר מפלס מים הבא: L293 Quad Half-H Driver Pin Pinout, גליון נתונים, מעגל יישום