» אלקטרוניקה » ארדואינו »תחנת מזג אוויר ביתית מבוססת על ארדואינו

תחנת מזג אוויר ביתית מבוססת על ארדואינו


הרבה זמן רציתי להקים תחנת מזג אוויר מיני, נמאס להסתכל מהחלון להביט מדחום שמאחורי הזכוכית. מכשיר זה יחליף את מדדי לחות, ברומטר ומדחום וגם יציג את השעה הנוכחית. בפוסט זה אספר לכם כיצד להרכיב במהירות ובקלות תחנת מזג אוויר קטנה המבוססת על ארדואינו. הבסיס יהיה הלוח ארדואינו ננו יכולה להשתמש בלוחות אחרים - Arduino Uno, Arduino Pro mini). אנו נקבל נתוני לחץ וטמפרטורה אטמוספריים מחיישן BMP180, ולחות וטמפרטורת חוץ מחיישן DHT11. שעון ה- DS1302 בזמן אמת יציין את השעה הנוכחית. כל המידע מוצג בתצוגה LCD1602 דו-קוית.

ה- DHT11 מעביר מידע על חוט בודד לארדואינו. הוא מופעל על ידי מתח של 5 V. הוא מודד לחות בטווח שבין 20 ל- 80%. מודד טמפרטורה בטווח 0 עד 50בערךג.

תחנת מזג אוויר ביתית מבוססת על ארדואינו

חיישן BMP180 מודד לחץ אטמוספרי בטווח 300-1100 hPa, טמפרטורה בטווח של -40 +85בערךC. מתח האספקה ​​הוא 3.3 V. הוא מחובר באמצעות פרוטוקול התקשורת I2C.

שעון ה- DS1302 בזמן אמת מופעל על ידי 5 וולט ומחובר באמצעות פרוטוקול התקשורת I2C. כאשר הם מותקנים בחריץ המתאים, סוללות CR2032 תומכות בשעון כאשר הכוח העיקרי מכובה.

תצוגת LCD1602 מופעלת על ידי מתח של 5 וולט ומחובר גם באמצעות פרוטוקול התקשורת I2C.

זה תוצרת בית מיוצרים על בסיס לוחות וחיישנים מוכנים, כך שניתן לחזור על כך לכל חובב טירון לעבוד עם מגהץ. במקביל, אתה יכול לקבל את היסודות של תכנות Arduino. תכנתי את תחנת מזג האוויר הזו בתוכנית התכנות החזותית FLPROG תוך 15 דקות. אין צורך לשרטט ידנית במשך שעות, תוכנית זו מסייעת למתחילים (ולא רק) ללמוד במהירות את היסודות של מכשירי תכנות המבוססים על פלטפורמת Arduino.

שמתעצל מכדי להתעסק בתוכנית - מערכון (רק יהיה צורך לקבוע את השעה הנוכחית של השעון):
# כלול 
# כלול את "DHT_NEW.h"
# כלול 
# כלול 
#include 
BMP085 _bmp085 = BMP085 ();
_bmp085P ארוך = 0;
ארוך _bmp085T = 0;
_bmp085A ארוך = 0;

LiquidCrystal_I2C _lcd1 (0x3f, 16, 2);
int _dispTempLength1 = 0;
בוליאני _isNeedClearDisp1;

DHT _dht1;

iarduino_RTC _RTC1 (RTC_DS1302, 7, 5, 6);

לא חתום ארוך _dht1LRT = 0UL;
לא חתום ארוך _dht1Tti = 0UL;
int _disp1oldLength = 0;
לא חתום ארוך _bmp0852Tti = 0UL;
מחרוזת _RTC1_GetTime2_StrOut;
int _disp2oldLength = 0;
הגדרת ביטול ()
{
Wire.begin ();
עיכוב (10);
_bmp085.init (MODE_ULTRA_HIGHRES, 116, נכון);
_RTC1.begin ();
_RTC1. תקופה (1);
_lcd1.init ();
_lcd1.backlight ();
_dht1. Setup (4);
_dht1LRT = מיליס ();
_dht1Tti = מיליס ();
}
לולאה חלילה ()
{if (_isNeedClearDisp1) {_lcd1.clear (); _isNeedClearDisp1 = 0;}
אם (_isTimer (_bmp0852Tti, 1000)) {
_bmp0852Tti = מיליס ();
_bmp085.getAltitude (& _ bmp085A);
_bmp085.getPressure (& _ bmp085P);
_bmp085.getTemperature (& _ bmp085T);
}

// עמלה: 1
אם (1) {
_dispTempLength1 = ((((((((מחרוזת ("T:")) + ((_floatToStringWitRaz ((_ bmp085T) / (10.00), 1))) + (מחרוזת ("*")))) + (((מחרוזת () "P:")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3), 0))) + (מחרוזת ("*"))) + (((מחרוזת ("")) + ((_floatToStringWitRaz (_dht1 . לחות, 0))) + (מחרוזת ("%"))))). אורך ();
if (_disp1oldLength> _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor (int ((16 - _dispTempLength1) / 2), 0);
_lcd1.print (((((((מחרוזת ("T:")) + ((_floatToStringWitRaz ((_ bmp085T) / (10.00), 1))) + (מחרוזת ("*")))) + (((מחרוזת) ("P:")) + ((_floatToStringWitRaz ((_ bmp085P) / (133.3), 0))) + (מחרוזת ("*")))) + (((מחרוזת ("")) + ((_floatToStringWitRaz () _dht1. לחות, 0))) + (מחרוזת ("%")))));
} אחרת {
if (_disp1oldLength> 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}
אם (_isTimer (_dht1Tti, 2000)) {
אם (_isTimer (_dht1LRT, (_dht1.getMinimumSamplingPeriod ()))) {
_dht1.readSensor ();
_dht1LRT = מיליס ();
_dht1Tti = מיליס ();
}
}
אם (1) {
_dispTempLength1 = ((((((((מחרוזת ("t:")) + ((_floatToStringWitRaz (_dht1.temperature, 0))) + (מחרוזת ("*")))) + (_RTC1_GetTime2_StrOut)))) אורך () );
if (_disp2oldLength> _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor (int ((16 - _dispTempLength1) / 2), 1);
_lcd1.print (((((((מחרוזת ("t:"))) + ((_floatToStringWitRaz (_dht1.temperature, 0)))) + (מחרוזת ("*")))) + (_RTC1_GetTime2_StrOut))));
} אחרת {
if (_disp2oldLength> 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}
}
_RTC1_GetTime2_StrOut = _RTC1.gettime ("H: i: sD");

}
מחרוזת _floatToStringWitRaz (ערך ציפה, int raz)
{

מחרוזת להחזיר (ערך, raz);
}
bool _isTimer (זמן התחלה ארוך שאינו חתום, תקופה ארוכה שלא חתומה)
{
זמן לא ארוך חתום;
currentTime = מילי ();
אם (currentTime> = startTime) {return (currentTime> = (startTime + תקופה));} else {return (currentTime> = (4294967295-startTime + תקופה));}
}

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

ניתן לקבל את כל המידע על ידי צפייה בסרטון:


רשימת חומרים וכלים

מועצת ארדואינו ננו
תצוגת LCD1602 דו-קוית;
- שעון בזמן אמת DS1302;
- חיישן לחץ וטמפרטורה אטמוספרי BMP180;
- חיישן טמפרטורה ולחות DHT11;
- חסימת טעינה מהטלפון;
- כל דיור מתאים
פינצטה;
מספריים;
ברזל הלחמה;
קיימברידג ';
בוחן;
חוטי חיבור;
ארבעה חוטים לחיישן מרוחק.

צעד ראשון. ביצוע בניין לתחנת מזג אוויר

הרמתי קופסת פלסטיק מחנות Fix Price (סה"כ 17p). חלון חתוך מראש לתצוגה במכסה. ואז הוא חתך את המחיצות בקופסה באופן חלקי, עשה חורים למחבר ה- USB של לוח הארדואינו, הפתח לחיישן BMP180 חיישן ה- BMP180 ימוקם בחלק החיצוני של המארז כדי למנוע עודף חום ה תוספות בפנים. אחרי שציירתי את גוף המוצר הביתי מבפנים מכיוון שהפלסטיק שקוף. הקופסה נסגרת עם תפס ובתוכה כל האלמנטים משתלבים יפה.


שלב שני תרשים הרכבה של המכשיר.

ערכת תמונות


בשלב הבא עליכם לחבר את כל הלוחות והחיישנים של תחנת מזג האוויר בהתאם לתכנית. אנו עושים זאת באמצעות חוטי הרכבה עם המחברים המתאימים. לא יצרתי חיבור הלחמה, כך שבעתיד, כאשר מודול נכשל (או מסיבות אחרות), תוכלו להחליף אותו בקלות. על מחבר הבורג מחובר כבל חיישן DHT11 היוצא לרחוב. ניתן לספק כוח ממחבר ה- USB של לוח Arduino למחשב, או על ידי אספקת מתח של 7-12V לפינים VIN ו- GND.

ראשית, הרכבתי את המעגל מחוץ למארז ותכנתתי וניגיתי אותו בתכנית FLPROG.

תרשים חסימת תמונות בתוכנית FLPROG.

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

התמונה הושלמה

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

תודה לכולכם על תשומת הלב, אני מאחל לכם הצלחה ומזל טוב גם בחייכם וגם בעבודתכם!
9.2
8.2
8.5

הוסף תגובה

    • לחייךמחייךxaxaבסדרלא יודעיאהוnea
      בוסשריטהשוטהכןכן כןאגרסיביסודי
      סליחהריקודריקוד 2ריקוד 3סליחהעזרהמשקאות
      עצורחבריםטובטובשריקהלהתנדנדלשון
      עשןמוחא כפייםמשוגעלהכריזלזלזלdon-t_mentionלהוריד
      חוםלא מועילצחוק 1מדמפגשמסגדשלילי
      לא_יפופקורןלהענישלקרואלהפחידמפחידחיפוש
      מתגרהתודהזהלרמזאמניקחריףמסכים
      רעדבורהשחורblum3סומקלהתפארשעמום
      מצונזרהנאהסוד 2לאייםניצחוןיוsun_bespectacled
      שוקכבודחחחקדמהברוך הבאkrutoyya_za
      ya_dobryiעוזרne_huliganne_othodiפלומהאיסורקרוב

אנו ממליצים לך לקרוא:

תן אותו לסמארטפון ...