INHOUDSOPGAWE:
- Voorrade
- Stap 1: Meet temperatuur en humiditeit
- Stap 2: Skep en konfigureer projek
- Stap 3: Installeer biblioteke
- Stap 4: Koppel 'n DHT11 -sensor aan
- Stap 5: Stuur data na die wolk
- Stap 6: Diagnose
- Stap 7: Begin en ontfout die projek
- Stap 8: Dashboard -opset
- Stap 9: Gevolgtrekking
Video: Koppel 'n DHT11/DHT22-sensor aan die wolk met 'n ESP8266-kaart: 9 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
In die vorige artikel het ek my ESP8266-gebaseerde NodeMCU-bord aan 'n Cloud4RPi-diens gekoppel. Nou is dit tyd vir 'n regte projek!
Voorrade
Hardeware vereistes:
- Enige bord gebaseer op 'n ESP8266 -chip (byvoorbeeld NodeMCU)
- 'N DHT11- of DHT22 -sensor
Sagteware en dienste:
- DHT -sensorbiblioteek deur Adafruit - v1.3.7
- Adafruit Unified Sensor - v1.0.3
- cloud4rpi-esp-arduino-v0.1.0
- Cloud4RPI - Wolkbeheerpaneel vir IoT -toestelle
- PlatformIO IDE vir VSCode
Stap 1: Meet temperatuur en humiditeit
Ek het reeds 'n DHT11 -sensor gehad, so ek het besluit om dit te gebruik vir temperatuur- en humiditeitsmetings. Kom ons kies 'n Arduino -biblioteek om sensordata te lees.
Die Arduino -register bevat verskeie biblioteke, waaruit ek die gewildste een gekies het.
Volgens hul GitHub -bewaarplek moet ons ook 'n Adafruit Unified Sensor -pakket byvoeg.
Stap 2: Skep en konfigureer projek
Ek het reeds in die eerste deel beskryf hoe om 'n PlatformIO -projek te skep en biblioteke te installeer. My projek heet “MyNodeMCU”. Die struktuur word hierbo getoon.
Hierdie projek is 'n effens aangepaste Cloud4RPi-voorbeeld. Ek het besluit om die toesteltoken en Wi-Fi-geloofsbriewe in die konfigurasielêer te plaas in plaas van die kode.
Die platform.io -lêer lyk soos volg:
[platformio] default_envs = nodemcuv2 [env: nodemcuv2] platform = espressif8266 raamwerk = arduino bord = nodemcuv2
Stap 3: Installeer biblioteke
Die installering van biblioteke is redelik eenvoudig. U kan dit doen vanaf die IDE se grafiese koppelvlak, of deur die vereiste biblioteekname by die lib_deps -afdeling van die platform.io -lêer te voeg:
; … lib_deps = cloud4rpi -esp -arduino Adafruit Unified Sensor DHT -sensorbiblioteek build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0_D SSID_NAME = / " D CLOUD4RPI_TOKEN = / "_ JOU_DEVICE_TOKEN _ \"
Bygevoegde biblioteke word outomaties in die submap van 'n projek geïnstalleer.
Die main.cpp -kop lyk soos volg:
#include #include #include #include "DHT.h"
Stap 4: Koppel 'n DHT11 -sensor aan
Adafruit bied 'n DHTtester.ino -voorbeeld van 'n sensorverbinding.
Hierdie kode initialiseer 'n sensor en definieer 'n struktuur om die meetresultaat op te slaan (indien dit suksesvol was):
#define DHTPIN 2 // Digitale pen wat aan die DHT -sensor gekoppel is#definieer DHTTYPE DHT11 // DHT 11 // … DHT dht (DHTPIN, DHTTYPE); dht.begin (); // … struct DHT_Result {float h; dryf t; }; DHT_Result dhtResult;
Die volgende funksie wys hoe om sensordata te lees en te stoor in die datastruktuur hierbo beskryf
void readSensors () {float h = dht.readHumidity (); // Lees temperatuur as Celsius (die standaard) float t = dht.readTemperature ();
// Kontroleer of enige lees misluk het en verlaat
if (isnan (h) || isnan (t)) {Serial.println (F ("Kan nie lees van DHT -sensor nie!")); terugkeer; } dhtResult.h = h; dhtResult.t = t; }
Stap 5: Stuur data na die wolk
Sodra ons die data het, is die volgende stap om dit na die Cloud4RPi -diens te stuur.
Die Cloud4RPi for Arduino -bladsy beskryf die biblioteek -API, 'n stel metodes wat gebruik word om:
- skep, lees en werk veranderlikes op,
- stuur veranderlike waardes na die wolk met behulp van die MQTT -protokol.
Die biblioteek ondersteun drie veranderlike tipes: Bool, numeries en string.
Die werkstroom van die biblioteek begin met die skep van 'n API -instansie met behulp van die Device Token vanaf die cloud4rpi.io -webwerf (raadpleeg die deel 1 van die artikel vir meer inligting).
#as gedefinieer (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #endif
Verklaar dan veranderlikes vir DHT11 -lesings:
c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");
Kry dan data van die sensor, stoor dit in veranderlikes en publiseer die data aan Cloud4RPi:
c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();
Temperatuur en humiditeit verander nie vinnig nie, dus is dit nie nodig om meer as een waarde per 5 minute te stuur nie.
Stap 6: Diagnose
Cloud4RPi ondersteun diagnostiese data saam met veranderlike waardes. Ek het uptyd, Wi-Fi-seinsterkte en IP-adres as diagnostiese data gebruik:
c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // WiFi seinsterkte c4r.declareDiagVariable ("Uptime");
Let wel: die millis -funksie wat ek gebruik om elke ~ 50 dae uptime te herstel. Wat meer as genoeg is vir my projek.
Die volgende kode stel diagnostiese veranderlike waardes:
c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();
Die uptimeHumanReadable -funksie skakel millisekondes om in 'n gerieflike vorm:
String uptimeHumanReadable (ongetekende lang millisekondes) {statiese char uptimeStr [32]; ongetekende lang sekondes = millisekondes / 1000; ongetekende lang minute = sekondes / 60; ongetekende int ure = min / 60; ongetekende int dae = ure / 24; sekondes -= min * 60; minute -= ure * 60; ure -= dae * 24; sprintf (uptimeStr, "%d days%2.2d:%2.2d:%2.2d", (byte) dae, (byte) ure, (byte) minute, (byte) sekondes); terugkeer string (uptimeStr); }
Die funksie lewer 'n string soos hierdie 5 dae 10:23:14 in plaas van 'n vreemde groot getal.
Stap 7: Begin en ontfout die projek
Nadat die gemaakte kode saamgestel is en in NodeMCU geflits is, maak die toestel verbinding met 'n wolkdiens en begin dit data stuur.
U kan die woordelikheid van die aanmelding verhoog deur die CLOUD4RPI_DEBUG -voorverwerker -veranderlike op 1 te stel (voeg -D CLOUD4RPI_DEBUG = 1 by die build_flags -afdeling in platform.io -lêer).
Maak dan die cloud4rpi.io -webwerf oop en let op die nuwe toestel aanlyn. Maak dit oop om alle veranderlike waardes van die toestel te sien: sensor en diagnostiek.
Stap 8: Dashboard -opset
In hierdie stap is die dataverbinding met die wolk operasioneel. Laat ons nou die visuele voorstelling van die data konfigureer.
Ek het die Dashboard -konfigurasie -UI gebruik om die volgende paneelbord te skep.
Die paneelbord is deelbaar, so ek deel dit onmiddellik met my vriend.
Stap 9: Gevolgtrekking
Die volledige projekkode is in wese beskikbaar.
Dit is al vir nou!
Vrae en voorstelle is welkom in die kommentaar.
Aanbeveel:
Koppel en koppel u gekoppelde oplossings aan met Hologram Nova en Ubidots: 9 stappe
Koppel en koppel u gekoppelde oplossings aan met Hologram Nova en Ubidots: Gebruik u Hologram Nova om infrastruktuur op te stel. Stel die Hologram Nova op met 'n Raspberry Pi om (temperatuur) data na Ubidots te stuur. In die volgende gids sal Ubidots demonstreer hoe u 'n Hologram Nova met 'n Raspberry Pi kan opstel en 'n
Hoe om Raspberry Pi aan die wolk te koppel met behulp van Node.js: 7 stappe
Hoe om Raspberry Pi aan die wolk te koppel met behulp van Node.js: Hierdie handleiding is handig vir almal wat 'n Raspberry Pi aan die wolk wil koppel, veral aan die AskSensors IoT -platform, met behulp van Node.js. Het u nie 'n Raspberry Pi nie? As u tans nie 'n Raspberry Pi besit nie, sal ek u aanbeveel om 'n Raspberry te koop
Koppel Arduino WiFi aan die wolk met behulp van ESP8266: 7 stappe
Arduino WiFi met die wolk verbind met behulp van ESP8266: In hierdie tutoriaal sal ons u verduidelik hoe u u Arduino via WiFi met die IoT -wolk kan koppel. om met die AskSensors -wolk te kommunikeer. L
Koppel u plant aan die wolk: 10 stappe
Koppel u plant aan die wolk: in ons kantoor is daar 'n kaktus wat nie die aandag gekry het wat dit verdien het nie. Aangesien ek by 'n IT -onderneming werk en wou eksperimenteer met LoRa, bedienerlose oplossings en AWS, het ek ons kaktus Steeve genoem en hom aan die wolk gekoppel. U kan nou monitor
IoT Basics: Koppel u IoT aan die wolk met behulp van Mongoose OS: 5 stappe
IoT Basics: Koppel u IoT aan die wolk met Mongoose OS: as u 'n persoon is wat besig is met knoeiery en elektronika, kom u die term Internet of Things, gewoonlik afgekort as IoT, teë, en dit is verwys na 'n stel toestelle wat met die internet verbind kan word! Om so 'n persoon te wees