Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Mål temperatur og fuktighet
- Trinn 2: Opprett og konfigurer prosjekt
- Trinn 3: Installer biblioteker
- Trinn 4: Koble til en DHT11 -sensor
- Trinn 5: Sende data til nettskyen
- Trinn 6: Diagnostikk
- Trinn 7: Start og feilsøk prosjektet
- Trinn 8: Dashboard -konfigurasjon
- Trinn 9: Konklusjon
Video: Koble en DHT11/DHT22-sensor til skyen med et ESP8266-basert kort: 9 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
I forrige artikkel koblet jeg mitt ESP8266-baserte NodeMCU-kort til en Cloud4RPi-tjeneste. Nå er det på tide med et skikkelig prosjekt!
Rekvisita
Krav til maskinvare:
- Alle brett basert på en ESP8266 -brikke (for eksempel NodeMCU)
- En DHT11 eller DHT22 sensor
Programvare og tjenester:
- DHT -sensorbibliotek av Adafruit - v1.3.7
- Adafruit Unified Sensor - v1.0.3
- cloud4rpi-esp-arduino-v0.1.0
- Cloud4RPI - Cloud -kontrollpanel for IoT -enheter
- PlatformIO IDE for VSCode
Trinn 1: Mål temperatur og fuktighet
Jeg hadde allerede en DHT11 -sensor, så jeg bestemte meg for å bruke den til temperatur- og fuktighetsmålinger. La oss velge et Arduino -bibliotek for å lese sensordata.
Arduino -registeret inneholder flere biblioteker, hvorfra jeg valgte det mest populære.
I følge deres GitHub -depot er vi også pålagt å legge til en Adafruit Unified Sensor -pakke.
Trinn 2: Opprett og konfigurer prosjekt
Jeg beskrev allerede hvordan jeg lager et PlatformIO -prosjekt og installerer biblioteker i den første delen. Prosjektet mitt heter “MyNodeMCU”. Strukturen er vist ovenfor.
Dette prosjektet er et lett modifisert Cloud4RPi-eksempel. Jeg bestemte meg for å lagre enhetens token og Wi-Fi-legitimasjon i konfigurasjonsfilen i stedet for kode.
Platform.io -filen ser slik ut:
[platformio] default_envs = nodemcuv2 [env: nodemcuv2] plattform = espressif8266 framework = arduino board = nodemcuv2
Trinn 3: Installer biblioteker
Installasjon av biblioteker er ganske enkelt. Du kan gjøre det fra IDEs grafiske grensesnitt, eller ved å legge til nødvendige biblioteknavn i lib_deps -delen av platform.io -filen:
; … Lib_deps = cloud4rpi -esp -arduino Adafruit Unified Sensor DHT -sensorbibliotek build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0 -D SSID_NAME = / "_WISI_ \" D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"
Lagte biblioteker installeres automatisk i undermappen til et prosjekt.
Main.cpp -overskriften ser slik ut:
#include #include #include #include "DHT.h"
Trinn 4: Koble til en DHT11 -sensor
Adafruit gir et DHTtester.ino -eksempel på en sensortilkobling.
Denne koden initialiserer en sensor og definerer en struktur for å lagre måleresultatet (i tilfelle det var vellykket):
#define DHTPIN 2 // Digital pin koblet til DHT -sensoren#definere DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); // … struct DHT_Result {float h; flyte t; }; DHT_Result dhtResult;
Den neste funksjonen viser hvordan du leser sensordata og lagrer dem i datastrukturen beskrevet ovenfor
void readSensors () {float h = dht.readHumidity (); // Les temperaturen som Celsius (standard) float t = dht.readTemperature ();
// Kontroller om noen av lesningene mislyktes, og avslutt
if (isnan (h) || isnan (t)) {Serial.println (F ("Kunne ikke lese fra DHT -sensor!")); komme tilbake; } dhtResult.h = h; dhtResult.t = t; }
Trinn 5: Sende data til nettskyen
Når vi har disse dataene, er neste trinn å sende dem til Cloud4RPi -tjenesten.
Cloud4RPi for Arduino -siden beskriver bibliotekets API, som er et sett med metoder som brukes til:
- lage, lese og oppdatere variabler,
- sende variable verdier inn i skyen ved hjelp av MQTT -protokollen.
Biblioteket støtter tre variabeltyper: Bool, Numeric og String.
Arbeidsflyten i biblioteket starter med å opprette en API -forekomst ved hjelp av Device Token fra nettstedet cloud4rpi.io (se artikkelens del 1 for detaljer).
#if definert (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #slutt om
Deretter deklarerer du variabler for DHT11 -avlesninger:
c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");
Få deretter data fra sensoren, lagre dem i variabler og publiser dataene til Cloud4RPi:
c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();
Temperatur og fuktighet endres ikke raskt, så det er ikke nødvendig å sende mer enn én verdi per 5 minutter.
Trinn 6: Diagnostikk
Cloud4RPi støtter diagnostiske data sammen med variable verdier. Jeg brukte oppetid, Wi-Fi-signalstyrke og IP-adresse som diagnostiske data:
c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // WiFi signalstyrke c4r.declareDiagVariable ("oppetid");
Merk: Millis -funksjonen jeg bruker for å få oppetid tilbakestilles til null hver ~ 50. dag. Noe som er mer enn nok for prosjektet mitt.
Følgende kode angir verdier for diagnostiske variabler:
c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();
Funksjonen uptimeHumanReadable konverterer millisekunder til en praktisk form:
String uptimeHumanReadable (usignerte lange millisekunder) {static char uptimeStr [32]; usignerte lange sekunder = millisekunder / 1000; usignerte lange minutter = sek / 60; usignerte int timer = min / 60; usignerte int dager = timer / 24; sekunder -= minutter * 60; minutter -= timer * 60; timer -= dager * 24; sprintf (uptimeStr, "%d days%2.2d:%2.2d:%2.2d", (byte) dager, (byte) timer, (byte) minutter, (byte) sekunder); returstreng (uptimeStr); }
Funksjonen sender ut en streng som denne 5 dager 10:23:14 i stedet for et merkelig stort tall.
Trinn 7: Start og feilsøk prosjektet
Etter å ha samlet den opprettede koden og blinket den inn i NodeMCU, kobler enheten seg til en skytjeneste og begynner å sende data.
Du kan øke loggingsomfanget ved å sette CLOUD4RPI_DEBUG -preprosessorvariabelen til 1 (legg til -D CLOUD4RPI_DEBUG = 1 i build_flags -delen i platform.io -filen).
Deretter åpner du nettstedet cloud4rpi.io og merker den nye enheten online. Åpne den for å se alle variable verdier mottatt fra enheten: sensor og diagnostikk.
Trinn 8: Dashboard -konfigurasjon
På dette trinnet er datatilkoblingen til skyen operativ. La oss nå konfigurere den visuelle representasjonen av dataene.
Jeg brukte Dashboard -konfigurasjonsgrensesnittet for å lage følgende dashbord.
Dashbordet er delbart, så jeg deler det umiddelbart med min venn.
Trinn 9: Konklusjon
Hele prosjektets kode er tilgjengelig i hovedsak.
Det er alt for nå!
Spørsmål og forslag mottas gjerne i kommentarene.
Anbefalt:
Slik sender du data til skyen med Arduino Ethernet: 8 trinn
Slik sender du data til skyen med Arduino Ethernet: Denne instruksjonen viser deg hvordan du publiserer dataene dine til AskSensors IoT -plattform ved hjelp av Arduino Ethernet Shield. Med Ethernet Shield kan Arduino enkelt kobles til skyen, sende og motta data med en internettforbindelse. Hva vi
Koble Arduino WiFi til skyen ved hjelp av ESP8266: 7 trinn
Koble Arduino WiFi til skyen ved hjelp av ESP8266: I denne opplæringen vil vi forklare deg hvordan du kobler Arduino til IoT -skyen via WiFi. Vi konfigurerer et oppsett sammensatt av en Arduino og en ESP8266 WiFi -modul som en IoT -ting og gjør den klar å kommunisere med AskSensors -skyen. L
Koble anlegget til skyen: 10 trinn
Koble planten din til skyen: På kontoret vårt er det en kaktus som ikke fikk den oppmerksomheten den fortjente. Siden jeg jobber i et IT -selskap og ønsket å eksperimentere med LoRa, serverløse løsninger og AWS, kalte jeg kaktusen vår Steeve og koblet ham til skyen. Du kan nå overvåke
IoT Grunnleggende: Koble IoT til skyen ved hjelp av Mongoose OS: 5 trinn
IoT Grunnleggende: Koble din IoT til skyen ved hjelp av Mongoose OS: Hvis du er en person som liker å tinke og elektronikk, vil du oftere enn ikke komme over begrepet Internet of Things, vanligvis forkortet som IoT, og at det refererer til et sett med enheter som kan koble til internett! Å være en slik person
Montering av et Niftymitter V0.24 -kort - en FM -sender med kort rekkevidde: 6 trinn
Montering av et Niftymitter V0.24 -kort - en kort rekkevidde FM -sender: Denne instruksen vil guide deg gjennom montering av kretsen for Niftymitter, en åpen kildekode mini FM -sender. Kretsen bruker en frittgående oscillator og er basert på Tetsuo Kogawas enkleste FM -sender. Prosjektet ligger på www.op