Sadržaj:
- Korak 1: Montaža
- Korak 2: Kodirajte
- Korak 3: Postavljanje
- Korak 4: Petlja
- Korak 5: Zahtjev nije pronađen
- Korak 6: Vraćanje temperature
- Korak 7: Vraćanje vlažnosti
- Korak 8: HTML
- Korak 9: Nastavak HTML stila
- DHT Monitor
- Korak 10: JavaScript
- Korak 11: Dovršavanje ShowMonitora
- Korak 12: Testiranje
Video: ESP8266: Kako pratiti temperaturu i vlažnost: 12 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
U današnjem vodiču koristit ćemo ESP-01, koji je ESP8266 u konfiguraciji 01 (sa samo 2 GPIO), za očitanje temperature i vlažnosti osjetnika DHT22. Pokazat ću vam električnu shemu i dio programiranja ESP -a s Arduinom. Primjer je jednostavan, lako razumljiv, a dolazi i s PDF -om koji se koristi u videu za pomoć pri sastavljanju.
U dizajnu imamo zatim ESP01, izvor koji pretvara 110 ili 220 u 5 volti, regulator napona od 3v3 i DHT22, koji je senzor. Na ekranu pametnog telefona imat ćete lokalnu IP adresu pored JavaScript koda koji pruža ESP. Ovaj ekran će stoga primiti parametre temperature i vlažnosti i ispisat će te vrijednosti koje će se ažurirati svakih pet sekundi. Da biste to učinili, neće vam trebati nikakve aplikacije na telefonima i tabletima, a to se odnosi i na Android OS i IOS.
Korak 1: Montaža
Električna shema je prilično jednostavna, kao i dio o sklopu, koji će uključivati ESP01 kao poslužitelj. ESPO1 će biti programiran kao da je Arduino: preko jezika C. Ističem da se dio koda štampa iz pretraživača. To znači da šalje JavaScript kod pregledniku. U nastavku ću bolje objasniti kako to funkcionira.
Vraćajući se na shemu ožičenja, stavio sam 5-voltni prekidač povezan na regulator napona 3v3 za napajanje ESP01. Još uvijek imamo DHT22 sa četiri pina. Jedan od njih, podaci, se ne koristi. Međutim, potreban je pull up otpornik.
Korak 2: Kodirajte
Prvi korak je uključivanje libova koje ćemo koristiti. DHT biblioteka se može dodati opcijom Sketch> Include Library> Manage Libraries …
U prozoru koji se otvori potražite biblioteku DHT senzora.
Nakon toga smo stvorili varijablu tipa ESP8266WebServer koja će biti naš server i koja će odgovarati na HTTP zahtjeve (port 80).
Također stvaramo DHT varijablu s parametrima 0 (što je GPIO pin 0) i tipom (u našem slučaju DHT22).
#include #include #include #include // Criamos uma variável do tipo ESP8266WebServer que já possui funções // que auxiliam on criação das rotas que o ESP8266 vai responder ESP8266WebServer server (80); // Varijabla do tipovanja DHT -a koja zahtijeva dodatne funkcije za kontrolu o načinu upravljanja dht -om // dozvoljava temperaturu i umitivanje DHT -dht (0, DHT22);
Korak 3: Postavljanje
U postavkama ćemo pokrenuti serijski broj samo tako da imamo dnevnik. To će se dogoditi ako je ESP8266 spojen na računalo putem serijskog monitora za korištenje serijskog monitora.
Omogućit ćemo da se ESP8266 poveže s našom mrežom. U našem slučaju koristimo mrežu TesteESP sa lozinkom 87654321, ali to ćete morati promijeniti ovisno o mreži koju koristite.
// Inicializirajte serijske aparate koji su u skladu s ESP8266 konektorom ili računarom koji pera serla postavlja kôd za dnevnik // za omogućavanje sablje o tome što je ekon acontecendo o ESP8266 Serial.begin (115200); // Instrukcija za ESP8266 se povezuje sa rede. // No no caso o nome to rede é TesteESP e senha and 87654321. // Você deve alterar com as information to sua rede WiFi.begin ("TesteESP", "87654321"); // Povratne informacije caso esteja usando o Monitor Serial Serial.println (""); Serial.print ("Conectando");
Čekamo da se ESP8266 spoji na mrežu, a nakon povezivanja šaljemo mrežne postavke. Promijenite prema vašoj mreži.
// Esperamos até que o módulo se conecte à rede while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } // Konfiguracije za IP popravke. Glasajte kako biste promijenili IP adresu ili IP adresu (192, 168, 3, 11); IPAddress gateway (192, 168, 3, 1); Podmreža IPAddress (255, 255, 255, 0); Serial.print ("Konfiguracija IP popravka para:"); Serial.println (ip); // Omogućava konfiguraciju WiFi.config (ip, gateway, podmreža);
Sljedeće naredbe su samo u slučaju da ste ESP8266 spojeni na računalo putem serijske jedinice, tako da imate povratne informacije od serijskog monitora.
Možete provjeriti IP koji je ESP8266 primio da vidite je li isti kao u postavkama.
// Mostramos no Monitor Serial o ip com o qual o esp8266 se povezuje sa verzijom koja je usklađena sa konfiguracijom com que konfiguracije Serial.println (""); Serial.println ("Connectado"); Serial.print ("IP:"); Serial.println (WiFi.localIP ());
Ovdje počinjemo definirati koje će se funkcije izvršavati za svaki zahtjev.
U donjim uputama, svaki put kada ESP8266 primi HTTP zahtjev tipa GET u putanji / temperaturi, funkcija getTemperature će se izvršiti.
// 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šavanje servera izvan ip -a ovisi o konfiguraciji sua) funckão getTemperature serva izvršni server.on ("/temperature", HTTP_GET, getTemperature);
U ovoj drugoj izjavi, svaki put kada ESP8266 primi HTTP zahtjev tipa GET u putanji / vlažnosti, funkcija getHumidity će se izvršiti.
// Nesse outo caso quando houver uma requizição http do tipo GET no caminho https://192.168.2.8/humidity // (podešavanje servera van ip -a ovisi o konfiguraciji sua) funkcijom getHumidity serta izvršni server.on ("/vlažnost", HTTP_GET, getHumidity);
U ovoj uputi, svaki put kada ESP8266 primi HTTP zahtjev tipa GET na putanji / monitoru, izvršiće se funkcija showMonitor.
Funkcija showMonitor odgovorna je za vraćanje glavnog html -a koji će prikazati vrijednosti temperature i vlažnosti.
// Nesse caso quando houver uma requizição http do tipo GET no caminho https://192.168.2.8/monitor // (podešavanje servera izvan ip -a ovisi o konfiguraciji sua) funkcionalna emisija showMonitor za izvršavanje. // Funkcioniše kao retornar na glavnoj stranici za najviše vrijednosti // da temperatura i umidada i da se računaju informacije o tempovima na tempu server.on ("/monitor", HTTP_GET, showMonitor);
Ovdje je definicija funkcije koju treba izvršiti kada tražena staza nije pronađena.
// Aqui definimos qual função será executeda caso or caminho que or cliente requiitou não tenha sido Registrationdo server.onNotFound (onNotFound);
Ovdje inicijaliziramo naš poslužitelj koji smo prethodno deklarirali na portu 80.
Ovo je kraj postavljanja.
// Pokretanje servera na porti 80 server.begin (); Serial.println ("Servisor HTTP iniciado"); }
Korak 4: Petlja
Zahvaljujući lib ESP8266WebServer, ne moramo provjeravati u petlji postoje li klijenti i koja je staza zahtjeva. Trebamo samo pozvati handleClient (), a objekt će provjeriti radi li neki klijent bilo kakve zahtjeve i preusmjerit će se na odgovarajuću funkciju koju smo prethodno registrirali.
void loop () {// Provjeri da li je potrebno zatražiti algum klijent server.handleClient (); }
Korak 5: Zahtjev nije pronađen
Ovo je funkcija koju smo prethodno prijavili za izvršavanje kada klijent daje zahtjeve koji nisu registrirani.
Funkcija vraća samo kôd 404 (zadani kôd kada resurs nije pronađen), vraćeni tip podataka (u slučaju običnog teksta) i tekst s riječima "Nije pronađeno."
// Funkcioniranje definitivnih parametara u slučaju da je potrebno ili potrebno za registraciju void onNotFound () {server.send (404, "text/plain", "Not Found"); }
Korak 6: Vraćanje temperature
Ovo je funkcija koja će vratiti json s podacima o temperaturi kada klijent podnese GET zahtjev na / temperature.
// 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 out out 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 osados da temperature String json = "{" temperature / ":"+String (t)+"}"; // Envia o json za klijente com o codigo 200, que é o código Quando i zahtjev za realizacijom com sucesso server.send (200, "application/json", json); }
Korak 7: Vraćanje vlažnosti
Ovo je funkcija koja će vratiti json s podacima o vlažnosti kada klijent podnese GET zahtjev u / vlažnosti.
// Funkã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 je dodao umidade String json = "{" vlažnost / ":"+String (h)+"}"; // Envia o json za klijente com o codigo 200, que é o código Quando i zahtjev za realizaciju com sucesso server.send (200, "application/json", json); }
Korak 8: HTML
Ovo je funkcija koja će vratiti html kada klijent ode na pristup / monitor. Ova stranica će prikazati vrijednosti temperature i vlažnosti i povremeno će učitavati podatke. Dio koji se nalazi između i i stila>
definira izgled stranice i možete je promijeniti po želji.
// Funkã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šavanje servera izvan ip -a za konfiguraciju sua) void showMonitor () {String html = "" "" ""
"DHT monitor"
"tijelo {"
"padding: 35px;"
"background-color: #222222;" "}"
Korak 9: Nastavak HTML stila
"h1 {" "boja: #FFFFFF;" "font-family: sans-serif;" "}" "p {" "boja: #EEEEEE;" "font-family: sans-serif;" "font-size: 18px;" "}" ""
Ovdje imamo glavni dio html -a. U njemu imamo dva paragrafa koji prikazuju temperaturu i vlažnost. Obratite pažnju na identifikatore paragrafa, jer ćemo putem njih oporaviti ove odlomke kako bismo unijeli vrijednosti temperature i vlažnosti nakon zahtjeva.
DHT Monitor
Temperatura:
Vlažnost:
Korak 10: JavaScript
Ovdje počinjemo definirati skriptu koja će s vremena na vrijeme čitati vrijednosti temperature i vlažnosti. Funkcija refresh () poziva funkcije refreshTemperature () i refreshHumdity (), a setInterval poziva funkciju osvježavanja svakih 5000 milisekundi (5 sekundi).
"Osvježiti();" "setInterval (osvježi, 5000);" "function refresh ()" "{" "refreshTemperature ()" "refreshHumidity ();" "}"
Funkcija refreshTemperature () šalje zahtjev na / temperature, analizira informacije sadržane u jsonu i dodaje u odlomak id temperaturu.
"function refreshTemperature ()" "{" "var xmlhttp = novi XMLHttpRequest ();" "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('temperatura'). innerHTML = 'Temperatura:' + JSON. parse (xmlhttp.responseText).temperature + 'C'; " "}" "};" "xmlhttp.open ('GET', 'https://192.168.2.8/temperature', true);" "xmlhttp.send ();" "}"
Funkcija refreshHumidity () šalje zahtjev za / vlažnost, analizira informacije sadržane u jsonu i dodaje u odlomak id vlažnost. Time završavamo html koji ćemo poslati u zahtjevima u / monitoru.
"function refreshHumidity ()" "{" "var xmlhttp = new XMLHttpRequest ();" "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('vlažnost'). innerHTML = 'Vlažnost:' + JSON. parse (xmlhttp.responseText).humidity + '%'; " "}" "};" "xmlhttp.open ('GET', 'https://192.168.2.8/humidity', true);" "xmlhttp.send ();" "}"
"";
Korak 11: Dovršavanje ShowMonitora
Sada kada je niz s html -om koji ćemo poslati spreman, možemo ga poslati klijentu. Ovo dovršava funkciju showMonitor i kôd.
// Omogućava html za klijente com o codigo 200, que é o código quando i zahtjev za realizaciju com sucesso server.send (200, "text/html", html); }
Korak 12: Testiranje
Sada otvorite svoj preglednik i unesite https://192.168.2.8/monitor (možda će vam trebati drugačiji IP, ovisno o vašoj konfiguraciji).
Preporučuje se:
M5STACK Kako prikazati temperaturu, vlažnost i pritisak na M5StickC ESP32 pomoću Visuina - jednostavno za napraviti: 6 koraka
M5STACK Kako prikazati temperaturu, vlažnost i pritisak na M5StickC ESP32 pomoću Visuina - jednostavno za napraviti: U ovom ćemo vodiču naučiti kako programirati ESP32 M5Stack StickC s Arduino IDE i Visuino za prikaz temperature, vlažnosti i tlaka pomoću ENV senzora (DHT12, BMP280, BMM150)
LED diode za temperaturu i vlažnost: 12 koraka
LED diode za temperaturu i vlažnost: Ako ste ikada poželjeli vizualniji termometar, ovaj projekt može vam pomoći. Napravit ćemo set LED dioda koje prikazuju određene boje na temelju razine vlažnosti i temperature
Pratite temperaturu i vlažnost sa AM2301 na NodeMCU & Blynk: 3 koraka
Pratite temperaturu i vlažnost zraka s AM2301 na NodeMCU & Blynk: Vrlo je poznata činjenica da u većini industrijskih vertikala, temperatura, vlažnost, tlak, kvaliteta zraka, kvaliteta vode itd. Igraju važne faktore koje treba stalno pratiti i neophodne Sistemi upozorenja moraju biti uspostavljeni kada vrijednost
ESP8266 i Visuino: DHT11 Web server za temperaturu i vlažnost: 12 koraka
ESP8266 i Visuino: DHT11 Web server za temperaturu i vlažnost: ESP8266 moduli su odlični jeftini samostalni kontroleri s ugrađenom Wi-Fi mrežom, a o njima sam već napravio niz instrukcija. DTH11/DTH21/DTH22 i AM2301 su vrlo popularne kombinirane temperature i Arduino senzori vlage, a ja sam napravio broj
ESP8266 Nadgledanje temperature Nodemcua pomoću DHT11 na lokalnom web poslužitelju - Dobijte sobnu temperaturu i vlažnost u svom pregledniku: 6 koraka
ESP8266 Nadgledanje temperature Nodemcua pomoću DHT11 na lokalnom web poslužitelju | Dobijte sobnu temperaturu i vlažnost u svom pregledniku: Zdravo momci, danas ćemo napraviti vlažnost & sistem za praćenje temperature pomoću ESP 8266 NODEMCU & Senzor temperature DHT11. Temperatura i vlažnost će se dobiti pomoću DHT11 senzora & u pretraživaču se može vidjeti kojom će se web stranicom upravljati