Tartalomjegyzék:

ESP8266: A hőmérséklet és a páratartalom monitorozása: 12 lépés
ESP8266: A hőmérséklet és a páratartalom monitorozása: 12 lépés

Videó: ESP8266: A hőmérséklet és a páratartalom monitorozása: 12 lépés

Videó: ESP8266: A hőmérséklet és a páratartalom monitorozása: 12 lépés
Videó: Программирование модуля датчика температуры и влажности ESP8266 ESP01 DHT11 | удаленныйXY | ФЛПрог 2024, Október
Anonim
Image
Image
Összeszerelés
Összeszerelés

A mai oktatóanyagban a DHT22 érzékelő hőmérsékletének és páratartalmának leolvasásához ESP-01-t fogunk használni, amely az ESP8266 01 konfigurációban (csak 2 GPIO-val). Mutatok egy elektromos kapcsolási rajzot és egy ESP programozási részt egy Arduino -val. A példa egyszerű, könnyen érthető, és a videóban használt PDF -fájl is az összeszerelést segíti.

A tervezésben ezután az ESP01, a 110 vagy 220 feszültséget 5 voltra konvertáló forrás, a 3v3 feszültségszabályozó és a DHT22, amely az érzékelő. Az okostelefon képernyőjén az ESP által biztosított JavaScript -kód mellett megjelenik a helyi IP -cím. Ez a képernyő ezért megkapja a hőmérséklet és páratartalom paramétereit, és kinyomtatja ezeket az értékeket, amelyek öt másodpercenként frissülnek. Ehhez nincs szüksége semmilyen alkalmazásra a telefonokon és táblagépeken, és ez vonatkozik az Android operációs rendszerre és az IOS -ra is.

1. lépés: Összeszerelés

Az elektromos rendszer meglehetősen egyszerű, csakúgy, mint az összeszerelésről szóló rész, amely az ESP01 -t mint szervert foglalja magában. Az ESPO1 programozása úgy történik, mintha egy Arduino lenne: a C nyelven keresztül. Rámutatok arra, hogy a kód egy része a böngészőből nyomtatódik ki. Ez azt jelenti, hogy JavaScript kódot küld a böngészőnek. Az alábbiakban jobban elmagyarázom, hogyan működik ez.

Visszatérve a kapcsolási rajzra, az ESP01 tápellátására egy 5 voltos kapcsolt forrást tettem, amely egy 3v3 feszültségszabályozóhoz van csatlakoztatva. Még mindig megvan a DHT22 négy tűvel. Ezek egyike, az adatok nem kerülnek felhasználásra. Ehhez azonban felhúzó ellenállás kell.

2. lépés: Kód

Az első lépés a használni kívánt libek beillesztése. A DHT lib hozzáadható a Vázlat opció> Könyvtár bevonása> Könyvtárak kezelése…

A megnyíló ablakban keresse meg a DHT érzékelő könyvtárat.

Ezt követően létrehoztuk az ESP8266WebServer típusú változót, amely a szerverünk lesz, és válaszolni fog a HTTP -kérésekre (80 -as port).

Létrehozunk egy DHT változót is 0 paraméterekkel (ami a GPIO 0 pin) és a típussal (esetünkben DHT22).

#include #include #include #include // Criamos uma variável do tipo ESP8266WebServer que já possui funções // que auxiliam na criação das rotas que o ESP8266 vai responder ESP8266WebServer server (80); // Variável do tipo DHT que possui funções para controlarmos o módulo dht // allowindo ler a temperatura e a umidade DHT dht (0, DHT22);

3. lépés: Beállítás

A beállítás során csak akkor inicializáljuk a sorozatot, hogy legyen naplónk. Ez akkor fordul elő, ha az ESP8266 a soros monitoron keresztül csatlakozik a számítógéphez a soros monitor használatához.

Az ESP8266 -ot csatlakoztatjuk a hálózatunkhoz. Esetünkben a TesteESP hálózatot 87654321 jelszóval használjuk, de ezt az Ön által használt hálózattól függően módosítania kell.

// Inicialize a Serial apenas caso esteja com o ESP8266 conectado ao computador pela serla queira ter um log // para facilititar saber o que está acontecendo com o ESP8266 Serial.begin (115200); // Instrução para o ESP8266 se conectar à rede. // No nosso caso o nome da rede é TesteESP e a senha é 87654321. // Você deve alterar com as informationções da sua rede WiFi.begin ("TesteESP", "87654321"); // Visszajelzés caso esteja usando o Monitor Serial Serial.println (""); Serial.print ("Conectando");

Várjuk, amíg az ESP8266 csatlakozik a hálózathoz, és miután csatlakozik, elküldjük a hálózati beállításokat. Változtasson a hálózatának megfelelően.

// Esperamos até que o módulo se conecte à rede while (WiFi.status ()! = WL_CONNECTED) {delay (500); Soros.nyomtatás ("."); } // IP fixo konfigurálása. Você pode alterar conforme a sua rede IPAddress ip (192, 168, 3, 11); IPAddress gateway (192, 168, 3, 1); IPAddress alhálózat (255, 255, 255, 0); Serial.print ("Configurando IP fixo para:"); Soros.println (ip); // Envia a configuração WiFi.config (ip, átjáró, alhálózat);

A következő parancsok csak abban az esetben adhatók meg, ha az ESP8266 készüléket soros kapcsolaton keresztül csatlakoztatta a számítógéphez, így visszajelzést kaphat a Soros figyelőtől.

Az ESP8266 által kapott IP -címen ellenőrizheti, hogy megegyezik -e a beállításokkal.

// Mostramos no Monitor Serial o ip com o qual o esp8266 se conectou para ver se está de acordo com o que configuraramos Serial.println (""); Serial.println ("Connectado"); Serial.print ("IP:"); Serial.println (WiFi.localIP ());

Itt kezdjük el meghatározni, hogy mely funkciókat hajtjuk végre az egyes kérésekhez.

Az alábbi utasításban minden alkalommal, amikor az ESP8266 GET típusú HTTP kérést kap az útvonalon / hőmérsékleten, a getTemperature függvény kerül végrehajtásra.

// Aqui definimos qual a função será executada para o caminho e tipo dado. // Nesse caso quando houver uma requisição http do tipo GET no caminho https://192.168.2.8/temperature // (pode ser outro ip dependendo da sua configuração) a fun getã getTemperature será executada server.on ("/hőmérséklet", HTTP_GET, getTemperature);

Ebben a másik utasításban minden alkalommal, amikor az ESP8266 GET típusú HTTP -kérést kap az útvonalon / páratartalomban, a getHumidity függvény kerül végrehajtásra.

// Nesse outo caso quando houver uma requisição http do tipo GET no caminho https://192.168.2.8/humidity // (pode ser outro ip dependendo da sua configuração) a função getHumidity será executab server.on ("/kosteus", HTTP_GET, getHumidity);

Ebben az utasításban minden alkalommal, amikor az ESP8266 GET típusú HTTP kérést kap az elérési útban / monitorban, a showMonitor függvény kerül végrehajtásra.

A showMonitor funkció felelős a fő html visszaadásáért, amely megjeleníti a hőmérséklet és a páratartalom értékeit.

// Nesse caso quando houver uma requisição http do tipo GET no caminho https://192.168.2.8/monitor // (pode ser outro ip dependendo da sua configuração) a função showMonitor será executab. // Esta função retornará a página main que mostrará os valores // da temperatura e da umidade e recarregará essas information of temppos em tempos server.on ("/monitor", HTTP_GET, showMonitor);

Itt található a függvénydefiníció, amelyet akkor kell végrehajtani, ha a kért útvonal nem található.

// Aqui definimos qual função será executada caso o caminho que o cliente requisitou não tenha sido registrado server.onNotFound (onNotFound);

Itt inicializáljuk a szerverünket, amelyet korábban a 80 -as porton deklaráltunk.

Ez a beállítás vége.

// Inicializamos o server que criamos na porta 80 server.begin (); Serial.println ("Servidor HTTP iniciado"); }

4. lépés: Hurok

A lib ESP8266WebServernek köszönhetően nem kell ellenőriznünk a ciklusban, hogy vannak -e ügyfelek, és mi a kérési útvonal. Csak meg kell hívnunk a handleClient () -ot, és az objektum ellenőrzi, hogy az ügyfél kér -e valamit, és átirányít a korábban regisztrált megfelelő funkcióra.

void loop () {// Verifica se há alguma requisição de algum cliente server.handleClient (); }

5. lépés: A kérelem nem található

Ez az a funkció, amelyet korábban bejelentkeztünk végrehajtani, amikor az ügyfél olyan kéréseket tesz, amelyeket még nem regisztráltak.

A függvény csak a 404 -es kódot (az alapértelmezett kód arra az esetre, ha az erőforrás nem található), a visszaadott adattípust (egyszerű szöveg esetén) és a „Not Found” szavakat adja vissza.

// Função que definimos para ser chamada quando o caminho requisitado não foi registerrado void onNotFound () {server.send (404, "text/plain", "Not Found"); }

6. lépés: A hőmérséklet visszaállítása

Ez az a funkció, amely visszaad egy json -t a hőmérsékleti adatokkal, amikor a kliens GET kérést küld a / hőmérsékletnél.

// Função que definimos que será executada quando o cliente fizer uma requisição // do tipo GET no caminho https://192.168.2.8/temperature (pode ser outro ip dependendo da sua configuração) void getTemperature () {// Fazemos a leitura da temperatura através do módulo dht float t = dht.readTemperature (); // Cria um json com os dados da temperatura String json = "{" hőmérséklet / ":"+String (t)+"}"; // Envia o json para o cliente com o código 200, que é o código quando a requisição foi realizada com sucesso server.send (200, "application/json", json); }

7. lépés: A páratartalom visszatérése

Ez az a funkció, amely visszaad egy json -t a nedvességadatokkal, amikor a kliens GET kérést tesz / páratartalomban.

// Função que definimos que será executada quando o cliente fizer uma requisição // do tipo GET no caminho https://192.168.2.8/humidity (pode ser outro ip dependendo da sua configuração) void getHumidity () {// Fazemos a leitura da umidade através do módulo dht float h = dht.readHumidity (); // Cria um json com os dados da umidade String json = "{" páratartalom / ":"+String (h)+"}"; // Envia o json para o cliente com o código 200, que é o código quando a requisição foi realizada com sucesso server.send (200, "application/json", json); }

8. lépés: HTML

Ez az a funkció, amely visszaadja a html -t, amikor az ügyfél hozzáférés / monitorhoz megy. Ez az oldal a hőmérséklet és a páratartalom értékeit mutatja, és időről időre újratölti az adatokat. Az a rész, amely a és a stílus között van

meghatározza az oldal megjelenését, és tetszés szerint módosíthatja.

// Função que definimos que será executada quando o cliente fizer uma requisição // do tipo GET no caminho https://192.168.2.8/monitor (pode ser outro ip dependendo da sua configuração) void showMonitor () {String html = "" "" ""

"DHT monitor"

"test{"

"párnázás: 35 képpont;"

"háttérszín: #222222;" "}"

9. lépés: HTML stílus folytatása

"h1 {" "szín: #FFFFFF;" "font-family: sans-serif;" "}" "p {" "szín: #EEEEEE;" "font-family: sans-serif;" "betűméret: 18 képpont;" "}" ""

Itt van a html fő része. Ebben két bekezdés található, amelyek a hőmérsékletet és a páratartalmat mutatják. Ügyeljen a bekezdések azonosítóira, mert rajtuk keresztül fogjuk visszaállítani ezeket a bekezdéseket, hogy a követelmények után megadjuk a hőmérséklet és a páratartalom értékét.

DHT monitor

Hőfok:

Páratartalom:

10. lépés: JavaScript

Itt kezdjük meghatározni azt a szkriptet, amely időről időre leolvassa a hőmérséklet és a páratartalom értékét. A refresh () függvény meghívja a refreshTemperature () és a refreshHumdity () függvényeket, a setInterval pedig 5000 ezredmásodpercenként (5 másodpercenként) hívja fel a frissítési funkciót.

"Frissítés();" "setInterval (frissítés, 5000);" "function refresh ()" "" "" refreshTemperature () "" "refreshHumidity ();" "}"

A refreshTemperature () függvény kérést küld a / hőmérsékletnél, elemzi a json -ban található információkat, és hozzáadja a bekezdéshez az id hőmérsékletet.

"function refreshTemperature ()" "" "" var xmlhttp = new XMLHttpRequest (); " "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('hőmérséklet'). internalHTML = 'Hőmérséklet:' + JSON. parse (xmlhttp.responseText).temperature + 'C'; " "}" "};" "xmlhttp.open ('GET', 'https://192.168.2.8/temperature', igaz);" "xmlhttp.send ();" "}"

A refreshHumidity () függvény kérést küld a / drėgmére, elemzi a json -ban található információkat, és hozzáadja a bekezdéshez az id páratartalmat. Ezzel befejezzük a html -t, amelyet elküldünk a kérésekbe a / monitoron.

"function refreshHumidity ()" "" "" var xmlhttp = new XMLHttpRequest (); " "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('páratartalom'). internalHTML = 'Nedvesség:' + JSON. parse (xmlhttp.responseText). páratartalom + '%'; " "}" "};" "xmlhttp.open ('GET', 'https://192.168.2.8/humidity', true);" "xmlhttp.send ();" "}"

"";

11. lépés: A ShowMonitor befejezése

Most, hogy az elküldendő html karakterlánc készen áll, elküldhetjük az ügyfélnek. Ezzel befejeződik a showMonitor funkció és a kód.

// Envia o html para o cliente com o código 200, que é o código quando a requisição foi realizada com sucesso server.send (200, "text/html", html); }

12. lépés: Tesztelés

Tesztelés
Tesztelés

Most nyissa meg a böngészőt, és írja be a https://192.168.2.8/monitor címet (a konfigurációtól függően szükség lehet egy másik ip -re).

Ajánlott: