Përmbajtje:

Lidhja e një sensori DHT11/DHT22 me renë me një bord të bazuar në ESP8266: 9 hapa
Lidhja e një sensori DHT11/DHT22 me renë me një bord të bazuar në ESP8266: 9 hapa

Video: Lidhja e një sensori DHT11/DHT22 me renë me një bord të bazuar në ESP8266: 9 hapa

Video: Lidhja e një sensori DHT11/DHT22 me renë me një bord të bazuar në ESP8266: 9 hapa
Video: Программирование модуля датчика температуры и влажности ESP8266 ESP01 DHT11 | удаленныйXY | ФЛПрог 2024, Nëntor
Anonim
Lidhja e një sensori DHT11/DHT22 me renë me një bord të bazuar në ESP8266
Lidhja e një sensori DHT11/DHT22 me renë me një bord të bazuar në ESP8266

Në artikullin e mëparshëm, unë lidha bordin tim NodeMCU të bazuar në ESP8266 me një shërbim Cloud4RPi. Tani, është koha për një projekt të vërtetë!

Furnizimet

Kërkesat për harduerin:

  • Çdo bord i bazuar në një çip ESP8266 (për shembull, NodeMCU)
  • Një sensor DHT11 ose DHT22

Softuer dhe shërbime:

  • Biblioteka e sensorit DHT nga Adafruit - v1.3.7
  • Sensori i Unifikuar i Adafruit - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - Paneli i kontrollit të reve për pajisjet IoT
  • PlatformIO IDE për VSCode

Hapi 1: Matni Temperaturën dhe Lagështinë

Matni Temperaturën dhe Lagështinë
Matni Temperaturën dhe Lagështinë

Unë tashmë kisha një sensor DHT11, kështu që vendosa ta përdor atë për matjet e temperaturës dhe lagështisë. Le të zgjedhim një bibliotekë Arduino për të lexuar të dhënat e sensorit.

Regjistri Arduino përmban disa biblioteka, nga të cilat zgjodha atë më të popullarizuara.

Sipas depove të tyre GitHub, na kërkohet gjithashtu të shtojmë një paketë Adafruit Unified Sensor.

Hapi 2: Krijoni dhe Konfiguroni Projektin

Krijoni dhe Konfiguroni Projektin
Krijoni dhe Konfiguroni Projektin

Unë tashmë kam përshkruar se si të krijoj një projekt PlatformIO dhe të instaloj biblioteka në pjesën e parë. Projekti im quhet "MyNodeMCU". Struktura është treguar më lart.

Ky projekt është një shembull i modifikuar pak i Cloud4RPi. Vendosa të ruaj shenjën e pajisjes dhe kredencialet Wi-Fi në skedarin e konfigurimit në vend të kodit.

Skedari platform.io duket si më poshtë:

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

Hapi 3: Instaloni Bibliotekat

Instaloni Bibliotekat
Instaloni Bibliotekat

Instalimi i bibliotekave është mjaft i thjeshtë. Ju mund ta bëni atë nga ndërfaqja grafike e IDE, ose duke shtuar emrat e kërkuar të bibliotekës në seksionin lib_deps të skedarit platform.io:

; … Lib_deps = cloud4rpi -esp -arduino Adafruit Sensor i Unifikuar DHT biblioteka e sensorit DHT build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DURIDE_G_0W_IDWID_GIF_YURD_BURG = 0 '' D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"

Bibliotekat e shtuara do të instalohen automatikisht në nën -dosjen e një projekti.

Koka kryesore.cpp duket si më poshtë:

#përfshi #përfshi #përfshi #përfshi "DHT.h"

Hapi 4: Lidhni një sensor DHT11

Adafruit ofron një shembull DHTtester.ino të lidhjes së sensorit.

Ky kod inicializon një sensor dhe përcakton një strukturë për të ruajtur rezultatin e matjes (në rast se ishte i suksesshëm):

#define DHTPIN 2 // Pina digjitale e lidhur me sensorin DHT#përcakto DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.filloj (); //… struct DHT_Result {float h; noton t; }; DHT_Result dhtResult;

Funksioni tjetër tregon se si të lexoni të dhënat e sensorit dhe t'i ruani ato në strukturën e të dhënave të përshkruara më sipër

void readSensors () {noton h = dht.readHumidity (); // Lexoni temperaturën si Celsius (parazgjedhja) noton t = dht.readTemperature ();

// Kontrolloni nëse leximet dështuan dhe dilni

if (isnan (h) || isnan (t)) {Serial.println (F ("Leximi nuk u lexua nga sensori DHT!")); kthim; } dhtResult.h = h; dhtResult.t = t; }

Hapi 5: Dërgimi i të dhënave në re

Pasi t'i kemi ato të dhëna, hapi tjetër është t'i dërgojmë ato në shërbimin Cloud4RPi.

Faqja Cloud4RPi për Arduino përshkruan API -në e bibliotekës, e cila është një grup metodash të përdorura për:

  • krijoni, lexoni dhe azhurnoni variablat,
  • dërgoni vlera të ndryshueshme në cloud duke përdorur protokollin MQTT.

Biblioteka mbështet tre lloje të ndryshueshme: Bool, Numerike dhe String.

Rrjedha e punës në bibliotekë fillon me krijimin e një shembulli API duke përdorur Device Token nga faqja e internetit cloud4rpi.io (referojuni pjesës 1 të artikullit për detaje).

#nëse është përcaktuar (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #ndryshe Cloud4RPi c4r ("!!! _ JO_DEVICE_TOKEN _ !!!"); #endif

Pastaj, deklaroni variablat për leximet DHT11:

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

Pastaj, merrni të dhëna nga sensori, ruajini ato në variabla dhe publikoni të dhënat në Cloud4RPi:

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

Temperatura dhe lagështia nuk ndryshojnë shpejt, kështu që dërgimi i më shumë se një vlere për 5 minuta nuk kërkohet.

Hapi 6: Diagnostifikimi

Cloud4RPi mbështet të dhënat diagnostikuese së bashku me vlerat e ndryshueshme. Kam përdorur kohën e funksionimit, fuqinë e sinjalit Wi-Fi dhe adresën IP si të dhëna diagnostikuese:

c4r.declareDiagVariable ("IP_Adresa"); c4r.declareDiagVariable ("RSSI"); // Fuqia e sinjalit WiFi c4r.declareDiagVariable ("Uptime");

Shënim: Funksioni millis që përdor për të marrë rivendosjen në kohë të punës në zero çdo 50 ditë. E cila është më se e mjaftueshme për projektin tim.

Kodi i mëposhtëm vendos vlera të ndryshueshme diagnostike:

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

Funksioni uptimeHumanReadable konverton milisekonda në një formë të përshtatshme:

String uptimeHumanReadable (milisekonda të gjata të panënshkruara) {statike char uptimeStr [32]; sekonda të gjata të panënshkruara = milisekonda / 1000; minuta të gjata të panënshkruara = sekonda / 60; orë pa shenjë int = mins / 60; ditë të panënshkruara int = orë / 24; sekonda -= mins * 60; mins -= orë * 60; orë -= ditë * 24; sprintf (uptimeStr, "%d ditë%2.2d:%2.2d:%2.2d", (bajt) ditë, (bajt) orë, (bajt) minuta, (bajt) sekonda); string String (uptimeStr); }

Funksioni nxjerr një varg si ky 5 ditë 10:23:14 në vend të një numri të madh të çuditshëm.

Hapi 7: Filloni dhe korrigjoni projektin

Filloni dhe korrigjoni projektin
Filloni dhe korrigjoni projektin

Pas përpilimit të kodit të krijuar dhe ndezjes në NodeMCU, pajisja lidhet me një shërbim cloud dhe fillon të dërgojë të dhëna.

Ju mund të rrisni verbozitetin e regjistrimit duke vendosur ndryshoren e paraprocesorit CLOUD4RPI_DEBUG në 1 (shtoni -D CLOUD4RPI_DEBUG = 1 në seksionin build_flags në skedarin platform.io).

Tjetra, hapni faqen cloud4rpi.io dhe vini re pajisjen e re në internet. Hapeni atë për të parë të gjitha vlerat e ndryshueshme të marra nga pajisja: sensori dhe diagnostifikimi.

Hapi 8: Konfigurimi i pultit

Konfigurimi i pultit
Konfigurimi i pultit

Në këtë hap, lidhja e të dhënave me cloud është funksionale. Tani, le të konfigurojmë paraqitjen vizuale të të dhënave.

Kam përdorur ndërfaqen e konfigurimit të Pultit për të krijuar pultin e mëposhtëm.

Pulti është i ndashëm, kështu që e ndaj menjëherë me mikun tim.

Hapi 9: Përfundim

Përfundim
Përfundim

Kodi i plotë i projektit është në dispozicion në thelb.

Kjo është e gjitha për tani!

Pyetjet dhe sugjerimet janë të mirëseardhura në komente.

Recommended: