Indholdsfortegnelse:
- Trin 1: Hardware påkrævet
- Trin 2: Hardwareforbindelser
- Trin 3: Kode til opgaveplanlægning
- Trin 4: Kode til aflæsning af temperatur- og fugtighedsværdier
- Trin 5: Kode til hosting af en webserver
- Trin 6: Opsætning af Thingspeak
- Trin 7: Kode til udstationering af data til ting
- Trin 8: Overordnet kode
- Trin 9: Kreditter
Video: THINGSPEAK TEMPERATUR- OG Fugtighedsapp ved hjælp af ESP8266: 9 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
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, der bruges til at fuldføre denne opgave:
- SHT 31
- Adafruit Huzzah ESP8266
- ESP8266 I2C adapter
- I2C kabel
Trin 2: 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.
- 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.
- en ledning bruges til Vcc, den anden ledning til GND og to andre til henholdsvis SDA og SCL
- Ifølge I2C -adapteren bruges pin2 og pin 14 på et ESP8266 -kort som henholdsvis SDA og SCL
Trin 3: 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
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
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
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
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:
DIY -- Sådan laver du en edderkoprobot, der kan kontrolleres ved hjælp af smartphone ved hjælp af Arduino Uno: 6 trin
DIY || Sådan laver du en edderkoprobot, der kan styres ved hjælp af smartphone Brug af Arduino Uno: Mens du laver en edderkoprobot, kan man lære så mange ting om robotik. Ligesom at lave robotter er underholdende såvel som udfordrende. I denne video vil vi vise dig, hvordan du laver en Spider -robot, som vi kan betjene ved hjælp af vores smartphone (Androi
Kontrol ledt over hele verden ved hjælp af internet ved hjælp af Arduino: 4 trin
Kontrol ledt over hele verden ved hjælp af internet ved hjælp af Arduino: Hej, jeg er Rithik. Vi kommer til at lave en internetstyret LED ved hjælp af din telefon. Vi kommer til at bruge software som Arduino IDE og Blynk.Det er enkelt, og hvis det lykkedes dig, kan du styre så mange elektroniske komponenter, du ønskerTing We Need: Hardware:
Sådan laver du en drone ved hjælp af Arduino UNO - Lav en quadcopter ved hjælp af mikrokontroller: 8 trin (med billeder)
Sådan laver du en drone ved hjælp af Arduino UNO | Lav en Quadcopter ved hjælp af mikrokontroller: Introduktion Besøg min Youtube -kanal En Drone er en meget dyr gadget (produkt) at købe. I dette indlæg vil jeg diskutere, hvordan jeg gør det billigt ?? Og hvordan kan du lave din egen sådan til en billig pris … Nå i Indien alle materialer (motorer, ESC'er
RF 433MHZ radiostyring ved hjælp af HT12D HT12E - Lav en RF -fjernbetjening ved hjælp af HT12E & HT12D med 433mhz: 5 trin
RF 433MHZ radiostyring ved hjælp af HT12D HT12E | Oprettelse af en RF -fjernbetjening ved hjælp af HT12E & HT12D med 433mhz: I denne instruktør vil jeg vise dig, hvordan du laver en RADIO -fjernbetjening ved hjælp af 433mhz sendermodtagermodul med HT12E -kode & HT12D -dekoder IC.I denne instruktive kan du sende og modtage data ved hjælp af meget meget billige KOMPONENTER SOM: HT
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter - Rc Helikopter - Rc -fly ved hjælp af Arduino: 5 trin (med billeder)
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter | Rc Helikopter | Rc -fly ved hjælp af Arduino: At betjene en Rc -bil | Quadcopter | Drone | RC -fly | RC -båd, vi har altid brug for en modtager og sender, antag at vi til RC QUADCOPTER har brug for en 6 -kanals sender og modtager, og den type TX og RX er for dyr, så vi laver en på vores