Kazalo:

Priključitev senzorja DHT11/DHT22 v oblak s ploščo na osnovi ESP8266: 9 korakov
Priključitev senzorja DHT11/DHT22 v oblak s ploščo na osnovi ESP8266: 9 korakov

Video: Priključitev senzorja DHT11/DHT22 v oblak s ploščo na osnovi ESP8266: 9 korakov

Video: Priključitev senzorja DHT11/DHT22 v oblak s ploščo na osnovi ESP8266: 9 korakov
Video: КАК ИЗМЕРИТЬ ТЕМПЕРАТУРУ И ВЛАЖНОСТЬ. ДАТЧИКИ DHT11 И DHT22 [Уроки Ардуино #13] 2024, November
Anonim
Priključitev senzorja DHT11/DHT22 v oblak s ploščo na osnovi ESP8266
Priključitev senzorja DHT11/DHT22 v oblak s ploščo na osnovi ESP8266

V prejšnjem članku sem svojo ploščo NodeMCU, ki temelji na ESP8266, povezal s storitvijo Cloud4RPi. Zdaj je čas za pravi projekt!

Zaloge

Strojne zahteve:

  • Katera koli plošča, ki temelji na čipu ESP8266 (na primer NodeMCU)
  • Senzor DHT11 ali DHT22

Programska oprema in storitve:

  • Knjižnica senzorjev DHT Adafruit - v1.3.7
  • Adafruit Unified Sensor - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - Nadzorna plošča v oblaku za naprave IoT
  • PlatformIO IDE za VSCode

1. korak: Izmerite temperaturo in vlažnost

Izmerite temperaturo in vlažnost
Izmerite temperaturo in vlažnost

Senzor DHT11 sem že imel, zato sem se odločil, da ga uporabim za merjenje temperature in vlažnosti. Za branje podatkov senzorja izberite knjižnico Arduino.

Register Arduino vsebuje več knjižnic, med katerimi sem izbral najbolj priljubljeno.

Glede na njihovo skladišče GitHub moramo dodati tudi paket Adafruit Unified Sensor.

2. korak: Ustvarite in konfigurirajte projekt

Ustvarite in konfigurirajte projekt
Ustvarite in konfigurirajte projekt

V prvem delu sem že opisal, kako ustvariti projekt PlatformIO in namestiti knjižnice. Moj projekt se imenuje "MyNodeMCU". Struktura je prikazana zgoraj.

Ta projekt je nekoliko spremenjen primer Cloud4RPi. Odločil sem se, da namesto kode shranim žeton naprave in poverilnice Wi-Fi v konfiguracijsko datoteko.

Datoteka platform.io izgleda tako:

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

3. korak: Namestite knjižnice

Namestite knjižnice
Namestite knjižnice

Namestitev knjižnic je precej preprosta. To lahko storite iz grafičnega vmesnika IDE ali tako, da v razdelek lib_deps datoteke platform.io dodate zahtevana imena knjižnic:

; … Lib_deps = cloud4rpi -esp -arduino Adapruit Unified Sensor knjižnica senzorjev DHL build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0 -D SSID_NAME / "YIP D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"

Dodane knjižnice bodo samodejno nameščene v podmapo projekta.

Glava main.cpp izgleda tako:

#include #include #include #include "DHT.h"

4. korak: Priključite senzor DHT11

Adafruit ponuja DHTtester.ino primer povezave senzorja.

Ta koda inicializira senzor in definira strukturo za shranjevanje rezultata merjenja (če je bil uspešen):

#define DHTPIN 2 // Digitalni pin, povezan s tipalom DHT#define DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… struct DHT_Result {float h; float t; }; DHT_Result dhtResult;

Naslednja funkcija prikazuje, kako prebrati podatke senzorja in jih shraniti v zgoraj opisano podatkovno strukturo

void readSensors () {float h = dht.readHumidity (); // Temperatura se bere kot Celzius (privzeto) float t = dht.readTemperature ();

// Preverite, ali je katero koli branje neuspešno in zapustite

if (isnan (h) || isnan (t)) {Serial.println (F ("Ni bilo mogoče prebrati s senzorja DHT!")); vrnitev; } dhtResult.h = h; dhtResult.t = t; }

5. korak: pošiljanje podatkov v oblak

Ko imamo te podatke, je naslednji korak, da jih pošljemo v storitev Cloud4RPi.

Stran Cloud4RPi za Arduino opisuje API knjižnice, ki je niz metod, ki se uporabljajo za:

  • ustvarjanje, branje in posodabljanje spremenljivk,
  • pošiljanje spremenljivih vrednosti v oblak s protokolom MQTT.

Knjižnica podpira tri vrste spremenljivk: Bool, Numeric in String.

Delovni potek knjižnice se začne z ustvarjanjem primerka API -ja z uporabo žetona naprave s spletnega mesta cloud4rpi.io (za podrobnosti glejte 1. del članka).

#if definirano (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #endif

Nato razglasite spremenljivke za odčitke DHT11:

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

Nato iz senzorja vzemite podatke, jih shranite v spremenljivke in jih objavite v Cloud4RPi:

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

Temperatura in vlaga se ne spreminjata hitro, zato pošiljanje več kot ene vrednosti na 5 minut ni potrebno.

6. korak: Diagnostika

Cloud4RPi podpira diagnostične podatke skupaj s spremenljivimi vrednostmi. Kot diagnostične podatke sem uporabil čas delovanja, moč signala Wi-Fi in naslov IP:

c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // Moč signala WiFi c4r.declareDiagVariable ("Uptime");

Opomba: Funkcija millis, ki jo uporabljam za ponastavitev časa delovanja, se ponastavi na nič vsakih ~ 50 dni. Kar je več kot dovolj za moj projekt.

Naslednja koda nastavi vrednosti diagnostične spremenljivke:

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

Funkcija uptimeHumanReadable pretvori milisekunde v priročno obliko:

String uptimeHumanReadable (brez podpisa dolgih milisekund) {static char uptimeStr [32]; nepodpisane dolge sekunde = milisekunde / 1000; nepodpisane dolge minute = sekunde / 60; nepodpisane int ure = min / 60; nepodpisani int dnevi = ure / 24; sekunde -= min * 60; min -= ure * 60; ure -= dni * 24; sprintf (uptimeStr, "%d dni%2.2d:%2.2d:%2.2d", (bajt) dni, (bajt) ur, (bajt) min, (bajt) sekund); return String (uptimeStr); }

Funkcija prikaže tak niz 5 dni 10:23:14 namesto čudnega velikega števila.

7. korak: Zaženite in odpravite napake projekta

Zaženite in odpravite napake v projektu
Zaženite in odpravite napake v projektu

Po sestavljanju ustvarjene kode in vstavitvi v NodeMCU se naprava poveže s storitvijo v oblaku in začne pošiljati podatke.

Osebnost beleženja lahko povečate tako, da spremenljivko predprocesorja CLOUD4RPI_DEBUG nastavite na 1 (dodajte -D CLOUD4RPI_DEBUG = 1 v datoteko build_flags v datoteki platform.io).

Nato odprite spletno mesto cloud4rpi.io in na spletu opazite novo napravo. Odprite ga, če si želite ogledati vse spremenljive vrednosti, prejete iz naprave: senzor in diagnostiko.

8. korak: Konfiguracija nadzorne plošče

Konfiguracija nadzorne plošče
Konfiguracija nadzorne plošče

Na tem koraku deluje podatkovna povezava z oblakom. Zdaj pa nastavimo vizualno predstavitev podatkov.

Za izdelavo naslednje nadzorne plošče sem uporabil uporabniški vmesnik nadzorne plošče.

Armaturna plošča je skupna, zato jo takoj delim s prijateljem.

9. korak: Zaključek

Zaključek
Zaključek

Celotna koda projekta je na voljo v bistvu.

To je vse za zdaj!

Vprašanja in predlogi so dobrodošli v komentarjih.

Priporočena: