Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Mittaa lämpötila ja kosteus
- Vaihe 2: Luo ja määritä projekti
- Vaihe 3: Asenna kirjastot
- Vaihe 4: Liitä DHT11 -anturi
- Vaihe 5: Tietojen lähettäminen pilveen
- Vaihe 6: Diagnostiikka
- Vaihe 7: Käynnistä ja korjaa projekti
- Vaihe 8: Kojelaudan määritykset
- Vaihe 9: Johtopäätös
Video: DHT11/DHT22-anturin liittäminen pilveen ESP8266-pohjaisella kortilla: 9 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Edellisessä artikkelissa liitin ESP8266-pohjaisen NodeMCU-korttini Cloud4RPi-palveluun. Nyt on todellisen projektin aika!
Tarvikkeet
Laitteistovaatimukset:
- Mikä tahansa ESP8266 -siruun perustuva levy (esimerkiksi NodeMCU)
- DHT11- tai DHT22 -anturi
Ohjelmistot ja palvelut:
- Adafruitin DHT -anturikirjasto - v1.3.7
- Adafruit Unified Sensor - v1.0.3
- cloud4rpi-esp-arduino-v0.1.0
- Cloud4RPI - Pilvipohjainen ohjauspaneeli IoT -laitteille
- PlatformIO IDE VSCodea varten
Vaihe 1: Mittaa lämpötila ja kosteus
Minulla oli jo DHT11 -anturi, joten päätin käyttää sitä lämpötilan ja kosteuden mittaamiseen. Valitaan Arduino -kirjasto anturitietojen lukemiseen.
Arduinon rekisteri sisältää useita kirjastoja, joista valitsin suosituimman.
Heidän GitHub -arkistonsa mukaan meidän on myös lisättävä Adafruit Unified Sensor -paketti.
Vaihe 2: Luo ja määritä projekti
Kuvasin jo ensimmäisessä osassa kuinka luoda PlatformIO -projekti ja asentaa kirjastoja. Projektini nimi on “MyNodeMCU”. Rakenne on esitetty yllä.
Tämä projekti on hieman muokattu Cloud4RPi-esimerkki.
Platform.io -tiedosto näyttää tältä:
[platformio] default_envs = nodemcuv2 [env: nodemcuv2] platform = espressif8266 Framework = arduino board = nodemcuv2
Vaihe 3: Asenna kirjastot
Kirjaston asennus on melko yksinkertaista. Voit tehdä sen IDE: n graafisesta käyttöliittymästä tai lisäämällä vaaditut kirjastojen nimet platform.io -tiedoston lib_deps -osioon:
; … Lib_deps = cloud4rpi -esp -arduino Adafruit Unified Sensor DHT -anturikirjasto build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0 -SSID_ / \ / \ " D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"
Lisätyt kirjastot asennetaan automaattisesti projektin alikansioon.
Main.cpp -otsikko näyttää tältä:
#Sisällytä #Sisällytä #Sisällytä #Sisällytä "DHT.h"
Vaihe 4: Liitä DHT11 -anturi
Adafruit tarjoaa DHTtester.ino -esimerkin anturiliitännästä.
Tämä koodi alustaa anturin ja määrittää rakenteen mittaustuloksen tallentamiseksi (jos se onnistui):
#define DHTPIN 2 // DHT -anturiin kytketty digitaalinen nasta#define DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… struktuuri DHT_Result {float h; kellua t; }; DHT_Tulos dhtResult;
Seuraava toiminto näyttää kuinka lukea anturitietoja ja tallentaa ne yllä kuvattuun tietorakenteeseen
void readSensors () {float h = dht.readHumidity (); // Lue lämpötila celsiusasteina (oletus) float t = dht.readTemperature ();
// Tarkista, jos jokin lukeminen epäonnistui, ja poistu
if (isnan (h) || isnan (t)) {Serial.println (F ("DHT -anturin lukeminen epäonnistui!")); palata; } dhtResult.h = h; dhtResult.t = t; }
Vaihe 5: Tietojen lähettäminen pilveen
Kun olemme saaneet nämä tiedot, seuraava askel on lähettää ne Cloud4RPi -palveluun.
Cloud4RPi for Arduino -sivu kuvaa kirjaston sovellusliittymää, joka on joukko menetelmiä, joita käytetään:
- luoda, lukea ja päivittää muuttujia,
- lähettää muuttuja -arvot pilveen käyttämällä MQTT -protokollaa.
Kirjasto tukee kolmea muuttujatyyppiä: Bool, Numeric ja String.
Kirjaston työnkulku alkaa luomalla sovellusliittymän ilmentymä käyttämällä laitetunnusta cloud4rpi.io -verkkosivustolta (katso lisätietoja artikkelin osasta 1).
#if määritetty (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #loppu Jos
Ilmoita sitten muuttujat DHT11 -lukemille:
c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");
Hanki sitten tiedot anturista, tallenna ne muuttujiksi ja julkaise tiedot Cloud4RPi: ssä:
c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();
Lämpötila ja kosteus eivät muutu nopeasti, joten useampia arvoja ei tarvitse lähettää 5 minuuttia kohden.
Vaihe 6: Diagnostiikka
Cloud4RPi tukee diagnostiikkatietoja muuttuvien arvojen ohella. Käytin vika-aikaa, Wi-Fi-signaalin voimakkuutta ja IP-osoitetta diagnostiikkatiedoina:
c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // WiFi -signaalin voimakkuus c4r.declareDiagVariable ("Uptime");
Huomautus: Millis -funktio, jolla saan käyttöajan, nollautuu ~ 50 päivän välein. Mikä on enemmän kuin tarpeeksi projektilleni.
Seuraava koodi asettaa diagnostiikkamuuttujan arvot:
c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_osoite", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();
UptimeHumanReadable -toiminto muuntaa millisekunnit kätevään muotoon:
String uptimeHumanReadable (allekirjoittamattomat pitkät millisekunnit) {static char uptimeStr [32]; allekirjoittamattomat pitkät sekunnit = millisekuntia / 1000; allekirjoittamattomat pitkät minuutit = sekuntia / 60; allekirjoittamaton tunti = min / 60; allekirjoittamaton int päivää = tuntia / 24; sekuntia -= minuuttia * 60; min -= tuntia * 60; tuntia -= päivää * 24; sprintf (uptimeStr, "%d päivää%2.2d:%2.2d:%2.2d", (tavua) päivää, (tavua) tuntia, (tavua) minuuttia, (tavua) sekuntia); return -merkkijono (uptimeStr); }
Funktio antaa tällaisen merkkijonon 5 päivää 10:23:14 outon suuren numeron sijaan.
Vaihe 7: Käynnistä ja korjaa projekti
Kun luotu koodi on koottu ja se vilkkuu NodeMCU: hon, laite muodostaa yhteyden pilvipalveluun ja alkaa lähettää tietoja.
Voit lisätä kirjaamisen monisanaisuutta asettamalla esikäsittelymuuttujan CLOUD4RPI_DEBUG arvoksi 1 (lisää -D CLOUD4RPI_DEBUG = 1 platform.io -tiedoston build_flags -osioon).
Avaa seuraavaksi cloud4rpi.io -sivusto ja huomaa uusi laite verkossa. Avaa se nähdäksesi kaikki laitteelta vastaanotetut muuttuja -arvot: anturi ja diagnostiikka.
Vaihe 8: Kojelaudan määritykset
Tässä vaiheessa datayhteys pilveen on toiminnassa. Määritetään nyt tietojen visuaalinen esitys.
Luon seuraavan koontinäytön Dashboard -määrityskäyttöliittymän avulla.
Kojelauta on jaettavissa, joten jaan sen heti ystäväni kanssa.
Vaihe 9: Johtopäätös
Koko projektin koodi löytyy ytimestä.
Tässä kaikki tältä erää!
Kysymykset ja ehdotukset ovat tervetulleita kommentteihin.
Suositeltava:
Askelmoottori ESP32 -kortilla: 4 vaihetta
Askelmoottori ESP32 -kortilla: Askelmoottorit ovat tasavirtamoottoreita, jotka liikkuvat erillisinä vaiheina. Niissä on useita keloja, jotka on järjestetty "vaiheiksi" kutsuttuihin ryhmiin. Kun jokainen vaihe on peräkkäin, moottori pyörii askel kerrallaan. Askelmoottorit ovat erittäin hyödyllisiä
Äänisoitin Arduinon avulla Micro SD -kortilla: 7 vaihetta (kuvien kanssa)
Äänisoitin, joka käyttää Arduinoa ja Micro SD -korttia: Tilaa kanavani saadaksesi lisää projekteja ……………………. Monet ihmiset haluavat liittää SD -kortin arduinon kanssa tai haluat äänilähdön arduinon kautta, joten tässä on helpoin ja halvin tapa liittää SD -kortti arduinoon. voit meidät
ESP32 -laitteen liittäminen IoT -pilveen: 8 vaihetta
ESP32: n yhdistäminen IoT -pilveen: Tämä ohje on artikkelisarjassa, joka koskee laitteiston, kuten Arduinon ja ESP8266: n, yhdistämistä pilveen. Aion selittää sinulle, kuinka ESP32 -sirusi yhdistetään pilveen AskSensors IoT -palvelun avulla. Miksi ESP32? Suuren menestyksen jälkeen
Arduino WiFi: n yhdistäminen pilveen käyttämällä ESP8266: 7 vaihetta
Arduino WiFi: n yhdistäminen pilveen ESP8266: n avulla: Tässä opetusohjelmassa kerromme, kuinka Arduino liitetään IoT -pilveen WiFi: n avulla. kommunikoida AskSensors -pilven kanssa.L
Toimivan liikennevalon tekeminen Auduino -kortilla: 5 vaihetta
Toimivan liikennevalon tekeminen Auduino -kortilla: Liikennevalot ovat merkinantolaitteita, joita käytetään yleisesti tien risteyksissä, jalankulkijoiden risteyksissä ja muissa paikoissa liikennevirtojen hallitsemiseksi. Käsikäyttöinen kaasulla valaistu liikennevalo oli laatuaan ja tekniikka on parantanut huomattavasti