Kazalo:
- 1. korak: Montaža
- 2. korak: Koda
- 3. korak: Nastavitev
- 4. korak: Zanka
- 5. korak: Zahteve ni mogoče najti
- 6. korak: Vrnitev temperature
- 7. korak: Vračanje vlažnosti
- 8. korak: HTML
- 9. korak: Nadaljevanje sloga HTML
- Monitor DHT
- 10. korak: JavaScript
- 11. korak: Dokončanje ShowMonitorja
- 12. korak: Testiranje
Video: ESP8266: Kako spremljati temperaturo in vlažnost: 12 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
V današnjem vodiču bomo za odčitke temperature in vlažnosti senzorja DHT22 uporabili ESP-01, ki je ESP8266 v konfiguraciji 01 (samo z 2 GPIO). Pokazal vam bom električno shemo in programski del ESP z Arduinom. Primer je preprost, razumljiv in vsebuje tudi PDF, uporabljen v videoposnetku za pomoč pri sestavljanju.
V zasnovi imamo potem ESP01, vir, ki pretvori 110 ali 220 v 5 voltov, regulator napetosti 3v3 in DHT22, ki je senzor. Na zaslonu pametnega telefona boste poleg kode JavaScript, ki jo ponuja ESP, imeli še lokalni naslov IP. Ta zaslon bo zato prejel parametre temperature in vlažnosti ter natisnil te vrednosti, ki se bodo posodabljale vsakih pet sekund. Če želite to narediti, ne potrebujete nobenih aplikacij na telefonih in tabličnih računalnikih, kar velja tako za OS Android kot za iOS.
1. korak: Montaža
Električna shema je precej preprosta, prav tako del o sestavi, ki bo vključeval ESP01 kot strežnik. ESPO1 bo programiran kot Arduino: prek jezika C. Poudarjam, da je del kode natisnjen iz brskalnika. To pomeni, da brskalniku pošlje kodo JavaScript. Spodaj bom bolje razložil, kako to deluje.
Če se vrnem na shemo ožičenja, sem za napajanje ESP01 postavil 5-voltni preklopni vir, priključen na napetostni regulator 3v3. Še vedno imamo DHT22 s štirimi zatiči. Eden od teh, podatki, se ne uporablja. Vendar pa potrebuje vlečni upor.
2. korak: Koda
Prvi korak je vključitev lib, ki jih bomo uporabili. Knjižnico DHT lahko dodate z možnostjo Sketch> Include Library> Manage Libraries …
V oknu, ki se odpre, poiščite knjižnico senzorjev DHT.
Po tem smo ustvarili spremenljivko tipa ESP8266WebServer, ki bo naš strežnik in se bo odzvala na zahteve HTTP (vrata 80).
Ustvarimo tudi spremenljivko DHT s parametri 0 (to je pin GPIO 0) in vrsto (v našem primeru 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 strežnik strežnika ESP8266WebServer (80); // Variável do tipo DHT que possui funções para controlarmos o módulo dht // dovoli temperaturo in umidade DHT dht (0, DHT22);
3. korak: Nastavitev
V nastavitvah bomo serijsko zaporedje inicializirali tako, da bomo imeli dnevnik. To se zgodi, če je ESP8266 povezan z računalnikom prek serijske enote za uporabo serijskega monitorja.
ESP8266 bomo povezali z našim omrežjem. V našem primeru uporabljamo omrežje TesteESP z geslom 87654321, vendar ga boste morali spremeniti glede na omrežje, ki ga uporabljate.
// Inicialize a Serial apenas caso esteja com o ESP8266 conectado ao computador pela serla queira ter um log // para facilitar sabre o que está acontecendo com o ESP8266 Serial.begin (115200); // Navodilo za ESP8266 se povezuje à 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"); // Povratne informacije caso esteja usando o Monitor Serial Serial.println (""); Serial.print ("Conectando");
Počakamo, da se ESP8266 poveže z omrežjem, in potem ko se poveže, pošljemo omrežne nastavitve. Spremenite glede na svoje omrežje.
// Esperamos até que o módulo se conecte à rede while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } // Nastavitve za popravek IP. Pokliči nastavitve, ki ustrezajo naslovu IPAddress ip (192, 168, 3, 11); Prehod IPAddress (192, 168, 3, 1); Podomrežje IPAddress (255, 255, 255, 0); Serial.print ("Konfiguriranje popravka IP para:"); Serial.println (ip); // Omogoči konfiguracijo WiFi.config (ip, prehod, podomrežje);
Naslednji ukazi so samo v primeru, da imate ESP8266 z računalnikom povezan prek serijske enote, tako da imate povratne informacije od serijskega monitorja.
IP, ki ga je prejel ESP8266, lahko preverite, če je enak kot v nastavitvah.
// Mostramos no Monitor Serial o ip com o qual o esp8266 se poveže z različico, ki je está de acordo com o que konfiguracijo Serial.println (""); Serial.println ("Connectado"); Serial.print ("IP:"); Serial.println (WiFi.localIP ());
Tu začnemo definirati, katere funkcije bodo izvedene za vsako zahtevo.
V spodnjih navodilih se bo vsakič, ko ESP8266 prejme zahtevo HTTP tipa GET na poti / temperaturi, izvedla 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/temperature // (nastavite ser outro ip odvisen od konfiguracije sua) funkcijo getTemperature será executada server.on ("/temperature", HTTP_GET, getTemperature);
V tem drugem stavku se bo vsakič, ko ESP8266 prejme zahtevo HTTP tipa GET na poti / vlažnosti, izvedla funkcija getHumidity.
// Nesse outo caso quando houver uma requisição http do tipo GET no caminho https://192.168.2.8/humidity // (pode ser out out ip dependendo da sua configuração) a função getHumidity será executada server.on ("/Vlažnost", HTTP_GET, getHumidity);
V tem navodilu se bo vsakič, ko ESP8266 prejme zahtevo HTTP tipa GET na poti / monitorju, izvedla funkcija showMonitor.
Funkcija showMonitor je odgovorna za vrnitev glavnega HTML -ja, ki prikazuje vrednosti temperature in vlažnosti.
// Nesse caso quando houver uma requisição http do tipo GET no caminho https://192.168.2.8/monitor // (nastavite 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 in recarregará essas informações de tempos em tempos server.on ("/monitor", HTTP_GET, showMonitor);
Tu je definicija funkcije, ki jo je treba izvesti, ko zahtevane poti ni mogoče najti.
// Aqui definimos qual função será executada caso o caminho que o cliente requisitou não tenha sido registerdo server.onNotFound (onNotFound);
Tu inicializiramo naš strežnik, ki smo ga prej deklarirali na vratih 80.
To je konec nastavitve.
// Začetek strežnika na porta 80 server.begin (); Serial.println ("Servisor HTTP iniciado"); }
4. korak: Zanka
Zahvaljujoč lib ESP8266WebServer nam ni treba preverjati, ali obstajajo odjemalci in kakšna je pot zahteve. Poklicati moramo samo handleClient () in objekt bo preveril, ali katera od strank poda kakšno zahtevo, in se preusmeril na ustrezno funkcijo, ki smo jo že registrirali.
void loop () {// Verifica se há alguma requisição de algum cliente server.handleClient (); }
5. korak: Zahteve ni mogoče najti
To je funkcija, ki smo jo prej prijavili za izvajanje, ko odjemalec poda kakršne koli zahteve, ki niso bile registrirane.
Funkcija vrne samo kodo 404 (privzeta koda, kadar vira ni mogoče najti), vrnjeno vrsto podatkov (v primeru navadnega besedila) in besedilo z besedami "Ni najdeno."
// Função que definimos para ser chamada quando o caminho requisitado não foi registerdo void onNotFound () {server.send (404, "text/plain", "Not Found"); }
6. korak: Vrnitev temperature
To je funkcija, ki vrne json s podatki o temperaturi, ko odjemalec poda zahtevo GET pri / temperature.
// 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 = "{" temperature / ":"+String (t)+"}"; // Envia o json para ali 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. korak: Vračanje vlažnosti
To je funkcija, ki bo vrnila json s podatki o vlagi, ko odjemalec poda zahtevo GET v / vlažnosti.
// 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 = "{" vlažnost / ":"+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. korak: HTML
To je funkcija, ki bo vrnila html, ko odjemalec dostopa do dostopa / monitorja. Na tej strani bodo prikazane vrednosti temperature in vlažnosti, občasno pa bodo tudi naloženi podatki. Del, ki je med in in slogom>
določa videz strani in ga lahko poljubno spremenite.
// 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 DHT"
"telo {"
"oblazinjenje: 35px;"
"barva ozadja: #222222;" "}"
9. korak: Nadaljevanje sloga HTML
"h1 {" "barva: #FFFFFF;" "font-family: sans-serif;" "}" "p {" "barva: #EEEEEE;" "font-family: sans-serif;" "font-size: 18px;" "}" ""
Tukaj imamo glavni del html. V njem imamo dva odstavka, ki prikazujeta temperaturo in vlažnost. Bodite pozorni na identifikacijske številke odstavkov, saj bomo prek njih te odstavke obnovili, da vnesemo vrednosti temperature in vlažnosti po zahtevah.
Monitor DHT
Temperatura:
Vlažnost:
10. korak: JavaScript
Tu začnemo definirati skript, ki bo občasno prebral vrednosti temperature in vlažnosti. Funkcija refresh () pokliče funkcije refreshTemperature () in refreshHumdity (), setInterval pa funkcijo osveževanja vsakih 5000 milisekund (5 sekund).
"osveži ();" "setInterval (osveži, 5000);" "function refresh ()" "{" "refreshTemperature ()" "refreshHumidity ();" "}"
Funkcija refreshTemperature () poda zahtevo pri / temperature, analizira informacije v jsonu in v odstavek doda temperaturo id.
"function refreshTemperature ()" "{" "var xmlhttp = nov XMLHttpRequest ();" "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('temperature'). innerHTML = 'Temperature:' + JSON. razčleni (xmlhttp.responseText).temperatura + 'C'; " "}" "};" "xmlhttp.open ('GET', 'https://192.168.2.8/temperature', true);" "xmlhttp.send ();" "}"
Funkcija refreshHumidity () poda zahtevo za / vlažnost, analizira informacije v jsonu in v odstavku doda vlažnost id. S tem dokončamo html, ki ga bomo poslali v zahtevah v / monitorju.
"function refreshHumidity ()" "{" "var xmlhttp = nov XMLHttpRequest ();" "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('vlažnost'). innerHTML = 'Vlažnost:' + JSON. razčleni (xmlhttp.responseText).humidity + '%'; " "}" "};" "xmlhttp.open ('GET', 'https://192.168.2.8/humidity', true);" "xmlhttp.send ();" "}"
"";
11. korak: Dokončanje ShowMonitorja
Zdaj, ko je niz s html -om, ki ga bomo poslali, pripravljen, ga lahko pošljemo odjemalcu. S tem dokončate funkcijo showMonitor in kodo.
// Envia o html para ali 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. korak: Testiranje
Zdaj odprite brskalnik in vnesite https://192.168.2.8/monitor (morda boste potrebovali drugačen IP, odvisno od vaše konfiguracije).
Priporočena:
M5STACK Kako prikazati temperaturo, vlažnost in tlak na M5StickC ESP32 z uporabo Visuina - enostavno narediti: 6 korakov
M5STACK Kako prikazati temperaturo, vlažnost in tlak na M5StickC ESP32 z uporabo Visuina - enostavno narediti: V tej vadnici se bomo naučili, kako programirati ESP32 M5Stack StickC z Arduino IDE in Visuino za prikaz temperature, vlažnosti in tlaka s senzorjem ENV (DHT12, BMP280, BMM150)
ESP8266 in Visuino: spletni strežnik za temperaturo in vlažnost DHT11: 12 korakov
ESP8266 in Visuino: DHT11 Spletni strežnik za temperaturo in vlažnost: moduli ESP8266 so odlični nizkocenovni samostojni krmilniki z vgrajenim Wi-Fi-jem, o njih pa sem že naredil vrsto navodil. DTH11/DTH21/DTH22 in AM2301 sta zelo priljubljena kombinirana temperatura in senzorji vlažnosti Arduino in naredil sem število
Kako spremljati ultrazvočno razdaljo z ESP8266 in AskSensors IoT Cloud: 5 korakov
Kako nadzorovati ultrazvočno razdaljo z ESP8266 in AskSensors IoT Cloud: Ta navodila podajajo, kako spremljati razdaljo od objekta z ultrazvočnim senzorjem HC-SR04 in MCU vozlišča ESP8266, povezanim z oblakom AskSensors IoT
ESP8266 Nadzor temperature Nodemcu z uporabo DHT11 na lokalnem spletnem strežniku - Dobite sobno temperaturo in vlažnost v svojem brskalniku: 6 korakov
ESP8266 Nadzor temperature Nodemcu z uporabo DHT11 na lokalnem spletnem strežniku | Dobite sobno temperaturo in vlažnost v svojem brskalniku: Pozdravljeni, danes bomo ustvarili vlažnost & sistem za spremljanje temperature z uporabo ESP 8266 NODEMCU & Senzor temperature DHT11. Temperaturo in vlago dobimo s senzorjem DHT11 & v brskalniku je mogoče videti, katera spletna stran bo upravljana
Kako uporabljati temperaturni senzor DHT11 z Arduinom in temperaturo tiskanja Toplota in vlažnost: 5 korakov
Kako uporabljati temperaturni senzor DHT11 z Arduinom in temperaturo tiskanja Toplota in vlažnost: Senzor DHT11 se uporablja za merjenje temperature in vlažnosti. So zelo priljubljeni ljubitelji elektronike. Senzor vlažnosti in temperature DHT11 olajša dodajanje podatkov o vlažnosti in temperaturi v vaše elektronske projekte DIY. Gre za