Sadržaj:

ESP8266: Kako pratiti temperaturu i vlažnost: 12 koraka
ESP8266: Kako pratiti temperaturu i vlažnost: 12 koraka

Video: ESP8266: Kako pratiti temperaturu i vlažnost: 12 koraka

Video: ESP8266: Kako pratiti temperaturu i vlažnost: 12 koraka
Video: Программирование модуля датчика температуры и влажности ESP8266 ESP01 DHT11 | удаленныйXY | ФЛПрог 2024, Juli
Anonim
Image
Image
Montaža
Montaža

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

Testiranje
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: