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: Kod för att posta data till Thing Speak
- Steg 7: Övergripande kod
Video: Väderwebbapp med Esp8266: 7 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:43
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:
1. SHT31
2. Adafruit Huzzah ESP8266
3. ESP8266 I2C -adapter
4. 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 uppgift 1 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 återuppringning
- I 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 uppgiften 3 når sin timeout aktiveras uppgift 1 igen och uppgift 3 inaktiveras.
- När ingen återuppringning görs eller enheten är inaktiv går den till Light Sleep och sparar därmed ström.
Schemaläggare ts;
// Uppgifter för i2c, hosting webbserver och inlägg på thingspeak
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 uppgift återuppringning ogiltig uppgiftI2CCallback ()
{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 AP
IPAddress 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äge
const char WiFissid = "*********";
const char WiFipass = "*********";
// ssid och passera 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);
om (status == true) {
Serial.print ("Inställning av mjuk-AP …");
booleskt ap = WiFi.softAP (APssid, APpass);
om (ap == true) {
Serial.print ("ansluten till: / t");
// IPAddress myIP = WiFi.softAPIP ();
Serial.println (WiFi.softAPIP ());
}
server.begin ();
}
}
Steg 6: 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 ting tala
- 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
void 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 7: Övergripande kod
Den övergripande koden är tillgänglig i mitt github -arkiv
Poäng:
- Arduino JSON: ArduinoJson
- ESP826WebServer
- Schemaläggaren
- SHT 31
- I2C -skanning
- HIH6130 instruerbar handledning
- Tråd Arduino
- NCD.io
Rekommenderad:
ESP8266 - Trädbevattning med timer och fjärrkontroll via Internet / ESP8266: 7 steg (med bilder)
ESP8266 - Trädbevattning med timer och fjärrkontroll Via Internet / ESP8266: ESP8266 - Bevattning fjärrstyrd och med tidtagning för grönsaksodlingar, blomsterodlingar och gräsmattor. Den använder kretsen ESP-8266 och en hydraulisk / elektrisk ventil för matning av bevattningsmedel. Fördelar: Låg kostnad (~ 30,00 US $) snabbåtkomst Kommandon över
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Få tid från Internet med ESP8266 - NTP -klockprojekt med ESP8266 Nodemcu: 5 steg
Få tid från internet med ESP8266 | NTP Clock Project With ESP8266 Nodemcu: I den här självstudien kommer vi att se hur du får tid med ESP8266/nodemcu med Arduino IDE. Att få tid är särskilt användbart vid dataloggning för att tidsstämpla dina avläsningar. Om ditt ESP8266 -projekt har tillgång till Internet kan du få tid med nätverk T
Nybörjarguide till ESP8266 och twittring med ESP8266: 17 steg (med bilder)
Nybörjarguide till ESP8266 och twittring med hjälp av ESP8266: Jag lärde mig om Arduino för 2 år sedan. Så jag började leka med enkla saker som lysdioder, knappar, motorer etc. Då tänkte jag att det inte skulle vara häftigt att ansluta till saker som att visa dagens väder, aktiekurser, tågtider på en LCD -display. Jag
ESP8266 Robotbil programmerad med ESP8266 Basic: 18 steg (med bilder)
ESP8266 Robotbil programmerad med ESP8266 Basic: Jag är en naturvetenskapslärare på mellanstadiet och även Robotic Club Advisor. Jag har letat efter mer kostnadseffektiva sätt att få robotar i händerna på mina elever. Med de låga priserna på ESP8266 -brädor har jag kunnat skapa en autonom