Inhoudsopgave:
- Benodigdheden
- Stap 1: Meet temperatuur en vochtigheid
- Stap 2: Project maken en configureren
- Stap 3: Bibliotheken installeren
- Stap 4: Sluit een DHT11-sensor aan
- Stap 5: Gegevens naar de cloud verzenden
- Stap 6: Diagnostiek
- Stap 7: Start en debug het project
- Stap 8: Dashboardconfiguratie
- Stap 9: Conclusie
Video: Een DHT11/DHT22-sensor verbinden met de cloud met een op ESP8266 gebaseerd bord: 9 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
In het vorige artikel heb ik mijn op ESP8266 gebaseerde NodeMCU-kaart aangesloten op een Cloud4RPi-service. Nu is het tijd voor een echt project!
Benodigdheden
Hardwarevereisten:
- Elk bord op basis van een ESP8266-chip (bijvoorbeeld NodeMCU)
- Een DHT11- of DHT22-sensor
Software en diensten:
- DHT-sensorbibliotheek door Adafruit - v1.3.7
- Adafruit Unified Sensor - v1.0.3
- cloud4rpi-esp-arduino - v0.1.0
- Cloud4RPI - Cloud-configuratiescherm voor IoT-apparaten
- PlatformIO IDE voor VSCode
Stap 1: Meet temperatuur en vochtigheid
Ik had al een DHT11-sensor, dus besloot ik deze te gebruiken voor temperatuur- en vochtigheidsmetingen. Laten we een Arduino-bibliotheek kiezen om sensorgegevens te lezen.
Arduino-register bevat verschillende bibliotheken, waarvan ik de meest populaire heb geselecteerd.
Volgens hun GitHub-repository zijn we ook verplicht om een Adafruit Unified Sensor-pakket toe te voegen.
Stap 2: Project maken en configureren
In het eerste deel heb ik al beschreven hoe je een PlatformIO-project maakt en bibliotheken installeert. Mijn project heet " MyNodeMCU ". De structuur is hierboven weergegeven.
Dit project is een licht gewijzigd Cloud4RPi-voorbeeld. Ik heb besloten om de apparaattoken en wifi-inloggegevens op te slaan in het configuratiebestand in plaats van in de code.
Het platform.io-bestand ziet er als volgt uit:
[platformio]default_envs = nodemcuv2[env:nodemcuv2] platform = espressif8266 framework = arduino-bord = nodemcuv2
Stap 3: Bibliotheken installeren
De installatie van bibliotheken is vrij eenvoudig. U kunt dit doen vanuit de grafische interface van de IDE, of door de vereiste bibliotheeknamen toe te voegen aan de sectie lib_deps van het platform.io-bestand:
; …lib_deps = cloud4rpi-esp-arduino Adafruit Unified Sensor DHT-sensorbibliotheek build_flags = -D MQTT_MAX_PACKET_SIZE=1024 -D MQTT_MAX_TRANSFER_SIZE=128 -D CLOUD4RPI_DEBUG=0 -D SSID_NAME=\"_YOUR_WIFI_\" D CLOUD4RPI_TOKEN=\"_YOUR_DEVICE_TOKEN_\"
Toegevoegde bibliotheken worden automatisch geïnstalleerd in de submap van een project.
De header main.cpp ziet er als volgt uit:
#include #include #include #include "DHT.h"
Stap 4: Sluit een DHT11-sensor aan
Adafruit biedt een DHTtester.ino-voorbeeld van een sensorverbinding.
Deze code initialiseert een sensor en definieert een structuur om het meetresultaat op te slaan (voor het geval het succesvol was):
#define DHTPIN 2 // Digitale pin aangesloten op de DHT-sensor#define DHTTYPE DHT11 // DHT 11 // … DHT dht(DHTPIN, DHTTYPE); dht.begin(); // … struct DHT_Result { float h; zweven t; }; DHT_Result dhtResult;
De volgende functie laat zien hoe u sensorgegevens kunt lezen en opslaan in de hierboven beschreven gegevensstructuur
void readSensors() { float h = dht.readHumidity(); // Lees temperatuur als Celsius (de standaard) float t = dht.readTemperature ();
// Controleer of het lezen is mislukt en sluit af
if (isnan(h) || isnan(t)) { Serial.println(F("Kan niet lezen van DHT-sensor!")); opbrengst; } dhtResult.h = h; dhtResultaat.t = t; }
Stap 5: Gegevens naar de cloud verzenden
Zodra we die gegevens hebben, is de volgende stap om deze naar de Cloud4RPi-service te sturen.
De Cloud4RPi voor Arduino-pagina beschrijft de bibliotheek-API, een reeks methoden die worden gebruikt om:
- variabelen maken, lezen en bijwerken,
- stuur variabele waarden naar de cloud met behulp van het MQTT-protocol.
De bibliotheek ondersteunt drie typen variabelen: Bool, Numeric en String.
De bibliotheekworkflow begint met het maken van een API-instantie met behulp van de Device Token van de cloud4rpi.io-website (raadpleeg deel 1 van het artikel voor details).
#indien gedefinieerd(CLOUD4RPI_TOKEN) Cloud4RPi c4r(CLOUD4RPI_TOKEN); #else Cloud4RPi c4r("!!!_NO_DEVICE_TOKEN_!!!"); #stop als
Declareer vervolgens variabelen voor DHT11-metingen:
c4r.declareNumericVariable("DHT11_Temp");c4r.declareNumericVariable("DHT11_Hum");
Haal vervolgens gegevens van de sensor, sla ze op in variabelen en publiceer de gegevens naar Cloud4RPi:
c4r.setVariable("DHT11_Temp", dhtResult.t);c4r.setVariable("DHT11_Hum", dhtResult.h); c4r.publishData();
Temperatuur en vochtigheid veranderen niet snel, dus meer dan één waarde per 5 minuten verzenden is niet nodig.
Stap 6: Diagnostiek
Cloud4RPi ondersteunt diagnostische gegevens samen met variabele waarden. Ik heb uptime, wifi-signaalsterkte en IP-adres gebruikt als diagnostische gegevens:
c4r.declareDiagVariable("IP_Address");c4r.declareDiagVariable("RSSI"); // WiFi-signaalsterkte c4r.declareDiagVariable ("Uptime");
Opmerking: de millis-functie die ik gebruik om de uptime elke ~ 50 dagen te resetten naar nul. Dat is meer dan genoeg voor mijn project.
De volgende code stelt waarden voor diagnostische variabelen in:
c4r.setDiagVariable("RSSI", (String)WiFi. RSSI() + " dBm");c4r.setDiagVariable("IP_Address", WiFi.localIP().toString()); c4r.setDiagVariable("Uptime", uptimeHumanReadable(currentMillis)); c4r.publishDiag();
De uptimeHumanReadable-functie converteert milliseconden naar een handige vorm:
String uptimeHumanReadable (unsigned lange milliseconden) { static char uptimeStr [32]; niet-ondertekende lange seconden = milliseconden / 1000; niet-ondertekende lange minuten = seconden / 60; niet ondertekend in uren = min / 60; niet ondertekend int dagen = uur / 24; seconden -= minuten * 60; min -= uur * 60; uur -= dagen * 24; sprintf(uptimeStr, "%d dagen %2.2d:%2.2d:%2.2d", (byte)dagen, (byte)uren, (byte)mins, (byte)sec); return String (uptimeStr); }
De functie geeft een string als deze uit 5 dagen 10:23:14 in plaats van een vreemd groot getal.
Stap 7: Start en debug het project
Nadat de gemaakte code is gecompileerd en in NodeMCU is geflitst, maakt het apparaat verbinding met een cloudservice en begint het gegevens te verzenden.
U kunt de uitgebreidheid van het loggen vergroten door de preprocessorvariabele CLOUD4RPI_DEBUG in te stellen op 1 (voeg -D CLOUD4RPI_DEBUG=1 toe aan het gedeelte build_flags in het bestand platform.io).
Open vervolgens de cloud4rpi.io-site en merk het nieuwe apparaat online op. Open het om alle variabele waarden te zien die van het apparaat zijn ontvangen: sensor en diagnose.
Stap 8: Dashboardconfiguratie
Bij deze stap is de dataverbinding met de cloud operationeel. Laten we nu de visuele weergave van de gegevens configureren.
Ik heb de gebruikersinterface voor dashboardconfiguratie gebruikt om het volgende dashboard te maken.
Het dashboard is deelbaar, dus ik deel het meteen met mijn vriend.
Stap 9: Conclusie
De code van het volledige project is beschikbaar in de kern.
Dat is het voor nu!
Vragen en suggesties zijn welkom in de comments.
Aanbevolen:
Hoe de ESP8266 NodeMCU te verbinden met de IoT Cloud: 5 stappen
Hoe de ESP8266 NodeMCU te verbinden met de IoT Cloud: Deze instructable toont u een eenvoudige Internet of Things-demo met behulp van de ESP8266 NodeMCU en een online IoT-service genaamd AskSensors. We laten u zien hoe u snel gegevens van de ESP8266 HTTPS-client kunt krijgen en deze in een grafiek kunt plotten in de AskSensors Io
Een ESP32 verbinden met de IoT Cloud: 8 stappen
Hoe een ESP32 met de IoT-cloud te verbinden: deze instructie wordt geleverd in een reeks artikelen over het aansluiten van hardware zoals Arduino en ESP8266 op de cloud. Ik ga je uitleggen hoe je je ESP32-chip kunt verbinden met de cloud met AskSensors IoT-service. Waarom ESP32? Na het grote succes
Arduino WiFi verbinden met de cloud met ESP8266: 7 stappen:
Arduino WiFi verbinden met de cloud met behulp van ESP8266: in deze tutorial leggen we u uit hoe u uw Arduino via WiFi met de IoT-cloud kunt verbinden. We zullen een setup die is samengesteld uit een Arduino en een ESP8266 WiFi-module als een IoT Thing configureren en gereed maken om te communiceren met de AskSensors cloud.L
Bouw een Apple HomeKit-temperatuursensor (DHT22) -apparaat met een RaspberryPI en een DHT22 - Ajarnpa
Bouw een Apple HomeKit-temperatuursensor (DHT22)-apparaat met een RaspberryPI en een DHT22: ik was op zoek naar een goedkope temperatuur- / vochtigheidssensor die ik kon gebruiken om te controleren wat er in mijn kruipruimte gebeurt, omdat ik ontdekte dat het dit voorjaar erg nat was , en had veel vocht. Dus ik was op zoek naar een redelijk geprijsde sensor die ik kon p
Een AVR-bord programmeren met een Arduino-bord: 6 stappen
Hoe een AVR-bord te programmeren met een Arduino-bord: Heb je een AVR-microcontrollerbord liggen? Is het lastig om het te programmeren? Nou, je bent op de juiste plek. Hier laat ik je zien hoe je een Atmega8a-microcontrollerbord programmeert met een Arduino Uno-bord als programmeur. Dus zonder verder