Cov txheej txheem:

ESP8266: Yuav Ua Li Cas Saib Xyuas Kub thiab Vaum: 12 Kauj Ruam
ESP8266: Yuav Ua Li Cas Saib Xyuas Kub thiab Vaum: 12 Kauj Ruam

Video: ESP8266: Yuav Ua Li Cas Saib Xyuas Kub thiab Vaum: 12 Kauj Ruam

Video: ESP8266: Yuav Ua Li Cas Saib Xyuas Kub thiab Vaum: 12 Kauj Ruam
Video: Управление цифровым потенциометром с помощью Arduino — X9C103 2024, Kaum ib hlis
Anonim
Image
Image
Los ua ke
Los ua ke

Hauv kev qhia hnub no, peb yuav siv ESP-01, uas yog ESP8266 hauv kev teeb tsa 01 (nrog tsuas yog 2 GPIO), rau qhov ntsuas kub thiab av noo ntawm DHT22 sensor. Kuv yuav qhia koj txog cov phiaj xwm hluav taws xob thiab ESP txoj haujlwm nrog Arduino. Qhov piv txwv yog yooj yim, nkag siab yooj yim, thiab tseem los nrog PDF siv hauv cov vis dis aus los pab ua ke.

Hauv kev tsim, peb muaj ESP01, lub hauv paus uas hloov 110 lossis 220 rau 5 volts, tus tswj hluav taws xob ntawm 3v3, thiab DHT22, uas yog lub ntsuas. Ntawm lub vijtsam smartphone, koj yuav muaj tus IP chaw nyob hauv zos ntxiv rau JavaScript code muab los ntawm ESP. Vim li no lub vijtsam yuav tau txais qhov ntsuas ntawm qhov kub thiab txias thiab yuav luam tawm cov txiaj ntsig no, uas yuav hloov kho tshiab txhua tsib feeb. Txhawm rau ua qhov no, koj yuav tsis xav tau ib qho app hauv xov tooj thiab ntsiav tshuaj, thiab qhov no siv rau ob qho tib si Android OS thiab IOS.

Kauj ruam 1: Sib dhos

Cov phiaj xwm hluav taws xob tau yooj yim heev, ib yam li hais txog kev sib dhos, uas yuav koom nrog ESP01 ua tus neeg rau zaub mov. ESPO1 yuav tau ua haujlwm zoo li nws yog Arduino: dhau los ntawm hom C. Kuv taw qhia tias ib feem ntawm cov cai tau luam tawm los ntawm qhov browser. Qhov no txhais tau tias nws xa JavaScript code mus rau qhov browser. Hauv qab no, Kuv yuav piav qhia zoo dua txog qhov no ua haujlwm li cas.

Rov qab mus rau daim duab kab hluav taws xob, kuv tso 5-volt hloov chaw txuas nrog rau 3v3 tus tswj hluav taws xob kom muaj zog rau ESP01. Peb tseem muaj DHT22 nrog plaub tus pin. Ib qho ntawm cov no, cov ntaub ntawv, tsis siv. Txawm li cas los xij, nws yuav siv sij hawm rub tawm tus neeg tawm tsam.

Kauj ruam 2: Code

Thawj kauj ruam yog suav nrog cov libs uas peb yuav siv. DHT lib tuaj yeem ntxiv los ntawm Sketch kev xaiv> suav nrog Lub Tsev Qiv Ntawv> Tswj Tsev Qhua …

Hauv lub qhov rai uas qhib, saib rau DHT lub tsev qiv ntawv sensor.

Tom qab ntawd, peb tsim qhov sib txawv ntawm hom ESP8266WebServer uas yuav yog peb lub server thiab yuav teb rau HTTP thov (chaw nres nkoj 80).

Peb kuj tsim DHT sib txawv nrog cov ntsuas 0 (uas yog GPIO tus pin 0) thiab hom (hauv peb kis 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 módulo dht // permitindo ler a temperatura e a umidade DHT dht (0, DHT22);

Kauj ruam 3: Teeb

Hauv kev teeb tsa, peb yuav pib Serial nkaus xwb kom peb muaj lub cav. Qhov no yuav tshwm sim yog tias ESP8266 txuas nrog lub khoos phis tawj dhau los ua ntu zus los siv lub ntsuas saib.

Peb yuav ua ESP8266 txuas rau peb lub network. Hauv peb qhov xwm txheej, peb siv lub network TesteESP nrog tus password 87654321, tab sis koj yuav tau hloov qhov no raws li lub network uas koj siv.

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

Peb tos ESP8266 txuas rau lub network, thiab tom qab nws txuas, peb xa cov teeb tsa network. Hloov raws li koj lub network.

// Esperamos até que o módulo se conecte à rede thaum (WiFi.status ()! = WL_CONNECTED) {ncua (500); Serial.print ("."); } // Configurações ua IP fixo. Você pode alterar conforme a sua rede IPAddress ip (192, 168, 3, 11); IPAddress rooj vag (192, 168, 3, 1); IPAddress subnet (255, 255, 255, 0); Serial.print ("Configurando IP fixo para:"); Serial.println (ip); // Envia a configuração WiFi.config (ip, rooj vag, subnet);

Cov lus txib tom ntej tsuas yog nyob rau hauv rooj plaub uas koj muaj ESP8266 txuas nrog lub khoos phis tawj los ntawm cov ntawv xov xwm, yog li koj muaj lus tawm tswv yim los ntawm Serial Monitor.

Koj tuaj yeem tshawb xyuas tus IP uas ESP8266 tau txais los saib seb nws zoo ib yam li hauv kev teeb tsa.

// Mostramos tsis muaj Tus Saib Xyuas 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 ());

Ntawm no, peb pib txiav txim siab lub luag haujlwm twg uas yuav ua tiav rau txhua qhov kev thov.

Hauv cov lus qhia hauv qab no, txhua zaus ESP8266 tau txais HTTP thov ntawm hom GET hauv txoj hauv kev / qhov kub, qhov ua haujlwm getTemperature yuav ua tiav.

// 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) função getTemperature será executada server.on ("/kub", HTTP_GET, ua kom sov);

Hauv lwm nqe lus no, txhua lub sijhawm ESP8266 tau txais HTTP thov ntawm hom GET hauv txoj hauv kev / av noo, qhov ua kom muaj dej txaus yuav ua tiav.

// Nesse outo caso quando houver uma requisição http do tipo Tau txais tsis muaj caminho https://192.168.2.8/humidity // (pode ser outro ip dependendo da sua configuração) função getHumidity será executada server.on ("/humidity", HTTP_GET, getHumidity);

Hauv cov lus qhia no, txhua zaus ESP8266 tau txais HTTP thov ntawm hom GET hauv txoj hauv kev / saib xyuas, kev ua haujlwm showMonitor yuav ua tiav.

ShowMonitor lub luag haujlwm yog lub luag haujlwm xa rov qab lub ntsiab html uas yuav tso saib qhov ntsuas kub thiab av noo.

// 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) função showMonitor será executada. // Esta função retornará a página principal que mostrará os valores // da temperatura e da umidade e recarregará essas informações de tempos em tempos server.on ("/monitor", HTTP_GET, showMonitor);

Nov yog lub luag haujlwm txhais uas yuav tsum tau ua thaum txoj kev thov tsis pom.

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

Ntawm no peb pib peb cov server uas peb tau tshaj tawm yav dhau los ntawm chaw nres nkoj 80.

Qhov no yog qhov kawg ntawm kev teeb tsa.

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

Kauj ruam 4: Loop

Ua tsaug rau lib ESP8266WebServer, peb tsis tas yuav tshuaj xyuas hauv lub voj yog tias muaj cov neeg siv khoom thiab rau qhov kev thov yog dab tsi. Peb tsuas yog yuav tsum tau hu handleClient (), thiab lub hom phiaj yuav tshuaj xyuas yog tias ib tus neeg siv tau thov ib qho twg thiab yuav hloov mus rau qhov ua haujlwm sib xws uas peb tau sau npe ua ntej.

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

Kauj Ruam 5: Thov Tsis Pom

Nov yog txoj haujlwm peb yav dhau los tau nkag mus rau ua thaum tus neeg siv khoom thov yam uas tsis tau sau npe.

Lub luag haujlwm tsuas yog rov qab cov cai 404 (tus lej tsis raug rau thaum tsis pom cov peev txheej), cov ntaub ntawv xa rov qab (hauv cov ntawv yooj yim), thiab cov ntawv nrog cov lus "Tsis Pom."

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

Kauj Ruam 6: Rov Ntsuas Kub

Nov yog qhov ua haujlwm uas yuav rov qab json nrog cov ntaub ntawv ntsuas kub thaum tus neeg siv khoom thov kom tau txais ntawm / qhov kub.

// Função que definimos que será executada quando o cliente fizer uma requisição // ua tipo Tau txais tsis muaj 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 ua módulo dht ntab t = dht.readTemperature (); // Cria um json com os dados da temperatura String json = "{" temperature / ":"+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, "thov/json", json); }

Kauj Ruam 7: Rov Qab Vaum

Nov yog qhov ua haujlwm uas yuav rov qab json nrog cov ntaub ntawv ntub dej thaum tus neeg siv khoom thov kom tau txais hauv / av noo.

// Função que definimos que será executada quando o cliente fizer uma requisição // ua tipo Tau txais tsis muaj 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 = "{" 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, "thov/json", json); }

Kauj ruam 8: HTML

Nov yog txoj haujlwm uas yuav xa rov qab html thaum tus neeg siv nkag mus / saib xyuas. Nplooj ntawv no yuav qhia qhov ntsuas kub thiab av noo, thiab nws yuav rov qhib cov ntaub ntawv ib ntus. Ib feem uas yog nruab nrab thiab thiab style>

txhais cov tsos ntawm nplooj ntawv, thiab koj tuaj yeem hloov nws raws li koj nyiam.

// Função que definimos que será executada quando o cliente fizer uma requisição // ua tipo Tau txais tsis muaj caminho https://192.168.2.8/monitor (pode ser outro ip dependendo da sua configuração) void showMonitor () {String html = "" "" "" "Yog

"DHT Saib"

"cev {"

"ncoo: 35px;"

"keeb kwm yav dhau xim: #222222;" "}"

Kauj ruam 9: HTML Style Txuas Ntxiv

"h1 {" "xim: #FFFFFF;" "tsev neeg font: sans-serif;" "}" "p {" "xim: #EEEEEE;" "tsev neeg font: sans-serif;" "font-loj: 18px;" "}" "" "Yog

Ntawm no peb muaj qhov tseem ceeb ntawm html. Hauv nws, peb muaj ob kab lus uas yuav qhia qhov kub thiab txias. Ua tib zoo saib cov lej ntawm kab lus, vim nws yog los ntawm lawv uas peb yuav rov qab cov kab lus no kom nkag mus rau qhov ntsuas kub thiab av noo tom qab qhov xav tau.

DHT Saib

Kub:

Vaum:

Kauj ruam 10: JavaScript

Ntawm no peb pib txhais cov ntawv uas yuav los ntawm lub sijhawm dhau los nyeem qhov tseem ceeb ntawm qhov kub thiab txias. Qhov ua haujlwm tshiab () hu rau qhov ua kom sov sov () thiab ua kom rov zoo nkauj () ua haujlwm, thiab setInterval hu rau kev ua haujlwm tshiab txhua 5000 milliseconds (5 vib nas this).

"tshiab ();" "setInterval (kho tshiab, 5000);" "muaj nuj nqi refresh ()" "{" "refreshTemperature ()" "refreshHumidity ();" "}"

Kev ua haujlwm tshiab refreshTemperature () ua rau thov ntawm / ntsuas kub, txheeb xyuas cov ntaub ntawv muaj nyob hauv json, thiab ntxiv rau hauv kab lus tus lej kub.

"muaj nuj nqi refreshTemperature ()" "{" "var xmlhttp = tshiab XMLHttpRequest ();" "xmlhttp.onreadystatechange = function () {" "yog (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('kub'). innerHTML = 'Kub:' + JSON. parse (xmlhttp.responseText).temperature + 'C'; " "}" "};" "xmlhttp.open ('Tau', 'https://192.168.2.8/temperature', muaj tseeb);" "xmlhttp.send ();" "}"

RefreshHumidity () muaj nuj nqi ua rau thov rau / av noo, txheeb xyuas cov ntaub ntawv muaj nyob hauv json, thiab ntxiv rau hauv pawg lus id tus av noo. Thiab nrog qhov ntawd, peb ua tiav qhov html uas peb yuav xa hauv kev thov hauv / saib xyuas.

"muaj nuj nqi refreshHumidity ()" "{" "var xmlhttp = tshiab XMLHttpRequest ();" "xmlhttp.onreadystatechange = function () {" "yog (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('av noo'). innerHTML = 'Vaum:' + JSON. parse (xmlhttp.responseText). av noo + '%'; " "}" "};" "xmlhttp.open ('Tau', 'https://192.168.2.8/humidity', tseeb);" "xmlhttp.send ();" "}"

"";

Kauj ruam 11: Ua tiav ShowMonitor

Tam sim no tias txoj hlua nrog html uas peb yuav xa tau npaj tiav, peb tuaj yeem xa nws mus rau tus neeg siv khoom. Qhov no ua tiav showMonitor muaj nuj nqi thiab cov cai.

// 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, "ntawv/html", html); }

Kauj Ruam 12: Xeem

Kev Xeem
Kev Xeem

Tam sim no qhib koj tus browser thiab nkag mus rau https://192.168.2.8/monitor (koj yuav xav tau tus IP sib txawv raws li koj teeb tsa).

Pom zoo: