Indholdsfortegnelse:

THINGSPEAK TEMPERATUR- OG Fugtighedsapp ved hjælp af ESP8266: 9 trin
THINGSPEAK TEMPERATUR- OG Fugtighedsapp ved hjælp af ESP8266: 9 trin

Video: THINGSPEAK TEMPERATUR- OG Fugtighedsapp ved hjælp af ESP8266: 9 trin

Video: THINGSPEAK TEMPERATUR- OG Fugtighedsapp ved hjælp af ESP8266: 9 trin
Video: Measure Temperature and Humidity WiFi with ESP32 DHT11 and DHT22 - Robojax 2024, November
Anonim
THINGSPEAK TEMPERATUR- OG Fugtighedsapp ved hjælp af ESP8266
THINGSPEAK TEMPERATUR- OG Fugtighedsapp ved hjælp af ESP8266

Mens jeg pjattede med mine elektroniske ting, fik jeg denne idé til at lave web-baseret vejr-app. Denne webapp bruger sensoren SHT31 til at hente data om temperatur og fugtighed i realtid. Vi har implementeret vores projekt på ESP8266 WiFi -modul. Online eller offline! Du behøver ikke bekymre dig, uanset om du er online eller offline, får du vejropdateringer hvor som helst og når som helst. Denne webapp sender data til den lokale webserver samt til cloud. Til skyoperationer bruger vi ThingSpeak API. SHT31 bruger I2C til at hente data fra sensoren.

SHT 31 er en temperatur- og fugtighedssensorer fremstillet af Sensirion. SHT31 giver en høj nøjagtighed omkring ± 2% RF. Dens fugtighedsområde er mellem 0 til 100% og temperaturområdet er mellem -40 til 125 ° C. Det er meget mere pålideligt og hurtigt med 8 sekunders sensor responstid. Dens funktionalitet omfatter forbedret signalbehandling og I2C -kompatibilitet. Det har forskellige driftsmåder, hvilket gør det energieffektivt.

I denne vejledning har vi interfacet SHT 31 med Adafruit Huzzah board. Til aflæsning af temperatur- og fugtighedsværdier har vi brugt ESP8266 I2C -skærm. Denne adapter gør alle stifter tilgængelige for brugeren og tilbyder brugervenligt I2C-miljø.

Trin 1: Hardware påkrævet

Hardware påkrævet
Hardware påkrævet
Hardware påkrævet
Hardware påkrævet
Hardware påkrævet
Hardware påkrævet

Hardware, der bruges til at fuldføre denne opgave:

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

Trin 2: Hardwareforbindelser

Hardwareforbindelser
Hardwareforbindelser

Dette trin inkluderer vejledningen til tilslutning af hardware. Dette afsnit forklarer dybest set de nødvendige ledningsforbindelser mellem sensoren og ESP8266. Forbindelserne er som følger.

  1. SHT31 fungerer over I2C. Ovenstående billede viser forbindelsen mellem ESP8266 og SHT31 modul. Vi bruger I2C -kabel til det enten kan vi bruge 4 F til F jumperwires.
  2. en ledning bruges til Vcc, den anden ledning til GND og to andre til henholdsvis SDA og SCL
  3. Ifølge I2C -adapteren bruges pin2 og pin 14 på et ESP8266 -kort som henholdsvis SDA og SCL

Trin 3: Kode til opgaveplanlægning

Kode til opgaveplanlægning
Kode til opgaveplanlægning

I denne vejledning udfører vi tre operationer

  • Læs dataene fra SHT11 ved hjælp af I2C -protokol
  • host webserveren, og post sensoraflæsning på websiden
  • post sensoraflæsningerne til ThingSpeak API

For at opnå dette bruger vi TaskScheduler bibliotek. Vi har planlagt tre forskellige opgaver, der refererer til tre forskellige kontroloperationer. dette gøres som følger

  • Opgave 1 er til aflæsning af sensorværdien, denne opgave kører i 1 sekund, indtil den når timeout på 10 sekunder.
  • Når opgave 1 når sin timeout, er opgave 2 aktiveret, og opgave 1 er deaktiveret.
  • Vi opretter forbindelse til AP i denne tilbagekaldelse, to boolske variabler tages for at tage sig af skiftet mellem STA og AP
  • I opgave 2 er vi vært for en webserver på 192.168.1.4. Denne opgave kører for hver 5 sek, indtil den når sin timeout, som er 50 sek
  • Når opgave 2 når timeout, er opgave 3 aktiveret, og opgave 2 er deaktiveret.
  • Vi opretter forbindelse til STA (lokal IP) i denne calback. I opgave 3 sender vi sensorlæsningen til ThingSpeak API i skyen

  • Opgave 3 kører hvert femte sekund, indtil den nåede sin timeout, dvs. 50 sek
  • Når opgave 3 når sin timeout, er opgave 1 aktiveret igen, og opgave 3 er deaktiveret.
  • Når der ikke ringes op til et tilbagekald, eller enheden er inaktiv, går den til Light Sleep og sparer dermed strøm.

ugid taskI2CCallback ();

ugid taskI2CDisable (); ugid taskAPCallback (); void taskAPDisable (); ugid taskWiFiCallback (); ugid taskWiFiDisable (); // Opgaver til i2c, hosting webserver og opslag på thingspeak Task tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Opgave tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Opgave tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); Opgave tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // timeout for opgaver tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // aktiver I2C -opgave tI2C.enable ();

Trin 4: Kode til aflæsning af temperatur- og fugtighedsværdier

Kode til aflæsning af temperatur- og fugtighedsværdier
Kode til aflæsning af temperatur- og fugtighedsværdier

Vi bruger Wire.h bibliotek til at læse temperatur og fugtighedsværdier. Dette bibliotek letter i2c -kommunikation mellem sensoren og master -enheden. 0x44 er I2C -adressen til SHT31.

SHT31 fungerer på en anden måde. Du kan henvise til databladet for det. Vi bruger 0x2C og 0x06 som henholdsvis MSB og LSB til enkeltskud.

// I2C opgave tilbagekald ugyldig taskI2CCallback () {Serial.println ("taskI2CStarted"); usigneret int root [6]; // begynde transmission fra 0x44; Wire.beginTransmission (Addr); // til et enkelt skud transmisstion med høj repeterbarhed bruger vi 0x2C (MSB) og 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // afslut transmission Wire.endTransmission (); // anmod om bytes fra 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); hvis (Wire.available () == 6) {// data [0] og data [1] indeholder 16 bit temperatur. root [0] = Wire.read (); root [1] = Wire.read (); // data [2] indeholder 8 bit CRC root [2] = Wire.read (); // data [3] og data [4] indeholder 16 bit fugtighedsrod [3] = Wire.read (); root [4] = Wire.read (); // data [5] består af 8 bit CRC root [5] = Wire.read (); } int temp = (root [0] * 256) + root [1]; // skift MSB med 8 bits tilføj LSB float cTemp = -45,0 + (175,0 * temp /65535,0); float fTemp = (cTemp * 1.8) + 32.0; // skift MSB med 8 bits tilføj LSB til den divider med fuld opløsning og * 100 for procentdel flydefugtighed = (100,0 * ((root [3] * 256,0) + root [4])) /65535,0; tempC = cTemp; tempF = fTemp; fugtigt = fugtighed; Serial.print ("Temperatur i C: / t"); Serial.println (String (cTemp, 1)); Serial.print ("Temperatur i F: / t"); Serial.println (String (fTemp, 1)); Serial.print ("Fugtighed: / t"); Serial.println (streng (fugtighed, 1)); }

Trin 5: Kode til hosting af en webserver

Kode til hosting af en webserver
Kode til hosting af en webserver
Kode til hosting af en webserver
Kode til hosting af en webserver

Vi har hostet en webserver fra vores enhed på en statisk IP.

ESP8266WebServer bibliotek bruges til at være vært for webserveren

  • Først skal vi erklære IP -adresse, Gateway og undernetmaske for at oprette vores statiske IP
  • Angiv nu ssid og adgangskode til dit adgangspunkt. Forbind til adgangspunktet fra enhver STA -enhed
  • host serveren på port 80, som er en standardport til internetkommunikationsprotokol, Hypertext Transfer Protocol (HTTP) indtast 192.168.1.4 på din webbrowser for intro -webside og 192.168.1.4/Værdi til sensorlæsning af webside

// statisk Ip til 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 -tilstand const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid og pass for AP const char APssid = "********"; const char APpass = "********"; ESP8266WebServer -server (80); ugyldig opsætning {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, "tekst/html", SIDE2); } void onHandleNotFound () {String message = "Filen blev ikke fundet / n / n"; meddelelse += "URI:"; besked += server.uri (); meddelelse += "\ nMetode:"; meddelelse += (server.method () == HTTP_GET)? "GET": "POST"; meddelelse += "\ nArgumenter:"; besked += server.args (); besked += "\ n"; server.send (404, "tekst/almindelig", besked); } ugyldig genopkoblingAPWiFi () {WiFi.mode (WIFI_AP_STA); forsinkelse (100); WiFi.disconnect (); boolsk status = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); hvis (status == sand) {Serial.print ("Indstilling af soft-AP …"); boolsk ap = WiFi.softAP (APssid, APpass); hvis (ap == true) {Serial.print ("forbundet til: / t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();

}

Trin 6: Opsætning af Thingspeak

Opsætning af Thingspeak
Opsætning af Thingspeak
Opsætning af Thingspeak
Opsætning af Thingspeak
Opsætning af Thingspeak
Opsætning af Thingspeak

ThingSpeak er en IoT -platform. ThingSpeak er en gratis webtjeneste, der lader dig indsamle og gemme sensordata i skyen.

I dette trin giver jeg dig en kort procedure til at oprette din Thing Speak -konto

  • Tilmeld dig en ny brugerkonto i ThingSpeak
  • Opret en ny kanal ved at vælge Kanaler, Mine kanaler og derefter Ny kanal
  • Rediger dine felter
  • Disse felter indeholder dine sensordata
  • Bemærk skrive API -nøglen og kanal -id
  • På din Arduino -skitse kan du bruge ThingSpeak -biblioteket til Arduino, eller du kan POST dataene direkte til ThingSpeak API
  • det næste trin uddyber om at sende indholdet til Thing Speak API

Trin 7: Kode til udstationering af data til ting

Kode til udstationering af data til ting
Kode til udstationering af data til ting
Kode til udstationering af data til ting
Kode til udstationering af data til ting
Kode til udstationering af data til ting
Kode til udstationering af data til ting
Kode til udstationering af data til ting
Kode til udstationering af data til ting

Her sender vi sensoraflæsningerne til Thing Speak. følgende trin er nødvendige for at fuldføre denne opgave-

  • Opret din konto i ting tale Opret kanaler og felter til lagring af dine sensordata
  • vi kan hente og sende data fra ESP til thingSpeak og omvendt ved hjælp af GET- og POST-anmodninger til API'en.
  • vi kan sende vores data til ThingSpeak som følger

id taskWiFiCallback () {WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& field1 ="; postStr += String (fugtig); postStr += "& field2 ="; postStr += String (tempC); postStr += "& field3 ="; postStr += String (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /opdater HTTP /1.1 / n"); wifiClient.print ("Host: api.thingspeak.com / n"); wifiClient.print ("Forbindelse: tæt / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Indholdstype: application/x-www-form-urlencoded / n"); wifiClient.print ("Indholdslængde:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }

Trin 8: Overordnet kode

Den samlede kode er tilgængelig i mit GitHub -lager

Trin 9: Kreditter

  • Arduino JSON
  • ESP826WebServer
  • Opgaveplanlægger
  • SHT 31
  • I2C Scan
  • HIH6130 instruktionsvejledning
  • Tråd
  • NCD.io

Anbefalede: