Sadržaj:

Spajanje senzora DHT11/DHT22 na oblak sa pločom zasnovanom na ESP8266: 9 koraka
Spajanje senzora DHT11/DHT22 na oblak sa pločom zasnovanom na ESP8266: 9 koraka

Video: Spajanje senzora DHT11/DHT22 na oblak sa pločom zasnovanom na ESP8266: 9 koraka

Video: Spajanje senzora DHT11/DHT22 na oblak sa pločom zasnovanom na ESP8266: 9 koraka
Video: Arduino Tutorial 28 - DHT11 Temperature Sensor with LCD | SunFounder's ESP32 IoT Learnig kit 2024, Septembar
Anonim
Povezivanje senzora DHT11/DHT22 s oblakom pomoću ploče zasnovane na ESP8266
Povezivanje senzora DHT11/DHT22 s oblakom pomoću ploče zasnovane na ESP8266

U prethodnom članku sam povezao svoju ploču NodeMCU zasnovanu na ESP8266 sa uslugom Cloud4RPi. Sada je vrijeme za pravi projekt!

Supplies

Hardverski zahtjevi:

  • Bilo koja ploča zasnovana na čipu ESP8266 (na primjer, NodeMCU)
  • Senzor DHT11 ili DHT22

Softver i usluge:

  • Biblioteka DHT senzora Adafruit - v1.3.7
  • Adafruit Unified Sensor - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - Cloud kontrolna ploča za IoT uređaje
  • PlatformIO IDE za VSCode

Korak 1: Izmjerite temperaturu i vlažnost

Izmjerite temperaturu i vlažnost
Izmjerite temperaturu i vlažnost

Već sam imao senzor DHT11, pa sam odlučio koristiti ga za mjerenje temperature i vlažnosti. Odaberemo Arduino biblioteku za čitanje podataka senzora.

Arduino registar sadrži nekoliko biblioteka, od kojih sam odabrao najpopularniju.

Prema njihovom spremištu GitHub, od nas se traži i dodavanje Adafruit Unified Sensor paketa.

Korak 2: Kreirajte i konfigurirajte projekt

Kreirajte i konfigurirajte projekt
Kreirajte i konfigurirajte projekt

Već sam opisao kako stvoriti PlatformIO projekt i instalirati biblioteke u prvom dijelu. Moj projekt se zove “MyNodeMCU”. Struktura je prikazana gore.

Ovaj projekt je malo izmijenjeni primjer Cloud4RPi-a. Odlučio sam umjesto koda pohraniti token uređaja i vjerodajnice za Wi-Fi u konfiguracijsku datoteku.

Datoteka platform.io izgleda ovako:

[platformio] default_envs = nodemcuv2 [env: nodemcuv2] platforma = espressif8266 framework = arduino ploča = nodemcuv2

Korak 3: Instalirajte biblioteke

Instalirajte biblioteke
Instalirajte biblioteke

Instalacija biblioteka je vrlo jednostavna. To možete učiniti iz IDE -ovog grafičkog sučelja ili dodavanjem potrebnih naziva biblioteka u odjeljak lib_deps datoteke platform.io:

; … Lib_deps = cloud4rpi -esp -arduino Adafruit Unified Sensor DHT biblioteka = -D MQTT_MAX_PACKET_SIZE = 128 D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"

Dodane biblioteke će se automatski instalirati u podmapu projekta.

Zaglavlje main.cpp izgleda ovako:

#include #include #include #include "DHT.h"

Korak 4: Povežite DHT11 senzor

Adafruit pruža DHTtester.ino primjer povezivanja senzora.

Ovaj kôd inicijalizira senzor i definira strukturu za pohranu rezultata mjerenja (u slučaju da je bio uspješan):

#define DHTPIN 2 // Digitalni pin spojen na DHT senzor#define DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… struct DHT_Result {float h; float t; }; DHT_Result dhtResult;

Sljedeća funkcija pokazuje kako očitati podatke senzora i pohraniti ih u gore opisanu strukturu podataka

void readSensors () {float h = dht.readHumidity (); // Očitavanje temperature kao Celsius (zadano) float t = dht.readTemperature ();

// Provjerite da li neko čitanje nije uspjelo i izađite

if (isnan (h) || isnan (t)) {Serial.println (F ("Nije uspjelo čitanje sa DHT senzora!")); return; } dhtResult.h = h; dhtResult.t = t; }

Korak 5: Slanje podataka u oblak

Nakon što dobijemo te podatke, sljedeći korak je slanje na uslugu Cloud4RPi.

Stranica Cloud4RPi za Arduino opisuje API biblioteke, što je skup metoda koje se koriste za:

  • kreiranje, čitanje i ažuriranje varijabli,
  • šalje varijabilne vrijednosti u oblak koristeći MQTT protokol.

Biblioteka podržava tri varijable: Bool, Numeric i String.

Tijek rada biblioteke započinje stvaranjem API instance pomoću Token uređaja sa web lokacije cloud4rpi.io (detalje potražite u 1. dijelu članka).

#if definirano (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #endif

Zatim deklarirajte varijable za očitanja DHT11:

c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");

Zatim nabavite podatke sa senzora, spremite ih u varijable i objavite podatke u Cloud4RPi:

c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();

Temperatura i vlažnost se ne mijenjaju brzo, pa slanje više od jedne vrijednosti u 5 minuta nije potrebno.

Korak 6: Dijagnostika

Cloud4RPi podržava dijagnostičke podatke zajedno s promjenjivim vrijednostima. Koristio sam produženje rada, jačinu Wi-Fi signala i IP adresu kao dijagnostičke podatke:

c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // Jačina WiFi signala c4r.declareDiagVariable ("Uptime");

Napomena: Milis funkcija koju koristim za vraćanje vremena rada na nulu svakih ~ 50 dana. Što je više nego dovoljno za moj projekat.

Sljedeći kod postavlja vrijednosti dijagnostičke varijable:

c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();

Funkcija uptimeHumanReadable pretvara milisekunde u prikladan oblik:

String uptimeHumanReadable (nepotpisane duge milisekunde) {static char uptimeStr [32]; nepotpisane duge sekunde = milisekunde / 1000; nepotpisani dugi min = sek / 60; nepotpisani int sati = min / 60; nepotpisani int dani = sati / 24; sekunde -= min * 60; min -= sati * 60; sati -= dana * 24; sprintf (uptimeStr, "%d dana%2.2d:%2.2d:%2.2d", (bajt) dana, (bajt) sati, (bajt) min, (bajt) sekundi); return String (uptimeStr); }

Ova funkcija prikazuje ovakav niz 5 dana 10:23:14 umjesto čudnog velikog broja.

Korak 7: Pokrenite i otklonite greške u projektu

Pokrenite i otklonite greške u projektu
Pokrenite i otklonite greške u projektu

Nakon sastavljanja kreiranog koda i prebacivanja u NodeMCU, uređaj se povezuje na uslugu u oblaku i počinje slati podatke.

Opširnost evidentiranja možete povećati postavljanjem varijable predprocesora CLOUD4RPI_DEBUG na 1 (dodajte -D CLOUD4RPI_DEBUG = 1 u odjeljak build_flags u datoteci platform.io).

Zatim otvorite web lokaciju cloud4rpi.io i primijetite novi uređaj na mreži. Otvorite ga da vidite sve promjenjive vrijednosti primljene s uređaja: senzor i dijagnostiku.

Korak 8: Konfiguracija nadzorne ploče

Konfiguracija nadzorne ploče
Konfiguracija nadzorne ploče

U ovom koraku, podatkovna veza s oblakom je operativna. Sada, konfigurirajmo vizualni prikaz podataka.

Korisničko sučelje za konfiguraciju nadzorne ploče upotrijebio sam za stvaranje sljedeće nadzorne ploče.

Kontrolna ploča se može dijeliti, pa je odmah dijelim sa svojim prijateljem.

Korak 9: Zaključak

Zaključak
Zaključak

Potpuni kôd projekta dostupan je u srži.

To je sve za sada!

Pitanja i prijedlozi dobrodošli su u komentarima.

Preporučuje se: