Obsah:

ESP8266: Ako monitorovať teplotu a vlhkosť: 12 krokov
ESP8266: Ako monitorovať teplotu a vlhkosť: 12 krokov

Video: ESP8266: Ako monitorovať teplotu a vlhkosť: 12 krokov

Video: ESP8266: Ako monitorovať teplotu a vlhkosť: 12 krokov
Video: Программирование модуля датчика температуры и влажности ESP8266 ESP01 DHT11 | удаленныйXY | ФЛПрог 2024, November
Anonim
Image
Image
zhromaždenie
zhromaždenie

V dnešnom návode použijeme na čítanie teploty a vlhkosti senzora DHT22 ESP-01, čo je ESP8266 v konfigurácii 01 (iba s 2 GPIO). Ukážem vám elektrickú schému a programovaciu časť ESP s Arduinom. Príklad je jednoduchý, zrozumiteľný a je dodávaný s dokumentom PDF použitým vo videu na pomoc pri montáži.

V návrhu máme potom ESP01, zdroj, ktorý prevádza 110 alebo 220 na 5 voltov, regulátor napätia 3v3 a DHT22, ktorý je snímačom. Na obrazovke smartfónu budete mať okrem kódu JavaScript poskytovaného ESP aj miestnu IP adresu. Táto obrazovka preto prijme parametre teploty a vlhkosti a vytlačí tieto hodnoty, ktoré sa budú aktualizovať každých päť sekúnd. Na to nebudete potrebovať žiadne aplikácie v telefónoch a tabletoch, a to platí pre operačný systém Android aj iOS.

Krok 1: Montáž

Elektrická schéma je pomerne jednoduchá, rovnako ako časť o zostave, ktorá bude zahŕňať ESP01 ako server. ESPO1 bude naprogramovaný, ako keby to bolo Arduino: prostredníctvom jazyka C. Upozorňujem, že časť kódu je vytlačená z prehliadača. To znamená, že odosiela kód JavaScript do prehliadača. Ďalej podrobnejšie vysvetlím, ako to funguje.

Keď sa vrátim k schéme zapojenia, vložil som 5-voltový spínaný zdroj pripojený k regulátoru napätia 3v3 na napájanie ESP01. Stále tu máme DHT22 so štyrmi kolíkmi. Jeden z nich, údaje, sa nepoužíva. Na to však potrebujete pull up odpor.

Krok 2: Kód

Prvým krokom je zahrnutie končatín, ktoré použijeme. Knižnicu DHT lib je možné pridať pomocou možnosti Náčrt> Zahrnúť knižnicu> Spravovať knižnice …

V okne, ktoré sa otvorí, vyhľadajte knižnicu senzorov DHT.

Potom sme vytvorili premennú typu ESP8266WebServer, ktorá bude naším serverom a bude reagovať na požiadavky HTTP (port 80).

Vytvoríme tiež premennú DHT s parametrami 0 (čo je kolík GPIO 0) a typ (v našom prípade 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 to tipo DHT que possui funções para controlarmos o módulo dht // permitindo ler a temperatura e and umidade DHT dht (0, DHT22);

Krok 3: Nastavenie

V nastavení budeme inicializovať iba sériové číslo, aby sme mali protokol. K tomu dôjde, ak je ESP8266 pripojený k počítaču prostredníctvom sériového portu, aby sa mohol používať sériový monitor.

Zabezpečíme, aby sa ESP8266 pripojil k našej sieti. V našom prípade používame sieť TesteESP s heslom 87654321, ale budete to musieť zmeniť podľa siete, ktorú používate.

// Inicializujte 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); // Inštrukcie k ESP8266 sú pripojené. // Žiadne údaje o teste TesteESP e a senha 87654321. // Viacej alternatívnych odkazov ako informácie o WiFi.begin („TesteESP“, „87654321“); // Spätná väzba na to, čo môžete použiť o Monitor Serial Serial.println (""); Serial.print ("Conectando");

Čakáme, kým sa ESP8266 pripojí k sieti, a potom sa pripojí, pošleme nastavenia siete. Zmeňte podľa svojej siete.

// Esperamos até que o módulo with conecte à rede while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } // Konfigurácia IP adresy. Viac zmien je v súlade s IP adresou ip (192, 168, 3, 11); Brána IPAddress (192, 168, 3, 1); Podsieť IPAddress (255, 255, 255, 0); Serial.print ("Konfigurácia fixnej IP adresy:"); Serial.println (ip); // Envia a configuração WiFi.config (ip, gateway, subnet);

Nasledujúce príkazy sú iba v prípade, že máte ESP8266 pripojený k počítaču prostredníctvom sériového čísla, aby ste mali spätnú väzbu zo sériového monitora.

Môžete skontrolovať IP, ktorú ESP8266 získal, a zistiť, či je rovnaká ako v nastaveniach.

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

Tu začneme definovať, ktoré funkcie sa budú vykonávať pre každú požiadavku.

V nižšie uvedených pokynoch sa vždy, keď ESP8266 prijme požiadavku HTTP typu GET na cestu / teplotu, vykoná funkcia getTemperature.

// Definícia a kvalita vykonávania jednotlivých činností a tipov. // Viac informácií o https://192.168.2.8/temperature // (pode ser outro ip dependendo da sua configuração) a fun getãem getTemperature sera executada server.on ("/teplota", HTTP_GET, getTemperature);

V tomto inom vyhlásení sa vždy, keď ESP8266 prijme požiadavku HTTP typu GET na cestu / vlhkosť, spustí funkcia getHumidity.

// Viac informácií o https://192.168.2.8/humidity // (pod sériovým nastavením závisí od konfigurácie) a získaní konfigurácie getHumidity zo spustiteľného servera.on ("/vlhkosť", HTTP_GET, getHumidity);

V tejto inštrukcii bude zakaždým, keď ESP8266 prijme požiadavku HTTP typu GET na cestu / monitor, spustená funkcia showMonitor.

Funkcia showMonitor je zodpovedná za vrátenie hlavného html, ktorý bude zobrazovať hodnoty teploty a vlhkosti.

// Viac informácií o https://192.168.2.8/monitor // (pode ser outro ip dependendo da sua configuração) a funcao showMonitor sera executada. // Hlavné funkcie a hlavné hlavné hodnoty valores // teplota a rozsah údajov o tempách server temp.on ("/monitor", HTTP_GET, showMonitor);

Tu je definícia funkcie, ktorá by sa mala vykonať, ak sa požadovaná cesta nenájde.

// Definícia všetkých dôležitých funkcií spustenia servera alebo servera o registrácii servera.onNotFound (onNotFound);

Tu inicializujeme náš server, ktorý sme predtým deklarovali na porte 80.

Toto je koniec nastavenia.

// Inicializamos o server quemos na porta 80 server.begin (); Serial.println ("Spustenie servera HTTP"); }

Krok 4: Slučka

Vďaka serveru lib ESP8266WebServer nemusíme v slučke kontrolovať, či existujú klienti a aká je cesta k žiadosti. Stačí zavolať handleClient () a objekt skontroluje, či nejaký klient robí nejaké požiadavky, a presmeruje sa na zodpovedajúcu funkciu, ktorú sme predtým zaregistrovali.

void loop () {// Overenie všetkých alguma požiadaviek na ďalší klientský server.handleClient (); }

Krok 5: Žiadosť nebola nájdená

Túto funkciu sme v minulosti prihlásili na spustenie, keď klient predloží akékoľvek požiadavky, ktoré neboli zaregistrované.

Funkcia vracia iba kód 404 (predvolený kód pre prípad, keď sa zdroj nenájde), vrátený typ údajov (v prípade obyčajného textu) a text so slovami „Nenašiel sa“.

// Definícia všetkých parametrov, ktoré môžu byť potrebné pre registráciu alebo zrušenie platnosti onNotFound () {server.send (404, "text/plain", "Not Found"); }

Krok 6: Vrátenie teploty

Toto je funkcia, ktorá vráti json s teplotnými údajmi, keď klient zadá požiadavku GET pri / teplote.

// Definície všetkých sérií vykonaných klientskych operácií alebo požiadaviek // // Do you get NO CAMINO 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 funkcia, ktorá vráti json s údajmi o vlhkosti, keď klient zadá požiadavku GET in / vlhkosť.

// Mnoho funkcií, ktoré môžete vykonať, alebo o ktorých klientoch požiadate o prijatie // urobte všetko, čo potrebujete 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 funkcia, ktorá vráti html, keď klient prejde na prístup / monitor. Táto stránka zobrazuje hodnoty teploty a vlhkosti a čas od času načítava údaje. Časť, ktorá je medzi a a štýl>

definuje vzhľad stránky a môžete ho ľubovoľne meniť.

// Definícia všetkých sérií vykonaných klientskych operácií alebo požiadavka na vykonanie // // nezískať žiadne https://192.168.2.8/monitor (pode ser outro ip dependendo da sua configuração) void showMonitor () {String html = "" "" ""

"Monitor DHT"

"telo {"

"polstrovanie: 35 pixelov;"

"farba pozadia: #222222;" "}"

Krok 9: Pokračovanie štýlu HTML

"h1 {" "farba: #FFFFFF;" "font-family: sans-serif;" "}" "p {" "farba: #EEEEEE;" "font-family: sans-serif;" "veľkosť písma: 18 pixelov;" "}" ""

Tu máme hlavnú časť html. V ňom máme dva odseky, ktoré zobrazia teplotu a vlhkosť. Dávajte pozor na identifikátory odsekov, pretože prostredníctvom nich tieto odstavce obnovíme, aby sme po rekvizíciách zadali hodnoty teploty a vlhkosti.

Monitor DHT

Teplota:

Vlhkosť:

Krok 10: JavaScript

Tu začneme definovať skript, ktorý z času na čas odčíta hodnoty teploty a vlhkosti. Funkcia refresh () volá funkcie refreshTemperature () a refreshHumdity () a setInterval volá funkciu obnovenia každých 5 000 milisekúnd (5 sekúnd).

"Obnoviť();" "setInterval (obnovenie, 5 000);" "funkcia refresh ()" "{" "refreshTemperature ()" "refreshHumidity ();" "}"

Funkcia refreshTemperature () robí požiadavku na / teplotu, analyzuje informácie obsiahnuté v json a do odseku pridá id teplotu.

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

Funkcia refreshHumidity () odošle požiadavku na / vlhkosť, analyzuje informácie obsiahnuté v json a do odseku pridá vlhkosť ID. A tým dokončíme html, ktorý pošleme požiadavkám na / monitor.

"funkcia refreshHumidity ()" "{" "var xmlhttp = nový XMLHttpRequest ();" "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('vlhkosť'). innerHTML = 'Vlhkosť:' + JSON. analyzovať (xmlhttp.responseText). vlhkosť + '%'; " "}" "};" "xmlhttp.open ('GET', 'https://192.168.2.8/humidity', true);" "xmlhttp.send ();" "}"

"";

Krok 11: Dokončenie programu ShowMonitor

Teraz, keď je reťazec s html, ktorý pošleme, pripravený, môžeme ho odoslať klientovi. Tým je funkcia 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: Testovanie

Testovanie
Testovanie

Teraz otvorte prehliadač a zadajte https://192.168.2.8/monitor (v závislosti od konfigurácie budete potrebovať inú IP adresu).

Odporúča: