Sadržaj:

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

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

Video: Spajanje senzora DHT11/DHT22 na oblak s pločom zasnovanom na ESP8266: 9 koraka
Video: Arduino Tutorial 28 - DHT11 Temperature Sensor with LCD | SunFounder's ESP32 IoT Learnig kit 2024, Studeni
Anonim
Spajanje osjetnika DHT11/DHT22 na oblak s pločom zasnovanom na ESP8266
Spajanje osjetnika DHT11/DHT22 na oblak s pločom zasnovanom na ESP8266

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

Pribor

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 - Upravljačka ploča u oblaku 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 ga odlučio koristiti za mjerenje temperature i vlažnosti. Odaberimo Arduino knjižnicu za čitanje podataka senzora.

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

Prema njihovom spremištu GitHub, od nas se također traži da dodamo Adafruit Unified Sensor paket.

Korak 2: Izradite i konfigurirajte projekt

Izradite i konfigurirajte projekt
Izradite i konfigurirajte projekt

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

Ovaj projekt je malo izmijenjeni primjer Cloud4RPi. 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 knjižnice

Instalirajte knjižnice
Instalirajte knjižnice

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

; … Lib_deps = cloud4rpi -esp -arduino Adafruit Unified Sensor DHT knjižnica build -flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0 -D SSID_ / YIP_DIP / " D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"

Dodane knjižnice automatski će se instalirati u podmapu projekta.

Zaglavlje main.cpp izgleda ovako:

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

Korak 4: Spojite DHT11 osjetnik

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 osjetnik#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 neuspjelo čitanje i izađite

if (isnan (h) || isnan (t)) {Serial.println (F ("Nije uspjelo čitanje s DHT senzora!")); povratak; } 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 knjižnice, skup metoda koje se koriste za:

  • stvaranje, čitanje i ažuriranje varijabli,
  • slanje promjenjivih vrijednosti u oblak pomoću MQTT protokola.

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

Tijek rada knjižnice započinje stvaranjem instance instance koristeći token uređaja s web lokacije cloud4rpi.io (pojedinosti potražite u 1. dijelu članka).

#if definirano (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #završi ako

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 vlaga 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. Kao dijagnostičke podatke koristio sam produženje rada, jačinu Wi-Fi signala i IP adresu:

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 projekt.

Sljedeći kôd 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]; bez potpisa duge sekunde = milisekunde / 1000; nepotpisane duge minute = sekunde / 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", (byte) dana, (byte) sati, (byte) min, (byte) secs); return String (uptimeStr); }

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

Korak 7: Pokrenite projekt i otklonite pogreške

Pokrenite i otklonite pogreške u projektu
Pokrenite i otklonite pogreške u projektu

Nakon sastavljanja stvorenog koda i prebacivanja u NodeMCU, uređaj se povezuje s uslugom u oblaku i počinje slati podatke.

Opširnost prijavljivanja 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 mjesto cloud4rpi.io i primijetite novi uređaj na mreži. Otvorite ga da biste vidjeli 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 izradu sljedeće nadzorne ploče.

Nadzorna ploča je dostupna za dijeljenje pa je odmah dijelim sa svojim prijateljem.

Korak 9: Zaključak

Zaključak
Zaključak

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

To je sve za sada!

Pitanja i prijedlozi dobrodošli su u komentarima.

Preporučeni: