Innholdsfortegnelse:
- Trinn 1: Maskinvare påkrevd
- Trinn 2: Maskinvaretilkoblinger
- Trinn 3: Kode for oppgaveplanlegging
- Trinn 4: Kode for avlesning av temperatur- og fuktighetsverdier
- Trinn 5: Kode for hosting av en webserver
- Trinn 6: Oppsett av Thingspeak
- Trinn 7: Kode for postering av data til ting
- Trinn 8: Samlet kode
- Trinn 9: studiepoeng
Video: THINGSPEAK TEMPERATURE AND FUKTIGHETSAPP BRUKER ESP8266: 9 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
Mens jeg slet med de elektroniske tingene mine, fikk jeg denne ideen om å lage nettbasert vær-app. Denne nettappen bruker SHT31-sensoren for å få sanntids temperatur- og fuktighetsdata. Vi har distribuert prosjektet vårt på ESP8266 WiFi -modul. Online eller offline! Du trenger ikke bekymre deg, enten du er online eller offline, vil du få væroppdateringene hvor som helst og når som helst. Denne nettappen legger ut data til den lokale webserveren så vel som til skyen. For skyoperasjoner bruker vi ThingSpeak API. SHT31 bruker I2C for å hente dataene fra sensoren.
SHT 31 er en temperatur- og fuktighetssensor laget av Sensirion. SHT31 gir et høyt nøyaktighetsnivå på ± 2% RF. Luftfuktighetsområdet er mellom 0 til 100% og temperaturområdet er mellom -40 til 125 ° C. Det er mye mer pålitelig og rask med 8 sekunder sensorresponstid. Funksjonaliteten inkluderer forbedret signalbehandling og I2C -kompatibilitet. Den har forskjellige driftsmåter som gjør den energieffektiv.
I denne opplæringen har vi koblet SHT 31 til Adafruit Huzzah -bord. For å lese temperatur- og fuktighetsverdier har vi brukt ESP8266 I2C -skjerm. Denne adapteren gjør alle pinnene tilgjengelige for brukeren og tilbyr brukervennlig I2C-miljø.
Trinn 1: Maskinvare påkrevd
Maskinvare som brukes til å fullføre denne oppgaven:
- SHT 31
- Adafruit Huzzah ESP8266
- ESP8266 I2C -adapter
- I2C -kabel
Trinn 2: Maskinvaretilkoblinger
Dette trinnet inkluderer maskinvareoppkoblingsguiden. Denne delen forklarer i utgangspunktet ledningsforbindelsene som kreves mellom sensoren og ESP8266. Tilkoblingene er som følger.
- SHT31 fungerer over I2C. Bildet ovenfor viser forbindelsen mellom ESP8266 og SHT31 -modulen. Vi bruker I2C -kabel for det, enten kan vi bruke 4 F til F -ledninger.
- en ledning brukes for Vcc, den andre ledningen for GND og andre to til henholdsvis SDA og SCL
- I henhold til I2C -adapteren brukes pin2 og pin 14 på et ESP8266 -kort som henholdsvis SDA og SCL
Trinn 3: Kode for oppgaveplanlegging
I denne opplæringen utfører vi tre operasjoner
- Les dataene fra SHT11 ved hjelp av I2C -protokollen
- vert webserveren og legg inn sensoravlesningen på nettsiden
- legg sensoravlesningene til ThingSpeak API
For å oppnå dette bruker vi TaskScheduler -biblioteket. Vi har planlagt tre forskjellige oppgaver som refererer til tre forskjellige kontrolloperasjoner. dette gjøres som følger
- Oppgave 1 er for å lese sensorverdien denne oppgaven kjører i 1 sekund til den når timeout på 10 sekunder.
- Når oppgave 1 når sin tid, er oppgave 2 aktivert og oppgave 1 er deaktivert.
- Vi kobler til AP i denne tilbakeringingen. To boolske variabler tas for å ta vare på byttet mellom STA og AP
- I oppgave 2 er vi vert for en webserver på 192.168.1.4. Denne oppgaven kjøres for hver 5 sek til den når sin timeout som er 50 sekunder
- Når oppgave 2 når tidsavbrudd, er oppgave 3 aktivert og oppgave 2 er deaktivert.
-
Vi kobler til STA (lokal IP) i denne calbacken. I oppgave 3 legger vi sensoravlesningen til ThingSpeak API i skyen
- Oppgave 3 kjører hvert femte sekund til den nådde sin timeout, dvs. 50 sekunder
- Når oppgave 3 når sin timeout, er oppgave 1 aktivert igjen og oppgave 3 er deaktivert.
- Når det ikke ringes tilbake eller enheten er inaktiv, går den til Light Sleep og sparer strøm.
void taskI2CCallback ();
void taskI2CDisable (); void taskAPCallback (); void taskAPDisable (); void taskWiFiCallback (); void taskWiFiDisable (); // Oppgaver for i2c, hosting webserver og innlegg på thingspeak Task tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Oppgave tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Oppgave tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); Task tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // timeout for oppgaver tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // aktiver I2C -oppgave tI2C.enable ();
Trinn 4: Kode for avlesning av temperatur- og fuktighetsverdier
Vi bruker Wire.h -biblioteket til å lese temperatur- og fuktighetsverdiene. Dette biblioteket muliggjør i2c -kommunikasjon mellom sensoren og hovedenheten. 0x44 er I2C -adressen til SHT31.
SHT31 opererer i en annen modus. Du kan referere til databladet for det. Vi bruker 0x2C og 0x06 som henholdsvis MSB og LSB for enkeltskuddsoperasjon.
// I2C oppgave tilbakeringing ugyldig taskI2CCallback () {Serial.println ("taskI2CStarted"); usignert int root [6]; // begynne overføringen fra 0x44; Wire.beginTransmission (Addr); // for ett skudds transmisjon med høy repeterbarhet bruker vi 0x2C (MSB) og 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // avslutte overføring Wire.endTransmission (); // be om byte fra 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); hvis (Wire.available () == 6) {// data [0] og data [1] inneholder 16 bits temperatur. root [0] = Wire.read (); root [1] = Wire.read (); // data [2] inneholder 8 bits CRC root [2] = Wire.read (); // data [3] og data [4] inneholder 16 bit fuktighetsrot [3] = Wire.read (); root [4] = Wire.read (); // data [5] består av 8 -bits CRC -rot [5] = Wire.read (); } int temp = (rot [0] * 256) + rot [1]; // skift MSB med 8 bits legg til LSB float cTemp = -45,0 + (175,0 * temp /65535,0); float fTemp = (cTemp * 1.8) + 32.0; // skift MSB med 8 biter legg til LSB til den med full oppløsning og * 100 for prosentvis flytefuktighet = (100,0 * ((rot [3] * 256,0) + rot [4])) /65535,0; tempC = cTemp; tempF = fTemp; fuktig = fuktighet; Serial.print ("Temperatur i C: / t"); Serial.println (String (cTemp, 1)); Serial.print ("Temperatur i F: / t"); Serial.println (String (fTemp, 1)); Serial.print ("Fuktighet: / t"); Serial.println (streng (fuktighet, 1)); }
Trinn 5: Kode for hosting av en webserver
Vi har vært vert for en webserver fra enheten vår på en statisk IP.
ESP8266WebServer -biblioteket brukes til å være vert for webserveren
- Først må vi deklarere IP -adresse, gateway og nettverksmaske for å lage vår statiske IP
- Angi nå ssid og passord for tilgangspunktet ditt. Koble til tilgangspunktet fra en hvilken som helst STA -enhet
- vert serveren på port 80 som er en standardport for internettkommunikasjonsprotokoll, Hypertext Transfer Protocol (HTTP) skriv inn 192.168.1.4 i nettleseren din for intro -webside og 192.168.1.4/Value for sensoravlesning av webside
// statisk Ip for APIPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0); // ssid og AP for lokal WiFi i STA -modus const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid og pass for AP const char APssid = "********"; const char APpass = "********"; ESP8266WebServer -server (80); ugyldig oppsett {server.on ("/", onHandleDataRoot); server.on ("/Value", onHandleDataFeed); server.onNotFound (onHandleNotFound);} void taskAPCallback () {Serial.println ("taskAP startet"); server.handleClient (); } void onHandleDataRoot () {server.send (200, "tekst/html", SIDE1); } void onHandleDataFeed () {server.send (200, "text/html", PAGE2); } void onHandleNotFound () {String melding = "Filen ble ikke funnet / n / n"; melding += "URI:"; melding += server.uri (); melding += "\ nMetode:"; melding += (server.method () == HTTP_GET)? "GET": "POST"; melding += "\ nArgumenter:"; melding += server.args (); melding += "\ n"; server.send (404, "tekst/vanlig", melding); } ugyldig koble til APWiFi () {WiFi.mode (WIFI_AP_STA); forsinkelse (100); WiFi. Koble fra (); boolsk status = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == true) {Serial.print ("Angi soft-AP …"); boolsk ap = WiFi.softAP (APssid, APpass); if (ap == true) {Serial.print ("koblet til: / t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();
}
Trinn 6: Oppsett av Thingspeak
ThingSpeak er en IoT -plattform. ThingSpeak er en gratis webtjeneste som lar deg samle og lagre sensordata i skyen.
I dette trinnet vil jeg gi deg en kort prosedyre for å sette opp Thing Speak -kontoen din
- Registrer deg for ny brukerkonto i ThingSpeak
- Opprett en ny kanal ved å velge Kanaler, Mine kanaler og deretter Ny kanal
- Rediger feltene dine
- Disse feltene inneholder sensordata
- Legg merke til skrive -API -nøkkelen og kanal -ID
- På din Arduino -skisse kan du bruke ThingSpeak -biblioteket for Arduino, eller du kan POST dataene direkte til ThingSpeak API
- neste trinn utdyper hvordan du legger ut innholdet til Thing Speak API
Trinn 7: Kode for postering av data til ting
Her legger vi ut sensoravlesningene til Thing Speak. følgende trinn er nødvendig for å fullføre denne oppgaven-
- Opprett kontoen din i thing speak Lag kanaler og felt for å lagre sensordata
- vi kan hente og legge dataene fra ESP til thingSpeak og omvendt ved å bruke GET og POST forespørsler til api.
- vi kan legge ut dataene våre til ThingSpeak som følger
id taskWiFiCallback () {WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& field1 ="; postStr += String (fuktig); postStr += "& field2 ="; postStr += String (tempC); postStr += "& field3 ="; postStr += String (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /oppdater HTTP /1.1 / n"); wifiClient.print ("Vert: api.thingspeak.com / n"); wifiClient.print ("Tilkobling: lukk / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Innholdstype: application/x-www-form-urlencoded / n"); wifiClient.print ("Innholdslengde:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }
Trinn 8: Samlet kode
Den generelle koden er tilgjengelig i mitt GitHub -depot
Trinn 9: studiepoeng
- Arduino JSON
- ESP826WebServer
- Oppgaveplanlegger
- SHT 31
- I2C -skanning
- HIH6130 instruksjonsopplæring
- Metalltråd
- NCD.io
Anbefalt:
Profesjonell værstasjon som bruker ESP8266 og ESP32 DIY: 9 trinn (med bilder)
Profesjonell værstasjon ved bruk av ESP8266 og ESP32 DIY: LineaMeteoStazione er en komplett værstasjon som kan grensesnittes med profesjonelle sensorer fra Sensirion samt noen Davis Instrument -komponent (regnmåler, vindmåler) Prosjektet er beregnet som en DIY værstasjon, men bare krever
Enkel værstasjon som bruker ESP8266 .: 6 trinn (med bilder)
Enkel værstasjon som bruker ESP8266 .: I denne instruksen vil jeg dele hvordan jeg bruker ESP8266 for å få data som temperatur, trykk, klima etc. Og YouTube -data som abonnenter og amp; Totalt antall seere. og vis dataene på seriell skjerm og vis dem på LCD. Dataene vil være f
Google Assistant - Hjemmeautomatisering bruker ikke Esp8266: 6 trinn
Google Assistant | Hjemmeautomatisering bruker ikke Esp8266: I denne instruksjonen viser jeg deg Google assistentstyrt hjemmeautomatisering
Slik bruker du Mac Terminal og hvordan du bruker viktige funksjoner: 4 trinn
Slik bruker du Mac Terminal og hvordan du bruker viktige funksjoner: Vi viser deg hvordan du åpner MAC Terminal. Vi viser deg også noen få funksjoner i terminalen, for eksempel ifconfig, endring av kataloger, tilgang til filer og arp. Ifconfig lar deg sjekke IP -adressen din og MAC -annonsen din
YABC - Yet Another Blynk Controller - IoT Cloud Temperature and Humidity Controller, ESP8266: 4 trinn
YABC - Yet Another Blynk Controller - IoT Cloud Temperature and Humidity Controller, ESP8266: Hi Makers, jeg begynte nylig å dyrke sopp hjemme, østerssopp, men jeg har allerede 3x av denne kontrollerne hjemme for fermenteringstemperaturkontroll for hjemmebrygget mitt, kone gjør også denne Kombucha -tingen nå, og som termostat for varme