Satura rādītājs:

ESP8266: Kā kontrolēt temperatūru un mitrumu: 12 soļi
ESP8266: Kā kontrolēt temperatūru un mitrumu: 12 soļi

Video: ESP8266: Kā kontrolēt temperatūru un mitrumu: 12 soļi

Video: ESP8266: Kā kontrolēt temperatūru un mitrumu: 12 soļi
Video: Start Using Wemos D1 Mini NodeMCU WiFi ESP8266 module with Arduino 2024, Jūlijs
Anonim
Image
Image
Montāža
Montāža

Šodienas apmācībā DHT22 sensora temperatūras un mitruma rādījumiem mēs izmantosim ESP-01, kas ir ESP8266 konfigurācijā 01 (tikai ar 2 GPIO). Es jums parādīšu elektrisko shēmu un ESP programmēšanas daļu ar Arduino. Piemērs ir vienkāršs, viegli saprotams, un tam ir pievienots arī videoklipā izmantotais PDF fails, lai palīdzētu montāžā.

Projektēšanā mums ir ESP01, avots, kas pārveido 110 vai 220 par 5 voltiem, sprieguma regulators 3v3 un DHT22, kas ir sensors. Viedtālruņa ekrānā papildus ESP sniegtajam JavaScript kodam jums būs vietējā IP adrese. Tādējādi šis ekrāns saņems temperatūras un mitruma parametrus un izdrukās šīs vērtības, kuras tiks atjauninātas ik pēc piecām sekundēm. Lai to izdarītu, tālruņos un planšetdatoros jums nebūs vajadzīgas nevienas lietotnes, un tas attiecas gan uz Android OS, gan IOS.

1. solis: montāža

Elektriskā shēma ir diezgan vienkārša, tāpat kā daļa par montāžu, kurā ESP01 tiks iekļauts kā serveris. ESPO1 tiks ieprogrammēts tā, it kā tas būtu Arduino: izmantojot C valodu. Es norādu, ka daļa koda tiek izdrukāta no pārlūkprogrammas. Tas nozīmē, ka tas pārlūkprogrammai nosūta JavaScript kodu. Tālāk es labāk paskaidrošu, kā tas darbojas.

Atgriežoties pie elektroinstalācijas shēmas, es ievietoju 5 voltu pārslēgtu avotu, kas savienots ar 3v3 sprieguma regulatoru, lai barotu ESP01. Mums joprojām ir DHT22 ar četrām tapām. Viens no tiem, dati, netiek izmantots. Tomēr tam ir nepieciešams pacelšanas rezistors.

2. darbība: kods

Pirmais solis ir iekļaut libs, ko mēs izmantosim. DHT lib var pievienot, izmantojot opciju Skice> Iekļaut bibliotēku> Pārvaldīt bibliotēkas …

Atvērtajā logā meklējiet DHT sensoru bibliotēku.

Pēc tam mēs izveidojām ESP8266WebServer tipa mainīgo, kas būs mūsu serveris un atbildēs uz HTTP pieprasījumiem (80. ports).

Mēs arī izveidojam DHT mainīgo ar parametriem 0 (kas ir GPIO pin 0) un veidu (mūsu gadījumā 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 // allowindo ler a temperatura e a umidade DHT dht (0, DHT22);

3. darbība: iestatīšana

Iestatīšanas laikā mēs inicializēsim sēriju tikai tā, lai mums būtu žurnāls. Tas notiks, ja ESP8266 ir savienots ar datoru, izmantojot seriālo sērijas monitoru.

Mēs izveidosim ESP8266 savienojumu ar mūsu tīklu. Mūsu gadījumā mēs izmantojam tīklu TesteESP ar paroli 87654321, taču jums tas būs jāmaina atbilstoši jūsu izmantotajam tīklam.

// 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 o ESP8266 se conectar à rede. // No nosso caso o nome da rede é TesteESP e a senha é 87654321. // Você deve alterar com as informationções da sua rede WiFi.begin ("TesteESP", "87654321"); // Atsauksmes caso esteja usando o Monitor Serial Serial.println (""); Serial.print ("Conectando");

Mēs gaidām, kamēr ESP8266 izveidos savienojumu ar tīklu, un pēc tam, kad tas ir izveidots savienojums, mēs nosūtām tīkla iestatījumus. Mainiet atbilstoši savam tīklam.

// Esperamos até que o módulo se conecte à rede while (WiFi.status ()! = WL_CONNECTED) {delay (500); Sērijas nospiedums ("."); } // IP fixo konfigurēšana. Você pode alterar conforme a sua rede IPAddress ip (192, 168, 3, 11); IPAddress vārteja (192, 168, 3, 1); IPAddress apakštīkls (255, 255, 255, 0); Serial.print ("Configurando IP fixo para:"); Sērijas.println (ip); // Envia a configuração WiFi.config (ip, vārteja, apakštīkls);

Nākamās komandas ir pieejamas tikai tad, ja ESP8266 ir savienots ar datoru, izmantojot seriālo, lai jums būtu atsauksmes no sērijas monitora.

Varat pārbaudīt ESP8266 saņemto IP, lai redzētu, vai tas ir tāds pats kā iestatījumos.

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

Šeit mēs sākam definēt, kuras funkcijas tiks izpildītas katram pieprasījumam.

Turpmāk sniegtajā instrukcijā katru reizi, kad ESP8266 ceļā / temperatūrā saņem GET tipa HTTP pieprasījumu, tiks izpildīta funkcija getTemperature.

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

Šajā citā paziņojumā katru reizi, kad ESP8266 ceļā / mitrumā saņem HTTP pieprasījumu ar GET tipu, tiks izpildīta funkcija getHumidity.

// 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á executada server.on ("/mitrums", HTTP_GET, getHumidity);

Šajā instrukcijā katru reizi, kad ESP8266 ceļā / monitorā saņem GET tipa HTTP pieprasījumu, tiks izpildīta funkcija showMonitor.

Funkcija showMonitor ir atbildīga par galvenā html, kas parādīs temperatūras un mitruma vērtības, atgriešanu.

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

Šeit ir funkcijas definīcija, kas jāizpilda, ja pieprasītais ceļš netiek atrasts.

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

Šeit mēs inicializējam savu serveri, kuru iepriekš deklarējām 80.

Tas ir iestatīšanas beigas.

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

4. solis: cilpa

Pateicoties lib ESP8266WebServer, mums nav jāpārbauda, vai ir klienti un kāds ir pieprasījuma ceļš. Mums vienkārši jāizsauc handleClient (), un objekts pārbaudīs, vai kāds klients izsaka pieprasījumus, un novirzīs uz atbilstošo funkciju, kuru mēs iepriekš reģistrējām.

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

5. darbība. Pieprasījums nav atrasts

Šī ir funkcija, kuru mēs iepriekš reģistrējāmies, lai izpildītu, kad klients izsaka pieprasījumus, kas nav reģistrēti.

Funkcija atgriež tikai kodu 404 (noklusējuma kods, kad resurss netiek atrasts), atgriezto datu tipu (vienkārša teksta gadījumā) un tekstu ar vārdiem "Nav atrasts".

// 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. darbība: atgrieziet temperatūru

Šī ir funkcija, kas atgriezīs json ar temperatūras datiem, kad klients iesniegs GET pieprasījumu pie / temperatūra.

// 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 metodulo dht float t = dht.readTemperature (); // Cria um json com os dados da temperatura String json = "{" temperatura / ":"+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. solis: mitruma atgriešana

Šī ir funkcija, kas atgriezīs json ar mitruma datiem, kad klients iesniegs GET pieprasījumu / mitrumā.

// 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 metodulo dht float h = dht.readHumidity (); // Cria um json com os dados da umidade String json = "{" mitrums / ":"+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. darbība: HTML

Šī ir funkcija, kas atgriezīs html, kad klients dosies uz piekļuvi / monitoru. Šajā lapā tiks parādītas temperatūras un mitruma vērtības, un tā laiku pa laikam atkārtoti ielādēs datus. Daļa, kas atrodas starp un un stils>

nosaka lapas izskatu, un jūs varat to mainīt, kā vēlaties.

// 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 monitors"

"ķermenis {"

"polsterējums: 35 pikseļi;"

"fona krāsa: #222222;" "}"

9. darbība: HTML stila turpinājums

"h1 {" "krāsa: #FFFFFF;" "fontu saime: sans-serif;" "}" "p {" "krāsa: #EEEEEE;" "fontu saime: sans-serif;" "fonta izmērs: 18 pikseļi;" "}" ""

Šeit mums ir galvenā html daļa. Tajā ir divas rindkopas, kas parādīs temperatūru un mitrumu. Pievērsiet uzmanību rindkopu ID, jo caur tiem mēs atgūsim šos punktus, lai pēc pieprasījumiem ievadītu temperatūras un mitruma vērtības.

DHT monitors

Temperatūra:

Mitrums:

10. darbība: JavaScript

Šeit mēs sākam definēt skriptu, kas laiku pa laikam nolasa temperatūras un mitruma vērtības. Funkcija refresh () izsauc funkcijas refreshTemperature () un refreshHumdity (), un setInterval izsauc atsvaidzināšanas funkciju ik pēc 5000 milisekundēm (5 sekundēm).

"atjaunot();" "setInterval (atsvaidzināt, 5000);" "function refresh ()" "" "" refreshTemperature () "" refreshHumidity (); " "}"

Funkcija refreshTemperature () veic pieprasījumu pie / temperatūra, parsē json ietverto informāciju un rindkopā pievieno id temperatūru.

"function refreshTemperature ()" "" "" var xmlhttp = new XMLHttpRequest (); " "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('temperatūra'). internalHTML = 'Temperatūra:' + JSON. parsēt (xmlhttp.responseText).temperatūra + 'C'; " "}" "};" "xmlhttp.open ('GET', 'https://192.168.2.8/temperatūra', true);" "xmlhttp.send ();" "}"

Funkcija refreshHumidity () veic pieprasījumu / mitrumam, parsē json ietverto informāciju un rindkopā pievieno id mitrumu. Un ar to mēs pabeidzam html, ko nosūtīsim pieprasījumos / monitorā.

"function refreshHumidity ()" "" "" var xmlhttp = new XMLHttpRequest (); " "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('mitrums'). internalHTML = 'Mitrums:' + JSON. parsēt (xmlhttp.responseText). mitrums + '%'; " "}" "};" "xmlhttp.open ('GET', 'https://192.168.2.8/humidity', true);" "xmlhttp.send ();" "}"

"";

11. darbība: ShowMonitor pabeigšana

Tagad, kad virkne ar nosūtāmo html ir gatava, mēs varam to nosūtīt klientam. Tas pabeidz funkciju showMonitor un kodu.

// 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. solis: pārbaude

Testēšana
Testēšana

Tagad atveriet pārlūkprogrammu un ievadiet https://192.168.2.8/monitor (atkarībā no konfigurācijas jums var būt nepieciešams cits IP).

Ieteicams: