Sisukord:

ESP8266: Temperatuuri ja niiskuse jälgimine: 12 sammu
ESP8266: Temperatuuri ja niiskuse jälgimine: 12 sammu

Video: ESP8266: Temperatuuri ja niiskuse jälgimine: 12 sammu

Video: ESP8266: Temperatuuri ja niiskuse jälgimine: 12 sammu
Video: Программирование модуля датчика температуры и влажности ESP8266 ESP01 DHT11 | удаленныйXY | ФЛПрог 2024, November
Anonim
Image
Image
Kokkupanek
Kokkupanek

Tänases õpetuses kasutame DHT22 anduri temperatuuri ja niiskuse lugemiseks ESP-01, mis on konfiguratsioonis 01 ESP8266 (ainult 2 GPIO-ga). Näitan teile elektriskeemi ja ESP programmeerimisosa koos Arduinoga. Näide on lihtne, hõlpsasti mõistetav ja sisaldab ka videos kasutatud PDF -faili, mis aitab kokkupanekul.

Kujunduses on meil siis ESP01, allikas, mis muundab 110 või 220 5 -voldiseks, pingeregulaator 3v3 ja DHT22, mis on andur. Nutitelefoni ekraanil kuvatakse lisaks ESP pakutavale JavaScripti koodile ka kohalik IP -aadress. See ekraan saab seega temperatuuri ja niiskuse parameetrid ning prindib need väärtused, mida uuendatakse iga viie sekundi tagant. Selleks ei vaja te telefonides ja tahvelarvutites ühtegi rakendust ning see kehtib nii Androidi kui ka iOS -i kohta.

Samm: kokkupanek

Elektriskeem on üsna lihtne, nagu ka koost, mis hõlmab ESP01 -d serverina. ESPO1 programmeeritakse nii, nagu oleks see Arduino: C -keele kaudu. Juhin tähelepanu sellele, et osa koodist prinditakse brauserist. See tähendab, et see saadab brauserisse JavaScripti koodi. Allpool selgitan paremini, kuidas see toimib.

Juhtmestiku juurde tagasi tulles panin ESP01 toiteks 5-voldise lülitatud allika, mis oli ühendatud 3v3 pingeregulaatoriga. Meil on endiselt nelja tihvtiga DHT22. Ühte neist, andmeid, ei kasutata. Siiski on vaja tõmmatavat takistit.

2. samm: kood

Esimene samm on lisada libid, mida me kasutame. DHT -libi saab lisada visandi valikuga> Kaasa raamatukogu> Halda raamatukogusid…

Otsige avanevas aknas DHT -andurite kogu.

Pärast seda lõime muutuja tüüpi ESP8266WebServer, mis on meie server ja vastab HTTP päringutele (port 80).

Loome ka DHT muutuja parameetritega 0 (mis on GPIO pin 0) ja tüübiga (meie puhul 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 do tipo DHT que possui funções para controlarmos o modeulo dht // loadindo ler a temperatura e a umidade DHT dht (0, DHT22);

3. samm: seadistamine

Seadistuses lähtestame seeria ainult nii, et meil oleks logi. See juhtub siis, kui ESP8266 on jadamonitori abil arvutiga jadaühenduse kaudu ühendatud.

Teeme ESP8266 -ga ühenduse meie võrguga. Meie puhul kasutame võrku TesteESP parooliga 87654321, kuid peate seda vastavalt kasutatavale võrgule muutma.

// Inicialize a Serial apenas caso esteja com o ESP8266 conectado ao computador pela serla queira ter um log // para facilititar saber o que está acontecendo com o ESP8266 Serial.begin (115200); // Instrução para or ESP8266 se conectar à rede. // No nosso caso o nome da rede é TesteESP e a senha é 87654321. // Você deve alterar com as informationçes da daa rede WiFi.begin ("TesteESP", "87654321"); // Tagasiside caso esteja usando o Monitor Serial Serial.println (""); Serial.print ("Conectando");

Ootame ESP8266 võrguga ühenduse loomist ja pärast ühenduse loomist saadame võrguseaded. Muutke vastavalt oma võrgule.

// Esperamos até que o módulo se conecte à rede while (WiFi.status ()! = WL_CONNECTED) {delay (500); Seeria.print ("."); } // IP -fikseerimise seadistused. Você pode alterar conforme a sua rede IPAdd ip (192, 168, 3, 11); IPAddressi lüüs (192, 168, 3, 1); Alamvõrk IPAddress (255, 255, 255, 0); Serial.print ("Configurando IP fixo para:"); Seeria.println (ip); // Envia a configuração WiFi.config (ip, gateway, subnet);

Järgmised käsud on ainult juhul, kui teil on ESP8266 arvutiga ühendatud jada kaudu, nii et saate jadamonitorilt tagasisidet.

Saate kontrollida IP -d, mille ESP8266 sai, et näha, kas see on sama, mis seadetes.

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

Siin hakkame määratlema, milliseid funktsioone iga päringu puhul täidetakse.

Allpool olevas juhises täidetakse funktsiooni getTemperature iga kord, kui ESP8266 võtab teel / temperatuuril vastu GET -tüüpi HTTP -päringu.

// 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 ser outro ip dependendo da sua configuração) a função getTemperature será executab server.on ("/temperature", HTTP_GET, getTemperature);

Selles teises avalduses täidetakse funktsiooni getHumidity iga kord, kui ESP8266 võtab teel / niiskuses vastu HTTP -päringu tüüpi GET.

// Nesse outo caso quando houver uma requisição http do tipo GET no caminho https://192.168.2.8/humidity // (pode ser outro ip dependendo da sua configuração) a função getHumidity será executab server.on ("/kosteus", HTTP_GET, getHumidity);

Selles juhises käivitatakse funktsioon showMonitor iga kord, kui ESP8266 võtab teele / kuvarile vastu GET -tüüpi HTTP -päringu.

Funktsioon showMonitor vastutab peamise html -i tagastamise eest, mis kuvab temperatuuri ja niiskuse väärtused.

// 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á executab. // Esta função retornará a página princip que mostrará os valores // da temperatura e da umidade and recarregará essas information de tempos em temppos server.on ("/monitor", HTTP_GET, showMonitor);

Siin on funktsiooni määratlus, mis tuleks täita, kui soovitud teed ei leita.

// Aqui definimos qual função será executada caso o caminho que o cliente requisitou não tenha sido registrerado server.onNotFound (onNotFound);

Siin lähtestame oma serveri, mille oleme varem sadamas 80 deklareerinud.

See on seadistamise lõpp.

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

4. samm: silmus

Tänu lib ESP8266WebServerile ei pea me ahelas kontrollima, kas kliente on ja milline on päringutee. Peame lihtsalt helistama handleClient () ja objekt kontrollib, kas mõni klient esitab päringuid, ja suunab ümber vastavale funktsioonile, mille me varem registreerisime.

void loop () {// Verifica se há alguma requisição de algum cliente server.handleClient (); }

Samm: taotlust ei leitud

See on funktsioon, mille oleme varem loginud täitma, kui klient esitab registreerimata päringuid.

Funktsioon tagastab ainult koodi 404 (vaikekood, kui ressurssi ei leita), tagastatud andmetüübi (lihtteksti puhul) ja teksti sõnadega "Ei leitud".

// Função que definimos para ser chamada quando o caminho requisitado não foi registrerado void onNotFound () {server.send (404, "text/plain", "Not Found"); }

6. samm: temperatuuri tagastamine

See on funktsioon, mis tagastab json koos temperatuuriandmetega, kui klient esitab GET päringu aadressil / temperatuur.

// 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 outro ip dependendo da sua configuração) void getTemperature () {// Fazemos a leitura da temperatura através do modeulo dht float t = dht.readTemperature (); // Cria um json com os dados da temperatura String json = "{" temperatuur / ":"+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); }

7. samm: niiskuse tagastamine

See on funktsioon, mis tagastab json koos niiskuse andmetega, kui klient esitab GET -päringu / niiskuses.

// Funçã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 moodulo dht float h = dht.readHumidity (); // Cria um json com os dados da umidade String json = "{" niiskust / ":"+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); }

8. samm: HTML

See on funktsioon, mis tagastab html -i, kui klient läheb juurde / jälgima. Sellel lehel kuvatakse temperatuuri ja niiskuse väärtused ning see laadib aeg -ajalt andmeid uuesti. Osa, mis jääb stiili ja vahele

määrab lehe välimuse ja saate seda oma äranägemise järgi muuta.

// Funçã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 ser outro ip dependendo da sua configuração) void showMonitor () {String html = "" "" ""

"DHT -monitor"

"keha {"

"polster: 35 pikslit;"

"taustavärv: #222222;" "}"

9. samm: HTML -stiili jätkamine

"h1 {" "värv: #FFFFFF;" "font-family: sans-serif;" "}" "p {" "värv: #EEEEEE;" "font-family: sans-serif;" "fondi suurus: 18 pikslit;" "}" ""

Siin on meil html peamine osa. Selles on kaks lõiku, mis näitavad temperatuuri ja niiskust. Pöörake tähelepanu lõigete ID -dele, sest nende kaudu taastame need lõigud, et sisestada pärast nõudeid temperatuuri ja niiskuse väärtused.

DHT monitor

Temperatuur:

Niiskus:

10. samm: JavaScript

Siin hakkame määratlema skripti, mis aeg -ajalt loeb temperatuuri ja niiskuse väärtusi. Funktsioon refresh () kutsub üles funktsioonid refreshTemperature () ja refreshHumdity () ning setInterval kutsub värskendusfunktsiooni iga 5000 millisekundi (5 sekundi) järel.

"värskenda ();" "setInterval (värskendus, 5000);" "function refresh ()" "" "" refreshTemperature () "" "refreshHumidity ();" "}"

Funktsioon refreshTemperature () esitab päringu temperatuuril / temperatuur, parsib jsonis sisalduva teabe ja lisab lõikesse id temperatuuri.

"function refreshTemperature ()" "" "" var xmlhttp = new XMLHttpRequest (); " "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('temperatuur'). internalHTML = 'Temperatuur:' + JSON. sõeluda (xmlhttp.responseText).temperatuur + 'C'; " "}" "};" "xmlhttp.open ('GET', 'https://192.168.2.8/temperatuur', tõsi);" "xmlhttp.send ();" "}"

Funktsioon refreshHumidity () esitab päringu / niiskusele, parsib jsonis sisalduvat teavet ja lisab lõiku id niiskuse. Ja sellega lõpetame html -i, mille saadame taotlustesse / monitoris.

"function refreshHumidity ()" "" "" var xmlhttp = new XMLHttpRequest (); " "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('niiskus'). internalHTML = 'Niiskus:' + JSON. sõeluda (xmlhttp.responseText).niiskus + '%'; " "}" "};" "xmlhttp.open ('GET', 'https://192.168.2.8/humidity', true);" "xmlhttp.send ();" "}"

"";

Samm 11: ShowMonitori lõpetamine

Nüüd, kui saadetava html -i string on valmis, saame selle kliendile saata. See lõpetab funktsiooni showMonitor ja koodi.

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

12. samm: testimine

Testimine
Testimine

Nüüd avage oma brauser ja sisestage https://192.168.2.8/monitor (sõltuvalt konfiguratsioonist võib teil olla vaja erinevat IP -d).

Soovitan: