Innholdsfortegnelse:
- Trinn 1: Maskinvare påkrevd
- Trinn 2: Maskinvaretilkoblinger
- Trinn 3: Kode for oppgaveplanlegging
- Trinn 4: Kode for avlesning av temperatur- og fuktighetsverdier
- Trinn 5: Kode for hosting av en webserver
- Trinn 6: Kode for å legge ut data til ting
- Trinn 7: Samlet kode
Video: Weather Web App ved hjelp av Esp8266: 7 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
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 som brukes til å fullføre denne oppgaven:
1. SHT31
2. Adafruit Huzzah ESP8266
3. ESP8266 I2C -adapter
4. I2C -kabel
Trinn 2: Maskinvaretilkoblinger
Dette trinnet inkluderer maskinvareoppkoblingsguiden. Denne delen forklarer i utgangspunktet ledningsforbindelsene som kreves mellom sensoren og ESP8266. Tilkoblingene er som følger.
- 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.
- en ledning brukes for Vcc, den andre ledningen for GND og to andre til henholdsvis SDA og SCL.
- I henhold til I2C -adapteren brukes pin2 og pin 14 på et ESP8266 -kort som henholdsvis SDA og SCL
Trinn 3: 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 tidsavbrudd, 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 tilbakeringingen
- I oppgave 3 legger vi ut sensoravlesningen til nettskyen ThingSpeak API
- Oppgave 3 kjører hvert femte sekund til den nådde sin timeout, dvs. 50 sekunder
- Når oppgave 3 når sin tidsavbrudd, blir 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.
Planlegger ts;
// Oppgaver for i2c, hosting webserver og innlegg på thingspeak
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
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 av ugyldig oppgaveI2CCallback ()
{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
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 AP
IPAddress 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, "text/html", PAGE1); }
void onHandleDataFeed () {
server.send (200, "tekst/html", SIDE2); }
void onHandleNotFound () {
String message = "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);
hvis (status == true) {
Serial.print ("Angi soft-AP …");
boolsk ap = WiFi.softAP (APssid, APpass);
hvis (ap == true) {
Serial.print ("koblet til: / t");
// IPAddress myIP = WiFi.softAPIP ();
Serial.println (WiFi.softAPIP ());
}
server.begin ();
}
}
Trinn 6: 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
void 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 7: Samlet kode
Den generelle koden er tilgjengelig i mitt github -depot
Studiepoeng:
- Arduino JSON: ArduinoJson
- ESP826WebServer
- Oppgaveplanlegger
- SHT 31
- I2C -skanning
- HIH6130 instruksjonsopplæring
- Tråd Arduino
- NCD.io
Anbefalt:
DIY -- Hvordan lage en edderkopprobot som kan kontrolleres ved hjelp av smarttelefon ved hjelp av Arduino Uno: 6 trinn
DIY || Hvordan lage en edderkopprobot som kan kontrolleres ved hjelp av smarttelefon ved hjelp av Arduino Uno: Mens du lager en edderkopprobot, kan du lære så mange ting om robotikk. Som å lage roboter er både underholdende og utfordrende. I denne videoen skal vi vise deg hvordan du lager en Spider -robot, som vi kan bruke ved hjelp av smarttelefonen vår (Androi
Kontrollere ESP8266 ved hjelp av Telegram App: 7 trinn
Kontrollere ESP8266 ved hjelp av Telegram -appen: Hei, hva skjer, gutter! Akarsh her fra CETech. Har du noen gang lurt på å chatte med apparatene dine over en meldingsapp? Høres rart ut, ikke sant. Men i dag skal vi gjøre noe lignende. Ikke bekymre deg, du trenger ikke å kjøpe mobiltelefoner
Hvordan lage en drone ved hjelp av Arduino UNO - Lag en quadcopter ved hjelp av mikrokontroller: 8 trinn (med bilder)
Hvordan lage en drone ved hjelp av Arduino UNO | Lag en Quadcopter ved hjelp av mikrokontroller: Introduksjon Besøk min Youtube -kanal En Drone er en veldig dyr gadget (produkt) å kjøpe. I dette innlegget skal jeg diskutere hvordan jeg får det billig? Og hvordan kan du lage din egen slik til en billig pris … Vel, i India er alle materialer (motorer, ESCer
Wi-Fi-kontrollert robot ved hjelp av Wemos D1 ESP8266, Arduino IDE og Blynk App: 11 trinn (med bilder)
Wi-Fi-kontrollert robot ved hjelp av Wemos D1 ESP8266, Arduino IDE og Blynk App: I denne opplæringen viser jeg deg hvordan du lager en Wi-Fi-kontrollert robottank kontrollert fra en smarttelefon ved hjelp av Blynk App. I dette prosjektet ble det brukt et ESP8266 Wemos D1 -kort, men andre platemodeller kan også brukes (NodeMCU, Firebeetle, etc.), og pr
Kontroller Arduino Uno ved hjelp av ESP8266 WiFi -modul og Blynk -app: 6 trinn
Kontroller Arduino Uno ved hjelp av ESP8266 WiFi-modul og Blynk-app: Dette prosjektet lar deg kontrollere Arduino-pinnene ved hjelp av ESP8266-01 WiFi-modul og Blynk-app. Blynk App er veldig enkel å bruke og er en fin måte å begynne å lære om IoT. Denne opplæringen er for Windows PC