Innehållsförteckning:

THINGSPEAK TEMPERATURE AND FUKTIGHETSAPP MED ESP8266: 9 steg
THINGSPEAK TEMPERATURE AND FUKTIGHETSAPP MED ESP8266: 9 steg

Video: THINGSPEAK TEMPERATURE AND FUKTIGHETSAPP MED ESP8266: 9 steg

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

När jag pysslade med mina elektroniska saker fick jag den här idén att göra webbaserad väderapp. Denna webbapp använder sensorn SHT31 för att få realtidsdata för temperatur och luftfuktighet. Vi har implementerat vårt projekt på ESP8266 WiFi -modul. Online eller offline! Du behöver inte oroa dig, oavsett om du är online eller offline får du väderuppdateringarna var som helst och när som helst. Denna webbapp skickar data till den lokala webbservern och till molnet. För molnoperationer använder vi ThingSpeak API. SHT31 använder I2C för att få data från sensorn.

SHT 31 är en temperatur- och luftfuktighetssensorer gjorda av Sensirion. SHT31 ger en hög noggrannhet kring ± 2% RF. Dess luftfuktighetsintervall är mellan 0 till 100% och temperaturintervallet är mellan -40 till 125 ° C. Det är mycket mer tillförlitligt och snabbt med 8 sekunder sensorresponstid. Dess funktioner inkluderar förbättrad signalbehandling och I2C -kompatibilitet. Den har olika driftsätt som gör den energieffektiv.

I denna handledning har vi anslutit SHT 31 till Adafruit Huzzah -bräda. För avläsning av temperatur- och luftfuktighetsvärden har vi använt ESP8266 I2C -skärm. Denna adapter gör alla stift tillgängliga för användaren och erbjuder användarvänlig I2C-miljö.

Steg 1: Hårdvara krävs

Hårdvara krävs
Hårdvara krävs
Hårdvara krävs
Hårdvara krävs
Hårdvara krävs
Hårdvara krävs

Hårdvara som används för att slutföra denna uppgift:

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

Steg 2: Hårdvaruanslutningar

Hårdvaruanslutningar
Hårdvaruanslutningar

Detta steg inkluderar guiden för maskinvaruanslutning. Detta avsnitt förklarar i princip de anslutningar som krävs mellan sensorn och ESP8266. Anslutningarna är följande.

  1. SHT31 fungerar över I2C. Bilden ovan visar kopplingen mellan ESP8266 och SHT31 -modulen. Vi använder I2C -kabel för det antingen kan vi använda 4 F till F bygelkablar.
  2. en tråd används för Vcc, den andra ledningen för GND och andra två till SDA respektive SCL
  3. Enligt I2C -adaptern används pin2 och pin 14 på ett ESP8266 -kort som SDA respektive SCL

Steg 3: Kod för uppgiftsplanering

Kod för uptsplanering
Kod för uptsplanering

I denna handledning utför vi tre operationer

  • Läs data från SHT11 med I2C -protokoll
  • värd för webbservern och publicera sensoravläsningen på webbsidan
  • posta sensoravläsningarna till ThingSpeak API

För att uppnå detta använder vi TaskScheduler -biblioteket. Vi har planerat tre olika uppgifter som avser tre olika kontrolloperationer. detta görs enligt följande

  • Uppgift 1 är för avläsning av sensorvärdet, den här uppgiften körs i 1 sekund tills den når timeout på 10 sekunder.
  • När uppgift1 når sin timeout är uppgift 2 aktiverad och uppgift 1 inaktiverad.
  • Vi ansluter till AP i denna återuppringning, Två booleska variabler tas för att ta hand om växlingen mellan STA och AP
  • I uppgift 2 är vi värd för en webbserver på 192.168.1.4. Denna uppgift körs var 5: e sekund tills den når sin timeout som är 50 sekunder
  • När uppgift 2 når timeout är uppgift 3 aktiverad och uppgift 2 inaktiverad.
  • Vi ansluter till STA (lokal IP) i denna calbackIn Uppgift 3 lägger vi ut sensoravläsningen till molnet ThingSpeak API

  • Uppgift 3 körs var femte sekund tills den nått sin timeout, dvs 50 sek
  • När uppgift 3 når sin timeout är uppgift 1 aktiverad igen och uppgift 3 är inaktiverad.
  • När ingen återuppringning görs eller enheten är inaktiv går den till Light Sleep och sparar därmed ström.

void taskI2CCallback ();

void taskI2CDisable (); void taskAPCallback (); void taskAPDisable (); void taskWiFiCallback (); void taskWiFiDisable (); // Uppgifter för i2c, hosting webbserver och inlägg på thingspeak Task tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Uppgift tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Uppgift tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); Task tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // timeout för uppgifter tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // aktivera I2C -uppgift tI2C.enable ();

Steg 4: Kod för avläsning av temperatur- och luftfuktighetsvärden

Kod för avläsning av temperatur- och luftfuktighetsvärden
Kod för avläsning av temperatur- och luftfuktighetsvärden

Vi använder Wire.h -biblioteket för att läsa temperatur- och luftfuktighetsvärden. Detta bibliotek underlättar i2c -kommunikation mellan sensorn och masterenheten. 0x44 är I2C -adressen för SHT31.

SHT31 fungerar på ett annat sätt. Du kan hänvisa till databladet för det. Vi använder 0x2C och 0x06 som MSB respektive LSB för enkelskott.

// I2C återuppringning av uppgift void taskI2CCallback () {Serial.println ("taskI2CStarted"); osignerad int root [6]; // börja överföra från 0x44; Wire.beginTransmission (Addr); // för ett skott överföring med hög repeterbarhet använder vi 0x2C (MSB) och 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // avsluta överföring Wire.endTransmission (); // begär byte från 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); if (Wire.available () == 6) {// data [0] och data [1] innehåller 16 bitars temperatur. root [0] = Wire.read (); root [1] = Wire.read (); // data [2] innehåller 8 bitar CRC root [2] = Wire.read (); // data [3] och data [4] innehåller 16 bitar av fuktrot [3] = Wire.read (); root [4] = Wire.read (); // data [5] består av 8 bitars CRC root [5] = Wire.read (); } int temp = (root [0] * 256) + root [1]; // skift MSB med 8 bitar lägg till LSB float cTemp = -45,0 + (175,0 * temp /65535,0); float fTemp = (cTemp * 1.8) + 32.0; // skift MSB med 8 bitar lägg till LSB till den dividera med full upplösning och * 100 för procentuell luftfuktighet = (100,0 * ((root [3] * 256,0) + root [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 ("Luftfuktighet: / t"); Serial.println (Sträng (fuktighet, 1)); }

Steg 5: Kod för värd för en webbserver

Kod för värd för en webbserver
Kod för värd för en webbserver
Kod för värd för en webbserver
Kod för värd för en webbserver

Vi har en webbserver från vår enhet på en statisk IP.

ESP8266WebServer -biblioteket används för att vara värd för webbservern

  • Först måste vi deklarera IP -adress, Gateway och nätmask för att skapa vår statiska IP
  • Ange nu ssid och lösenord för din åtkomstpunkt. Anslut till åtkomstpunkten från valfri STA -enhet
  • värd för servern på port 80 som är en standardport för internetkommunikationsprotokoll, Hypertext Transfer Protocol (HTTP) ange 192.168.1.4 i din webbläsare för introwebbsida och 192.168.1.4/Värde för sensorläsning av webbsida

// statisk Ip för APIPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0); // ssid och AP för lokal WiFi i STA -läget const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid och pass för AP const char APssid = "********"; const char APpass = "********"; ESP8266WebServer -server (80); ogiltig installation {server.on ("/", onHandleDataRoot); server.on ("/Value", onHandleDataFeed); server.onNotFound (onHandleNotFound);} void taskAPCallback () {Serial.println ("taskAP startad"); server.handleClient (); } void onHandleDataRoot () {server.send (200, "text/html", PAGE1); } void onHandleDataFeed () {server.send (200, "text/html", PAGE2); } void onHandleNotFound () {String message = "Filen hittades inte / n / n"; meddelande += "URI:"; meddelande += server.uri (); meddelande += "\ nMetod:"; meddelande += (server.method () == HTTP_GET)? "GET": "POST"; meddelande += "\ nArgument:"; meddelande += server.args (); meddelande += "\ n"; server.send (404, "text/vanlig", meddelande); } void reconnectAPWiFi () {WiFi.mode (WIFI_AP_STA); fördröjning (100); WiFi. Koppla bort (); boolsk status = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == true) {Serial.print ("Inställning av mjuk-AP …"); booleskt ap = WiFi.softAP (APssid, APpass); if (ap == true) {Serial.print ("ansluten till: / t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();

}

Steg 6: Installation av Thingspeak

Inställning av Thingspeak
Inställning av Thingspeak
Inställning av Thingspeak
Inställning av Thingspeak
Inställning av Thingspeak
Inställning av Thingspeak

ThingSpeak är en IoT -plattform. ThingSpeak är en gratis webbtjänst som låter dig samla in och lagra sensordata i molnet.

I det här steget kommer jag att ge dig en kort procedur för att skapa ditt Thing Speak -konto

  • Registrera dig för ett nytt användarkonto i ThingSpeak
  • Skapa en ny kanal genom att välja Kanaler, Mina kanaler och sedan Ny kanal
  • Redigera dina fält
  • Dessa fält innehåller dina sensordata
  • Observera Skriv -API -nyckeln och kanal -ID
  • På din Arduino -skiss kan du använda ThingSpeak -biblioteket för Arduino eller så kan du direkt posta data till ThingSpeak API
  • nästa steg går ut på att lägga ut innehållet i Thing Speak API

Steg 7: Kod för att posta data till Thing Speak

Kod för att posta data till Thing Speak
Kod för att posta data till Thing Speak
Kod för att posta data till Thing Speak
Kod för att posta data till Thing Speak
Kod för att posta data till Thing Speak
Kod för att posta data till Thing Speak
Kod för att posta data till Thing Speak
Kod för att posta data till Thing Speak

Här publicerar vi sensoravläsningarna till Thing Speak. följande steg behövs för att slutföra denna uppgift-

  • Skapa ditt konto i thing speak Skapa kanaler och fält för att lagra din sensordata
  • vi kan hämta och posta data från ESP till thingSpeak och vice versa med hjälp av GET- och POST-förfrågningar till API: et.
  • vi kan skicka våra data till ThingSpeak enligt följande

id taskWiFiCallback () {WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& field1 ="; postStr += Sträng (fuktig); postStr += "& field2 ="; postStr += String (tempC); postStr += "& field3 ="; postStr += String (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /uppdatera HTTP /1.1 / n"); wifiClient.print ("Värd: api.thingspeak.com / n"); wifiClient.print ("Anslutning: stäng / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Content-Type: application/x-www-form-urlencoded / n"); wifiClient.print ("Innehållslängd:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }

Steg 8: Övergripande kod

Den övergripande koden är tillgänglig i mitt GitHub -arkiv

Steg 9: Poäng

  • Arduino JSON
  • ESP826WebServer
  • Schemaläggaren
  • SHT 31
  • I2C -skanning
  • HIH6130 instruerbar handledning
  • Tråd
  • NCD.io

Rekommenderad: