Innholdsfortegnelse:

THINGSPEAK TEMPERATURE AND FUKTIGHETSAPP BRUKER ESP8266: 9 trinn
THINGSPEAK TEMPERATURE AND FUKTIGHETSAPP BRUKER ESP8266: 9 trinn

Video: THINGSPEAK TEMPERATURE AND FUKTIGHETSAPP BRUKER ESP8266: 9 trinn

Video: THINGSPEAK TEMPERATURE AND FUKTIGHETSAPP BRUKER ESP8266: 9 trinn
Video: DHT11 & NodeMCU Tutorial || Humidity & Temperature Monitoring over Thingspeak 2024, November
Anonim
THINGSPEAK TEMPERATURE AND FUKTIGHETSAPP BRUKER ESP8266
THINGSPEAK TEMPERATURE AND FUKTIGHETSAPP BRUKER ESP8266

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 påkrevd
Maskinvare påkrevd
Maskinvare påkrevd
Maskinvare påkrevd
Maskinvare påkrevd
Maskinvare påkrevd

Maskinvare som brukes til å fullføre denne oppgaven:

  1. SHT 31
  2. Adafruit Huzzah ESP8266
  3. ESP8266 I2C -adapter
  4. I2C -kabel

Trinn 2: Maskinvaretilkoblinger

Maskinvaretilkoblinger
Maskinvaretilkoblinger

Dette trinnet inkluderer maskinvareoppkoblingsguiden. Denne delen forklarer i utgangspunktet ledningsforbindelsene som kreves mellom sensoren og ESP8266. Tilkoblingene er som følger.

  1. 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.
  2. en ledning brukes for Vcc, den andre ledningen for GND og andre to til henholdsvis SDA og SCL
  3. I henhold til I2C -adapteren brukes pin2 og pin 14 på et ESP8266 -kort som henholdsvis SDA og SCL

Trinn 3: Kode for oppgaveplanlegging

Kode for oppgaveplanlegging
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

Kode for avlesning av temperatur- og fuktighetsverdier
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

Kode for hosting av en webserver
Kode for hosting av en webserver
Kode for hosting av en webserver
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

Oppsett av Thingspeak
Oppsett av Thingspeak
Oppsett av Thingspeak
Oppsett av Thingspeak
Oppsett av Thingspeak
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

Kode for å legge ut data til ting
Kode for å legge ut data til ting
Kode for å legge ut data til ting
Kode for å legge ut data til ting
Kode for å legge ut data til ting
Kode for å legge ut data til ting
Kode for å legge ut data til ting
Kode for å legge ut 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: