תוכן עניינים:
- שלב 1: מפרט חומרה ותוכנה
- שלב 2: חיישני לחץ וטמפרטורה אלחוטיים
- שלב 3: התחברות ל- WiFi
- שלב 4: הגדרת UbiDots ב- ESP32
- שלב 5: פרסום קריאות חיישן ל- UbiDots
- שלב 6: הדמיה של הנתונים
- שלב 7: קוד כולל
וִידֵאוֹ: פרסום נתוני חיישן לחץ אלחוטי באמצעות MQTT: 7 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:15
ESP32 ו- ESP 8266 הם SoC מוכרים מאוד בתחום ה- IoT. אלה סוג של ברכה לפרויקטים של IoT. ESP 32 הוא מכשיר עם WiFi משולב ו- BLE. פשוט תן את תצורות ה- SSID, הסיסמה וה- IP שלך ושלב את הדברים בענן. כאן במדריך זה, נחשוב על כמה מהמונחים הבסיסיים של IoT כמו פלטפורמת IoT, MQTT, פורטלים שבויים וכו '. אז תנו לנו לעבור את זה
- ארכיטקטורת IoT במילים פשוטות מאוד מורכבת ממכשיר מוטמע ופלטפורמת IoT להכניס את המכשיר לענן. כאן אנו משתמשים בפלטפורמת IiT של UbiDots כדי להמחיש את נתוני החיישן.
- ניהול הגדרות ה- IP ואישורי המשתמש יכול להוות כאב ראש למשתמש. מה אם המשתמש רוצה לשנות את אישורי ה- WiFi? מה אם המשתמש רוצה להחליף את הגדרות ה- DHCP/IP סטטי? מהבהב ה- ESP32 בכל פעם אינו אמין ואפילו לא הפתרון לבעיות אלה. אז נעבור בפורטל השבוי כדי לשמור את אישורי ה- WiFi ותצורות אחרות.
- MQTT הופך כעת למונח נפוץ מאוד בעולם ה- IoT. היא עקפה את הבקשות והתגובות (HTTP) על ידי פרסום והרשמה בגלל הארכיטקטורה המהירה, החזקה והרזה.
כאן במדריך זה, אנו הולכים להפגין.
- מתן אישורי WiFi ו- MQTT באמצעות פורטל Captive.
- פרסום והרשמה של נתוני חיישן מרובים ל- UbiDots.
- קריאת נתוני החיישן מחיישן לחץ וטמפרטורה אלחוטי
- אירוח טופס אינטרנט מ- ESP32.
- קריאה וכתיבה מ- SPIFFS ESP32.
שלב 1: מפרט חומרה ותוכנה
מפרט חומרה
- ESP32 WiFi/BLE
- חיישן לחץ וטמפרטורה אלחוטי
מפרט תוכנה
- Arduino IDE
- XCTU
- כלי Labview
שלב 2: חיישני לחץ וטמפרטורה אלחוטיים
מאפיינים
- חיישן דרגה תעשייתית חיישן טמפרטורת לחץ אלחוטי לטווח ארוך
- טווח פעולה 0 עד 14000 mbar -40 ° עד +85 ° C (-40 ° עד 185 ° F)
- רזולוציית לחץ חישוב פנימי הניתנת להגדרה 0.012 עד 0.065 mbar
- רזולוציית טמפרטורת חישוב פנימי הניתנת להגדרה 0.002 עד 0.012 ° C
- דיוק ± 2.5 mbar, ± 2 ° C
- יציאות לחץ מוחלט, לחץ יחסי ושינוי גובה יחסי
- טווח קו ראייה של 2 מייל עם אנטנה מובנית
- טווח LOS מעולה של עד 28 מייל עם אנטנות בעלות רווח גבוה
- ממשק ל- Raspberry Pi, Microsoft® Azure®, Arduino ועוד
- רשת רשת אלחוטית באמצעות DigiMesh®
הגדרת חיישן לחץ וטמפרטורה אלחוטי באמצעות Labview Utility ו- XCTU
החיישן פועל בשני מצבים
- מצב תצורה: הגדר את מזהה הפאן, עיכוב, מספר ניסיונות חוזרים וכו '. מידע נוסף על זה הוא מעבר להיקף ההוראה ונסביר במדריך הבא.
- מצב הפעלה: אנו מפעילים את המכשיר במצב הפעלה. וכדי לנתח ערך זה אנו משתמשים בכלי Labview Utility
ממשק משתמש זה של Labview מציג את הערכים בגרפים נחמדים. הוא מציג את הערכים הנוכחיים כמו גם את העבר. אתה יכול להיכנס לקישור הזה כדי להוריד את ממשק המשתמש של Labview. לחץ על סמל ההפעלה מתפריט דף הנחיתה כדי לעבור למצב הפעלה.
שלב 3: התחברות ל- WiFi
אנו משתמשים בפורטל השבוי כדי לשמור את אישורי ה- WiFi ולרחף דרך הגדרות ה- IP. לקבלת ההקדמה המפורטת בפורטל captive, תוכל לעבור על ההוראות הבאות.
הפורטל השבוי נותן לנו את האפשרות לבחור בין הגדרות סטטיות ו- DHCP. פשוט הזן את האישורים כמו IP סטטי, מסכת רשת משנה, שער ושער חיישן אלחוטי יוגדרו על ה- IP הזה.
מתארח דף אינטרנט שבו רשימה המציגה רשתות WiFi זמינות ויש RSSI. בחר את רשת ה- WiFi והסיסמה והזן שלח. האישורים יישמרו ב- EEPROM והגדרת ה- IP תישמר ב- SPIFFS. עוד על זה ניתן למצוא במדריך זה.
שלב 4: הגדרת UbiDots ב- ESP32
כאן אנו משתמשים בחיישני לחץ וטמפרטורה אלחוטיים עם מכשיר ESP 32 כדי לקבל את נתוני הטמפרטורה והלחות. אנו שולחים את הנתונים ל- UbiDots באמצעות פרוטוקול MQTT. MQTT עוקב אחר מנגנון פרסום והרשמה במקום בקשה ותגובה. הוא מהיר ואמין יותר מ- HTTP. זה עובד כדלקמן.
- אנו משתמשים במתזמן המשימות כדי לתזמן את המשימה כמו אחזור נתונים מחיישנים, פרסום קריאות החיישנים, הרשמה לנושא MQTT.
- ראשית, כלול את קבצי הכותרת של מתזמן המשימות, מופע זה ומתזמן את המשימות.
- קבענו שתי משימות המתייחסות לשתי פעולות בקרה שונות.
#define _TASK_TIMEOUT#כוללים מתזמן ts; // --------- משימות ------------ // משימה tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Task TWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);
- משימה 1 היא קריאת ערך החיישן משימה זו פועלת למשך שנייה אחת עד שהיא מגיעה לפסק הזמן של 10 שניות.
- כאשר משימה 1 מגיעה לשעת פקודה אנו מתחברים ל- Wifi מקומי ולמתווך MQTT.
- כעת משימה 2 מופעלת ואנו משביתים את משימה 1
- משימה 2 מיועדת לפרסום נתוני החיישנים לברוקר UbiDots MQTT משימה זו נמשכת במשך 20 שניות עד שהיא מגיעה לפסק זמן של 20 שניות
- כאשר משימה 2 מגיעה לפסק הזמן, משימה 1 מופעלת שוב ומשימה 2 מושבתת. שוב, אנו מקבלים את הערך המעודכן והתהליך נמשך.
קריאת נתוני חיישן I2C
אנו מקבלים מסגרת של 29 בתים מחיישני הטמפרטורה והלחות האלחוטיים. מסגרת זו מנוהלת כדי לקבל את נתוני הטמפרטורה והלחות בפועל
אם (Serial1.available ())
{data [0] = Serial1.read (); עיכוב (k); if (data [0] == 0x7E) {while (! Serial1.available ()); עבור (i = 1; i <36; i ++) {data = Serial1.read (); עיכוב (1); } if (data [15] == 0x7F) /////// כדי לבדוק אם הנתונים המתקבלים נכונים {if (data [22] == 0x06) //////// ודא את סוג החיישן נכון {int cTemp = ((((נתונים [24]) * 256) + נתונים [25])); int16_t abs_pressure = ((((uint16_t) (data [26]) << 8) | data [27])*0.001); int rlt_pressure = ((((נתונים [28]) * 256) + נתונים [29]) * 0.001); int16_t delta_alt = ((((uint16_t) (נתונים [30]) << 8) | נתונים [31])*0.01); סוללת צף = ((נתונים [18] * 256) + נתונים [19]); מתח צף = 0.00322 * סוללה; Serial.print ("מספר חיישן"); Serial.println (נתונים [16]); Serial.print ("סוג חיישן"); Serial.println (נתונים [22]); Serial.print ("גרסת קושחה"); Serial.println (נתונים [17]); Serial.print ("טמפרטורה בצלזיוס:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("לחץ מוחלט:"); Serial.println (abs_pressure); Serial.print ("mbar"); Serial.print ("לחץ יחסי:"); Serial.println (rlt_pressure); Serial.print ("mbar"); Serial.print ("גובה דלתא:"); Serial.println (delta_alt); Serial.print ("מטר"); Serial.print ("ערך ADC:"); Serial.println (סוללה); Serial.print ("מתח סוללה:"); Serial.print (מתח); Serial.println ("\ n"); if (מתח <1) {Serial.println ("זמן להחליף את הסוללה"); }}}} אחר {עבור (i = 0; i <36; i ++) {Serial.print (נתונים ); Serial.print (","); עיכוב (1); }}}}
מתחבר ל- API של UbiDots MQTT
כלול את קובץ הכותרת לתהליך MQTT
#לִכלוֹל
הגדר משתנים אחרים עבור MQTT כמו שם הלקוח, כתובת הברוקר, מזהה האסימון
#define TOKEN "BBFF-**********************************" // ה- Ubidots TOKEN שלך#הגדר MQTT_CLIENT_NAME "***************************"
char mqttBroker = "things.ubidots.com";
מטען חרוסת [100]; נושא char [150]; // צור משתנה לאחסון אסימון מזהה אסימון
שלב 5: פרסום קריאות חיישן ל- UbiDots
צור משתנים לאחסון נתוני חיישן שונים וצור משתנה char לאחסון הנושא
#define VARIABLE_LABEL_TEMPF "tempF" // הערכת התווית המשתנה #הגדר VARIABLE_LABEL_TEMPC "tempC" // הערכת התווית המשתנה #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "the label" //
נושא char 1 [100];
char topic2 [100]; נושא char3 [100];
פרסם את הנתונים לנושא MQTT שהוזכר המטען ייראה כמו {"tempc": {value: "tempData"}}
sprintf (topic1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (מטען, "%s", ""); // מנקה את sprintf המטען (מטען, "{"%s / ":", VARIABLE_LABEL_TEMPC); // מוסיף את הערך sprintf (מטען, "%s {" ערך / ":%s}", מטען, str_cTemp); // מוסיף את הערך sprintf (מטען, "%s}", מטען); // סוגר את סוגריים במילון Serial.println (מטען); Serial.println (client.publish (נושא 1, מטען)? "פורסם": "לא פורסם"); // עשו את אותו הדבר גם לנושא אחר
client.publish () מפרסם את הנתונים ל- UbiDots
שלב 6: הדמיה של הנתונים
- עבור אל Ubidots והתחבר לחשבונך.
- נווט אל מרכז השליטה מהכרטיסייה נתונים המופיעה למעלה.
- כעת לחץ על סמל "+" כדי להוסיף את הווידג'טים החדשים.
- בחר יישומון מהרשימה והוסף משתנה והתקנים.
- ניתן להציג את נתוני החיישנים בלוח המחוונים באמצעות ווידג'טים שונים.
שלב 7: קוד כולל
קוד Over עבור HTML ו- ESP32 ניתן למצוא במאגר GitHub זה.
נקודות זכות
- לוח פריצת ncd ESP32.
- חיישני לחץ וטמפרטורה אלחוטיים של ncd
- סאב פאב
- UbiDots
- מתזמן משימות
מוּמלָץ:
IoT: הדמיה של נתוני חיישן אור באמצעות צומת אדום: 7 שלבים
IoT: הדמיה של נתוני חיישן אור באמצעות Node-RED: במדריך זה תלמד כיצד ליצור חיישן מחובר לאינטרנט! אני אשתמש בחיישן אור סביבה (TI OPT3001) להדגמה זו, אך כל חיישן לבחירתך (טמפרטורה, לחות, פוטנציומטר וכו ') יעבוד. ערכי החיישן
נתוני חיישן רטט וחיישן טמפרטורה ל- MySQL באמצעות Node-RED: 40 שלבים
נתוני חיישן רטט וחיישן טמפרטורה ל- MySQL באמצעות Node-RED: היכרות עם חיישן רטט וטמפרטורה אלחוטי תעשייתי אלחוטי של NCD בטווח הרחוק של 2 קילומטרים בשימוש במבנה רשת אלחוטית. מכשיר זה כולל חיישן רטט וטמפרטורה מדויק של 16 סיביות, מכשיר זה עובר
מדידת כמויות מים באמצעות חיישן לחץ: 5 שלבים
מדידת כמויות מים באמצעות חיישן לחץ: חיישן לחץ שימש למדידת כמות המים במיכל. ציוד: חיישן 24 יחידות לוח לחם מתנגדים מגברים טנק
רובוט Arduino אלחוטי באמצעות מודול אלחוטי HC12: 7 שלבים
רובוט Arduino אלחוטי באמצעות מודול אלחוטי HC12: היי חבר'ה, ברוכים הבאים בחזרה. בהודעתי הקודמת, הסברתי מהו מעגל גשר H, IC נהג מנוע L293D, IC נהג מנועי L293D לנהיגת נהגי מנוע גבוהים וכיצד אתה יכול לעצב ולייצר לוח נהגים L293D משלך
תחילת העבודה עם AWS IoT עם חיישן טמפרטורה אלחוטי באמצעות MQTT: 8 שלבים
תחילת העבודה עם AWS IoT עם חיישן טמפרטורה אלחוטי באמצעות MQTT: במדריכים קודמים עברנו פלטפורמות ענן שונות כמו Azure, Ubidots, ThingSpeak, Losant וכו '. השתמשנו בפרוטוקול MQTT לשליחת נתוני החיישן לענן כמעט. כל פלטפורמת הענן. למידע נוסף