Innehållsförteckning:
- Tillbehör
- Steg 1: Mät temperatur och luftfuktighet
- Steg 2: Skapa och konfigurera projekt
- Steg 3: Installera bibliotek
- Steg 4: Anslut en DHT11 -sensor
- Steg 5: Skicka data till molnet
- Steg 6: Diagnostik
- Steg 7: Starta och felsöka projektet
- Steg 8: Dashboardkonfiguration
- Steg 9: Slutsats
Video: Ansluta en DHT11/DHT22-sensor till molnet med ett ESP8266-baserat kort: 9 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
I föregående artikel kopplade jag mitt ESP8266-baserade NodeMCU-kort till en Cloud4RPi-tjänst. Nu är det dags för ett riktigt projekt!
Tillbehör
Hårdvarukrav:
- Vilket kort som helst baserat på ett ESP8266 -chip (till exempel NodeMCU)
- En DHT11- eller DHT22 -sensor
Programvara och tjänster:
- DHT -sensorbibliotek av Adafruit - v1.3.7
- Adafruit Unified Sensor - v1.0.3
- cloud4rpi-esp-arduino-v0.1.0
- Cloud4RPI - Molnkontrollpanel för IoT -enheter
- PlatformIO IDE för VSCode
Steg 1: Mät temperatur och luftfuktighet
Jag hade redan en DHT11 -sensor, så jag bestämde mig för att använda den för temperatur- och fuktmätningar. Låt oss välja ett Arduino -bibliotek för att läsa sensordata.
Arduino -registret innehåller flera bibliotek, varifrån jag valde det mest populära.
Enligt deras GitHub -förvar måste vi också lägga till ett Adafruit Unified Sensor -paket.
Steg 2: Skapa och konfigurera projekt
Jag har redan beskrivit hur man skapar ett PlatformIO -projekt och installerar bibliotek i den första delen. Mitt projekt heter "MyNodeMCU". Strukturen visas ovan.
Detta projekt är ett något modifierat Cloud4RPi-exempel. Jag bestämde mig för att lagra enhetstoken och Wi-Fi-referenser i konfigurationsfilen istället för kod.
Filen platform.io ser ut så här:
[platformio] default_envs = nodemcuv2 [env: nodemcuv2] plattform = espressif8266 framework = arduino board = nodemcuv2
Steg 3: Installera bibliotek
Installationen av bibliotek är ganska enkel. Du kan göra det från IDE: s grafiska gränssnitt, eller genom att lägga till nödvändiga biblioteksnamn i avsnittet 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 = 0 -D SSID_NAME = / "_WISI_ \" D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"
Tillagda bibliotek installeras automatiskt i ett projekts undermapp.
Huvudet main.cpp ser ut så här:
#include #include #include #include "DHT.h"
Steg 4: Anslut en DHT11 -sensor
Adafruit tillhandahåller ett DHTtester.ino -exempel på en sensoranslutning.
Denna kod initierar en sensor och definierar en struktur för att lagra mätresultatet (om det lyckades):
#define DHTPIN 2 // Digital pin ansluten till DHT -sensorn#definiera DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); // … struct DHT_Result {float h; flyta t; }; DHT_Result dhtResult;
Nästa funktion visar hur man läser sensordata och lagrar den i datastrukturen som beskrivs ovan
void readSensors () {float h = dht.readHumidity (); // Läs temperaturen som Celsius (standard) float t = dht.readTemperature ();
// Kontrollera om någon läsning misslyckades och avsluta
if (isnan (h) || isnan (t)) {Serial.println (F ("Det gick inte att läsa från DHT -sensor!")); lämna tillbaka; } dhtResult.h = h; dhtResult.t = t; }
Steg 5: Skicka data till molnet
När vi har den informationen är nästa steg att skicka den till Cloud4RPi -tjänsten.
Cloud4RPi för Arduino -sidan beskriver bibliotekets API, som är en uppsättning metoder som används för att:
- skapa, läsa och uppdatera variabler,
- skicka variabla värden till molnet med MQTT -protokollet.
Biblioteket stöder tre variabeltyper: Bool, Numeric och String.
Arbetsflödet för biblioteket börjar med att skapa en API -instans med hjälp av Device Token från cloud4rpi.io -webbplatsen (se artikelns del 1 för mer information).
#if definierad (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #endif
Deklarera sedan variabler för DHT11 -avläsningar:
c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");
Hämta sedan data från sensorn, spara dem i variabler och publicera data till Cloud4RPi:
c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();
Temperatur och luftfuktighet ändras inte snabbt, så det är inte nödvändigt att skicka mer än ett värde per 5 minuter.
Steg 6: Diagnostik
Cloud4RPi stöder diagnostikdata tillsammans med variabla värden. Jag använde upptid, Wi-Fi-signalstyrka och IP-adress som diagnosdata:
c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // WiFi -signalstyrka c4r.declareDiagVariable ("Uptime");
Obs: Millis -funktionen jag använder för att få drifttid återställs till noll var ~ 50: e dag. Vilket är mer än tillräckligt för mitt projekt.
Följande kod anger värden för diagnostiska variabler:
c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();
Funktionen uptimeHumanReadable konverterar millisekunder till en bekväm form:
String uptimeHumanReadable (osignerade långa millisekunder) {static char uptimeStr [32]; osignerade långa sekunder = millisekunder / 1000; osignerade långa minuter = sek / 60; osignerade int timmar = min / 60; osignerade int dagar = timmar / 24; sekunder -= min * 60; minuter -= timmar * 60; timmar -= dagar * 24; sprintf (uptimeStr, "%d days%2.2d:%2.2d:%2.2d", (byte) dagar, (byte) timmar, (byte) minuter, (byte) sekunder); retursträng (uptimeStr); }
Funktionen matar ut en sträng så här 5 dagar 10:23:14 istället för ett konstigt stort tal.
Steg 7: Starta och felsöka projektet
Efter att ha skapat den skapade koden och blinkat den till NodeMCU ansluter enheten till en molntjänst och börjar skicka data.
Du kan öka loggningsomfattningen genom att ställa in CLOUD4RPI_DEBUG -förbehandlingsvariabeln till 1 (lägg till -D CLOUD4RPI_DEBUG = 1 till build_flags -sektionen i platform.io -filen).
Öppna sedan cloud4rpi.io -webbplatsen och lägg märke till den nya enheten online. Öppna den för att se alla variabelvärden som tas emot från enheten: sensor och diagnostik.
Steg 8: Dashboardkonfiguration
Vid detta steg är dataanslutningen till molnet operativ. Låt oss nu konfigurera den visuella representationen av data.
Jag använde instrumentpanelens konfigurationsgränssnitt för att skapa följande instrumentpanel.
Instrumentpanelen är delbar, så jag delar den direkt med min vän.
Steg 9: Slutsats
Hela projektets kod finns i huvudsak.
Det var allt tills vidare!
Frågor och förslag är välkomna i kommentarerna.
Rekommenderad:
IoT Basics: Ansluta din IoT till molnet med Mongoose OS: 5 steg
IoT Basics: Ansluta din IoT till molnet med hjälp av Mongoose OS: Om du är en person som håller på med pyssel och elektronik, kommer du oftare än inte att stöta på begreppet Internet of Things, vanligtvis förkortat som IoT, och att det refererar till en uppsättning enheter som kan ansluta till internet! Att vara en sådan person
Ansluta Twitter till ett Eclipse -projekt med Twitter4J API: 5 steg
Ansluta Twitter till ett Eclipse -projekt med Twitter4J API: Denna instruktion förklarar hur du ansluter ditt Twitter -konto till ditt Eclipse -projekt och hur du importerar Twitter4J -applikationsprogramgränssnittet (API) för att använda dess funktioner för att automatisera läsning och skrivning till Twitter . Detta instruerbara
Hur man programmerar ett AVR -kort med ett Arduino -kort: 6 steg
Hur man programmerar ett AVR -kort med ett Arduino -kort: Har du ett AVR -mikrokontrollkort? Är det svårt att programmera det? Tja, du är på rätt ställe. Här kommer jag att visa dig hur du programmerar ett Atmega8a mikrokontrollerkort med ett Arduino Uno -kort som programmerare. Så utan längd
Lägg till en kylare till ett ATI All in Wonder 9600 VGA -kort: 6 steg
Lägg till en kylare till ett ATI All in Wonder 9600 VGA-kort: ATI All-In-Wonder-kortet är ett stort värde för funktionerna, så jag är säker på att många köpte ett när det var tillgängligt. En anledning till att de var ett stort värde var långsammare och billigare komponenter, så kortet kommer att göra mycket, bara långsammare än genomsnittet.
Montering av ett Niftymitter V0.24 -kort - en FM -sändare med kort räckvidd: 6 steg
Montering av ett Niftymitter V0.24 -kort - en FM -sändare med kort räckvidd: Denna instruktionsbok guidar dig genom att montera kretsen för Niftymitter, en mini -FM -sändare med öppen källkod. Kretsen använder en frittgående oscillator och är baserad på Tetsuo Kogawas enklaste FM -sändare. Projektet finns på www.op