Mundarija:

DHT11/DHT22 sensorini bulutga ESP8266 asosidagi platasi bilan ulash: 9 qadam
DHT11/DHT22 sensorini bulutga ESP8266 asosidagi platasi bilan ulash: 9 qadam

Video: DHT11/DHT22 sensorini bulutga ESP8266 asosidagi platasi bilan ulash: 9 qadam

Video: DHT11/DHT22 sensorini bulutga ESP8266 asosidagi platasi bilan ulash: 9 qadam
Video: DHT11 sensor Tutorial di NodeMCU ESP8266 beserta Pengujian & Kalibrasinya 2024, Noyabr
Anonim
DHT11/DHT22 sensorini bulutga ESP8266 asosidagi karta bilan ulash
DHT11/DHT22 sensorini bulutga ESP8266 asosidagi karta bilan ulash

Oldingi maqolada men ESP8266-ga asoslangan NodeMCU kartamni Cloud4RPi xizmatiga uladim. Endi haqiqiy loyiha qilish vaqti keldi!

Ta'minotlar

Uskuna talablari:

  • ESP8266 chipiga asoslangan har qanday taxta (masalan, NodeMCU)
  • DHT11 yoki DHT22 sensori

Dastur va Xizmatlar:

  • Adafruit tomonidan DHT sensorlar kutubxonasi - v1.3.7
  • Adafruit yagona sensori - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - IoT qurilmalari uchun bulutli boshqaruv paneli
  • VSCode uchun PlatformIO IDE

1 -qadam: Harorat va namlikni o'lchash

Harorat va namlikni o'lchash
Harorat va namlikni o'lchash

Menda DHT11 sensori bor edi, shuning uchun men uni harorat va namlikni o'lchash uchun ishlatishga qaror qildim. Sensor ma'lumotlarini o'qish uchun Arduino kutubxonasini tanlaymiz.

Arduino reestri bir nechta kutubxonalarni o'z ichiga oladi, ulardan men eng mashhurini tanladim.

Ularning GitHub omboriga ko'ra, bizdan Adafruit Unified Sensor paketini qo'shish talab qilinadi.

2 -qadam: Loyihani yaratish va sozlash

Loyihani yaratish va sozlash
Loyihani yaratish va sozlash

Men allaqachon PlatformIO loyihasini qanday yaratish va kutubxonalarni birinchi qismga o'rnatish haqida aytib berdim. Mening loyiham "MyNodeMCU" deb nomlangan. Tuzilishi yuqorida ko'rsatilgan.

Bu loyiha Cloud4RPi-ning biroz o'zgartirilgan namunasidir, men kod o'rniga konfiguratsiya faylida qurilma tokenini va Wi-Fi ma'lumotlarini saqlashga qaror qildim.

Platform.io fayli quyidagicha ko'rinadi:

[platformio] default_envs = nodemcuv2 [env: nodemcuv2] platforma = espressif8266 framework = arduino taxtasi = nodemcuv2

3 -qadam: kutubxonalarni o'rnating

Kutubxonalarni o'rnating
Kutubxonalarni o'rnating

Kutubxonalarni o'rnatish juda oddiy. Siz buni IDE grafik interfeysidan yoki platform.io faylining lib_deps bo'limiga kerakli kutubxona nomlarini qo'shish orqali qilishingiz mumkin:

; … Lib_deps = cloud4rpi -esp -arduino Adafruit birlashtirilgan sensori DHT datchiklar kutubxonasi build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = / "YID_ID_IF_DI_IFI_DI_IFI_DI_IFI D CLOUD4RPI_TOKEN = / "SIZNING_DEVICE_TOKEN _ \"

Qo'shilgan kutubxonalar avtomatik ravishda loyihaning ichki jildiga o'rnatiladi.

Main.cpp sarlavhasi quyidagicha ko'rinadi:

#qo'shish #qo'shish #qo'shish #qo'shish "DHT.h"

4 -qadam: DHT11 sensorini ulang

Adafruit DHTtester.ino datchik ulanishining misolini taqdim etadi.

Ushbu kod sensorni ishga tushiradi va o'lchov natijasini saqlash uchun tuzilmani belgilaydi (agar u muvaffaqiyatli bo'lsa):

#depine DHTPIN 2 // DHT sensoriga ulangan raqamli pin#DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… tuzilishi DHT_Result {float h; suzuvchi t; }; DHT_Result dhtResult;

Keyingi funksiya sensor ma'lumotlarini o'qish va uni yuqorida tavsiflangan ma'lumotlar tuzilmasida saqlashni ko'rsatadi

void readSensors () {float h = dht.readHumidity (); // Haroratni Selsiy bo'yicha o'qing (standart) float t = dht.readTemperature ();

// O'qish muvaffaqiyatsiz bo'lganligini tekshiring va chiqing

if (isnan (h) || isnan (t)) {Serial.println (F ("DHT sensoridan o'qib bo'lmadi!")); qaytish; } dhtResult.h = h; dhtResult.t = t; }

5 -qadam: ma'lumotlarni bulutga yuborish

Bu ma'lumotlarga ega bo'lgach, keyingi qadam - uni Cloud4RPi xizmatiga yuborish.

Cloud4RPi for Arduino sahifasida quyidagilar uchun qo'llaniladigan usullar to'plami bo'lgan API kutubxonasi tasvirlangan.

  • o'zgaruvchilarni yaratish, o'qish va yangilash,
  • MQTT protokoli yordamida o'zgarmaydigan qiymatlarni bulutga yuborish.

Kutubxona uchta o'zgaruvchan turni qo'llab -quvvatlaydi: Bool, Raqamli va String.

Kutubxona ishi cloud4rpi.io veb -saytidan Device Token yordamida API nusxasini yaratish bilan boshlanadi (batafsil ma'lumot uchun maqolaning 1 -qismiga qarang).

#if aniqlangan (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #boshqa Cloud4RPi c4r ("!!! _ DEVICE_TOKEN _ !!!"); #endif

Keyin, DHT11 o'qishlari uchun o'zgaruvchilarni e'lon qiling:

c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");

Keyin, sensordan ma'lumotlarni oling, ularni o'zgaruvchilarga saqlang va ma'lumotlarni Cloud4RPi -da e'lon qiling:

c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();

Harorat va namlik tez o'zgarmaydi, shuning uchun 5 daqiqada bir nechta qiymat yuborish shart emas.

6 -qadam: diagnostika

Cloud4RPi o'zgaruvchan qiymatlar bilan bir qatorda diagnostika ma'lumotlarini qo'llab -quvvatlaydi. Tashxis ma'lumoti sifatida men ish vaqti, Wi-Fi signal kuchi va IP manzilidan foydalandim:

c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // WiFi signal kuchi c4r.declareDiagVariable ("Ish vaqti");

Eslatma: Ish vaqtini har 50 kunda nolga qaytarish uchun ishlatadigan millis funktsiyasi. Bu mening loyiham uchun etarli.

Quyidagi kod diagnostik o'zgaruvchan qiymatlarni o'rnatadi:

c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Ish vaqti", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();

UptimeHumanReadable funktsiyasi millisekundlarni qulay shaklga o'zgartiradi:

String uptimeHumanReadable (imzosiz uzun millisekundlar) {statik char uptimeStr [32]; imzosiz uzoq soniyalar = millisekund / 1000; imzosiz uzoq daqiqa = sek / 60; imzosiz int soat = min / 60; imzosiz int kunlar = soat / 24; soniya -= min * 60; daqiqa -= soat * 60; soat -= kun * 24; sprintf (uptimeStr, "%d kun%2.2d:%2.2d:%2.2d", (bayt) kun, (bayt) soat, (bayt) daqiqa, (bayt) soniya); Stringni qaytarish (uptimeStr); }

Funktsiya g'alati katta raqam o'rniga 5 kun 10:23:14 qatorini chiqaradi.

7 -qadam: Loyihani ishga tushiring va disk raskadrovka qiling

Loyihani ishga tushiring va disk raskadrovka qiling
Loyihani ishga tushiring va disk raskadrovka qiling

Yaratilgan kodni kompilyatsiya qilib, uni NodeMCU -da yondirgandan so'ng, qurilma bulutli xizmatga ulanadi va ma'lumotlarni yuborishni boshlaydi.

CLOUD4RPI_DEBUG oldingi protsessor o'zgaruvchisini 1 ga o'rnatish orqali jurnalga yozilishning ko'payishini oshirishingiz mumkin (platform.io faylidagi build_flags bo'limiga -D CLOUD4RPI_DEBUG = 1 qo'shing).

Keyin, cloud4rpi.io saytini oching va Internetda yangi qurilmaga e'tibor bering. Qurilmadan olingan barcha o'zgaruvchan qiymatlarni ko'rish uchun uni oching: sensor va diagnostika.

8 -qadam: Boshqaruv paneli konfiguratsiyasi

Boshqaruv paneli konfiguratsiyasi
Boshqaruv paneli konfiguratsiyasi

Ushbu bosqichda bulutga ma'lumotlar ulanishi ishlaydi. Keling, ma'lumotlarning vizual ko'rinishini sozlaylik.

Quyidagi boshqaruv panelini yaratish uchun boshqaruv paneli konfiguratsion interfeysidan foydalandim.

Boshqaruv paneli almashish mumkin, shuning uchun men uni darhol do'stim bilan bo'lishaman.

9 -qadam: Xulosa

Xulosa
Xulosa

Loyihaning to'liq kodi mohiyatda mavjud.

Hammasi hozircha!

Savollar va takliflar sharhlarda qabul qilinadi.

Tavsiya: