Innholdsfortegnelse:

ESP8266: Hvordan overvåke temperatur og fuktighet: 12 trinn
ESP8266: Hvordan overvåke temperatur og fuktighet: 12 trinn

Video: ESP8266: Hvordan overvåke temperatur og fuktighet: 12 trinn

Video: ESP8266: Hvordan overvåke temperatur og fuktighet: 12 trinn
Video: Start Using Wemos D1 Mini NodeMCU WiFi ESP8266 module with Arduino 2024, Juli
Anonim
Image
Image
montering
montering

I dagens opplæring vil vi bruke en ESP-01, som er ESP8266 i konfigurasjon 01 (med bare 2 GPIO), for temperatur- og fuktighetsavlesninger av DHT22-sensoren. Jeg vil vise deg en elektrisk skjematisk og ESP -programmeringsdel med en Arduino. Eksemplet er enkelt, lett å forstå, og kommer også med PDF -filen som brukes i videoen for å hjelpe til med montering.

I designet har vi deretter ESP01, kilden som konverterer 110 eller 220 til 5 volt, en spenningsregulator på 3v3 og DHT22, som er sensoren. På smarttelefonskjermen vil du ha den lokale IP -adressen i tillegg til JavaScript -koden fra ESP. Denne skjermen vil derfor motta parametrene for temperatur og fuktighet og vil skrive ut disse verdiene, som oppdateres hvert femte sekund. For å gjøre dette trenger du ingen apper på telefoner og nettbrett, og dette gjelder både Android OS og IOS.

Trinn 1: Montering

Det elektriske opplegget er ganske enkelt, det samme er delen om monteringen, som vil involvere ESP01 som en server. ESPO1 vil bli programmert som om det var en Arduino: gjennom C -språket. Jeg påpeker at en del av koden skrives ut fra nettleseren. Dette betyr at den sender JavaScript -kode til nettleseren. Nedenfor vil jeg forklare bedre om hvordan dette fungerer.

Tilbake til koblingsskjemaet satte jeg en 5-volts koblet kilde koblet til en 3v3 spenningsregulator for å drive ESP01. Vi har fortsatt DHT22 med fire pinner. En av disse, data, brukes ikke. Imidlertid krever det en opptrekksmotstand.

Trinn 2: Kode

Det første trinnet er å inkludere libs som vi vil bruke. DHT lib kan legges til med alternativet Skisse> Inkluder bibliotek> Administrer biblioteker …

Se etter DHT -sensorbiblioteket i vinduet som åpnes.

Etter det opprettet vi en variabel av typen ESP8266WebServer som vil være vår server og vil svare på HTTP -forespørsler (port 80).

Vi lager også en DHT -variabel med parametere 0 (som er GPIO -pin 0) og typen (i vårt tilfelle DHT22).

#include #include #include #include // Criamos uma variável do tipo ESP8266WebServer que yes possui funções // que auxiliam na criação das rotas que o ESP8266 or responder ESP8266WebServer server (80); // Varianter av DHT -funksjoner som kan brukes på kontrollarmene eller -modulene // tillate temperaturer og temperaturer (0, DHT22);

Trinn 3: Oppsett

I oppsettet vil vi bare initialisere serien slik at vi har en logg. Dette vil skje hvis ESP8266 er koblet til datamaskinen via serienummeret for å bruke den serielle skjermen.

Vi får ESP8266 til å koble til nettverket vårt. I vårt tilfelle bruker vi nettverket TesteESP med passordet 87654321, men du må endre dette i henhold til nettverket du bruker.

// Inisialisere en seriell 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 a senha é 87654321. // Você deve alterar com as informações da sua rede WiFi.begin ("TesteESP", "87654321"); // Tilbakemelding caso esteja usando o Monitor Serial Serial.println (""); Serial.print ("Conectando");

Vi venter på at ESP8266 skal koble seg til nettverket, og etter at den er koblet til, sender vi nettverksinnstillingene. Endre i henhold til nettverket ditt.

// Esperamos até que o módulo se conecte à rede while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } // Konfigurasjoner for IP -reparasjon. Você pode alterar conforme a sua rede IPAddress ip (192, 168, 3, 11); IPAddress -gateway (192, 168, 3, 1); IPAddress -delnett (255, 255, 255, 0); Serial.print ("Configurando IP fixo para:"); Serial.println (ip); // Envia a configação WiFi.config (ip, gateway, subnet);

De neste kommandoene er bare i tilfelle du har ESP8266 koblet til datamaskinen gjennom serienummeret, slik at du har tilbakemelding fra Serial Monitor.

Du kan sjekke IP -adressen som ESP8266 mottok for å se om den er den samme som i innstillingene.

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

Her begynner vi å definere hvilke funksjoner som skal utføres for hver forespørsel.

I instruksjonene nedenfor, hver gang ESP8266 mottar en HTTP -forespørsel av typen GET i banen / temperaturen, blir funksjonen getTemperature utført.

// 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 ("/temperature", HTTP_GET, getTemperature);

I denne andre uttalelsen, hver gang ESP8266 mottar en HTTP -forespørsel av typen GET i banen / fuktigheten, blir funksjonen getHumidity utført.

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

I denne instruksjonen, hver gang ESP8266 mottar en HTTP -forespørsel av typen GET i banen / skjermen, blir funksjonen showMonitor utført.

ShowMonitor -funksjonen er ansvarlig for å returnere hoved -html som viser verdiene for temperatur og fuktighet.

// 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 e recarregará essas informações de tempos em tempos server.on ("/monitor", HTTP_GET, showMonitor);

Her er funksjonsdefinisjonen som skal utføres når den forespurte banen ikke blir funnet.

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

Her initialiserer vi serveren vår som vi tidligere erklærte på port 80.

Dette er slutten på oppsettet.

// Inisialisering av server som kan brukes på 80 server.begin (); Serial.println ("Servidor HTTP iniciado"); }

Trinn 4: Sløyfe

Takket være lib ESP8266WebServer trenger vi ikke å sjekke om det er klienter og hva forespørselsbanen er. Vi trenger bare å ringe handleClient (), og objektet vil sjekke om en klient sender forespørsler og vil omdirigere til den tilsvarende funksjonen som vi registrerte før.

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

Trinn 5: Forespørselen ble ikke funnet

Dette er funksjonen vi tidligere logget for å utføre når klienten sender forespørsler som ikke er registrert.

Funksjonen returnerer bare kode 404 (standardkode for når en ressurs ikke blir funnet), den returnerte datatypen (i tilfelle ren tekst) og en tekst med ordene "Ikke funnet."

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

Trinn 6: Returnering av temperaturen

Dette er funksjonen som vil returnere en json med temperaturdataene når klienten sender en GET -forespørsel ved / temperatur.

// 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 = "{" temperatur / ":"+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); }

Trinn 7: Returnering av fuktighet

Dette er funksjonen som vil returnere en json med fuktighetsdata når klienten gjør en GET -forespørsel i / fuktighet.

// 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 = "{" fuktighet / ":"+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); }

Trinn 8: HTML

Dette er funksjonen som vil returnere HTML når klienten går til tilgang / skjerm. Denne siden vil vise temperatur- og fuktighetsverdier, og den vil laste inn dataene fra tid til annen. Den delen som er mellom og og stil>

definerer utseendet på siden, og du kan endre den som du vil.

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

"kropp{"

"polstring: 35px;"

"bakgrunnsfarge: #222222;" "}"

Trinn 9: Fortsettelse av HTML -stil

"h1 {" "farge: #FFFFFF;" "font-family: sans-serif;" "}" "p {" "color: #EEEEEE;" "font-family: sans-serif;" "skriftstørrelse: 18px;" "}" ""

Her har vi hoveddelen av html. I den har vi to avsnitt som viser temperaturen og fuktigheten. Vær oppmerksom på ID -ene til avsnittene, fordi det er gjennom dem vi vil gjenopprette disse avsnittene for å angi verdiene for temperatur og fuktighet etter rekvisisjonene.

DHT -skjerm

Temperatur:

Luftfuktighet:

Trinn 10: JavaScript

Her begynner vi å definere manuset som fra tid til annen vil lese verdiene av temperatur og fuktighet. Oppdateringsfunksjonen () kaller funksjonene refreshTemperature () og refreshHumdity (), og setInterval kaller oppdateringsfunksjonen hvert 5000 millisekund (5 sekunder).

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

Funksjonen refreshTemperature () sender en forespørsel ved / temperatur, analyserer informasjonen i json og legger til ID -temperaturen i avsnittet.

"function refreshTemperature ()" "{" "var xmlhttp = new XMLHttpRequest ();" "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('temperature'). innerHTML = 'Temperature:' + JSON. parse (xmlhttp.responseText).temperatur + 'C'; " "}" "};" "xmlhttp.open ('GET', 'https://192.168.2.8/temperature', true);" "xmlhttp.send ();" "}"

Funktionen refreshHumidity () sender en forespørsel til / fuktighet, analyserer informasjonen i json og legger til ID -fuktigheten i avsnittet. Og med det fullfører vi HTML -filen som vi sender i forespørslene i / overvåker.

"function refreshHumidity ()" "{" "var xmlhttp = new XMLHttpRequest ();" "xmlhttp.onreadystatechange = function () {" "if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {" "document.getElementById ('fuktighet'). innerHTML = 'Fuktighet:' + JSON. parse (xmlhttp.responseText).fuktighet + '%'; " "}" "};" "xmlhttp.open ('GET', 'https://192.168.2.8/humidity', true);" "xmlhttp.send ();" "}"

"";

Trinn 11: Fullfør ShowMonitor

Nå som strengen med html som vi sender er klar, kan vi sende den til klienten. Dette fullfører showMonitor -funksjonen og koden.

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

Trinn 12: Testing

Testing
Testing

Åpne nå nettleseren din og skriv inn https://192.168.2.8/monitor (du kan trenge en annen ip avhengig av konfigurasjonen).

Anbefalt: