Turinys:
- Prekės
- 1 žingsnis: išmatuokite temperatūrą ir drėgmę
- 2 veiksmas: sukurkite ir sukonfigūruokite projektą
- 3 veiksmas: įdiekite bibliotekas
- 4 veiksmas: prijunkite DHT11 jutiklį
- 5 veiksmas: duomenų siuntimas į debesį
- 6 žingsnis: diagnostika
- 7 veiksmas: pradėkite ir derinkite projektą
- 8 veiksmas: prietaisų skydelio konfigūravimas
- 9 žingsnis: Išvada
Video: DHT11/DHT22 jutiklio prijungimas prie debesies naudojant ESP8266 plokštę: 9 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
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ę
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ą
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
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ą
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
Š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
Visas projekto kodas yra esmė.
Tai kol kas viskas!
Klausimai ir pasiūlymai laukiami komentaruose.
Rekomenduojamas:
„Arduino WiFi“prijungimas prie debesies naudojant ESP8266: 7 veiksmai
„Arduino WiFi“prijungimas prie debesies naudojant ESP8266: Šioje pamokoje mes paaiškinsime, kaip prijungti „Arduino“prie „IoT“debesies per „WiFi“. Mes sukonfigūruosime sąranką, sudarytą iš „Arduino“ir ESP8266 „WiFi“modulio, kaip „IoT“dalyką ir paruošime jį paruošti bendrauti su „AskSensors“debesimi.L
Daiktų interneto pagrindai: savo daiktų interneto prijungimas prie debesies naudojant „Mongoose“OS: 5 žingsniai
Daiktų interneto pagrindai: savo daiktų interneto prijungimas prie debesies naudojant „Mongoose“OS: Jei esate žmogus, kuris užsiima tinkle ir elektronika, dažniausiai susidursite su daiktų internetu, paprastai sutrumpintu kaip daiktų internetas, ir kad reiškia įrenginių, galinčių prisijungti prie interneto, rinkinį! Būdamas toks žmogus
„Twitter“prijungimas prie „Eclipse“projekto naudojant „Twitter4J“API: 5 žingsniai
„Twitter“prijungimas prie „Eclipse“projekto naudojant „Twitter4J“API: šioje instrukcijoje paaiškinama, kaip prijungti „Twitter“paskyrą prie „Eclipse“projekto ir kaip importuoti „Twitter4J“taikomosios programos sąsają (API), kad jos funkcijos būtų naudojamos skaitymui ir rašymui „Twitter“automatizuoti . Tai pamokoma
UCL - raudono mazgo prijungimas prie „Siemens PLC“naudojant „KEPserver“: 7 žingsniai
UCL-raudonojo mazgo prijungimas prie „Siemens PLC“naudojant KEPserver: ReikalavimaiNode-red: https://nodered.org/docs/getting-started/installationKEPserver: https://www.kepware.com/en-us/kepserverex-6 -6 leidimas
Kas yra prie mano durų? PIR judesio jutiklio/diapazono jutiklio projektas: 5 žingsniai
Kas yra prie mano durų? PIR judesio jutiklio/diapazono jutiklio projektas: Mūsų projekto tikslas yra pajusti judesį per PIR ir atstumo jutiklius. „Arduino“kodas skleis vaizdo ir garso signalą, kad vartotojui būtų pranešta, kad kažkas yra šalia. MATLAB kodas atsiųs el. Pašto signalą, kad įspėtų vartotoją, kad kažkas yra šalia. Šis įrenginys