Turinys:

DHT11/DHT22 jutiklio prijungimas prie debesies naudojant ESP8266 plokštę: 9 žingsniai
DHT11/DHT22 jutiklio prijungimas prie debesies naudojant ESP8266 plokštę: 9 žingsniai

Video: DHT11/DHT22 jutiklio prijungimas prie debesies naudojant ESP8266 plokštę: 9 žingsniai

Video: DHT11/DHT22 jutiklio prijungimas prie debesies naudojant ESP8266 plokštę: 9 žingsniai
Video: Arduino Tutorial 28 - DHT11 Temperature Sensor with LCD | SunFounder's ESP32 IoT Learnig kit 2024, Lapkritis
Anonim
DHT11/DHT22 jutiklio prijungimas prie debesies naudojant ESP8266 plokštę
DHT11/DHT22 jutiklio prijungimas prie debesies naudojant ESP8266 plokštę

Ankstesniame straipsnyje aš prijungiau savo „ESP8266“pagrįstą „NodeMCU“plokštę prie „Cloud4RPi“paslaugos. Dabar atėjo laikas realiam projektui!

Prekės

Techninės įrangos reikalavimai:

  • Bet kuri plokštė, pagrįsta ESP8266 lustu (pavyzdžiui, „NodeMCU“)
  • DHT11 arba DHT22 jutiklis

Programinė įranga ir paslaugos:

  • „Adafruit“DHT jutiklių biblioteka - v1.3.7
  • „Adafruit Unified Sensor“- v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • „Cloud4RPI“- „Cloud“valdymo skydas, skirtas IoT įrenginiams
  • „PlatformIO IDE“, skirtas „VSCode“

1 žingsnis: išmatuokite temperatūrą ir drėgmę

Išmatuokite temperatūrą ir drėgmę
Išmatuokite temperatūrą ir drėgmę

Aš jau turėjau DHT11 jutiklį, todėl nusprendžiau jį naudoti temperatūros ir drėgmės matavimams. Pasirinkite jutiklio duomenų skaitymui „Arduino“biblioteką.

„Arduino“registre yra kelios bibliotekos, iš kurių aš pasirinkau populiariausią.

Remiantis jų „GitHub“saugykla, mes taip pat turime pridėti „Adafruit Unified Sensor“paketą.

2 veiksmas: sukurkite ir sukonfigūruokite projektą

Sukurkite ir sukonfigūruokite projektą
Sukurkite ir sukonfigūruokite projektą

Kaip sukurti „PlatformIO“projektą ir įdiegti bibliotekas, jau aprašiau pirmoje dalyje. Mano projektas vadinamas „MyNodeMCU“. Struktūra parodyta aukščiau.

Šis projektas yra šiek tiek pakeistas „Cloud4RPi“pavyzdys. Nusprendžiau vietoj kodo išsaugoti įrenginio prieigos raktą ir „Wi-Fi“prisijungimo duomenis konfigūracijos faile.

„Platform.io“failas atrodo taip:

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

3 veiksmas: įdiekite bibliotekas

Įdiekite bibliotekas
Įdiekite bibliotekas

Bibliotekų įrengimas yra gana paprastas. Tai galite padaryti iš IDE grafinės sąsajos arba prie platformos.io failo skilties lib_deps pridėdami reikiamus bibliotekų pavadinimus:

; … Lib_deps = cloud4rpi -esp -arduino Adafruit Unified Sensor DHT jutiklio bibliotekos 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 _ \"

Pridėtos bibliotekos bus automatiškai įdiegtos į projekto poaplankį.

Main.cpp antraštė atrodo taip:

#įtraukimas #įtraukimas #įtraukimas #įtraukimas "DHT.h"

4 veiksmas: prijunkite DHT11 jutiklį

„Adafruit“pateikia DHTtester.ino jutiklio jungties pavyzdį.

Šis kodas inicijuoja jutiklį ir apibrėžia struktūrą, kurioje bus saugomas matavimo rezultatas (jei jis buvo sėkmingas):

#define DHTPIN 2 // Skaitmeninis kaištis prijungtas prie DHT jutiklio#define DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… structure DHT_Result {float h; plūdė t; }; DHT_Result dhtResult;

Kita funkcija parodo, kaip skaityti jutiklio duomenis ir išsaugoti juos aukščiau aprašytoje duomenų struktūroje

void readSensors () {float h = dht.readHumidity (); // Skaityti temperatūrą kaip Celsijų (numatytoji) float t = dht.readTemperature ();

// Patikrinkite, ar nepavyko nuskaityti, ir išeikite

if (isnan (h) || isnan (t)) {Serial.println (F ("Nepavyko nuskaityti iš DHT jutiklio!")); grįžti; } dhtResult.h = h; dhtResult.t = t; }

5 veiksmas: duomenų siuntimas į debesį

Kai turėsime tuos duomenis, kitas žingsnis yra nusiųsti juos į „Cloud4RPi“paslaugą.

Puslapyje „Cloud4RPi for Arduino“aprašoma bibliotekos API, kuri yra metodų rinkinys, naudojamas:

  • kurti, skaityti ir atnaujinti kintamuosius,
  • siųsti kintamas reikšmes į debesį naudojant MQTT protokolą.

Biblioteka palaiko tris kintamus tipus: „Bool“, „Sumeric“ir „String“.

Bibliotekos darbo eiga prasideda sukuriant API egzempliorių naudojant „Device Token“iš „cloud4rpi.io“svetainės (išsamesnės informacijos ieškokite straipsnio 1 dalyje).

#if apibrėžta (CLOUD4RPI_TOKEN) „Cloud4RPi c4r“(CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #endif

Tada deklaruokite kintamuosius DHT11 rodmenims:

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

Tada gaukite duomenis iš jutiklio, išsaugokite juos kintamuosiuose ir paskelbkite duomenis „Cloud4RPi“:

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

Temperatūra ir drėgmė nesikeičia greitai, todėl nereikia siųsti daugiau nei vienos vertės per 5 minutes.

6 žingsnis: diagnostika

„Cloud4RPi“palaiko diagnostinius duomenis kartu su kintamomis reikšmėmis. Kaip diagnostinius duomenis naudoju veikimo laiką, „Wi-Fi“signalo stiprumą ir IP adresą:

c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // „WiFi“signalo stiprumas c4r.declareDiagVariable ("Uptime");

Pastaba: „Millis“funkcija, kurią naudoju veikimo laikui gauti, atstatoma į nulį kas ~ 50 dienų. Tai yra daugiau nei pakankamai mano projektui.

Šis kodas nustato diagnostinių kintamųjų reikšmes:

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

Funkcija „uptimeHumanReadable“milisekundes paverčia patogia forma:

Styginių veikimo laikasHumanReadable (nepasirašytos ilgos milisekundės) {static char uptimeStr [32]; nepasirašytos ilgos sekundės = milisekundės / 1000; nepasirašytos ilgos minutės = sek / 60; nepasirašytos int valandos = min / 60; nepasirašytos int dienos = valandos / 24; sek -= min * 60; min -= valandos * 60; valandos -= dienos * 24; sprintf (uptimeStr, "%d dienos%2.2d:%2.2d:%2.2d", (baitas) dienos, (baitas) valandos, (baitas) minutės, (baitas) sek.); return String (uptimeStr); }

Funkcija vietoj keisto didelio skaičiaus išleidžia tokią eilutę kaip 5 dienos 10:23:14.

7 veiksmas: pradėkite ir derinkite projektą

Pradėkite ir derinkite projektą
Pradėkite ir derinkite projektą

Surinkęs sukurtą kodą ir paviešinęs jį „NodeMCU“, įrenginys prisijungia prie debesies paslaugos ir pradeda siųsti duomenis.

Galite padidinti registravimo daugiakalbiškumą, nustatydami išankstinio apdorojimo kintamąjį CLOUD4RPI_DEBUG į 1 (pridėkite -D CLOUD4RPI_DEBUG = 1 prie platform.io failo skyriaus build_flags).

Tada atidarykite „cloud4rpi.io“svetainę ir pastebėkite naują įrenginį internete. Atidarykite jį, kad pamatytumėte visas iš įrenginio gautas kintamas vertes: jutiklį ir diagnostiką.

8 veiksmas: prietaisų skydelio konfigūravimas

Prietaisų skydelio konfigūracija
Prietaisų skydelio konfigūracija

Šiame etape duomenų ryšys su debesimi veikia. Dabar sukonfigūruokime vaizdinį duomenų vaizdavimą.

Naudodama informacijos suvestinės konfigūracijos vartotojo sąsają sukūriau šią prietaisų skydelį.

Prietaisų skydelis yra bendrinamas, todėl akimirksniu dalinuosi juo su savo draugu.

9 žingsnis: Išvada

Išvada
Išvada

Visas projekto kodas yra esmė.

Tai kol kas viskas!

Klausimai ir pasiūlymai laukiami komentaruose.

Rekomenduojamas: