Obsah:

ESP8266: Jak sledovat teplotu a vlhkost: 12 kroků
ESP8266: Jak sledovat teplotu a vlhkost: 12 kroků

Video: ESP8266: Jak sledovat teplotu a vlhkost: 12 kroků

Video: ESP8266: Jak sledovat teplotu a vlhkost: 12 kroků
Video: Programování modulu snímače teploty a vlhkosti ESP8266 ESP01 DHT11 | RemoteXY | FLProg 2024, Červenec
Anonim
Image
Image
Shromáždění
Shromáždění

V dnešním tutoriálu použijeme pro měření teploty a vlhkosti senzoru DHT22 ESP-01, což je ESP8266 v konfiguraci 01 (pouze se 2 GPIO). Ukážu vám elektrické schéma a programovací část ESP s Arduinem. Tento příklad je jednoduchý, snadno pochopitelný a je dodáván s dokumentem PDF použitým ve videu, který pomáhá při montáži.

V návrhu pak máme ESP01, zdroj, který převádí 110 nebo 220 na 5 voltů, regulátor napětí 3v3 a DHT22, což je senzor. Na obrazovce smartphonu budete mít kromě kódu JavaScript poskytovaného ESP také místní IP adresu. Tato obrazovka tedy obdrží parametry teploty a vlhkosti a vytiskne tyto hodnoty, které se budou aktualizovat každých pět sekund. K tomu nebudete potřebovat žádné aplikace na telefonech a tabletech, a to platí jak pro operační systém Android, tak pro iOS.

Krok 1: Sestavení

Elektrické schéma je celkem jednoduché, stejně jako část o sestavě, která bude zahrnovat ESP01 jako server. ESPO1 bude naprogramován, jako by to bylo Arduino: prostřednictvím jazyka C. Upozorňuji, že část kódu je vytištěna z prohlížeče. To znamená, že do prohlížeče odesílá kód JavaScript. Níže podrobněji vysvětlím, jak to funguje.

Když se vrátím ke schématu zapojení, vložil jsem 5voltový spínaný zdroj připojený k regulátoru napětí 3v3 k napájení ESP01. Stále máme DHT22 se čtyřmi piny. Jeden z nich, data, se nepoužívá. K tomu je však zapotřebí vytahovací odpor.

Krok 2: Kód

Prvním krokem je zahrnutí končetin, které použijeme. Libu DHT lze přidat volbou Skica> Zahrnout knihovnu> Spravovat knihovny…

V okně, které se otevře, vyhledejte knihovnu senzorů DHT.

Poté jsme vytvořili proměnnou typu ESP8266WebServer, která bude naším serverem a bude reagovat na požadavky HTTP (port 80).

Vytvoříme také proměnnou DHT s parametry 0 (což je kolík GPIO 0) a typem (v našem případě 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); // Různé typy DHT, které mohou ovládat funkce o modulech dht // povolují teplotu a umoření DHT dht (0, DHT22);

Krok 3: Nastavení

V nastavení budeme inicializovat pouze sériový, abychom měli protokol. K tomu dojde, pokud je ESP8266 připojen k počítači přes sériový port, aby bylo možné použít sériový monitor.

Umožníme ESP8266 připojit se k naší síti. V našem případě používáme síť TesteESP s heslem 87654321, ale to budete muset změnit podle sítě, kterou používáte.

// Inicializace a Serial apenas caso esteja com o ESP8266 conectado ao computador pela serla queira ter um log // para facilitar saber o que está acontecendo com o ESP8266 Serial.begin (115200); // Pokyny pro připojení ESP8266 k připojení. // No nosso caso o nome da rede é TesteESP e a senha é 87654321. // Você deve alterar com as informações da sua rede WiFi.begin ("TesteESP", "87654321"); // Zpětná vazba může být použita k monitoru Serial Serial.println (""); Serial.print ("Conectando");

Počkáme, až se ESP8266 připojí k síti, a poté, co se připojí, odešleme nastavení sítě. Změňte podle své sítě.

// Esperamos até que o módulo se conecte à rede while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } // Konfigurace do IP fixo. Vícenásobná změna odpovídá IP adrese IP (192, 168, 3, 11); Brána IPAddress (192, 168, 3, 1); Podsíť IPAddress (255, 255, 255, 0); Serial.print ("Konfigurace pevné IP adresy:"); Serial.println (ip); // Envia a configuração WiFi.config (ip, gateway, subnet);

Další příkazy jsou pouze v případě, že máte ESP8266 připojený k počítači přes sériové číslo, takže máte zpětnou vazbu ze sériového monitoru.

Můžete zkontrolovat IP, kterou ESP8266 obdržel, a zjistit, zda je stejná jako v nastavení.

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

Zde začneme definovat, které funkce budou provedeny pro každý požadavek.

V níže uvedených pokynech bude pokaždé, když ESP8266 přijme požadavek HTTP typu GET v cestě / teplotě, spuštěna funkce getTemperature.

// Definice aqua a função será executionada o caminho e tipo dado. // Nainstalujte si vše, co potřebujete, abyste získali CET bez omezení https://192.168.2.8/temperature // (pode out out ip dependendo da sua configuração) a função getTemperature será executada server.on ("/temperature", HTTP_GET, getTemperature);

V tomto jiném prohlášení bude pokaždé, když ESP8266 přijme požadavek HTTP typu GET v cestě / vlhkosti, spuštěna funkce getHumidity.

// Nainstalovat vše, co potřebujete, abyste získali https://192.168.2.8/humidity // (pode out out ip dependendo da sua configuração) a função getHumidity sera executada server.on ("/vlhkost", HTTP_GET, getHumidity);

V této instrukci bude pokaždé, když ESP8266 přijme požadavek HTTP typu GET na cestu / monitor, spuštěna funkce showMonitor.

Funkce showMonitor je zodpovědná za vrácení hlavního html, který bude zobrazovat hodnoty teploty a vlhkosti.

// 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á executada. // Hlavní funkce a hlavní stránka hlavní hodnoty // teplota a teplota umisťování a stahování informací o temp serveru.on ("/monitor", HTTP_GET, showMonitor);

Zde je definice funkce, která by měla být provedena, pokud není nalezena požadovaná cesta.

// Definice všech funkcí, které mohou být provedeny, o serveru, nebo o požadavku na registraci serveru.onNotFound (onNotFound);

Zde inicializujeme náš server, který jsme dříve deklarovali na portu 80.

Tím nastavení končí.

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

Krok 4: Smyčka

Díky lib ESP8266WebServer nemusíme ve smyčce kontrolovat, zda existují klienti a jaká je cesta požadavku. Stačí zavolat handleClient () a objekt zkontroluje, zda nějaký klient dělá nějaké požadavky, a přesměruje na odpovídající funkci, kterou jsme zaregistrovali dříve.

void loop () {// Ověření se týká všech potřebných klientů server.handleClient (); }

Krok 5: Žádost nenalezena

Tuto funkci jsme dříve přihlásili ke spuštění, když klient zadá jakékoli požadavky, které nebyly zaregistrovány.

Funkce vrací pouze kód 404 (výchozí kód pro případ, že zdroj není nalezen), vrácený datový typ (v případě prostého textu) a text se slovy „Nenalezeno“.

// Definice všech parametrů, které jsou vyžadovány pro registraci, neplatí onNotFound () {server.send (404, "text/plain", "Not Found"); }

Krok 6: Vrácení teploty

Toto je funkce, která vrátí json s teplotními údaji, když klient podá požadavek GET při / teplotě.

// Definice všech seriálů, které se provádějí, nebo o klientech se dozvíte více // // Tip 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 = "{" temperature / ":"+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); }

Krok 7: Návrat vlhkosti

Toto je funkce, která vrátí json s údaji o vlhkosti, když klient zadá požadavek GET in / vlhkost.

// Definice všech seriálů, které můžete provést, nebo o co nejvíce klientech // do tipo ZÍSKEJTE bez omezení 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 = "{" vlhkost / ":"+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); }

Krok 8: HTML

Toto je funkce, která vrátí html, když klient přejde na přístup / monitor. Tato stránka zobrazí hodnoty teploty a vlhkosti a čas od času načte data. Část, která je mezi a a styl>

definuje vzhled stránky a můžete jej libovolně měnit.

// Definice všech seriálů, které se provádějí, nebo o klientech se dozvíte více // // tip ZÍSKEJTE bez omezení https://192.168.2.8/monitor (pode ser outro ip dependendo da sua configuração) void showMonitor () {String html = "" "" ""

"Monitor DHT"

"tělo{"

"polstrování: 35 pixelů;"

"background-color: #222222;" "}"

Krok 9: Pokračování stylu HTML

"h1 {" "barva: #FFFFFF;" "font-family: sans-serif;" "}" "p {" "barva: #EEEEEE;" "font-family: sans-serif;" "velikost písma: 18px;" "}" ""

Tady máme hlavní část html. V něm máme dva odstavce, které ukážou teplotu a vlhkost. Věnujte pozornost ID odstavců, protože jejich prostřednictvím obnovíme tyto odstavce, abychom po rekvizicích zadali hodnoty teploty a vlhkosti.

Monitor DHT

Teplota:

Vlhkost vzduchu:

Krok 10: JavaScript

Zde začneme definovat skript, který čas od času načte hodnoty teploty a vlhkosti. Funkce refresh () volá funkce refreshTemperature () a refreshHumdity () a setInterval volá funkci refresh každých 5000 milisekund (5 sekund).

"Obnovit();" "setInterval (obnovení, 5 000);" "funkce refresh ()" "{" "refreshTemperature ()" "refreshHumidity ();" "}"

Funkce refreshTemperature () vytvoří požadavek na / teplotu, analyzuje informace obsažené v json a do odstavce přidá id teplotu.

"funkce refreshTemperature ()" "{" "var xmlhttp = new XMLHttpRequest ();" "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('teplota'). innerHTML = 'Teplota:' + JSON. analyzovat (xmlhttp.responseText). teplota + 'C'; " "}" "};" "xmlhttp.open ('GET', 'https://192.168.2.8/temperature', true);" "xmlhttp.send ();" "}"

Funkce refreshHumidity () vytvoří požadavek na / vlhkost, analyzuje informace obsažené v json a do odstavce přidá ID vlhkost. A tím dokončíme html, který pošleme v / monitoru.

"funkce refreshHumidity ()" "{" "var xmlhttp = new XMLHttpRequest ();" "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('vlhkost'). innerHTML = 'Vlhkost:' + JSON. analyzovat (xmlhttp.responseText). vlhkost + '%'; " "}" "};" "xmlhttp.open ('GET', 'https://192.168.2.8/humidity', true);" "xmlhttp.send ();" "}"

"";

Krok 11: Dokončení ShowMonitor

Nyní, když je připraven řetězec s html, který odešleme, můžeme jej odeslat klientovi. Tím je funkce showMonitor a kód dokončen.

// 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); }

Krok 12: Testování

Testování
Testování

Nyní otevřete prohlížeč a zadejte https://192.168.2.8/monitor (možná budete potřebovat jinou IP v závislosti na vaší konfiguraci).

Doporučuje: