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

פרסום נתוני חיישן לחץ אלחוטי באמצעות MQTT: 7 שלבים
פרסום נתוני חיישן לחץ אלחוטי באמצעות MQTT: 7 שלבים

וִידֵאוֹ: פרסום נתוני חיישן לחץ אלחוטי באמצעות MQTT: 7 שלבים

וִידֵאוֹ: פרסום נתוני חיישן לחץ אלחוטי באמצעות MQTT: 7 שלבים
וִידֵאוֹ: איך ללטש ולחדש את פנסי הרכב 2024, דֵצֶמבֶּר
Anonim
פרסום נתוני חיישן לחץ אלחוטי באמצעות MQTT
פרסום נתוני חיישן לחץ אלחוטי באמצעות MQTT

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
מתחבר ל- WiFi
מתחבר ל- WiFi
מתחבר ל- WiFi

אנו משתמשים בפורטל השבוי כדי לשמור את אישורי ה- WiFi ולרחף דרך הגדרות ה- IP. לקבלת ההקדמה המפורטת בפורטל captive, תוכל לעבור על ההוראות הבאות.

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

מתארח דף אינטרנט שבו רשימה המציגה רשתות WiFi זמינות ויש RSSI. בחר את רשת ה- WiFi והסיסמה והזן שלח. האישורים יישמרו ב- EEPROM והגדרת ה- IP תישמר ב- SPIFFS. עוד על זה ניתן למצוא במדריך זה.

שלב 4: הגדרת UbiDots ב- ESP32

הגדרת UbiDots ב- ESP32
הגדרת 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

פרסום קריאות חיישן ל- UbiDots
פרסום קריאות חיישן ל- 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
  • מתזמן משימות

מוּמלָץ: