Innehållsförteckning:
- Steg 1: Hårdvara krävs
- Steg 2: Hårdvaruanslutningar
- Steg 3: Kod för uppgiftsplanering
- Steg 4: Kod för avläsning av temperatur- och luftfuktighetsvärden
- Steg 5: Kod för värd för en webbserver
- Steg 6: Installation av Thingspeak
- Steg 7: Kod för att posta data till Thing Speak
- Steg 8: Övergripande kod
- Steg 9: Poäng
Video: THINGSPEAK TEMPERATURE AND FUKTIGHETSAPP MED ESP8266: 9 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:41
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 som används för att slutföra denna uppgift:
- SHT 31
- Adafruit Huzzah ESP8266
- ESP8266 I2C -adapter
- I2C -kabel
Steg 2: 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.
- 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.
- en tråd används för Vcc, den andra ledningen för GND och andra två till SDA respektive SCL
- Enligt I2C -adaptern används pin2 och pin 14 på ett ESP8266 -kort som SDA respektive SCL
Steg 3: Kod för uppgiftsplanering
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
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
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
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
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:
IoT- Ubidots- ESP32+Long-Range-Wireless-Vibration-and-Temperature-Sensor: 7 Steg
IoT- Ubidots- ESP32+Long-Range-Wireless-Vibration-And-Temperature Sensor: Vibration är verkligen en rörelse fram och tillbaka-eller oscillation-av maskiner och komponenter i motoriserade prylar. Vibrationer i industrisystemet kan vara ett symptom eller motiv för ett besvär, eller det kan vara associerat med daglig drift. Till exempel osci
ThingSpeak, IFTTT, Temp and Humidity Sensor och Google Sheet: 8 steg
ThingSpeak, IFTTT, Temp and Humidity Sensor och Google Sheet: I detta projekt kommer vi att mäta temperatur och luftfuktighet med NCD -temperatur- och fuktsensor, ESP32 och ThingSpeak. Vi kommer också att skicka olika temperatur- och fuktighetsavläsningar till Google Sheet med ThingSpeak och IFTTT för att analysera
IoT-ThingSpeak-ESP32-Long-Range-Wireless-Vibration-And-Temp: 6 steg
IoT-ThingSpeak-ESP32-Long-Range-Wireless-Vibration-And-Temp: I detta projekt kommer vi att mäta vibrationer och temperatur med hjälp av NCD-vibrations- och temperatursensorer, Esp32, ThingSpeak.Vibration är verkligen en rörelse fram och tillbaka-eller oscillation - av maskiner och komponenter i motoriserade prylar. Vibrationer i
YABC - Yet Another Blynk Controller - IoT Cloud Temperature and Humidity Controller, ESP8266: 4 Steps
YABC - Yet Another Blynk Controller - IoT Cloud Temperature and Humidity Controller, ESP8266: Hej Makers, jag började nyligen odla svamp hemma, Ostron svamp, men jag har redan 3x av dessa kontroller hemma för Fermenter Temperaturkontroll för mitt hem brygga, fru gör också det här Kombucha nu, och som termostat för värme
WiFi Temperature Logger (med ESP8266): 11 steg (med bilder)
WiFi Temperature Logger (med ESP8266): Hej, kul att se dig här. Jag hoppas att du i denna instruktör kommer att hitta användbar information. Skicka mig gärna förslag, frågor, … Här är några grundläggande data och en snabb översikt över projektet. För mobilanvändare: Video. Låt mig veta