תוכן עניינים:

חיישן טמפרטורה לרשת הביתית: 7 שלבים
חיישן טמפרטורה לרשת הביתית: 7 שלבים

וִידֵאוֹ: חיישן טמפרטורה לרשת הביתית: 7 שלבים

וִידֵאוֹ: חיישן טמפרטורה לרשת הביתית: 7 שלבים
וִידֵאוֹ: אנשים שהם אחד למליון (מטורף!!!)| טופטן 2024, יולי
Anonim
חיישן טמפרטורה לרשת הביתית
חיישן טמפרטורה לרשת הביתית

מה אתה צריך לדעת כדי לבצע את הפרויקט הזה:

אתה צריך לדעת על:- כמה מיומנויות אלקטרוניקה (הלחמה)

- לינוקס

- 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

ה- Arduino - חלק ESP12
ה- Arduino - חלק ESP12
ה- Arduino - חלק ESP12
ה- 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)

בדיקת ESP כלקוח פרוטוקול זמן רשת (NTP)
בדיקת ESP כלקוח פרוטוקול זמן רשת (NTP)
בדיקת ESP כלקוח פרוטוקול זמן פרוטוקול (NTP)
בדיקת ESP כלקוח פרוטוקול זמן פרוטוקול (NTP)

ב- IDE של Arduino, תחת קובץ, דוגמאות, ESP8266WiFi, טען NTPClient.

יש צורך בשינויים קלים כדי לגרום לזה לעבוד; עליך להכניס את ה- SSID והסיסמה של רשת ה- WiFi שלך.

כעת הנח את המגשר, וקצר את GPIO0 ל- GND.

הפעל את מחזור ה- ESP והעלה את הסקיצה ל- ESP.

לאחר האוסף, ההעלאה ל- ESP צריכה להתחיל. הנורית הכחולה ב- ESP תהבהב במהירות בזמן הורדת הקוד.

שמתי לב שאני צריך לשחק קצת עם הפעלה מחדש של ה- IDE, הפעלה מחדש של ה- ESP לפני שההעלאה תפעל.

לפני שתתחיל לאסוף/להעלות את הסקיצה, הקפד לסגור את המסוף הטורי (= צג סדרתי) מכיוון שזה ימנע ממך לבצע את ההעלאה.

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

מצוין, תיכנת את ה- ESP שלך, התחברת ל- WiFi וקיבלת את הזמן מהאינטרנט.

השלב הבא נבדוק את DHT22.

שלב 5: בדיקת חיישן DHT22

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

באמצעות דף אינטרנט פשוט מאוד תוכלו לצפות בגרפים מכל דפדפן ברשת הביתית שלכם.

מוּמלָץ: