Satura rādītājs:

DHT11/DHT22 sensora pievienošana mākonim, izmantojot ESP8266 bortu: 9 soļi
DHT11/DHT22 sensora pievienošana mākonim, izmantojot ESP8266 bortu: 9 soļi

Video: DHT11/DHT22 sensora pievienošana mākonim, izmantojot ESP8266 bortu: 9 soļi

Video: DHT11/DHT22 sensora pievienošana mākonim, izmantojot ESP8266 bortu: 9 soļi
Video: КАК ИЗМЕРИТЬ ТЕМПЕРАТУРУ И ВЛАЖНОСТЬ. ДАТЧИКИ DHT11 И DHT22 [Уроки Ардуино #13] 2024, Novembris
Anonim
DHT11/DHT22 sensora pievienošana mākonim, izmantojot ESP8266 bortu
DHT11/DHT22 sensora pievienošana mākonim, izmantojot ESP8266 bortu

Iepriekšējā rakstā es savienoju savu ESP8266 bāzes NodeMCU plati ar Cloud4RPi pakalpojumu. Tagad ir pienācis laiks īstenam projektam!

Piegādes

Aparatūras prasības:

  • Jebkura tāfele, kuras pamatā ir mikroshēma ESP8266 (piemēram, NodeMCU)
  • DHT11 vai DHT22 sensors

Programmatūra un pakalpojumi:

  • Adafruit DHT sensoru bibliotēka - v1.3.7
  • Adafruit Unified Sensor - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - Mākonis vadības panelis IoT ierīcēm
  • PlatformIO IDE VSCode

1. darbība. Izmēriet temperatūru un mitrumu

Izmēriet temperatūru un mitrumu
Izmēriet temperatūru un mitrumu

Man jau bija DHT11 sensors, tāpēc nolēmu to izmantot temperatūras un mitruma mērījumiem. Lai nolasītu sensora datus, izvēlēsimies Arduino bibliotēku.

Arduino reģistrā ir vairākas bibliotēkas, no kurām es izvēlējos populārāko.

Saskaņā ar viņu GitHub krātuvi mums ir jāpievieno arī Adafruit vienotā sensora pakotne.

2. darbība: izveidojiet un konfigurējiet projektu

Izveidojiet un konfigurējiet projektu
Izveidojiet un konfigurējiet projektu

Kā izveidot PlatformIO projektu un instalēt bibliotēkas, es jau aprakstīju pirmajā daļā. Mans projekts saucas “MyNodeMCU”. Struktūra ir parādīta iepriekš.

Šis projekts ir nedaudz pārveidots Cloud4RPi piemērs. Es nolēmu ierīces marķieri un Wi-Fi akreditācijas datus saglabāt koda vietā konfigurācijas failā.

Fails platform.io izskatās šādi:

[platformio] default_envs = nodemcuv2 [env: nodemcuv2] platform = espressif8266 Framework = arduino board = nodemcuv2

3. darbība: instalējiet bibliotēkas

Instalējiet bibliotēkas
Instalējiet bibliotēkas

Bibliotēku uzstādīšana ir diezgan vienkārša. To var izdarīt no IDE grafiskā interfeisa vai pievienojot nepieciešamos bibliotēku nosaukumus faila platform.io faila sadaļai lib_deps:

; … Lib_deps = cloud4rpi -esp -arduino Adafruit Unified Sensor DHT sensoru bibliotēkas build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0 -SSID_ / \ - D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"

Pievienotās bibliotēkas tiks automātiski instalētas projekta apakšmapē.

Main.cpp galvene izskatās šādi:

#iekļaut #iekļaut #iekļaut #iekļaut "DHT.h"

4. solis: pievienojiet DHT11 sensoru

Adafruit nodrošina DHTtester.ino sensora savienojuma piemēru.

Šis kods inicializē sensoru un nosaka struktūru, lai saglabātu mērījumu rezultātu (ja tas bija veiksmīgs):

#define DHTPIN 2 // Digitālā tapa, kas savienota ar DHT sensoru#define DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… structure DHT_Result {float h; pludiņš t; }; DHT_Result dhtResult;

Nākamā funkcija parāda, kā nolasīt sensoru datus un saglabāt tos iepriekš aprakstītajā datu struktūrā

void readSensors () {pludiņš h = dht.readHumidity (); // Temperatūras lasīšana pēc Celsija (noklusējuma) float t = dht.readTemperature ();

// Pārbaudiet, vai kāda nolasīšana neizdevās, un izejiet

if (isnan (h) || isnan (t)) {Serial.println (F ("Neizdevās nolasīt no DHT sensora!")); atgriešanās; } dhtResult.h = h; dhtResult.t = t; }

5. darbība: datu sūtīšana uz mākoni

Kad mums ir šie dati, nākamais solis ir nosūtīt tos pakalpojumam Cloud4RPi.

Lapā Cloud4RPi for Arduino ir aprakstīta bibliotēkas API, kas ir metožu kopums, ko izmanto, lai:

  • izveidot, lasīt un atjaunināt mainīgos,
  • nosūtīt mainīgās vērtības mākonī, izmantojot MQTT protokolu.

Bibliotēka atbalsta trīs mainīgos veidus: tukša, ciparu un virkne.

Bibliotēkas darbplūsma sākas ar API instances izveidi, izmantojot ierīces marķieri no vietnes cloud4rpi.io (sīkāku informāciju skatiet raksta 1. daļā).

#if definēts (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #endif

Pēc tam deklarējiet mainīgos DHT11 rādījumiem:

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

Pēc tam iegūstiet datus no sensora, saglabājiet tos mainīgajos un publicējiet datus Cloud4RPi:

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

Temperatūra un mitrums nemainās ātri, tāpēc nav jānosūta vairāk nekā viena vērtība 5 minūtēs.

6. darbība: diagnostika

Cloud4RPi atbalsta diagnostikas datus un mainīgās vērtības. Kā diagnostikas datus izmantoju darbības laiku, Wi-Fi signāla stiprumu un IP adresi:

c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // WiFi signāla stiprums c4r.declareDiagVariable ("Uptime");

Piezīme: milis funkcija, ko izmantoju, lai iegūtu darba laiku, tiek atiestatīta uz nulli ik pēc ~ 50 dienām. Kas ir vairāk nekā pietiekami manam projektam.

Šis kods nosaka diagnostikas mainīgo vērtības:

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

Funkcija uptimeHumanReadable pārvērš milisekundes ērtā formā:

String uptimeHumanReadable (neparakstītas garas milisekundes) {static char uptimeStr [32]; neparakstītas garās sekundes = milisekundes / 1000; neparakstītas garas minūtes = sekundes / 60; neparakstītas int stundas = min / 60; neparakstītas int dienas = stundas / 24; sekundes -= min * 60; min -= stundas * 60; stundas -= dienas * 24; sprintf (uptimeStr, "%d dienas%2.2d:%2.2d:%2.2d", (baits) dienas, (baits) stundas, (baits) min, (baits) sekundes); atgriešanās virkne (uptimeStr); }

Funkcija izvada šādu virkni 5 dienas 10:23:14 dīvaina liela skaitļa vietā.

7. darbība: sāciet un atkļūdojiet projektu

Sāciet un atkļūdojiet projektu
Sāciet un atkļūdojiet projektu

Pēc izveidotā koda apkopošanas un ievadīšanas NodeMCU ierīce izveido savienojumu ar mākoņa pakalpojumu un sāk sūtīt datus.

Jūs varat palielināt mežizstrādes daudzpusību, iestatot CLOUD4RPI_DEBUG priekšprocesora mainīgo uz 1 (pievienojiet -D CLOUD4RPI_DEBUG = 1 platformas.io faila sadaļai build_flags).

Pēc tam atveriet vietni cloud4rpi.io un pamaniet jauno ierīci tiešsaistē. Atveriet to, lai redzētu visas mainīgās vērtības, kas saņemtas no ierīces: sensoru un diagnostiku.

8. darbība. Informācijas paneļa konfigurēšana

Informācijas paneļa konfigurācija
Informācijas paneļa konfigurācija

Šajā posmā darbojas datu savienojums ar mākoni. Tagad konfigurēsim datu vizuālo attēlojumu.

Es izmantoju informācijas paneļa konfigurācijas lietotāja saskarni, lai izveidotu šādu informācijas paneli.

Informācijas panelis ir koplietojams, tāpēc es uzreiz to kopīgoju ar savu draugu.

9. solis. Secinājums

Secinājums
Secinājums

Pilns projekta kods ir pieejams būtībā.

Tas pagaidām ir viss!

Jautājumi un ieteikumi ir laipni gaidīti komentāros.

Ieteicams: