Mundarija:

MQTT yordamida simsiz bosim sensori ma'lumotlarini nashr qilish: 7 qadam
MQTT yordamida simsiz bosim sensori ma'lumotlarini nashr qilish: 7 qadam

Video: MQTT yordamida simsiz bosim sensori ma'lumotlarini nashr qilish: 7 qadam

Video: MQTT yordamida simsiz bosim sensori ma'lumotlarini nashr qilish: 7 qadam
Video: ESP32 Tutorial 52 - WS2812 CheerLights MQTT Global Sync with LCD | SunFounder ESP32 IoT Learnig kit 2024, Noyabr
Anonim
MQTT yordamida simsiz bosim sensori ma'lumotlarini nashr etish
MQTT yordamida simsiz bosim sensori ma'lumotlarini nashr etish

ESP32 va ESP 8266 IoT sohasida juda tanish SoC. Bu IoT loyihalari uchun katta foyda. ESP 32 - bu o'rnatilgan Wi -Fi va BLE qurilmasi. Faqat SSID, parol va IP konfiguratsiyasini bering va narsalarni bulutga birlashtiring. Bu erda biz IoT platformasi, MQTT, Captive portallari va boshqalar kabi IoTning ba'zi asosiy shartlari haqida o'ylaymiz.

  • IoT arxitekturasi juda sodda so'zlar bilan aytganda, qurilmani bulutga joylashtirish uchun o'rnatilgan qurilma va IoT platformasidan iborat. Bu erda biz sensor ma'lumotlarini vizualizatsiya qilish uchun UbiDots IoT platformasidan foydalanmoqdamiz.
  • IP sozlamalari va foydalanuvchi ma'lumotlarini boshqarish foydalanuvchi uchun bosh og'rig'i bo'lishi mumkin. Agar foydalanuvchi WiFi hisob ma'lumotlarini o'zgartirmoqchi bo'lsa nima bo'ladi? Agar foydalanuvchi DHCP/Statik IP sozlamalarini o'zgartirishni xohlasa nima bo'ladi? ESP32 -ning har doim yonib -o'chishi ishonchli emas va hatto bu muammolarni hal qilmaydi. Shunday qilib, biz WiFi hisob ma'lumotlarini va boshqa konfiguratsiyalarni saqlash uchun asir portalidan o'tamiz.
  • MQTT endi IoT dunyosida juda keng tarqalgan atamaga aylanmoqda. u tez, mustahkam va nozik arxitektura tufayli nashr etish va obuna bo'lish talablari va javoblaridan (HTTP) oshib ketdi.

Bu erda biz ko'rsatmoqchi bo'lamiz.

  • Captive Portal yordamida WiFi va MQTT ma'lumotlarini berish.
  • Sensorli ma'lumotlarni UbiDots -ga nashr qilish va obuna qilish.
  • Sensor ma'lumotlarini simsiz bosim va harorat sensori orqali o'qish
  • ESP32 veb -shaklini joylashtirish.
  • SPIFFS ESP32 dan o'qish va yozish.

1 -qadam: Uskuna va dasturiy ta'minot spetsifikatsiyasi

Uskuna texnik xususiyatlari

  • ESP32 WiFi/BLE
  • Simsiz bosim va harorat sensori

Dastur xususiyatlari

  • Arduino IDE
  • XCTU
  • Labview yordam dasturi

2 -qadam: Simsiz bosim va harorat sensori

Simsiz bosim va harorat sensori
Simsiz bosim va harorat sensori
Simsiz bosim va harorat sensori
Simsiz bosim va harorat sensori
Simsiz bosim va harorat sensori
Simsiz bosim va harorat sensori

Xususiyatlari

  • Sanoat darajasi sensori uzoq masofali simsiz bosim harorati sensori
  • Ishlash diapazoni 0 dan 14000 mbargacha -40 ° dan +85 ° C gacha (-40 ° dan 185 ° F gacha)
  • Konfiguratsiya qilinadigan ichki hisoblash bosimining o'lchamlari 0,012 dan 0,065 mbargacha
  • Konfiguratsiya qilinadigan ichki hisoblash harorati o'lchamlari 0,002 dan 0,012 ° S gacha
  • Aniqlik ± 2,5 mbar, ± 2 ° S
  • Mutlaq bosim, nisbiy bosim va nisbiy balandlikning o'zgarishi
  • Bort antennasi bilan 2 mil masofali ko'rish masofasi
  • Yuqori daromadli antennalar bilan 28 milgacha bo'lgan yuqori LOS diapazoni
  • Raspberry Pi, Microsoft® Azure®, Arduino va boshqalarga interfeys
  • DigiMesh® yordamida simsiz tarmoq

Labview Utility va XCTU yordamida simsiz bosim va harorat sensori konfiguratsiyasi

Sensor ikki rejimda ishlaydi

  • Konfiguratsiya rejimi: Pan identifikatorini, kechiktirishni, qayta urinishlar sonini va boshqalarni sozlang. Bu haqda ko'proq ma'lumot berish mumkin emas va keyingi ko'rsatmada tushuntiriladi.
  • Ishlash rejimi: Biz qurilmani Ishlash rejimida ishga tushiramiz. Va bu qiymatni tahlil qilish uchun biz Labview Utility dasturidan foydalanamiz

Bu Labview foydalanuvchi interfeysi qiymatlarni chiroyli grafiklarda ko'rsatadi. U hozirgi va o'tgan qiymatlarni ko'rsatadi. Labview UI -ni yuklab olish uchun ushbu havolaga o'tishingiz mumkin. ishga tushirish rejimiga o'tish uchun ochilish sahifasi menyusidagi Ishga tushirish belgisini bosing.

3 -qadam: Wi -Fi tarmog'iga ulanish

WiFi tarmog'iga ulanish
WiFi tarmog'iga ulanish
WiFi tarmog'iga ulanish
WiFi tarmog'iga ulanish

Biz Wi -Fi ma'lumotlarini saqlash va IP sozlamalari bo'ylab harakatlanish uchun asir portalidan foydalanmoqdamiz. Asir portalda batafsil tanishish uchun siz quyidagi ko'rsatmalarni o'tishingiz mumkin.

Asir portal bizga Statik va DHCP sozlamalarini tanlash imkoniyatini beradi. Statik IP, pastki tarmoq niqobi, shlyuz va simsiz sensorlar shluzi kabi hisob ma'lumotlarini kiriting, u IP -da sozlanadi.

Veb -sahifa mavjud, u erda mavjud WiFi tarmoqlari va RSSI ko'rsatiladigan ro'yxat mavjud. Wi -Fi tarmog'ini va parolni tanlang va yuborishni kiriting. Hisob ma'lumotlari EEPROMda saqlanadi va IP sozlamalari SPIFFSda saqlanadi. Bu haqida ko'proq ma'lumotni ushbu ko'rsatmalarni topishingiz mumkin.

4 -qadam: UbiDots -ni ESP32 -ga o'rnatish

UbiDots -ni ESP32 -da sozlash
UbiDots -ni ESP32 -da sozlash

Bu erda harorat va namlik ma'lumotlarini olish uchun ESP 32 qurilmasi bilan simsiz bosim va harorat sensorlaridan foydalanamiz. Biz ma'lumotlarni UbiDots -ga MQTT protokoli yordamida yuboramiz. MQTT nashr qilish va obuna bo'lish mexanizmidan ko'ra, so'rov va javobdan ko'ra ishlaydi. Bu HTTP -ga qaraganda tezroq va ishonchli. Bu quyidagicha ishlaydi.

  • Biz vazifalarni rejalashtirish uchun sensorlar ma'lumotlarini olish, sensorlar o'qilishini nashr etish, MQTT mavzusiga obuna bo'lish kabi vazifalarni rejalashtirish uchun foydalanamiz.
  • Birinchidan, Task Scheduler sarlavha fayllarini kiriting, bu misol va vazifalarni rejalashtiradi.
  • Biz ikki xil nazorat operatsiyalari bilan bog'liq ikkita vazifani rejalashtirdik.

#define _TASK_TIMEOUT#o'z ichiga Scheduler ts; // --------- Vazifalar ------------ // Vazifa tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); TWiFi vazifasi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);

  • Vazifa 1 sensor qiymatini o'qish uchun mo'ljallangan, bu vazifa 10 soniya tugashiga qadar 1 soniya davomida ishlaydi.
  • Vazifa 1 tugashi bilan biz mahalliy Wifi va MQTT brokeriga ulanmoqdamiz.
  • Endi 2 -topshiriq yoqilgan va biz 1 -topshiriqni o'chirib qo'yamiz
  • Vazifa 2 sensor ma'lumotlarini UbiDots MQTT brokeriga e'lon qilish uchun mo'ljallangan, bu vazifa 20 sekundgacha 20 sekundgacha ishlaydi.
  • Vazifa 2 tugashi bilan Vazifa 1 yana yoqiladi va Vazifa 2 o'chiriladi. Bu erda biz yangilangan qiymatni olamiz va jarayon davom etadi.

I2C sensori ma'lumotlarini o'qish

Biz simsiz harorat va namlik sensorlaridan 29 baytli ramka olamiz. Bu ramka haqiqiy harorat va namlik ma'lumotlarini olish uchun boshqariladi

agar (Serial1.available ())

{ma'lumotlar [0] = Serial1.read (); kechikish (k); if (data [0] == 0x7E) {while (! Serial1.available ()); uchun (i = 1; i <36; i ++) {ma'lumotlar = Serial1.read (); kechikish (1); } if (ma'lumotlar [15] == 0x7F) /////// qaytariladigan ma'lumotlarning to'g'riligini tekshirish uchun {if (ma'lumotlar [22] == 0x06) //////// sensor turiga ishonch hosil qiling. to'g'ri {int cTemp = ((((ma'lumotlar [24]) * 256) + ma'lumotlar [25])); int16_t abs_pressure = (((((uint16_t) (ma'lumotlar [26]) << 8) | ma'lumotlar [27])*0,001); int rlt_pressure = ((((ma'lumotlar [28]) * 256) + ma'lumotlar [29]) * 0,001); int16_t delta_alt = (((((uint16_t) (ma'lumotlar [30]) << 8) | ma'lumotlar [31])*0,01); float batareya = ((ma'lumotlar [18] * 256) + ma'lumotlar [19]); suzuvchi kuchlanish = 0,00322 * batareya; Serial.print ("Sensor raqami"); Serial.println (ma'lumotlar [16]); Serial.print ("Sensor turi"); Serial.println (ma'lumotlar [22]); Serial.print ("Dasturiy ta'minot versiyasi"); Serial.println (ma'lumotlar [17]); Serial.print ("Selsiy bo'yicha harorat:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Mutlaq bosim:"); Serial.println (abs_pressure); Serial.print ("mbar"); Serial.print ("Nisbiy bosim:"); Serial.println (rlt_pressure); Serial.print ("mbar"); Serial.print ("Delta balandligi:"); Serial.println (delta_alt); Serial.print ("metr"); Serial.print ("ADC qiymati:"); Serial.println (batareya); Serial.print ("Batareya quvvati:"); Ketma -ket chop etish (kuchlanish); Serial.println ("\ n"); if (kuchlanish <1) {Serial.println ("Batareyani almashtirish vaqti"); }}} else {for (i = 0; i <36; i ++) {Serial.print (ma'lumotlar ); Serial.print (","); kechikish (1); }}}}

UbiDots MQTT API -ga ulanish

MQTT jarayoni uchun sarlavha faylini qo'shing

#qo'shing

MQTT uchun mijoz nomi, broker manzili, token identifikatori kabi boshqa o'zgaruvchilarni aniqlang

#define TOKEN "BBFF-*********************************" // Sizning Ubidots TOKEN #ingizni belgilang MQTT_CLIENT_NAME "****************************"

char mqttBroker = "things.ubidots.com";

yuk yuki [100]; char mavzusi [150]; // token identifikatorini saqlash uchun o'zgaruvchini yarating

5 -qadam: Sensor o'qilishini UbiDots -da nashr etish

Sensor o'qilishini UbiDots -da nashr qilish
Sensor o'qilishini UbiDots -da nashr qilish

Har xil sensor ma'lumotlarini saqlash uchun o'zgaruvchilar yarating va mavzuni saqlash uchun char o'zgaruvchisini yarating

#define VARIABLE_LABEL_TEMPF "tempF" // O'zgaruvchilar yorlig'ini belgilash #VARIABLE_LABEL_TEMPC "tempC" ni belgilash // O'zgaruvchilar yorlig'ini belgilash #define VARIABLE_LABEL_BAT "bat" #VARIABLE_LABEL_HUMID "nam nam" ni belgilash //

char mavzu1 [100];

char mavzu2 [100]; char mavzu3 [100];

ma'lumotlarni MQTT mavzusida e'lon qiling, yuk "{tempc": {value: "tempData"}} kabi ko'rinadi

sprintf (mavzu1, "%s", ""); sprintf (mavzu1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (yuk, "%s", ""); // Sprintf yukini tozalaydi (yuk, "{"%s / ":", VARIABLE_LABEL_TEMPC); // sprintf qiymatini qo'shadi (yuk, "%s {" qiymati / ":%s}", yuk, str_cTemp); // sprintf qiymatini qo'shadi (yuk, "%s}", yuk); // Serial.println (foydali yuk) lug'at qavslarini yopadi; Serial.println (client.publish (mavzu1, yuk)? "Chop etilgan": "nashr etilmagan"); // Boshqa mavzu uchun ham shunday qiling

client.publish () ma'lumotlarni UbiDots -da e'lon qiladi

6 -qadam: ma'lumotlarni vizualizatsiya qilish

Ma'lumotlarni vizualizatsiya qilish
Ma'lumotlarni vizualizatsiya qilish
  • Ubidots -ga o'ting va hisobingizga kiring.
  • Yuqorida ko'rsatilgan Ma'lumotlar yorlig'idan Boshqaruv paneliga o'ting.
  • Endi yangi vidjetlarni qo'shish uchun "+" belgisini bosing.
  • Ro'yxatdan vidjetni tanlang va o'zgaruvchi va qurilmalarni qo'shing.
  • Sensor ma'lumotlarini asboblar panelida turli vidjetlar yordamida ko'rish mumkin.

7 -qadam: Umumiy kod

HTML va ESP32 uchun Over kodini ushbu GitHub omboridan topish mumkin.

Kreditlar

  • ncd ESP32 uzilish taxtasi.
  • ncd Simsiz bosim va harorat sensori
  • publisubent
  • UbiDots
  • Vazifalarni rejalashtiruvchi

Tavsiya: