Tartalomjegyzék:
- 1. lépés: Hardver szükséges
- 2. lépés: Hardverkapcsolatok
- 3. lépés: A feladatütemezés kódja
- 4. lépés: A hőmérséklet és páratartalom értékek leolvasásának kódja
- 5. lépés: A webszerver tárhelyének kódja
- 6. lépés: Az adatok közzétételének kódja a Thing Speak -hez
- 7. lépés: Általános kód
Videó: Időjárási webes alkalmazás az Esp8266 használatával: 7 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Az SHT 31 a Sensirion által gyártott hőmérséklet- és páratartalom -érzékelők. Az SHT31 nagy pontosságot biztosít ± 2% relatív páratartalom mellett. A páratartalom 0 és 100% között, a hőmérséklet -40 és 125 ° C között van. Sokkal megbízhatóbb és gyorsabb, 8 másodperces érzékelő válaszidővel. A funkcionalitás magában foglalja a továbbfejlesztett jelfeldolgozást és az I2C kompatibilitást. Különféle üzemmódokkal rendelkezik, ami energiatakarékos.
Ebben az oktatóanyagban az SHT 31 -et illesztettük az Adafruit Huzzah táblához. A hőmérséklet és páratartalom értékek leolvasásához ESP8266 I2C pajzsot használtunk. Ez az adapter hozzáférhetővé teszi a csapokat a felhasználó számára, és felhasználóbarát I2C környezetet kínál.
1. lépés: Hardver szükséges
A feladat végrehajtásához használt hardver:
1. SHT31
2. Adafruit Huzzah ESP8266
3. ESP8266 I2C adapter
4. I2C kábel
2. lépés: Hardverkapcsolatok
Ez a lépés tartalmazza a hardver csatlakoztatási útmutatóját. Ez a rész alapvetően az érzékelő és az ESP8266 közötti kábelezési kapcsolatokat ismerteti. A kapcsolatok a következők.
- Az SHT31 az I2C -n keresztül működik. A fenti kép az ESP8266 és az SHT31 modul közötti kapcsolatot mutatja. I2C kábelt használunk hozzá, vagy használhatunk 4 F - F áthidaló vezetéket.
- az egyik vezetéket a Vcc -hez, a második vezetéket a GND -hez és a másik kettőt az SDA -hoz és az SCL -hez használják.
- Az I2C adapter szerint az ESP8266 kártya pin2 és 14 csapja SDA, illetve SCL
3. lépés: A feladatütemezés kódja
Ebben az oktatóanyagban három műveletet hajtunk végre
- Olvassa el az SHT11 adatait az I2C protokoll használatával
- fogadja a webszervert, és tegye közzé az érzékelő leolvasását a weboldalra
- tegye közzé az érzékelő leolvasásait a ThingSpeak API -ban
Ennek eléréséhez a TaskScheduler könyvtárat használjuk. Három különböző feladatot ütemeztünk be, amelyek három különböző vezérlési műveletre vonatkoznak. ez a következőképpen történik
- Az 1. feladat az érzékelő értékének leolvasására szolgál, ez a feladat 1 másodpercig fut, amíg el nem éri a 10 másodperces időtúllépést.
- Amikor a 1. feladat eléri az időtúllépést, a 2. feladat engedélyezve van, és az 1. feladat le van tiltva.
- Ebben a visszahívásban csatlakozunk az AP -hez. Két logikai változó gondoskodik az STA és az AP közötti váltásról
- A 2. feladatban egy webszervert tárolunk a 192.168.1.4 címen. Ez a feladat 5 másodpercenként fut, amíg el nem éri az 50 másodperces időtúllépést
- Amikor a 2. feladat eléri az időtúllépést, a 3. feladat engedélyezve van, és a 2. feladat le van tiltva.
- Ebben a visszahívásban az STA -hoz (helyi IP) kapcsolódunk
- A 3. feladatban az érzékelő leolvasását a ThingSpeak API felhőbe tesszük
- A 3. feladat öt másodpercenként fut, amíg el nem éri az időtúllépést, azaz 50 másodpercet
- Amikor a 3. feladat eléri az időtúllépést, az 1. feladat ismét engedélyezve van, és a 3. feladat le van tiltva.
- Ha nem hív visszahívást, vagy ha az eszköz tétlen, akkor a Light Sleep üzemmódba kapcsol, így energiát takarít meg.
Ütemezés ts;
// Feladatok az i2c -hez, a webszerver tárolása és a postspeak -on való közzététel
TI2C feladat (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL és taskI2CDisable); Feladat tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); TWiFi feladat (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL és & taskWiFiDisable); // időtúllépés a feladatokhoz tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // I2C feladat engedélyezése tI2C.enable ();
4. lépés: A hőmérséklet és páratartalom értékek leolvasásának kódja
A Wire.h könyvtár segítségével olvassuk a hőmérsékletet és a páratartalmat. Ez a könyvtár megkönnyíti az i2c kommunikációt az érzékelő és a master eszköz között. A 0x44 az SHT31 I2C címe.
Az SHT31 más működési módban működik. Erre hivatkozhat az adatlapon.
0x2C -t és 0x06 -ot használunk MSB -ként és LSB -ként egyetlen lövésre.
// I2C feladat visszahívási érvénytelen feladatI2CCallback ()
{Serial.println ("taskI2CStarted"); unsigned int root [6]; // az átvitel megkezdése 0x44 -től; Wire.beginTransmission (Addr); // egy lövéstovábbításhoz nagy ismételhetőséggel 0x2C (MSB) és 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // vége átvitel Wire.endTransmission (); // bájtok kérése 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); ha (Wire.available () == 6) {// az adatok [0] és az adatok [1] 16 bites hőmérsékletet tartalmaznak. gyökér [0] = Wire.read (); root [1] = Wire.read (); // az adatok [2] 8 bites CRC gyökeret tartalmaz [2] = Wire.read (); // az adatok [3] és az adatok [4] 16 bit nedvességtartalmat tartalmaznak [3] = Wire.read (); gyökér [4] = Wire.read (); // az adatok [5] 8 bites CRC gyökérből áll [5] = Wire.read (); } int temp = (root [0] * 256) + root [1]; // az MSB eltolása 8 bittel LSB float hozzáadása cTemp = -45,0 + (175,0 * temp /65535,0); float fTemp = (cTemp * 1,8) + 32,0; // az MSB eltolása 8 bittel, LSB hozzáadása hozzá, teljes felbontással és * 100 százalékos lebegő páratartalom = (100,0 * ((gyökér [3] * 256,0) + gyökér [4])) /65535.0;
tempC = cTemp;
tempF = fTemp; nedves = páratartalom; Serial.print ("Hőmérséklet C: / t"); Soros.println (Karakterlánc (cTemp, 1)); Serial.print ("Hőmérséklet F: / t"); Soros.println (Karakterlánc (fTemp, 1)); Serial.print ("Páratartalom: / t"); Soros.println (Karakterlánc (páratartalom, 1)); }
5. lépés: A webszerver tárhelyének kódja
Egy webszervert üzemeltettünk eszközünkről statikus IP címen.
- Az ESP8266WebServer könyvtár a webszerver tárolására szolgál
- Először deklarálnunk kell az IP -címet, az átjárót és az alhálózati maszkot a statikus IP létrehozásához
- Most deklarálja az ssid -t és a jelszót a hozzáférési ponthoz.
- csatlakozzon a hozzáférési ponthoz bármely STA eszközről
- fogadja a szervert a 80 -as porton, amely az internetes kommunikációs protokoll alapértelmezett portja, a Hypertext Transfer Protocol (HTTP)
- írja be a 192.168.1.4 -et a webböngészőjébe az intro weboldalhoz, és a 192.168.1.4/Érték az olvasó weboldalhoz
// statikus Ip AP -hez
IPAddress ap_local_IP (192, 168, 1, 4);
IPAddress ap_gateway (192, 168, 1, 254);
IPAddress ap_subnet (255, 255, 255, 0); // ssid és AP a helyi WiFi -hez STA módban
const char WiFissid = "*********";
const char WiFipass = "*********";
// ssid és pass az AP -hez
const char APssid = "********";
const char APpass = "********";
ESP8266WebServer szerver (80);
void setup {
szerver.on ("/", onHandleDataRoot);
server.on ("/Érték", onHandleDataFeed);
server.onNotFound (onHandleNotFound);
}
void taskAPCCalback () {
Serial.println ("taskAP elindult");
server.handleClient ();
}
void onHandleDataRoot () {server.send (200, "text/html", PAGE1); }
void onHandleDataFeed () {
server.send (200, "text/html", PAGE2); }
void onHandleNotFound () {
String message = "A fájl nem található / n / n";
üzenet += "URI:";
üzenet += szerver.uri ();
message += "\ nMódszer:";
message += (server.method () == HTTP_GET)? "GET": "POST";
message += "\ nIgületek:";
üzenet += szerver.args ();
üzenet += "\ n";
server.send (404, "text/plain", üzenet);}
void reconnectAPWiFi () {
WiFi.mód (WIFI_AP_STA);
késleltetés (100);
WiFi.disconnect ();
logikai állapot = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);
if (állapot == igaz) {
Serial.print ("Soft-AP beállítása …");
boolean ap = WiFi.softAP (APssid, APpass);
ha (ap == igaz) {
Serial.print ("csatlakoztatva: / t");
// IPAddress myIP = WiFi.softAPIP ();
Serial.println (WiFi.softAPIP ());
}
szerver.begin ();
}
}
6. lépés: Az adatok közzétételének kódja a Thing Speak -hez
Itt közzétesszük az érzékelő leolvasásait a Thing Speak -ban. a feladat végrehajtásához a következő lépésekre van szükség-
- Hozzon létre fiókot a dologban
- Hozzon létre csatornákat és mezőket az érzékelőadatok tárolására
- megkaphatjuk és közzétehetjük az adatokat az ESP-ből a thingSpeak-be és fordítva a GET és POST kérések használatával az api-ba.
- a következőképpen tehetjük közzé adatainkat a ThingSpeakbe
void taskWiFiCallback () {
WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& mező1 ="; postStr += Karakterlánc (nedves); postStr += "& mező2 ="; postStr += Karakterlánc (tempC); postStr += "& field3 ="; postStr += Karakterlánc (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /frissítés HTTP /1.1 / n"); wifiClient.print ("Host: api.thingspeak.com / n"); wifiClient.print ("Kapcsolat: bezár / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Content-Type: application/x-www-form-urlencoded / n"); wifiClient.print ("Content-Length:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }
7. lépés: Általános kód
A teljes kód elérhető a github táromban
Hitelek:
- Arduino JSON: ArduinoJson
- ESP826WebServer
- Feladat ütemező
- SHT 31
- I2C szkennelés
- HIH6130 oktatható oktatóanyag
- Drót Arduino
- NCD.io
Ajánlott:
(IOT projekt) Időjárási adatok lekérése az ESP8266 és az Openweather API használatával: 5 lépés
(IOT Project) Időjárási adatok lekérése az ESP8266 és az Openweather API használatával: Ebben az utasításban egy egyszerű IOT projektet fogunk felépíteni, amelyben lekérjük városunk időjárási adatait az openweather.com/api webhelyről, és megjelenítjük azokat a Feldolgozó szoftver segítségével
Egyszerű időjárási kijelző a Raspberry PI és a Cyntech WeatherHAT használatával: 4 lépés
Egyszerű időjárás -megjelenítés a Raspberry PI és a Cyntech WeatherHAT használatával: * 2019 -ben a Yahoo megváltoztatta API -ját, és ez leállt. Nem voltam tisztában a változással. 2020 szeptemberében ezt a projektet frissítettük az OPENWEATHERMAP API használatára. Lásd az alábbi frissített részt, az információ többi része még mindig jó
Oktatási webes alkalmazás: 13 lépés
Oktatási webes alkalmazás: Ezt a projektet a video- és digitális televíziós tanfolyam feladataként hozták létre, amelyben három szinten kellett megoldanunk a tanítás és tanulás problémáját: Módszertani, Funkcionális és koncepcionális. Ezt a projektet feladatként hozták létre
Időjárási adatok a Google Táblázatok és a Google Script használatával: 7 lépés
Időjárási adatok a Google Táblázatok és a Google Script használatával: Ebben a Blogtutban az SHT25 szenzor leolvasásait az Adafruit huzzah ESP8266 segítségével elküldjük a Google lapjaira, ami segít az adatok internetre küldésében. Az adatok küldése a Google lap cellájába nagyon hasznos és az alapvető módszer az adatok mentésére
Építsen időjárási irányítópultot a Dark Sky API használatával: 5 lépés (képekkel)
Építsen időjárás -irányítópultot a Dark Sky API használatával: A Dark Sky az időjárás -előrejelzésre és a vizualizációra specializálódott. A Dark Sky legmenőbb aspektusa az időjárási API, amellyel szinte mindenhol a világon lekérhetjük az időjárási adatokat. Nem csak esős vagy napos idő van, hanem hőmérséklet is