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

IoT פשוט: מעקב אחר חיישנים מרובים: 7 שלבים
IoT פשוט: מעקב אחר חיישנים מרובים: 7 שלבים

וִידֵאוֹ: IoT פשוט: מעקב אחר חיישנים מרובים: 7 שלבים

וִידֵאוֹ: IoT פשוט: מעקב אחר חיישנים מרובים: 7 שלבים
וִידֵאוֹ: Шокирующая правда о нечеловеческих НЛО: Джон Гриневальд раскрывает все 2024, יולי
Anonim
IoT נעשה פשוט: ניטור חיישנים מרובים
IoT נעשה פשוט: ניטור חיישנים מרובים
IoT פשוט: מעקב אחר חיישנים מרובים
IoT פשוט: מעקב אחר חיישנים מרובים

לפני מספר שבועות פרסמתי כאן הדרכה בנושא ניטור טמפרטורה באמצעות DS18B20, חיישן דיגיטלי המתקשר באמצעות אוטובוס חד-חוטי, ושולח נתונים דרך האינטרנט עם NodeMCU ובלינק:

IoT נעשה פשוט: ניטור טמפרטורה בכל מקום

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

נרחיב את מה שפותח במדריך האחרון, ונעקוב כעת אחר שני חיישני DS18B20, שהוגדרו אחד ב- Celcius והשני ב- פרנהייט. הנתונים יישלחו לאפליקציית Blynk, כפי שמוצג בתרשים הבלוקים לעיל.

שלב 1: שטר החומר

  • NodeMCU ESP 12-E (*)
  • 2 X חיישן טמפרטורה DS18B20
  • התנגדות 4.7K אוהם
  • לוח לחם
  • תִיוּל

(*) ניתן להשתמש כאן בכל סוג של מכשיר ESP. הנפוצים ביותר הם NodeMCU V2 או V3. שניהם תמיד יעבדו מצוין.

שלב 2: חיישן טמפרטורה DS18B20

חיישן טמפרטורה DS18B20
חיישן טמפרטורה DS18B20

נשתמש במדריך זה בגרסה אטומה למים של חיישן DS18B20. הוא שימושי מאוד לטמפרטורה מרוחקת בתנאים רטובים, למשל על אדמה לחה. החיישן מבודד ויכול לבצע מדידות עד 125oC (Adafrut לא ממליצה להשתמש בו מעל 100oC בגלל מעיל ה- PVC הכבל שלו).

ה- DS18B20 הוא חיישן דיגיטלי מה שעושה אותו טוב לשימוש אפילו למרחקים ארוכים! חיישני טמפרטורה דיגיטליים בעלי חוט אחד הם מדויקים למדי (± 0.5 מעלות צלזיוס בהרבה מהטווח) ויכולים לתת עד 12 פיסות דיוק מהממיר הדיגיטלי לאנלוגי המשולב. הם עובדים מצוין עם ה- NodeMCU באמצעות סיכה דיגיטלית אחת, וניתן אפילו לחבר מספר אחד לאותו סיכה, לכל אחד מזהה ייחודי של 64 סיביות שנצרב במפעל כדי להבדיל ביניהם.

החיישן פועל מ 3.0 עד 5.0V, מה שאומר שהוא יכול להיות מופעל ישירות מאחד מהסיכות 3.3V NodeMCU.

לחיישן 3 חוטים:

  • שחור: GND
  • אדום: VCC
  • צהוב: נתוני חוט אחד

כאן תוכל למצוא את הנתונים המלאים: גליון הנתונים DS18B20

שלב 3: חיבור החיישנים ל- NodeMCU

חיבור החיישנים ל- NodeMCU
חיבור החיישנים ל- NodeMCU
  1. חבר את 3 החוטים מכל חיישן בלוח הלחם המיני כפי שמוצג בתמונה למעלה. השתמשתי במחברים מיוחדים כדי לתקן את כבל החיישן עליו טוב יותר.
  2. שים לב ששני החיישנים במקביל. אם יש לך יותר משני חיישנים, עליך לעשות אותו הדבר.

    • אדום ==> 3.3V
    • שחור ==> GND
    • צהוב ==> D4
  3. השתמש בנגד של 4.7K אוהם בין VCC (3.3V) לנתונים (D4)

שלב 4: התקנת הספריות המתאימות

על מנת להשתמש ב- DS18B20 כראוי, יהיה צורך בשתי ספריות:

  1. OneWire
  2. טמפרטורה של דאלאס

התקן את שתי הספריות במאגר הספרייה שלך Arduino IDE.

שים לב שספריית OneWire חייבת להיות הספרייה המיוחדת, שתשתנה לשימוש עם ESP8266, אחרת תקבל שגיאה במהלך האוסף. את הגרסה האחרונה תמצא בקישור למעלה.

שלב 5: בדיקת החיישנים

בדיקת החיישנים
בדיקת החיישנים

לבדיקת החיישנים, הורד את הקובץ שלהלן מ- GitHub שלי:

NodeMCU_DS18B20_Dual_Se nsor_test.ino

/**************************************************************

*בדיקת שולח טמפרטורה מרובה**2 x חיישן OneWire: DS18B20*מחובר ל- NodeMCU D4 (או Arduino Pin 2)**פותח על ידי מרסלו רובאי - 25 באוגוסט 2017 **************** ******************************************* כלול את #define ONE_WIRE_BUS 2 // DS18B20 ב- NodeMCU pin D4 OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); הגדרת void () {Serial.begin (115200); DS18B20.begin (); Serial.println ("בדיקת נתוני חיישן כפול"); } לולאת חלל () {מרחף temp_0; צף temp_1; DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // חיישן 0 יתעד את הטמפ 'ב- Celcius temp_1 = DS18B20.getTempFByIndex (1); // חיישן 0 יתעד את Temp ב- Fahrenheit Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); עיכוב (1000); }

במבט על הקוד לעיל, עלינו לשים לב כי השורות החשובות ביותר הן:

temp_0 = DS18B20.getTempCByIndex (0); // חיישן 0 יתעד את הטמפ 'ב- Celcius

temp_1 = DS18B20.getTempFByIndex (1); // חיישן 0 יתפוס את הטמפ 'בפרנהייט

הראשון יחזיר ערך מחיישן [0] (עיין ב"אינדקס (0) ") בצלסיוס (עיין בחלק הקוד:" getTempC ". השורה השנייה קשורה בחיישן [1] ותחזיר נתונים ב פרנהייט. יכול להיות שיש לך כאן "n" חיישנים מכיוון שיש לך "אינדקס" אחר לכל אחד מהם.

העלה כעת את הקוד ב- NodeMCU שלך ופקח על הטמפרטורה באמצעות הצג הסידורי.

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

שלב 6: שימוש ב- Blynk

שימוש ב- Blynk
שימוש ב- Blynk
שימוש ב- Blynk
שימוש ב- Blynk

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

בצע את השלבים הבאים:

  1. צור פרויקט חדש.
  2. תן לזה שם (במקרה שלי "צג טמפרטורה כפולה")
  3. בחר מכשיר חדש - ESP8266 (WiFi) בתור "המכשירים שלי"
  4. העתק את ה- AUTH TOKEN שישמש בקוד (תוכל לשלוח אותו לדוא"ל שלך).
  5. כולל שני ווידג'טים "מד", המגדירים:

    • סיכה וירטואלית לשימוש עם כל חיישן: V10 (חיישן [0]) ו- V11 (חיישן [1])
    • טווח הטמפרטורות: -5 עד 100 מעלות צלזיוס לחיישן [0]
    • טווח הטמפרטורות: 25 עד 212 מעלות צלזיוס לחיישן [1]
    • תדירות קריאת הנתונים: שנייה אחת
  6. כולל יישומון "גרף היסטוריה", המגדיר את V10 ו- V11 כסיכות וירטואליות
  7. הקש על "הפעל" (המשולש בפינה הימנית למעלה)

כמובן שאפליקציית Blynk תשלח לך שה- NodeMCU אינו מקוון. הגיע הזמן להעלות את הקוד המלא ב- Arduino IDE שלך. אתה יכול להשיג את זה כאן:

NodeMCU_Dual_Sensor_Blynk_Ext.ino

שנה את "נתוני הדמה" עם אישורים משלך.

/ * אישורי בלינק */

char auth = "קוד AUTH BLYNK שלך כאן"; / * אישורי WiFi */ char ssid = "SSID שלך"; char pass = "סיסמתך";

וזה הכל!

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

/**************************************************************

* צג טמפרטורות מרובות IoT עם Blynk * ספריית Blynk מורשית ברישיון MIT * קוד דוגמה זה הינו נחלת הכלל. **חיישן מרובה OneWire: DS18B20*פותח על ידי מרסלו רובאי - 25 באוגוסט 2017 ********************************* **************************//*ESP & Blynk*/ #include #include #define BLYNK_PRINT Serial // הגיבו על כך ל- השבת הדפסים וחסוך מקום / * אישורי בלינק * / char authent = "קוד האות של BLYNK שלך כאן"; / * אישורי WiFi */ char ssid = "SSID שלך"; char pass = "סיסמתך"; / * TIMER */ #include SimpleTimer timer; / * חיישן טמפרטורה DS18B20 */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 על arduino pin2 תואם ל- D4 בלוח הפיזי OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); int temp_0; int temp_1; הגדרת void () {Serial.begin (115200); Blynk.begin (auth, ssid, pass); DS18B20.begin (); timer.setInterval (1000L, getSendData); Serial.println (""); Serial.println ("בדיקת נתוני חיישן כפול"); } לולאת חלל () {timer.run (); // יוזם SimpleTimer Blynk.run (); } /********************************************* ****שלח נתוני חיישנים לבלינק *************************************** *********/ void getSendData () {DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // חיישן 0 יתעד את הטמפ 'ב- Celcius temp_1 = DS18B20.getTempFByIndex (1); // חיישן 0 יתעד את Temp ב- Fahrenheit Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); Blynk.virtualWrite (10, temp_0); // סיכה וירטואלית V10 Blynk.virtualWrite (11, temp_1); // סיכה וירטואלית V11}

לאחר העלאת הקוד והפעלתו, בדוק את אפליקציית Blynk. כעת הוא אמור לפעול כפי שמוצג במסך ההדפסה למעלה מהאייפון שלי.

שלב 7: סיכום

סיכום
סיכום

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

אנא בקר ב- GitHub שלי לקבצים מעודכנים: צג טמפ 'כפול של NodeMCU

לפרויקטים נוספים, בקר בבלוג שלי: MJRoBot.org

כל הכבוד מדרום העולם!

נתראה בהנחיה הבאה שלי!

תודה, מרסלו

מוּמלָץ: