Sisällysluettelo:

DHT11/DHT22-anturin liittäminen pilveen ESP8266-pohjaisella kortilla: 9 vaihetta
DHT11/DHT22-anturin liittäminen pilveen ESP8266-pohjaisella kortilla: 9 vaihetta

Video: DHT11/DHT22-anturin liittäminen pilveen ESP8266-pohjaisella kortilla: 9 vaihetta

Video: DHT11/DHT22-anturin liittäminen pilveen ESP8266-pohjaisella kortilla: 9 vaihetta
Video: DHT11/22 Temp Sensor Trouble - Collin’s Lab Notes #adafruit #collinslabnotes 2024, Syyskuu
Anonim
DHT11/DHT22-anturin liittäminen pilveen ESP8266-pohjaisen piirilevyn avulla
DHT11/DHT22-anturin liittäminen pilveen ESP8266-pohjaisen piirilevyn avulla

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

Mittaa lämpötila ja kosteus
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

Luo ja määritä projekti
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

Asenna kirjastot
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

Käynnistä ja korjaa projekti
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

Kojelaudan määritykset
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

Johtopäätös
Johtopäätös

Koko projektin koodi löytyy ytimestä.

Tässä kaikki tältä erää!

Kysymykset ja ehdotukset ovat tervetulleita kommentteihin.

Suositeltava: