Përmbajtje:

ESP8266: Si të monitoroni temperaturën dhe lagështinë: 12 hapa
ESP8266: Si të monitoroni temperaturën dhe lagështinë: 12 hapa

Video: ESP8266: Si të monitoroni temperaturën dhe lagështinë: 12 hapa

Video: ESP8266: Si të monitoroni temperaturën dhe lagështinë: 12 hapa
Video: Programimi i modulit të sensorit të lagështisë së temperaturës ESP8266 ESP01 DHT11 | RemoteXY 2024, Korrik
Anonim
Image
Image
Kuvendi
Kuvendi

Në mësimin e sotëm, ne do të përdorim një ESP-01, i cili është ESP8266 në konfigurimin 01 (me vetëm 2 GPIO), për leximet e temperaturës dhe lagështisë së sensorit DHT22. Unë do t'ju tregoj një skemë elektrike dhe pjesën e programimit ESP me një Arduino. Shembulli është i thjeshtë, i lehtë për t’u kuptuar, dhe gjithashtu vjen me PDF -në e përdorur në video për të ndihmuar në montim.

Në dizajn, ne kemi atëherë ESP01, burimin që konverton 110 ose 220 në 5 volt, një rregullator të tensionit prej 3v3 dhe DHT22, i cili është sensori. Në ekranin e smartphone, do të keni adresën IP lokale përveç kodit JavaScript të siguruar nga ESP. Prandaj, ky ekran do të marrë parametrat e temperaturës dhe lagështisë dhe do të printojë këto vlera, të cilat do të përditësohen çdo pesë sekonda. Për ta bërë këtë, nuk do të keni nevojë për asnjë aplikacion në telefona dhe tableta, dhe kjo vlen si për Android OS ashtu edhe për IOS.

Hapi 1: Asambleja

Skema elektrike është mjaft e thjeshtë, siç është pjesa e montimit, e cila do të përfshijë ESP01 si server. ESPO1 do të programohet sikur të ishte një Arduino: përmes gjuhës C. Theksoj se një pjesë e kodit është shtypur nga shfletuesi. Kjo do të thotë që ai dërgon kodin JavaScript në shfletuesin. Më poshtë, do të shpjegoj më mirë se si funksionon kjo.

Duke u kthyer në diagramin e instalimeve elektrike, vendosa një burim të ndezur 5 volt të lidhur me një rregullator të tensionit 3v3 për të fuqizuar ESP01. Ne ende kemi DHT22 me katër kunja. Një nga këto, të dhënat, nuk përdoret. Sidoqoftë, duhet një rezistencë tërheqëse.

Hapi 2: Kodi

Hapi i parë është përfshirja e libeve që do të përdorim. Libri DHT mund të shtohet me opsionin Sketch> Përfshi Bibliotekën> Menaxho Bibliotekat …

Në dritaren që hapet, kërkoni bibliotekën e sensorit DHT.

Pas kësaj, ne krijuam një ndryshore të llojit ESP8266WebServer që do të jetë serveri ynë dhe do t'i përgjigjet kërkesave HTTP (porti 80).

Ne gjithashtu krijojmë një ndryshore DHT me parametrat 0 (që është pin GPIO 0) dhe llojin (në rastin tonë DHT22).

#include #include #includ #include // Criamos uma variável do tipo ESP8266WebServer që mund të ketë funksionalitete // që do të ndihmojnë në funksionimin e shërbimeve të ESP8266 dhe përgjigjen ESP8266WebServer server (80); // Variável për tipo DHT që mund të ketë funksionalitete për kontrollin e módulo dht // për të lejuar një temperaturë dhe një umidade DHT dht (0, DHT22);

Hapi 3: Konfigurimi

Në konfigurim, ne do të fillojmë Serialin vetëm në mënyrë që të kemi një regjistër. Kjo do të ndodhë nëse ESP8266 është i lidhur me kompjuterin përmes serialit për të përdorur monitorin serik.

Ne do ta bëjmë ESP8266 të lidhet me rrjetin tonë. Në rastin tonë, ne përdorim rrjetin TesteESP me fjalëkalimin 87654321, por ju do të duhet ta ndryshoni këtë sipas rrjetit që përdorni.

// Inicializoni një Serial apenas caso esteja com o ESP8266 conectado ao computador pela serla queira ter um log // para lehtësimit 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 informações da sua rede WiFi.begin ("TesteESP", "87654321"); // Reagimi për përdorimin ose monitorimin e Serialit Serial.println (""); Serial.print ("Conectando");

Ne presim që ESP8266 të lidhet me rrjetin, dhe pasi të lidhet, ne dërgojmë cilësimet e rrjetit. Ndryshoni sipas rrjetit tuaj.

// Esperamos até que o módulo se conecte à rede while (WiFi.status ()! = WL_CONNECTED) {vonesë (500); Serial.print ("."); } // Konfigurimet e rregullimit të IP. Você pode alterar conform a sua rede IPAddress ip (192, 168, 3, 11); Porta IPAddress (192, 168, 3, 1); Nën -rrjeta IPAddress (255, 255, 255, 0); Serial.print ("Konfiguro rregullimin e IP për:"); Serial.println (ip); // Envia a configuração WiFi.config (ip, gateway, subnet);

Komandat e ardhshme janë vetëm në rast se keni ESP8266 të lidhur me kompjuterin përmes serialit, në mënyrë që të keni reagime nga Serial Monitor.

Mund të kontrolloni IP -në që mori ESP8266 për të parë nëse është e njëjtë si në cilësimet.

// Mostramos no Monitor Serial o ip com o qual o esp8266 se si të lidheni me verifikimin e vlerësimit të të dhënave në Serial.println (""); Serial.println ("Connectado"); Serial.print ("IP:"); Serial.println (WiFi.localIP ());

Këtu, ne fillojmë të përcaktojmë se cilat funksione do të ekzekutohen për secilën kërkesë.

Në udhëzimet më poshtë, sa herë që ESP8266 merr një kërkesë HTTP të llojit GET në shteg / temperaturë, funksioni getTemperature do të ekzekutohet.

// Aqui definimos qual a função será exeada 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 out out ip varet nga sua configuração) një funksion funksional për të marrëTemperature será të ekzekutimit server.on ("/temperature", HTTP_GET, getTemperature);

Në këtë deklaratë tjetër, sa herë që ESP8266 merr një kërkesë HTTP të tipit GET në shteg / lagështi, funksioni getHumidity do të ekzekutohet.

// Nesse outo caso quando houver uma requisição http do tipo GET no caminho https://192.168.2.8/humidity // (pode ser out out ip varet nga një konfigurim i përshtatshëm) një funksionalisht getHumidity será ekzekutimi server.on ("/lagështia", HTTP_GET, getHumidity);

Në këtë udhëzim, sa herë që ESP8266 merr një kërkesë HTTP të tipit GET në rrugën / monitorin, funksioni showMonitor do të ekzekutohet.

Funksioni showMonitor është përgjegjës për kthimin e html kryesore që do të shfaq vlerat e temperaturës dhe lagështisë.

// Nesse caso quando houver uma requisição http do tipo GET no caminho https://192.168.2.8/monitor // (pode out out ip varet nga një konfigurim i mëparshëm) një shfaqje argëtueseMonitor será ekzekutimi. // Esta função retornará a página principal que mostrará os valores // për temperaturën e një umidade dhe recarregará essas informações de tempos em tempos server.on ("/monitor", HTTP_GET, showMonitor);

Këtu është përkufizimi i funksionit që duhet të ekzekutohet kur shtegu i kërkuar nuk gjendet.

// Përcaktoni aftësinë për të kryer një shërbim ose shërbim për klientin që kërkon nga klienti që të mos regjistrohet në server.onNotFound (onNotFound);

Këtu fillojmë serverin tonë të deklaruar më parë në portin 80.

Ky është fundi i konfigurimit.

// Inicializimi ose serveri që ka një hyrje në portën 80 server.begin (); Serial.println ("Servidor HTTP iniciado"); }

Hapi 4: Lak

Falë lib ESP8266WebServer, ne nuk kemi nevojë të kontrollojmë në lak nëse ka klientë dhe për çfarë është rruga e kërkesës. Ne vetëm duhet të thërrasim handleClient (), dhe objekti do të kontrollojë nëse ndonjë klient po bën ndonjë kërkesë dhe do të ridrejtohet në funksionin përkatës që kemi regjistruar më parë.

void loop () {// Verifikimi i kësaj kërkese të kërkesës së klientit server.handleClient (); }

Hapi 5: Kërkesa nuk u gjet

Ky është funksioni që kemi regjistruar më parë për të ekzekutuar kur klienti bën ndonjë kërkesë që nuk është regjistruar.

Funksioni kthen vetëm kodin 404 (kodi i paracaktuar kur burimi nuk gjendet), lloji i të dhënave të kthyera (në rastin e tekstit të thjeshtë) dhe një tekst me fjalët "Nuk u gjet".

// Funksioni për të përcaktuar kërkesën për të kërkuar një kërkesë ose regjistrim të pavlefshëm të onNotFound () {server.send (404, "text/plain", "Not Found"); }

Hapi 6: Kthimi i Temperaturës

Ky është funksioni që do të kthejë një json me të dhënat e temperaturës kur klienti bën një kërkesë GET në / temperaturë.

// Funksioni që përcakton se do të kryejë një kërkesë për klientët që duan të bëjnë // bëni këshillë GET no caminho https://192.168.2.8/temperature (pode out out ip dependendo da sua configuração) void getTemperature () {// Fazemos një leitura da temperatura através do módulo dht noton t = dht.readTemperature (); // Cria um json com os dados da temperatura String json = "{" temperature / ":"+Vargu (t)+"}"; // Përgjigje për klientët në odigo 200, nëse keni nevojë për një kërkesë për të arritur një server të suksesshëm. Dërgoni (200, "application/json", json); }

Hapi 7: Kthimi i lagështisë

Ky është funksioni që do të kthejë një json me të dhënat e lagështisë kur klienti bën një kërkesë GET në / lagështia.

// Funksioni që përcakton se do të kryejë një kërkesë për klientët fizikë ose kërkues // bëni tipo MERRNJ KAMINHO https://192.168.2.8/humidity (pode ser outro ip dependendo da sua configuração) void getHumidity () {// Fazemos një leitura da umidade através do módulo dht noton h = dht.readHumidity (); // Cria um json com os dados da umidade String json = "{" lagështia / ":"+Vargu (h)+"}"; // Përgjigje për klientët në odigo 200, nëse keni nevojë për një kërkesë për të arritur një server të suksesshëm. Dërgoni (200, "application/json", json); }

Hapi 8: HTML

Ky është funksioni që do të kthejë html kur klienti shkon në akses / monitor. Kjo faqe do të tregojë vlerat e temperaturës dhe lagështisë dhe do të ngarkojë të dhënat herë pas here. Pjesa që është midis dhe dhe stilit>

përcakton pamjen e faqes, dhe ju mund ta ndryshoni atë sipas dëshirës tuaj.

// Funksioni që përcakton se do të ekzekutojë një kërkesë për klientët që ju nevojiten // bëni këshilla GET no caminho https://192.168.2.8/monitor (pode out out ip dependendo da sua configuração) void showMonitor () {String html = "" "" ""

"Monitor DHT"

"trupi {"

"mbushje: 35px;"

"ngjyra e sfondit: #222222;" "}"

Hapi 9: Vazhdimi i stilit HTML

"h1 {" "ngjyra: #FFFFFF;" "font-family: sans-serif;" "}" "p {" "ngjyra: #EEEEEE;" "font-family: sans-serif;" "font-size: 18px;" "}" ""

Këtu kemi pjesën kryesore të html. Në të, ne kemi dy paragrafë që do të tregojnë temperaturën dhe lagështinë. Kushtojini vëmendje ID -ve të paragrafëve, sepse përmes tyre ne do t'i rikuperojmë këto paragrafë për të futur vlerat e temperaturës dhe lagështisë pas kërkesave.

Monitor DHT

Temperatura:

Lagështia:

Hapi 10: JavaScript

Këtu fillojmë të përcaktojmë shkrimin që herë pas here do të lexojë vlerat e temperaturës dhe lagështisë. Funksioni refresh () thërret funksionet refreshTemperature () dhe refreshHumdity (), dhe setInterval thërret funksionin e rifreskimit çdo 5000 milisekonda (5 sekonda).

"rifreskoni ();" "setInterval (rifreskoni, 5000);" "funksion refresh ()" "{" "refreshTemperature ()" "refreshHumidity ();" "}"

Funksioni refreshTemperature () bën një kërkesë në / temperature, analizon informacionin e përmbajtur në json dhe shton në paragraf temperaturën id.

"funksioni refreshTemperature ()" "{" "var xmlhttp = i ri XMLHttpRequest ();" "xmlhttp.onreadystatechange = funksion () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('temperatura'). innerHTML = 'Temperatura:' + JSON analizo (xmlhttp.responseText).temperatura + 'C'; " "}" "};" "xmlhttp.open (" GET "," https://192.168.2.8/temperature ", e vërtetë);" "xmlhttp.send ();" "}"

Funksioni refreshHumidity () bën një kërkesë për / lagështinë, analizon informacionin e përmbajtur në json dhe shton në paragraf lagështinë id. Dhe me këtë, ne përfundojmë html që do të dërgojmë në kërkesat në / monitor.

"funksioni refreshHumidity ()" "{" "var xmlhttp = i ri XMLHttpRequest ();" "xmlhttp.onreadystatechange = funksion () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('lagështia'). innerHTML = 'Lagështia:' + JSON analizo (xmlhttp.responseText). lagështia + '%'; " "}" "};" "xmlhttp.open ('GET', 'https://192.168.2.8/humidity', true);" "xmlhttp.send ();" "}"

"";

Hapi 11: Përfundimi i ShowMonitor

Tani që vargu me html që do të dërgojmë është gati, mund t'ia dërgojmë klientit. Kjo përfundon funksionin showMonitor dhe kodin.

// Përdorimi i html para klientit ose përdorimi i tij 200, si dhe përdorimi i nevojshëm i një serveri të suksesshëm. Dërgoni (200, "tekst/html", html); }

Hapi 12: Testimi

Duke testuar
Duke testuar

Tani hapni shfletuesin tuaj dhe futni https://192.168.2.8/monitor (mund të keni nevojë për një ip të ndryshme në varësi të konfigurimit tuaj).

Recommended: