Orodha ya maudhui:

ESP8266: Jinsi ya Kufuatilia Joto na Unyevu: Hatua 12
ESP8266: Jinsi ya Kufuatilia Joto na Unyevu: Hatua 12

Video: ESP8266: Jinsi ya Kufuatilia Joto na Unyevu: Hatua 12

Video: ESP8266: Jinsi ya Kufuatilia Joto na Unyevu: Hatua 12
Video: Start Using Wemos D1 Mini NodeMCU WiFi ESP8266 module with Arduino 2024, Novemba
Anonim
Image
Image
Mkutano
Mkutano

Katika mafunzo ya leo, tutatumia ESP-01, ambayo ni ESP8266 katika usanidi 01 (na 2 tu GPIO), kwa usomaji wa joto na unyevu wa sensorer ya DHT22. Nitakuonyesha mpango wa umeme na sehemu ya programu ya ESP na Arduino. Mfano ni rahisi, rahisi kueleweka, na pia inakuja na PDF iliyotumiwa kwenye video kusaidia katika mkutano.

Katika muundo, tunayo ESP01, chanzo ambacho hubadilisha 110 au 220 kuwa volts 5, mdhibiti wa voltage ya 3v3, na DHT22, ambayo ni sensor. Kwenye skrini ya smartphone, utakuwa na anwani ya IP ya karibu na nambari ya JavaScript iliyotolewa na ESP. Skrini hii kwa hivyo itapokea vigezo vya joto na unyevu na itachapisha maadili haya, ambayo yatasasishwa kila sekunde tano. Ili kufanya hivyo, hutahitaji programu yoyote kwenye simu na vidonge, na hii inatumika kwa Android OS na IOS.

Hatua ya 1: Mkutano

Mpango wa umeme ni rahisi sana, kama ilivyo sehemu ya mkutano, ambayo itajumuisha ESP01 kama seva. ESPO1 itasanidiwa kana kwamba ni Arduino: kupitia lugha ya C. Ninaonyesha kuwa sehemu ya nambari imechapishwa kutoka kwa kivinjari. Hii inamaanisha kuwa hutuma nambari ya JavaScript kwa kivinjari. Chini, nitaelezea vizuri juu ya jinsi hii inavyofanya kazi.

Kurudi kwenye mchoro wa wiring, niliweka chanzo cha switched 5-volt kilichounganishwa na mdhibiti wa voltage ya 3v3 ili kuwezesha ESP01. Bado tuna DHT22 na pini nne. Moja ya hizi, data, haitumiki. Walakini, inachukua kontena la kuvuta.

Hatua ya 2: Kanuni

Hatua ya kwanza ni pamoja na libs ambazo tutatumia. LibT ya DHT inaweza kuongezwa na chaguo la Mchoro> Jumuisha Maktaba> Dhibiti Maktaba…

Katika dirisha linalofungua, angalia maktaba ya sensorer ya DHT.

Baada ya hapo, tuliunda tofauti ya aina ESP8266WebServer ambayo itakuwa seva yetu na itajibu maombi ya HTTP (bandari 80).

Pia tunaunda kutofautisha kwa DHT na vigezo 0 (ambayo ni pini ya GPIO 0) na aina (kwa upande wetu DHT22).

#jumuisha # pamoja na # pamoja na # pamoja # // 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 módulo dht // permitindo ler a temperatura e a umidade DHT dht (0, DHT22);

Hatua ya 3: Sanidi

Katika usanidi, tutaanzisha Serial tu ili tuwe na logi. Hii itatokea ikiwa ESP8266 imeunganishwa kwenye kompyuta kupitia serial ili kutumia mfuatiliaji wa serial.

Tutafanya ESP8266 kuungana na mtandao wetu. Kwa upande wetu, tunatumia mtandao wa TesteESP na nywila 87654321, lakini itabidi ubadilishe hii kulingana na mtandao unaotumia.

// Anzisha 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 o ESP8266 se conectar na rede. // Hakuna mtu anayeweza kusoma tena Jaribio la Jaribio ni 87654321. // Maoni kwa njia hii usando o Monitor Serial Serial.println (""); Serial.print ("Conectando");

Tunasubiri ESP8266 kuungana na mtandao, na baada ya kuungana, tunatuma mipangilio ya mtandao. Badilisha kulingana na mtandao wako.

// Esperamos até que o módulo se conecte à rede while (WiFi.status ()! = WL_CONNECTED) {kuchelewesha (500); Printa ya serial ("."); } // Configurações kufanya IP fixo. Você pode alterar conforme a sua rede IPAddress ip (192, 168, 3, 11); Lango la IPAdress (192, 168, 3, 1); IPAddress subnet (255, 255, 255, 0); Serial.print ("Configurando IP fixo para:"); Serial.println (ip); // Envia usanidi wa WiFi.config (ip, lango, subnet);

Amri zifuatazo ziko tu ikiwa una ESP8266 iliyounganishwa kwenye kompyuta kupitia serial, ili uwe na maoni kutoka kwa Serial Monitor.

Unaweza kuangalia IP ambayo ESP8266 ilipokea ili kuona ikiwa ni sawa na kwenye mipangilio.

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

Hapa, tunaanza kufafanua ni kazi gani zitatekelezwa kwa kila ombi.

Katika maagizo hapa chini, kila wakati ESP8266 inapokea ombi la HTTP la aina GET katika njia / joto, kazi ya Joto itatekelezwa.

// Ufafanuzi wa hali ya juu hufaa kufurahisha kwa kufanya kazi kwa o caminho na 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 ("/ joto", HTTP_GET, kupataTemperature);

Katika taarifa hii nyingine, kila wakati ESP8266 inapokea ombi la HTTP la aina GET katika njia / unyevu, kazi ya GetHumidity itatekelezwa.

// Nesse outo caso quando hou 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 ("/ humidity", HTTP_GET, kupataHumidity);

Katika mafundisho haya, kila wakati ESP8266 inapokea ombi la HTTP la aina GET katika njia / mfuatiliaji, onyesho la kaziMonitor litatekelezwa.

Kazi ya showMonitor inawajibika kurudisha html kuu ambayo itaonyesha maadili ya joto na unyevu.

// Nesse caso quando hou uma requisição http do tipo GET no caminho https://192.168.2.8/monitor // (pode ser outro ip dependendo da sua configuração) kipindi cha funçãoMonitor será executada. // Esta função retornará a página main que mostrará os valores // da temperatura and the umidade and recarregará essas informações de tempos em tempos server.on ("/ monitor", HTTP_GET, showMonitor);

Hapa kuna ufafanuzi wa kazi ambao unapaswa kutekelezwa wakati njia iliyoombwa haipatikani.

// Ufafanuzi wa hali inayofaa ni kazi ya kufanya kazi kwa kila mtu kwa sababu unahitaji kufanya kazi kwa seva ya usajili. Kwenye NotFound (onNotFound);

Hapa tunaanzisha seva yetu ambayo tulitangaza hapo awali kwenye bandari 80.

Huu ndio mwisho wa usanidi.

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

Hatua ya 4: Kitanzi

Shukrani kwa lib ESP8266WebServer, hatuna haja ya kuangalia kitanzi ikiwa kuna wateja na kwa nini njia ya ombi ni. Tunahitaji tu kuita handleClient (), na kitu kitaangalia ikiwa mteja yeyote anafanya maombi yoyote na ataelekeza kwa kazi inayofanana ambayo tulisajili hapo awali.

kitanzi batili () {/ }

Hatua ya 5: Ombi Haikupatikana

Hii ndio kazi ambayo hapo awali tuliingia kutekeleza wakati mteja atatoa maombi yoyote ambayo hayajasajiliwa.

Kazi hiyo inarudisha nambari 404 tu (nambari chaguomsingi wakati rasilimali haipatikani), aina ya data iliyorejeshwa (katika hali ya maandishi wazi), na maandishi yenye maneno "Haikupatikana."

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

Hatua ya 6: Kurudisha Joto

Hii ndio kazi ambayo itarudi json na data ya joto wakati mteja atafanya ombi la GET saa / joto.

// Utaftaji wa maelezo haya ni nini unachofanya ikiwa unataka kutumia mahitaji // usipate kupata kitu chochote https://192.168.2.8/temperature (pode ser outro ip dependendo da sua configuração) utupu 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 = "{" joto / ":" + Kamba (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); }

Hatua ya 7: Unyevu wa Kurudi

Hii ndio kazi ambayo itarudi json na data ya unyevu wakati mteja atafanya ombi la GET ndani / unyevu.

// Utaftaji wa huduma hii ni nini? da umidade através do módulo dht kuelea h = dht.readHumidity (); // Cria um json com os dados da umidade String json = "{" humidity / ":" + 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); }

Hatua ya 8: HTML

Hii ndio kazi ambayo itarudisha html wakati mteja anakwenda kufikia / kufuatilia. Ukurasa huu utaonyesha maadili ya joto na unyevu, na itapakia tena data mara kwa mara. Sehemu ambayo iko kati na mtindo>

hufafanua kuonekana kwa ukurasa, na unaweza kuibadilisha kama unavyopenda.

// Utaftaji wa ufafanuzi wa sababu hii ya kufanya kazi kwa njia moja ikiwa unahitaji kutumia // usipate kupata programu https:// 192.168.2.8/monitor (pode ser outro ip dependendo da sua configuração) void showMonitor () {String html = "" "" ""

"Ufuatiliaji wa DHT"

"mwili {"

"padding: 35px;"

"rangi ya asili: # 222222;" "}"

Hatua ya 9: Kuendelea kwa Mtindo wa HTML

rangi "h1 {" ": #FFFFFF;" "font-family: sans-serif;" Rangi ya "}" "p {" ": #EEEEEE;" "font-family: sans-serif;" "saizi ya fonti: 18px;" "}" ""

Hapa tuna sehemu kuu ya html. Ndani yake, tuna aya mbili ambazo zitaonyesha joto na unyevu. Zingatia vitambulisho vya aya, kwa sababu ni kupitia wao kwamba tutapona aya hizi kuingia maadili ya joto na unyevu baada ya mahitaji.

Ufuatiliaji wa DHT

Joto:

Unyevu:

Hatua ya 10: JavaScript

Hapa tunaanza kufafanua hati ambayo itasoma mara kwa mara maadili ya joto na unyevu. Kazi ya kuburudisha () inaita furahishaTemperature () na refreshHumdity () kazi, na setInterval inaita kazi ya kuburudisha kila milliseconds 5000 (sekunde 5).

"furahisha ();" "setInterval (onyesha upya, 5000);" "onyesha kazi ()" "{" "refreshTemperature ()" "refreshHumidity ();" "}"

Kazi ya kutafakariJoto () hufanya ombi kwa / joto, inachambua habari iliyo kwenye json, na inaongeza kwenye aya joto la kitambulisho.

"kazi refreshTemperature ()" "{" "var xmlhttp = XMLHttpRequest mpya ();" "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('temperature'). innerHTML = 'Joto:' + JSON. kifungu (xmlhttp.responseText).joto + 'C'; " "}" "};" "xmlhttp.open ('GET', 'https:// 192.168.2.8 / joto', kweli);" "xmlhttp.send ();" "}"

Kazi ya refreshHumidity () hufanya ombi kwa / unyevu, inasambaza habari iliyo kwenye json, na inaongeza kwenye aya unyevu wa id. Na kwa hayo, tunamaliza html ambayo tutatuma maombi katika / kufuatilia.

"kazi refreshHumidity ()" "{" "var xmlhttp = XMLHttpRequest mpya ();" "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('humidity'). HTML ya ndani = 'Humidity:' + JSON. kifungu (xmlhttp.responseText). unyevu + '%'; " "}" "};" "xmlhttp.open ('GET', 'https:// 192.168.2.8 / humidity', kweli);" "xmlhttp.send ();" "}"

"";

Hatua ya 11: Kumaliza ShowMonitor

Sasa kwa kuwa kamba iliyo na html ambayo tutatuma iko tayari, tunaweza kuipeleka kwa mteja. Hii inakamilisha kazi ya showMonitor na nambari.

// Envia o html para o cliente com o código 200, que é o código quando a requisção foi realizada com sucesso server.send (200, "text / html", html); }

Hatua ya 12: Upimaji

Upimaji
Upimaji

Sasa fungua kivinjari chako na uingie https:// 192.168.2.8 / monitor (unaweza kuhitaji ip tofauti kulingana na usanidi wako).

Ilipendekeza: