Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Mål temperatur og fugtighed
- Trin 2: Opret og konfigurer projekt
- Trin 3: Installer biblioteker
- Trin 4: Tilslut en DHT11 -sensor
- Trin 5: Send data til skyen
- Trin 6: Diagnostik
- Trin 7: Start og fejlsøg projektet
- Trin 8: Dashboard -konfiguration
- Trin 9: Konklusion
Video: Tilslutning af en DHT11/DHT22-sensor til skyen med et ESP8266-baseret kort: 9 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
I den forrige artikel tilsluttede jeg mit ESP8266-baserede NodeMCU-kort til en Cloud4RPi-tjeneste. Nu er det tid til et rigtigt projekt!
Forbrugsvarer
Hardware krav:
- Ethvert kort baseret på en ESP8266 -chip (f.eks. NodeMCU)
- En DHT11 eller DHT22 sensor
Software og tjenester:
- DHT -sensorbibliotek af Adafruit - v1.3.7
- Adafruit Unified Sensor - v1.0.3
- cloud4rpi-esp-arduino-v0.1.0
- Cloud4RPI - Cloud -kontrolpanel til IoT -enheder
- PlatformIO IDE til VSCode
Trin 1: Mål temperatur og fugtighed
Jeg havde allerede en DHT11 -sensor, så jeg besluttede at bruge den til temperatur- og fugtighedsmålinger. Lad os vælge et Arduino -bibliotek til at læse sensordata.
Arduino -registreringsdatabasen indeholder flere biblioteker, hvorfra jeg valgte den mest populære.
Ifølge deres GitHub -depot skal vi også tilføje en Adafruit Unified Sensor -pakke.
Trin 2: Opret og konfigurer projekt
Jeg beskrev allerede, hvordan man opretter et PlatformIO -projekt og installerer biblioteker i den første del. Mit projekt hedder "MyNodeMCU". Strukturen er vist ovenfor.
Dette projekt er et let modificeret Cloud4RPi-eksempel. Jeg besluttede at gemme enhedens token og Wi-Fi-legitimationsoplysninger i konfigurationsfilen i stedet for kode.
Platformen.io -filen ser således ud:
[platformio] default_envs = nodemcuv2 [env: nodemcuv2] platform = espressif8266 framework = arduino board = nodemcuv2
Trin 3: Installer biblioteker
Installation af biblioteker er ganske enkel. Du kan gøre det fra IDEs grafiske grænseflade eller ved at tilføje nødvendige biblioteksnavne til sektionen lib_deps i 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 = / -WSI_WI D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"
Tilføjede biblioteker installeres automatisk i et projekts undermappe.
Main.cpp -overskriften ser således ud:
#include #include #include #include "DHT.h"
Trin 4: Tilslut en DHT11 -sensor
Adafruit giver et DHTtester.ino -eksempel på en sensorforbindelse.
Denne kode initialiserer en sensor og definerer en struktur til lagring af måleresultatet (hvis det lykkedes):
#define DHTPIN 2 // Digital pin forbundet til DHT -sensoren#definere DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… struct DHT_Result {float h; flyde t; }; DHT_Result dhtResult;
Den næste funktion viser, hvordan sensordata læses og gemmes i datastrukturen beskrevet ovenfor
void readSensors () {float h = dht.readHumidity (); // Læs temperaturen som Celsius (standard) float t = dht.readTemperature ();
// Kontroller, om nogen læsning mislykkedes, og afslut
if (isnan (h) || isnan (t)) {Serial.println (F ("Kunne ikke læse fra DHT -sensor!")); Vend tilbage; } dhtResult.h = h; dhtResult.t = t; }
Trin 5: Send data til skyen
Når vi har disse data, er det næste trin at sende dem til Cloud4RPi -tjenesten.
Siden Cloud4RPi til Arduino beskriver bibliotekets API, som er et sæt metoder, der bruges til:
- oprette, læse og opdatere variabler,
- sende variable værdier ind i skyen ved hjælp af MQTT -protokollen.
Biblioteket understøtter tre variable typer: Bool, Numeric og String.
Bibliotekets arbejdsgang starter med at oprette en API -forekomst ved hjælp af Device Token fra cloud4rpi.io -webstedet (se artiklens del 1 for detaljer).
#if defineret (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #Afslut Hvis
Angiv derefter variabler for DHT11 -aflæsninger:
c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");
Hent derefter data fra sensoren, gem dem i variabler og offentliggør dataene til Cloud4RPi:
c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();
Temperatur og fugtighed ændres ikke hurtigt, så det er ikke nødvendigt at sende mere end én værdi pr. 5 minutter.
Trin 6: Diagnostik
Cloud4RPi understøtter diagnostiske data sammen med variable værdier. Jeg brugte oppetid, Wi-Fi-signalstyrke og IP-adresse som diagnosedata:
c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // WiFi signalstyrke c4r.declareDiagVariable ("oppetid");
Bemærk: Millis -funktionen, jeg bruger til at opnå uptime nulstilles til hver 50. dag. Hvilket er mere end nok til mit projekt.
Følgende kode angiver diagnosevariabelværdier:
c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();
Funktionen uptimeHumanReadable konverterer millisekunder til en bekvem form:
String uptimeHumanReadable (usignerede lange millisekunder) {statisk char uptimeStr [32]; usignerede lange sekunder = millisekunder / 1000; usignerede lange minutter = sek / 60; usignerede int timer = min / 60; usignerede int dage = timer / 24; sekunder -= minutter * 60; minutter -= timer * 60; timer -= dage * 24; sprintf (uptimeStr, "%d dage%2.2d:%2.2d:%2.2d", (byte) dage, (byte) timer, (byte) minutter, (byte) sek)); return String (uptimeStr); }
Funktionen udsender en streng som denne 5 dage 10:23:14 i stedet for et mærkeligt stort tal.
Trin 7: Start og fejlsøg projektet
Efter at have sammensat den oprettede kode og blinket den til NodeMCU, opretter enheden forbindelse til en cloud -tjeneste og begynder at sende data.
Du kan øge logos verbositet ved at indstille CLOUD4RPI_DEBUG preprocessor -variablen til 1 (tilføj -D CLOUD4RPI_DEBUG = 1 til build_flags -sektionen i platform.io -filen).
Åbn derefter cloud4rpi.io -webstedet, og læg mærke til den nye enhed online. Åbn den for at se alle variable værdier modtaget fra enheden: sensor og diagnostik.
Trin 8: Dashboard -konfiguration
På dette trin er dataforbindelsen til skyen operationel. Lad os nu konfigurere den visuelle repræsentation af dataene.
Jeg brugte Dashboard -konfigurationsgrænsefladen til at oprette følgende dashboard.
Instrumentbrættet kan deles, så jeg deler det med det samme med min ven.
Trin 9: Konklusion
Hele projektets kode er tilgængelig i det væsentlige.
Det er alt for nu!
Spørgsmål og forslag modtages gerne i kommentarerne.
Anbefalede:
Sådan sender du data til skyen med Arduino Ethernet: 8 trin
Sådan sender du data til skyen med Arduino Ethernet: Denne instruktør viser dig, hvordan du offentliggør dine data til AskSensors IoT Platform ved hjælp af Arduino Ethernet Shield. Ethernet Shield gør det muligt for din Arduino let at få forbindelse til skyen, sende og modtage data med en internetforbindelse. Hvad vi
Tilslutning af Arduino WiFi til skyen ved hjælp af ESP8266: 7 trin
Tilslutning af Arduino WiFi til skyen ved hjælp af ESP8266: I denne vejledning forklarer vi dig, hvordan du slutter din Arduino til IoT -skyen via WiFi.Vi konfigurerer en opsætning, der består af en Arduino og et ESP8266 WiFi -modul som en IoT -ting og gør den klar at kommunikere med AskSensors skyen. L
IoT Basics: Tilslutning af din IoT til skyen ved hjælp af Mongoose OS: 5 trin
IoT Basics: Tilslutning af din IoT til skyen ved hjælp af Mongoose OS: Hvis du er en person, der er til at snyde og elektronik, vil du oftere end ikke støde på begrebet Internet of Things, normalt forkortet som IoT, og at det refererer til et sæt enheder, der kan oprette forbindelse til internettet! At være sådan en person
Tilslutning af Twitter til et Eclipse -projekt med Twitter4J API: 5 trin
Tilslutning af Twitter til et Eclipse -projekt med Twitter4J API: Denne instruktør forklarer, hvordan du forbinder din Twitter -konto med dit Eclipse -projekt, og hvordan du importerer Twitter4J -applikationsprogramgrænsefladen (API) for at bruge dens funktioner til at automatisere læsning og skrivning til Twitter . Dette instruerbare
Montering af et Niftymitter V0.24 -kort - en FM -sender med kort rækkevidde: 6 trin
Montering af et Niftymitter V0.24 -kort - en FM -sender med kort rækkevidde: Denne instruktør guider dig gennem samling af kredsløbet til Niftymitter, en mini -FM -sender med åben kildekode. Kredsløbet bruger en frit løbende oscillator og er baseret på Tetsuo Kogawa's enkleste FM -sender. Projektet er placeret på www.op