INHOUDSOPGAWE:
- Stap 1: hardeware benodig
- Stap 2: Hardewareverbindings
- Stap 3: Kode vir taakskedulering
- Stap 4: Kode vir die lees van temperatuur- en humiditeitswaardes
- Stap 5: Kode vir die aanbied van 'n webbediener
- Stap 6: Kode vir die plaas van data in die saak
- Stap 7: Algehele kode
Video: Weer -webprogram met behulp van Esp8266: 7 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
SHT 31 is 'n temperatuur- en humiditeitsensor gemaak deur Sensirion. Die SHT31 bied 'n hoë akkuraatheid rondom ± 2% RH. Die humiditeitsbereik is tussen 0 en 100% en die temperatuurbereik is tussen -40 en 125 ° C. Dit is baie betroubaarder en vinniger met 8 sekondes sensorreaksietyd. Die funksie daarvan bevat verbeterde seinverwerking en I2C -versoenbaarheid. Dit het verskillende werkswyses wat dit energie -doeltreffend maak.
In hierdie tutoriaal het ons SHT 31 met die Adafruit Huzzah -bord gekoppel. Vir die lees van temperatuur- en humiditeitswaardes het ons die ESP8266 I2C -skild gebruik. Hierdie adapter maak alle penne toeganklik vir die gebruiker en bied gebruikersvriendelike I2C-omgewing.
Stap 1: hardeware benodig
Hardeware wat gebruik word om hierdie taak te voltooi:
1. SHT31
2. Adafruit Huzzah ESP8266
3. ESP8266 I2C -adapter
4. I2C -kabel
Stap 2: Hardewareverbindings
Hierdie stap bevat die gids vir die aansluiting van hardeware. Hierdie afdeling verduidelik basies die bedradingskoppelings wat tussen die sensor en die ESP8266 benodig word. Die verbindings is soos volg.
- Die SHT31 werk oor I2C. Bogenoemde prent toon die verband tussen die ESP8266- en SHT31 -module. Ons gebruik 'n I2C -kabel daarvoor, óf ons kan 4 F tot F springdrade gebruik.
- een draad word gebruik vir Vcc, die tweede draad vir GND en ander twee na SDA en SCL onderskeidelik.
- Volgens die I2C -adapter word pin2 en pen 14 van 'n ESP8266 -bord onderskeidelik as SDA en SCL gebruik
Stap 3: Kode vir taakskedulering
In hierdie tutoriaal voer ons drie bewerkings uit
- Lees die data van SHT11 met behulp van I2C -protokol
- gasheer vir die webbediener en plaas die sensorlesing op die webblad
- plaas die sensorlesings op ThingSpeak API
Om dit te bereik, gebruik ons TaskScheduler -biblioteek. Ons het drie verskillende take geskeduleer wat verwys na drie verskillende beheerbedrywighede. dit word soos volg gedoen
- Taak 1 is vir die lees van die sensorwaarde wat hierdie taak vir 1 sekonde uitvoer totdat dit 'n time -out van 10 sekondes bereik.
- As die taak1 sy tydsduur bereik, is taak 2 geaktiveer en taak 1 is gedeaktiveer.
- Ons maak verbinding met AP in hierdie terugbel. Twee booleaanse veranderlikes word geneem om te sorg vir die skakel tussen STA en AP
- In taak 2 bied ons 'n webbediener aan by 192.168.1.4. Hierdie taak duur elke 5 sekondes totdat dit sy tydsduur bereik, wat 50 sekondes is
- As taak 2 se tydsduur bereik word, is taak 3 geaktiveer en taak 2 is gedeaktiveer.
- Ons skakel met STA (plaaslike IP) in hierdie terugbel
- In taak 3 plaas ons die sensorlesing na die ThingSpeak API in die wolk
- Taak 3 duur elke vyf sekondes totdat dit sy tydsduur bereik het, dit wil sê 50 sekondes
- As die Taak3 sy tydsbeperking bereik, word Taak 1 weer aangeskakel en Taak3 is gedeaktiveer.
- As geen terugbel gebel word nie of die toestel nie gebruik word nie, gaan dit na Light Sleep en bespaar dus krag.
Skeduler ts;
// Take vir i2c, die aanbied van 'n webbediener en plasing op thingspeak
Taak tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Taak tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); Taak tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // time -out vir take tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // aktiveer I2C taak tI2C.enable ();
Stap 4: Kode vir die lees van temperatuur- en humiditeitswaardes
Ons gebruik die Wire.h -biblioteek om die temperatuur- en humiditeitswaardes te lees. Hierdie biblioteek vergemaklik i2c -kommunikasie tussen die sensor en die meesterapparaat. 0x44 is die I2C -adres vir SHT31.
SHT31 werk in 'n ander werkswyse. U kan die datablad daarvoor raadpleeg.
Ons gebruik 0x2C en 0x06 as MSB en LSB onderskeidelik vir 'n enkele opname.
// I2C taak terugbel leegte taak I2CCallback ()
{Serial.println ("taskI2CStarted"); ongetekende int root [6]; // begin oordrag vanaf 0x44; Wire.beginTransmission (Addr); // vir 'n eenmalige opname met 'n hoë herhaalbaarheid gebruik ons 0x2C (MSB) en 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // beëindig transmissie Wire.endTransmission (); // versoek grepe van 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); as (Wire.available () == 6) {// data [0] en data [1] 16 bit temperatuur bevat. root [0] = Wire.read (); root [1] = Wire.read (); // data [2] bevat 8 bis CRC -wortel [2] = Wire.read (); // data [3] en data [4] bevat 16 bis humiditeitswortel [3] = Wire.read (); root [4] = Wire.read (); // data [5] bestaan uit 8 -bits CRC -wortel [5] = Wire.read (); } int temp = (wortel [0] * 256) + wortel [1]; // skuif MSB met 8 bisse voeg LSB float toe cTemp = -45.0 + (175.0 * temp /65535.0); float fTemp = (cTemp * 1.8) + 32.0; // skuif die MSB met 8 bisse, voeg LSB by, verdeel dit met volle resolusie en * 100 vir persentasie vlotvogtigheid = (100.0 * ((wortel [3] * 256.0) + wortel [4])) /65535.0;
tempC = cTemp;
tempF = fTemp; humid = humiditeit; Serial.print ("Temperatuur in C: / t"); Serial.println (string (cTemp, 1)); Serial.print ("Temperatuur in F: / t"); Serial.println (string (fTemp, 1)); Serial.print ("Humiditeit: / t"); Serial.println (string (humiditeit, 1)); }
Stap 5: Kode vir die aanbied van 'n webbediener
Ons het 'n webbediener vanaf ons toestel op 'n statiese IP gehuisves.
- ESP8266WebServer -biblioteek word gebruik om die webbediener te huisves
- Eerstens moet ons IP -adres, gateway en subnetmasker verklaar om ons statiese IP te skep
- Verklaar nou ssid en wagwoord vir u toegangspunt.
- maak verbinding met die toegangspunt vanaf enige STA -toestel
- huisves die bediener op poort 80, wat 'n standaardpoort is vir internetkommunikasieprotokol, Hypertext Transfer Protocol (HTTP)
- voer 192.168.1.4 in u webblaaier in vir intro -webbladsy en 192.168.1.4/Waarde vir sensorleeswebblad
// statiese IP vir AP
IPAddress ap_local_IP (192, 168, 1, 4);
IPAddress ap_gateway (192, 168, 1, 254);
IPAddress ap_subnet (255, 255, 255, 0); // ssid en AP vir plaaslike WiFi in STA -modus
const char WiFissid = "*********";
const char WiFipass = "*********";
// ssid en slaag vir AP
const char APssid = "********";
const char APpass = "********";
ESP8266WebServer -bediener (80);
ongeldige opstelling {
server.on ("/", onHandleDataRoot);
server.on ("/Value", onHandleDataFeed);
server.onNotFound (onHandleNotFound);
}
ongeldige taakAPCallback () {
Serial.println ("taskAP begin");
server.handleClient ();
}
void onHandleDataRoot () {server.send (200, "text/html", PAGE1); }
void onHandleDataFeed () {
server.send (200, "text/html", PAGE2); }
void onHandleNotFound () {
String -boodskap = "Lêer nie gevind nie / n / n";
boodskap += "URI:";
boodskap += server.uri ();
boodskap += "\ nMetode:";
boodskap += (server.method () == HTTP_GET)? "GET": "POST";
boodskap += "\ nArgumente:";
boodskap += server.args ();
boodskap += "\ n";
server.send (404, "text/plain", boodskap);}
ongeldig herkoppel APWiFi () {
WiFi.mode (WIFI_AP_STA);
vertraging (100);
WiFi. Ontkoppel ();
booleaanse status = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);
as (status == waar) {
Serial.print ("Instelling van sagte-AP …");
boolean ap = WiFi.softAP (APssid, APpass);
as (ap == waar) {
Serial.print ("gekoppel aan: / t");
// IPAddress myIP = WiFi.softAPIP ();
Serial.println (WiFi.softAPIP ());
}
bediener.begin ();
}
}
Stap 6: Kode vir die plaas van data in die saak
Hier plaas ons die sensorlesings op Thing Speak. die volgende stappe is nodig om hierdie taak te voltooi-
- Skep u rekening in ding praat
- Skep kanale en velde om u sensordata te stoor
- ons kan die data van ESP na thingSpeak kry en dit plaas met behulp van GET- en POST-versoeke na die api.
- ons kan ons data soos volg aan ThingSpeak plaas
void taskWiFiCallback () {
WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& field1 ="; postStr += String (humid); 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 ("Gasheer: api.thingspeak.com / n"); wifiClient.print ("Verbinding: sluit / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Inhoudstipe: toepassing/x-www-vorm-urlencoded / n"); wifiClient.print ("Inhoudlengte:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }
Stap 7: Algehele kode
Die algehele kode is beskikbaar in my github -bewaarplek
Krediete:
- Arduino JSON: ArduinoJson
- ESP826WebServer
- Taak skeduleerder
- SHT 31
- I2C -skandering
- HIH6130 instruksies handleiding
- Draad Arduino
- NCD.io
Aanbeveel:
Weer -moniteringstelsel met behulp van Raspberry Pi3 en DHT11 -sensor: 4 stappe
Weer -moniteringstelsel met behulp van Raspberry Pi3 en DHT11 -sensor: In hierdie tutoriaal sal ek jou wys hoe om die DHT11 aan die Raspberry Pi te koppel en die humiditeits- en temperatuurmetings na 'n LCD te stuur. wat digitale temperatuur en humiditeit bied
Beheer oor die hele wêreld met behulp van internet met behulp van Arduino: 4 stappe
Beheer oor die hele wêreld met behulp van internet met behulp van Arduino: Hallo, ek is Rithik. Ons gaan 'n internetbeheerde LED maak met u telefoon. Ons gaan sagteware soos Arduino IDE en Blynk gebruik. Dit is eenvoudig, en as u daarin geslaag het, kan u soveel elektroniese komponente beheer as wat u wil
Monitor versnelling met behulp van Raspberry Pi en AIS328DQTR met behulp van Python: 6 stappe
Monitering van versnelling met behulp van Raspberry Pi en AIS328DQTR Gebruik van Python: Versnelling is eindig, volgens ek volgens sommige wette van die fisika.- Terry Riley 'n Jagluiperd gebruik ongelooflike versnelling en vinnige spoedveranderinge wanneer hy jaag. Die vinnigste wesens aan wal gebruik af en toe sy hoogste tempo om prooi te vang. Die
Bou 'n weer -dashboard met behulp van Dark Sky API: 5 stappe (met foto's)
Bou 'n weer -dashboard met behulp van Dark Sky API: Dark Sky spesialiseer in weervoorspelling en visualisering. Die coolste aspek van Dark Sky is hul weer -API wat ons kan gebruik om die weerdata van byna oral ter wêreld op te haal. Dit is nie net reënerig of sonnig nie, maar temperatuur
Hoe om 'n IoT -toestel te maak om toestelle te beheer en die weer te monitor met behulp van Esp8266: 5 stappe
Hoe om 'n IoT-toestel te maak om toestelle te beheer en weer te monitor met behulp van Esp8266: Die internet van dinge (IoT) is die internetwerk van fisiese toestelle (ook na verwys as 'gekoppelde toestelle' en 'slim toestelle'), geboue, en ander items ingebed met elektronika, sagteware, sensors, aandrywers en