Mundarija:

UbiDots-ESP32-ni ulash va bir nechta sensorli ma'lumotlarni nashr qilish: 6 qadam
UbiDots-ESP32-ni ulash va bir nechta sensorli ma'lumotlarni nashr qilish: 6 qadam

Video: UbiDots-ESP32-ni ulash va bir nechta sensorli ma'lumotlarni nashr qilish: 6 qadam

Video: UbiDots-ESP32-ni ulash va bir nechta sensorli ma'lumotlarni nashr qilish: 6 qadam
Video: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, Noyabr
Anonim
UbiDots-ESP32-ni ulash va bir nechta sensorli ma'lumotlarni nashr etish
UbiDots-ESP32-ni ulash va bir nechta sensorli ma'lumotlarni 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 harorat va namlik sensorlaridan o'qish.
  • ESP32 veb -shaklini joylashtirish.
  • SPIFFS ESP32 dan o'qish va yozish.

1 -qadam: Uskuna va dasturiy ta'minot spetsifikatsiyasi

Uskuna va dasturiy ta'minot spetsifikatsiyasi
Uskuna va dasturiy ta'minot spetsifikatsiyasi
  • ESP32 WiFi/BLE
  • Simsiz harorat va namlik sensori

Dastur xususiyatlari

Arduino IDE

2 -qadam: asirlik portalini yaratish

Qo'lga tushadigan portal yaratish
Qo'lga tushadigan portal yaratish
Qo'lga tushadigan portal yaratish
Qo'lga tushadigan portal yaratish
Qo'lga tushadigan portal yaratish
Qo'lga tushadigan portal yaratish

Qo'lga olinadigan portal - bu yangi ulangan foydalanuvchilarga tarmoq resurslariga kengroq kirishdan oldin ko'rsatiladigan veb -sahifadir. Bu erda biz DHCP va Statik IP sozlamalarini tanlash uchun uchta veb -sahifaga xizmat ko'rsatamiz. biz ESP uchun IP -manzilni ikki xil aniqlashimiz mumkin.

  • DHCP IP-manzili- bu qurilmaga IP-manzilni dinamik tarzda belgilash usuli. ESP standart IP -manzili 192.168.4.1
  • Statik IP-manzil- bizning tarmoq qurilmamizga doimiy IP-manzilni tayinlash. Statik IP -ni qurilmaga etkazib berish uchun biz IP -manzil, shlyuz manzili va pastki tarmoq niqobini aniqlashimiz kerak.

Birinchi veb -sahifa 192.168.1.77 da joylashgan. Bu erda Foydalanuvchiga DHCP va Statik IP sozlamalarini tanlash uchun radio tugmalari beriladi. Keyingi veb -sahifada biz IP -ga tegishli ma'lumotlarni taqdim etishimiz kerak.

HTML kodi

Veb -sahifalar uchun HTML kodni Github omboridan topishingiz mumkin, HTML veb -sahifalarini yaratish uchun Sublime yoki notepad ++ kabi har qanday IDE yoki matn muharriridan foydalanishingiz mumkin.

  • Birinchidan, DHCP va Statik IP sozlamalarini tanlash uchun ikkita radio tugmachali HTML veb -sahifasini yarating.
  • Endi javobni yuborish tugmachasini yarating
  • Radio tugmalariga nom bering.
  • ESP veb -server sinfi bu nomlarni argument sifatida qabul qiladi va shu argumentlar yordamida radio tugmalarining javobini oladi
  • Endi javobni qurilmaga yuborish uchun "YUBORISH" tugmasini kiriting. Boshqa veb -sahifalarda bizda matnli qutilar mavjud.
  • Matn maydoniga ismning qiymati va kiritish turini bering va javobni "YUBORISH" ga yuborish tugmasini qo'shing.
  • Matn maydonining mazmunini tiklash uchun "RESET" tugmasini yarating.

3 -qadam: WiFi va UbiDots hisob ma'lumotlarini taqdim etish

WiFi va UbiDots hisob ma'lumotlarini taqdim etish
WiFi va UbiDots hisob ma'lumotlarini taqdim etish

Asosiy muammo WiFi hisob ma'lumotlarini boshqarishda yuzaga keladi. Bizda WiFiMulti kutubxonasi bo'lsa ham, biz qurilmaga bir nechta SSID va parollarni bera olamiz va qurilma mavjud tarmoqqa ulanadi. Ammo, agar mavjud tarmoq WiFiMulti ro'yxatida bo'lmasa. ESP32 qurilmasini har doim yonib turishi ishonchli echim emas.

Ushbu muammoni hal qilish uchun, bizda foydalanuvchi SSID va mavjud tarmoq parolini yuborishi mumkin bo'lgan veb -sahifa mavjud. Bu quyidagicha ishlaydi.

  • Veb -sahifa foydalanuvchi tomonidan maxfiy portaldan tanlanganidek, statik IP yoki DHCP IP -da joylashtirilgan
  • Ushbu veb -sahifada qurilmani UbiDots -ga ulash uchun SSID, parol va UBIDOTS token identifikatorini kiritish uchun matnli maydonlar mavjud.
  • Kirish maydonlariga mahalliy Wi -Fi tarmog'ining SSID va parolini kiriting, UbiDot token identifikatorini kiriting va SUBMIT kiriting.
  • Bu ma'lumot ESP32 EEPROM -da saqlanadi
  • 60 soniyadan so'ng, qurilma avtomatik ravishda APdan uziladi
  • Keyingi safar siz qurilmani yoqsangiz, foydalanuvchi bu tartibni bajarishi shart emas, qurilma avtomatik ravishda foydalanuvchi ma'lumotlarini EEPROM -dan oladi va sensor o'qilishini UbiDots -da nashr qilishni davom ettiradi.

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

Bu erda biz harorat va namlik ma'lumotlarini olish uchun ESP 32 qurilmasi bilan simsiz harorat va namlik sensorlaridan foydalanmoqdamiz. Biz MQTT protokoli yordamida ma'lumotlarni UbiDots -ga yuboramiz. MQTT nashr qilish va obuna bo'lish mexanizmidan ko'ra, so'rov va javobni bajaradi. 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 oladi

Rejalashtiruvchi 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 davom etadi

  • 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

uint8_t ma'lumotlari [29];

ma'lumotlar [0] = Serial1.read (); kechikish (k); // chck boshlang'ich baytini if (ma'lumotlar [0] == 0x7E) {while (! Serial1.available ()); uchun (i = 1; i <29; i ++) {ma'lumotlar = Serial1.read (); kechikish (1); } if (ma'lumotlar [15] == 0x7F) /////// qaytariladigan ma'lumotlarning to'g'riligini tekshirish uchun {if (ma'lumotlar [22] == 1) //////// sensor turiga ishonch hosil qiling. to'g'ri {

namlik = ((((ma'lumotlar [24]) * 256) + ma'lumotlar [25]) /100.0); namlik /= 10.0; cTempint = ((((uint16_t) (ma'lumotlar [26]) << 8) | ma'lumotlar [27]); cTemp = (float) cTempint /100.0; cTemp /= 10.0; fTemp = cTemp * 1.8 + 32; fTemp /= 10.0; batareya = tasodifiy (100, 327); kuchlanish = batareya/100; nodeId = ma'lumotlar [16];}

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 belgilang (biz token identifikatorini EEPROMdan olamiz)

#define MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "things.ubidots.com";

char yuklanish [100]; char mavzusi [150];

// token identifikatorini saqlash uchun o'zgaruvchini yarating

String tokenId;

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

5 -qadam: ma'lumotlarni vizualizatsiya qilish

Ma'lumotlarni vizualizatsiya qilish
Ma'lumotlarni vizualizatsiya qilish
Ma'lumotlarni vizualizatsiya qilish
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.

6 -qadam: Umumiy kod

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

Kreditlar

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

Tavsiya: