תוכן עניינים:
- שלב 1: צא לקניות
- שלב 2: התקנה ורקע
- שלב 3: החלק Arduino - ESP12
- שלב 4: בדיקת ה- ESP כלקוח פרוטוקול זמן פרוטוקול (NTP)
- שלב 5: בדיקת חיישן DHT22
- שלב 6: להרכיב את זה …
- שלב 7: צד השרת של הדברים
וִידֵאוֹ: חיישן טמפרטורה לרשת הביתית: 7 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:13
מה אתה צריך לדעת כדי לבצע את הפרויקט הזה:
אתה צריך לדעת על:- כמה מיומנויות אלקטרוניקה (הלחמה)
- לינוקס
- Arduino IDE
(יהיה עליך לעדכן לוחות נוספים ב- IDE:
- עדכון/תכנות לוח ESP באמצעות Arduino IDE.
(יש כמה הדרכות נחמדות באינטרנט)
ניתן לעשות זאת באמצעות Uno Arduino או באמצעות FTDI (מתאם USB לטורי).
השתמשתי ב- Uno שלי מכיוון שלא הייתה לי יציאה טורית במחשב האישי וגם לא היה לי FTDI
שלב 1: צא לקניות
מה תצטרך כדי שזה יקרה?
לחיישן הטמפרטורה והלחות הדיגיטלי:
- קרש לחם או חלופה כמו אב טיפוס PCB, הלחמה, ברזל הלחמה …
- קצת חוט
- שני קופצים
- נגד 10k אוהם
- ESP12F (דגמים אחרים עשויים לעבוד גם …)
- DHT22 (קצת יותר יקר מה- DHT11 אך מדויק יותר)
- 3 סוללות נטענות AA ומחזיק סוללות
- קופסת פלסטיק קטנה להכניס את הפרויקט שלך
- בשלב מאוחר יותר אני מתכוון להוסיף HT7333 עם שני קבלים של 10uF בין מארז הסוללות לבין ה- ESP
לייצב את מתח הכניסה (VCC) ל- 3.3V המומלץ אך גם להגן על ה- ESP מפני מתח יתר.
לחלק הרשת:
- רשת ה- WiFi הביתית שלך
לחלק השרת:
- כל מערכת מבוססת לינוקס (תמיד מופעלת!)
השתמשתי ב- Raspberry Pi (שבו אני משתמש גם כשרת עבור מצלמות ה- IP שלי בחוץ.)
מהדר gcc כדי לאסוף את קוד השרת שלך
- חבילת rrdtool לאחסון הנתונים וליצירת גרפים
- apache (או שרת אינטרנט אחר)
המחשב או המחשב הנייד האהוב עליך עם Arduino IDE עליו.
שלב 2: התקנה ורקע
בגרסה זו של WiFi מחובר - שלא לומר IOT - חיישן טמפרטורה ולחות השתמשתי ב- ESP12F, DHT22 ומחזיק סוללות 3 AA עם סוללות נטענות.
כל 20 דקות ה- ESP לוקח מדידה מה- DHT22 ושולח אותה לשרת (פטל פטל) באמצעות UDP ברשת ה- WiFi הביתית שלי. לאחר שליחת המדידות, ה- ESP נכנס לשינה עמוקה. המשמעות היא שרק השעון בזמן אמת של המודול נשאר מופעל, וכתוצאה מכך חיסכון בחשמל לא יאומן. במשך כ- 5 שניות, המודול דורש כ- 100mA, ואז במהלך 20 הדקות שינה ישנה רק 150uA.
לא רציתי להשתמש בשירות מבוסס אינטרנט מכיוון שיש לי את ה- Raspberry Pi שלי שבכל זאת תמיד פועל ובדרך זו היה לי העונג לכתוב גם את חלק השרת.
בשרת (Raspberry Pi שמריץ Raspbian) כתבתי מאזין UDP פשוט (שרת) המאחסן את הערכים ל- RRD פשוט. (מסד הנתונים של רובין עגול באמצעות RRDtool מאת טוביאס אוטיקר.)
היתרון של RRDtool הוא שאתה יוצר את מסד הנתונים שלך פעם אחת והגודל נשאר אותו הדבר. אחרת אתה לא צריך שרת מסד נתונים (כמו mySQLd) פועל ברקע. RRDtool נותן לך את הכלים ליצירת מסד הנתונים וליצור הגרפים.
השרת שלי יוצר את הגרפים באופן תקופתי ומציג הכל בדף http פשוט מאוד. אני יכול להתייעץ עם הקריאות שלי באמצעות דפדפן פשוט על ידי חיבור לשרת האינטרנט Apache2 ב- Raspberry Pi!
לבסוף, לא היה לי FTDI (USB to Serial) אז השתמשתי ב- UNO של Arduino. עליך לחבר את ה- TX וה- RX ואת ה- GND של ה- ESP וה- UNO. (אני יודע, האינסטינקט שלך עשוי להגיד לך לחצות את RX ו- TX … ניסה גם את זה, לא עובד.)
לא עשיתי המרה ברמה (UNO: High = 5V אבל ESP הוא בעצם מכשיר 3.3V … יש כמה FTDI נחמדים בשוק שאפשר אפילו לבחור את הרמה הגבוהה שלך להיות 5 או 3.3V.
המעגל שלי מופעל על ידי 3 סוללות נטענות AA - כך שלמעשה 3 X 1.2V. בשלב מאוחר יותר אני מתכוון לשים HT7333 בין ערכת הסוללות למעגל ליתר ביטחון; סוללות שהוטענו לאחרונה יכולות להיות בעלות יותר מ- 1.2V ויש להפעיל את ה- ESP עם מינימום. 3V ומקסימום. 3.6V. כמו כן אם אחליט - ברגע של חולשה - להכניס סוללות אלקליין (3 X 1.5V = 4.5V) ה- ESP שלי לא יטוגן!
שקלתי גם להשתמש בפאנל סולארי בגודל 10 ס"מ על 10 ס"מ, אבל זה פשוט לא היה שווה את הטרחה. על ידי ביצוע 3 מדידות לשעה (בעצם 3x 5 שניות @ 100mA מקסימום ושאר הזמן @ 100uA), אני מקווה להפעיל את המעגל שלי למשך שנה אחת על אותן סוללות נטענות.
שלב 3: החלק Arduino - ESP12
עשיתי את הפרויקט הזה בשלבים שונים.
ישנם מספר קישורים שעוזרים לך לייבא את ה- ESP12 (aka. ESP8266) לתוך ה- Arduino IDE. (הייתי צריך להשתמש בגרסה 2.3.0 במקום בגרסה האחרונה בגלל באג שאולי נפתר בינתיים …)
התחלתי בחיבור ה- ESP, מעל ה- UNO Arduino שלי (משמש רק כגשר בין המחשב שלי באמצעות USB למערך הסידורי) לממשק הטורי של ה- ESP. ישנם הוראות נפרדות המסבירות זאת.
בפרויקט שסיימתי השארתי את החוטים כדי להתחבר ל- Serial במקרה שאצטרך לפתור בעיות ב- RX
לאחר מכן עליך לחבר את ה- ESP12 שלך כדלקמן:
סיכות ESP…
GND UNO GND
RX UNO RX
TX UNO TX
EN VCC
GPIO15 GND
בהתחלה ניסיתי להפעיל את ה- ESP שלי מה 3.3V ב- UNO אבל מיהרתי להפעיל את ה- ESP שלי עם ספק כוח ספסל אבל אתה יכול להשתמש גם בסוללה שלך.
GPIO0 חיברתי את זה עם מגשר ל- GND כדי לאפשר מהבהב (= תכנות) ה- ESP.
בדיקה ראשונה: השאר את המגשר פתוח והפעל צג סדרתי ב- Arduino IDE (ב- 115200 baud!).
הפעל את מחזור ה- ESP, אתה אמור לראות כמה דמויות זבל ולאחר מכן הודעה כמו:
חברת Ai-Thinker Technology Co. בע"מ מוכנה
במצב זה, ה- ESP מתנהג קצת כמו מודם מיושן. עליך להשתמש בפקודות AT.
נסה את הפקודות הבאות:
ב-+RST
ושתי הפקודות הבאות
AT+CWMODE = 3
בסדר
AT+CWLAP
זה אמור לתת לך רשימה של כל רשתות ה- WiFi באזור.
אם זה עובד אתה מוכן לשלב הבא.
שלב 4: בדיקת ה- ESP כלקוח פרוטוקול זמן פרוטוקול (NTP)
ב- IDE של Arduino, תחת קובץ, דוגמאות, ESP8266WiFi, טען NTPClient.
יש צורך בשינויים קלים כדי לגרום לזה לעבוד; עליך להכניס את ה- SSID והסיסמה של רשת ה- WiFi שלך.
כעת הנח את המגשר, וקצר את GPIO0 ל- GND.
הפעל את מחזור ה- ESP והעלה את הסקיצה ל- ESP.
לאחר האוסף, ההעלאה ל- ESP צריכה להתחיל. הנורית הכחולה ב- ESP תהבהב במהירות בזמן הורדת הקוד.
שמתי לב שאני צריך לשחק קצת עם הפעלה מחדש של ה- IDE, הפעלה מחדש של ה- ESP לפני שההעלאה תפעל.
לפני שתתחיל לאסוף/להעלות את הסקיצה, הקפד לסגור את המסוף הטורי (= צג סדרתי) מכיוון שזה ימנע ממך לבצע את ההעלאה.
לאחר שההעלאה הצליחה, תוכל לפתוח מחדש את הצג הטורי כדי לראות את ה- ESP מפיק את הזמן מהאינטרנט ביעילות.
מצוין, תיכנת את ה- ESP שלך, התחברת ל- WiFi וקיבלת את הזמן מהאינטרנט.
השלב הבא נבדוק את DHT22.
שלב 5: בדיקת חיישן DHT22
כעת יש צורך בחיווט נוסף.
סיכות DHT … חבר את סיכה 1 (משמאל) של החיישן ל- VCC (3.3V)
חבר פין 2 ESP GPIO5 (DHTPIN בסקיצה)
חבר את סיכה 4 (מימין) של החיישן ל- GROUND
חבר נגד 10K מפין 2 (נתונים) לסיכה 1 (הספק) של החיישן.
בדומה למבחן NTP, לך מצא את סקיצת DHTtester, וצבט אותו באופן הבא:
#define DHTPIN 5 // בחרנו ב- GPIO5 להתחבר לחיישן#הגדר DHTTYPE DHT22 // מכיוון שאנו משתמשים ב- DHT22 אך קוד/ספרייה זה מתאים גם ל- DHT11
שוב, סגור את הצג הטורי, הפעל את מחזור ה- ESP והרכב והבהב את ה- ESP.
אם הכל הולך טוב אתה אמור לראות את המדידות מופיעות במסך הטורי.
אתה יכול לשחק קצת עם החיישן. אם תנשום עליו תראה את הלחות עולה.
אם יש לך מנורת שולחן (ללא LED), תוכל להאיר על החיישן כדי לחמם אותו מעט.
גדול! שני חלקים גדולים מהחיישן עובדים כעת.
בשלב הבא אעיר על הקוד הסופי.
שלב 6: להרכיב את זה …
שוב כמה חיווט נוסף … זה כדי להפוך את DeepSleep לאפשרי.
זכור, DeepSleep היא פונקציה מדהימה למכשירי IoT.
עם זאת, אם החיישן שלך קשור ל- DeepSleep, יתכן שיהיה קשה לתכנת מחדש את ה- ESP, כך שנוצר חיבור מגשר נוסף בין
GPIO16-RST.
כן זה חייב להיות GPIO16, כי זה ה- GPIO שמקושר להעיר את המכשיר כאשר השעון בזמן אמת יוצא לאחר DeepSleep!
בזמן שאתה בודק, אתה יכול להחליט לעשות DeepSleep של 15 שניות.
כאשר ניסיתי לבצע באגים, הייתי מעביר את המגשר ל- GPIO0 כדי שאוכל להבהב את התוכנית שלי.
לאחר השלמת ההורדה, הייתי מעביר את המגשר ל- GPIO16 כך ש- DeepSleep יעבוד.
הקוד ל- ESP נקרא TnHclient.c
עליך לשנות את ה- SSID, הסיסמה וכתובת ה- IP של השרת שלך.
ישנן שורות קוד נוספות בהן תוכל להשתמש כדי לפתור בעיות או לבדוק את ההתקנה שלך.
שלב 7: צד השרת של הדברים
זוהי אי הבנה נפוצה ש- UDP אינו אמין ו- TCP הוא …
זה פשוט טיפשי כמו להגיד שפטיש יותר שימושי ממברג. הם פשוט כלים מאוד שימושיים ולשניהם יש את השימושים שלהם.
אגב, ללא UDP האינטרנט לא היה עובד … DNS מבוסס על UDP.
אז בחרתי ב- UDP מכיוון שהוא קל מאוד, קל ומהיר.
אני נוטה לחשוב שה- WiFi שלי אמין מאוד ולכן הלקוח ישלח לכל היותר 3 מנות UDP אם ההכרה "בסדר!" אינו מתקבל.
קוד C עבור TnHserver נמצא בקובץ TnHServer.c.
ישנן מספר הערות בקוד המסבירות זאת.
נצטרך כמה כלים נוספים בשרת: rrdtool, apache ואולי tcpdump.
כדי להתקין rrdtool ב- Raspbian אתה יכול פשוט להתקין את החבילה כך: apt-get install rrdtool
אם אתה צריך לאתר באגים בתעבורת הרשת, tcpdump מביא שימושי להתקין tcpdump
הייתי צריך שרת אינטרנט בכדי להשתמש בדפדפן בכדי להתייעץ עם הגרפים: apt-get install apache2
השתמשתי בכלי זה: https://rrdwizard.appspot.com/index.php כדי לקבל את הפקודה ליצירת מסד הנתונים של רובין עגול. אתה רק צריך להפעיל את זה פעם אחת (אם אתה מקבל את זה נכון בפעם הראשונה).
rrdtool צור TnHdatabase.rrd-התחל עכשיו -10
-שלב '1200'
'DS: טמפרטורה: מד: 1200: -20.5: 45.5'
'DS: לחות: מד: 1200: 0: 100.0'
'RRA: ממוצע: 0.5: 1: 720'
'RRA: ממוצע: 0.5: 3: 960'
'RRA: ממוצע: 0.5: 18: 1600'
לבסוף, אני משתמש בערך crontab כדי להפעיל מחדש את TnHserver שלי כל יום בחצות. אני מפעיל את TnHserver כמשתמש רגיל (כלומר, לא שורש) כאמצעי אבטחה.
0 0 * * */usr/bin/pkill TnHserver; /home/user/bin/TnHserver>/dev/null 2> & 1
אתה יכול לבדוק שה- TnHserver פועל על ידי ביצוע
$ ps -elf | grep TnHserver
ואתה יכול לוודא שהוא מקשיב למנות ביציאה 7777 על ידי ביצוע
$ netstat -anu
חיבורי אינטרנט פעילים (שרתים ומבוססים)
Proto Recv-Q Send-Q כתובת מקומית כתובת חוץ מדינה
udp 0 0 0.0.0.0:7777 0.0.0.0::*
לבסוף CreateTnH_Graphs.sh.txt הוא סקריפט לדוגמה ליצירת הגרפים. (אני יוצר את הסקריפטים כשורש, אולי לא תרצה לעשות זאת.)
באמצעות דף אינטרנט פשוט מאוד תוכלו לצפות בגרפים מכל דפדפן ברשת הביתית שלכם.
מוּמלָץ:
Sonoff B1 עם ערכת הבית הביתית של אפל מבית Arduino: 6 שלבים
Sonoff B1 עם ערכת הבית המקורית של אפל מבית Arduino: מתכווננת זו נותנת לך דרך קלה למדי כיצד לשלב את מנורת Sonoff B1 בערכת הבית של אפל ללא כל גשרים נוספים הקדמה: Sonoff B1 היא מנורה די זולה אך עוצמתית המכילה שלושה סוגים של לד s1. לבן לד "חם"
Raspberry Pi - TMP100 חיישן טמפרטורה חיישן Java הדרכה: 4 שלבים
Raspberry Pi-חיישן טמפרטורה TMP100 מדריך Java: TMP100 חיישן טמפרטורה דיגיטלי I2C MINI בעל דיוק גבוה, הספק נמוך. TMP100 אידיאלי למדידת טמפרטורה ממושכת. מכשיר זה מציע דיוק של ± 1 ° C ללא צורך בכיול או מיזוג אות רכיב חיצוני. הוא
קריאת טמפרטורה באמצעות חיישן טמפרטורה LM35 עם Arduino Uno: 4 שלבים
קריאת טמפרטורה באמצעות חיישן טמפרטורה LM35 עם Arduino Uno: היי חברים במדריך זה נלמד כיצד להשתמש ב- LM35 עם Arduino. Lm35 הוא חיישן טמפרטורה שיכול לקרוא ערכי טמפרטורה מ -55 ° C עד 150 ° C. זהו מכשיר בעל 3 מסופים המספק מתח אנלוגי ביחס לטמפרטורה. היג
נקודת גישה ESP8266 NodeMCU (שרת אינטרנט) עבור שרת אינטרנט עם חיישן טמפרטורה DT11 והדפסת טמפרטורה ולחות בדפדפן: 5 שלבים
נקודת גישה ESP8266 NodeMCU (AP) עבור שרת אינטרנט עם חיישן טמפרטורה DT11 וטמפרטורת הדפסה ולחות בדפדפן: שלום חברים ברוב הפרויקטים בהם אנו משתמשים ב- ESP8266 וברוב הפרויקטים אנו משתמשים ב- ESP8266 כשרת אינטרנט כך שניתן יהיה לגשת לנתונים ב כל מכשיר באמצעות wifi על ידי גישה לשרת האינטרנט המתארח על ידי ESP8266 אך הבעיה היחידה היא שאנחנו צריכים נתב עובד עבור
Raspberry Pi - TMP100 חיישן טמפרטורה חיישן פייתון הדרכה: 4 שלבים
Raspberry Pi-TMP100 חיישן טמפרטורה חיישן פייתון הדרכה: TMP100 חיישן טמפרטורה דיגיטלי I2C MINI בעל דיוק גבוה, הספק נמוך. TMP100 אידיאלי למדידת טמפרטורה ממושכת. מכשיר זה מציע דיוק של ± 1 ° C ללא צורך בכיול או מיזוג אות רכיב חיצוני. הוא