Talaan ng mga Nilalaman:

ESP8266: Paano Subaybayan ang Temperatura at Humidity: 12 Hakbang
ESP8266: Paano Subaybayan ang Temperatura at Humidity: 12 Hakbang

Video: ESP8266: Paano Subaybayan ang Temperatura at Humidity: 12 Hakbang

Video: ESP8266: Paano Subaybayan ang Temperatura at Humidity: 12 Hakbang
Video: Learn Arduino in 30 Minutes: Examples and projects 2024, Hulyo
Anonim
Image
Image
Assembly
Assembly

Sa tutorial ngayon, gagamit kami ng isang ESP-01, na kung saan ay ang ESP8266 sa pagsasaayos 01 (na may 2 GPIO lamang), para sa pagbabasa ng temperatura at halumigmigan ng sensor ng DHT22. Ipapakita ko sa iyo ang isang iskemang de-kuryente at ang bahagi ng programa ng ESP na may isang Arduino. Ang halimbawa ay simple, madaling maunawaan, at kasama din ang PDF na ginamit sa video upang makatulong sa pagpupulong.

Sa disenyo, mayroon kaming pagkatapos na ang ESP01, ang mapagkukunan na nagko-convert sa 110 o 220 sa 5 volts, isang boltahe regulator ng 3v3, at sa DHT22, na kung saan ay ang sensor. Sa screen ng smartphone, magkakaroon ka ng lokal na IP address bilang karagdagan sa JavaScript code na ibinigay ng ESP. Ang screen na ito samakatuwid ay makakatanggap ng mga parameter ng temperatura at halumigmig at mai-print ang mga halagang ito, na maa-update bawat limang segundo. Upang magawa ito, hindi mo kakailanganin ang anumang mga app sa mga telepono at tablet, at nalalapat ito para sa parehong Android OS at IOS.

Hakbang 1: Assembly

Ang scheme ng elektrisidad ay medyo simple, tulad ng bahagi tungkol sa pagpupulong, na kung saan ay kasangkot ang ESP01 bilang isang server. Ang ESPO1 ay mai-program na parang ito ay isang Arduino: sa pamamagitan ng wikang C. Itinuro ko na ang bahagi ng code ay nakalimbag mula sa browser. Nangangahulugan ito na nagpapadala ito ng JavaScript code sa browser. Sa ibaba, mas magpapaliwanag ako tungkol sa kung paano ito gumagana.

Bumabalik sa diagram ng mga kable, naglagay ako ng isang 5-volt na lumipat na mapagkukunan na konektado sa isang 3v3 boltahe regulator upang mapagana ang ESP01. Mayroon pa kaming DHT22 na may apat na mga pin. Ang isa sa mga ito, data, ay hindi ginagamit. Gayunpaman, tumatagal ito ng isang pull up risistor.

Hakbang 2: Code

Ang unang hakbang ay upang isama ang mga lib na gagamitin namin. Ang DHT lib ay maaaring idagdag ng pagpipiliang Sketch> Isama ang Library> Pamahalaan ang Mga Aklatan…

Sa bubukas na window, hanapin ang library ng sensor ng DHT.

Pagkatapos nito, lumikha kami ng isang variable ng uri ng ESP8266WebServer na magiging aming server at tutugon sa mga kahilingan sa HTTP (port 80).

Lumilikha rin kami ng variable na DHT na may mga parameter 0 (na kung saan ay ang GPIO pin 0) at ang uri (sa aming kaso na DHT22).

#include #include #include #include // Criamos uma variável do tipo ESP8266WebServer que já posui funções // que auxiliam na criação das rotas que o ESP8266 vai responder ESP8266WebServer server (80); // Variável do tipo DHT que posui funções para controlarmos o módulo dht // permitindo ler a temperatura at a umidade DHT dht (0, DHT22);

Hakbang 3: Pag-setup

Sa pag-setup, sisimulan lamang namin ang Serial upang magkaroon kami ng isang log. Mangyayari ito kung ang ESP8266 ay konektado sa computer sa pamamagitan ng serial upang magamit ang serial monitor.

Gagawin naming kumonekta ang ESP8266 sa aming network. Sa aming kaso, ginagamit namin ang network TesteESP na may password na 87654321, ngunit kakailanganin mong baguhin ito alinsunod sa network na iyong ginagamit.

// Inicialize a Serial apenas caso esteja com o ESP8266 conectado ao computador pela serla queira ter um log // para facilitar saber o que está acontecendo com o ESP8266 Serial.begin (115200); // Instrução para sa 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"); // Feedback caso esteja usando o Monitor Serial Serial.println (""); Serial.print ("Conectando");

Naghihintay kami para sa ESP8266 na kumonekta sa network, at pagkatapos nitong kumonekta, ipinapadala namin ang mga setting ng network. Baguhin alinsunod sa iyong network.

// Esperamos até que o módulo se conecte à rede habang (WiFi.status ()! = WL_CONNected) {pagkaantala (500); Serial.print ("."); } // Configurações gawin ang pag-aayos ng IP. Ang Você pode alterar ay umaayon sa isang sua rede IPAddress ip (192, 168, 3, 11); IPAddress gateway (192, 168, 3, 1); IPAddress subnet (255, 255, 255, 0); Serial.print ("Configurando IP fixo para:"); Serial.println (ip); // Envia isang configuração WiFi.config (ip, gateway, subnet);

Ang mga susunod na utos ay nasa kaso lamang na mayroon kang koneksyon sa ESP8266 sa computer sa pamamagitan ng serial, upang magkaroon ka ng feedback mula sa Serial Monitor.

Maaari mong suriin ang IP na natanggap ng ESP8266 upang makita kung pareho ito sa mga setting.

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

Dito, nagsisimula kaming tukuyin kung aling mga pagpapaandar ang naisasagawa para sa bawat kahilingan.

Sa tagubilin sa ibaba, sa tuwing makakatanggap ang ESP8266 ng isang kahilingan sa HTTP ng uri na GET sa landas / temperatura, ang pagpapaandar na getTemperature ay papatayin.

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

Sa ibang pahayag na ito, sa tuwing makakatanggap ang ESP8266 ng isang HTTP na kahilingan ng uri na GET sa landas / halumigmig, ang pagpapaandar na getHumidity ay papatayin.

// 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 ("/ halumigmig", HTTP_GET, getHumidity);

Sa tagubiling ito, sa tuwing makakatanggap ang ESP8266 ng isang kahilingan sa HTTP na uri ng GET sa path / monitor, ang function showMonitor ay papatayin.

Ang pagpapaandar ng showMonitor ay responsable para sa pagbabalik ng pangunahing html na magpapakita ng mga halaga ng temperatura at halumigmig.

// 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 principal que mostrará os valores // da temperatura e da umidade and recarregará essas informações de tempos em tempos server.on ("/ monitor", HTTP_GET, showMonitor);

Narito ang kahulugan ng pagpapaandar na dapat ipatupad kapag hindi nahanap ang hiniling na landas.

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

Dito namin pinasimulan ang aming server na dati naming idineklara sa port 80.

Ito ang pagtatapos ng pag-set up.

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

Hakbang 4: Loop

Salamat sa lib ESP8266WebServer, hindi namin kailangang suriin sa loop kung may mga kliyente at kung ano ang landas ng kahilingan. Kailangan lang naming tawagan ang handleClient (), at susuriin ng object kung may anumang mga kliyente na gumagawa ng anumang mga kahilingan at magre-redirect sa kaukulang pag-andar na nairehistro namin dati.

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

Hakbang 5: Hindi Nahanap ang Kahilingan

Ito ang pagpapaandar na dati naming na-log upang maisagawa kapag ang kliyente ay gumawa ng anumang mga kahilingan na hindi pa nakarehistro.

Ibinabalik lamang ng pagpapaandar ang code 404 (default code para kapag hindi nahanap ang isang mapagkukunan), ang ibinalik na uri ng data (sa kaso ng payak na teksto), at isang teksto na may mga salitang "Hindi Natagpuan."

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

Hakbang 6: Pagbabalik ng Temperatura

Ito ang pagpapaandar na magbabalik ng isang json kasama ang data ng temperatura kapag ang kliyente ay gumawa ng isang kahilingan na GET sa / temperatura.

// 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 módulo dht float t = dht.readTemperature (); // Cria um json com os dados da temperatura String json = "{" temperatura / ":" + String (t) + "}"; // Envia o json para sa cliente com o código 200, que c o código quando a requisição foi realizada com sucesso server.send (200, "application / json", json); }

Hakbang 7: Bumabalik na Humidity

Ito ang pagpapaandar na magbabalik ng isang json kasama ang data ng kahalumigmigan kapag ang kliyente ay gumawa ng isang kahilingan na makuha ang / kahalumigmigan.

// 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 módulo dht float h = dht.readHumidity (); // Cria um json com os dados da umidade String json = "{" halumigmig / ":" + String (h) + "}"; // Envia o json para sa cliente com o código 200, que c o código quando a requisição foi realizada com sucesso server.send (200, "application / json", json); }

Hakbang 8: HTML

Ito ang pagpapaandar na ibabalik ang html kapag ang client ay papunta sa pag-access / monitor. Ipapakita ng pahinang ito ang mga halaga ng temperatura at halumigmig, at ilalagay nito muli ang data sa pana-panahon. Ang bahaging nasa pagitan at at istilo>

tumutukoy sa hitsura ng pahina, at mababago mo ito ayon sa gusto mo.

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

"Monitor ng DHT"

"katawan {"

"padding: 35px;"

"background-color: # 222222;" "}"

Hakbang 9: Pagpapatuloy ng Estilo ng HTML

"h1 {" "kulay: #FFFFFF;" "font-family: sans-serif;" "}" "p {" "kulay: #EEEEEE;" "font-family: sans-serif;" "laki ng font: 18px;" "}" ""

Narito mayroon kaming pangunahing bahagi ng html. Sa loob nito, mayroon kaming dalawang talata na magpapakita ng temperatura at halumigmig. Bigyang-pansin ang mga id ng mga talata, sapagkat sa pamamagitan ng mga ito mababawi namin ang mga talatang ito upang ipasok ang mga halaga ng temperatura at halumigmig pagkatapos ng mga hinihiling.

Monitor ng DHT

Temperatura:

Humidity:

Hakbang 10: JavaScript

Dito sinisimulan naming tukuyin ang script na magbasa pana-panahon ng mga halaga ng temperatura at halumigmig. Ang pagpapaandar ng pag-refresh () ay tumatawag sa pag-andar ng refreshTemperature () at pag-refreshHumdity (), at itinatakda ng setInterval ang pag-andar ng pag-refresh tuwing 5000 milliseconds (5 segundo).

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

Ang pagpapaandar na refreshTemperature () ay gumagawa ng isang kahilingan sa / temperatura, parse ang impormasyong nilalaman sa json, at idaragdag sa talata ang temperatura ng id.

"function refreshTemperature ()" "{" "var xmlhttp = bagong XMLHttpRequest ();" "xmlhttp. parse (xmlhttp.responseText).temperature + 'C'; " "}" "};" "xmlhttp.open ('GET', 'https://192.168.2.8/temperature', totoo);" "xmlhttp.send ();" "}"

Ang pagpapaandar ng refreshHumidity () ay gumagawa ng isang kahilingan sa / kahalumigmigan, i-parse ang impormasyong nilalaman sa json, at idaragdag sa talata ang id halumigmig. At sa pamamagitan nito, natatapos namin ang html na ipadadala namin sa mga kahilingan sa / monitor.

"function refreshHumidity ()" "{" "var xmlhttp = bagong XMLHttpRequest ();" "xmlhttp. parse (xmlhttp.responseText).humidity + '%'; " "}" "};" "xmlhttp.open ('GET', 'https://192.168.2.8/humidity', totoo);" "xmlhttp.send ();" "}"

"";

Hakbang 11: Tinatapos ang ShowMonitor

Ngayon na ang string na may html na ipapadala namin ay handa na, maaari namin itong ipadala sa kliyente. Nakumpleto nito ang pagpapaandar ng showMonitor at ang code.

// Envia o html para sa cliente com o código 200, para sa iyo ay kailangan mo ng isang realizada com sucesso server.send (200, "text / html", html); }

Hakbang 12: Pagsubok

Pagsubok
Pagsubok

Ngayon buksan ang iyong browser at ipasok ang https://192.168.2.8/monitor (maaaring kailanganin mo ng ibang ip depende sa iyong pagsasaayos).

Inirerekumendang: