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: A Thingspeak beállítása
- 7. lépés: Az adatok közzétételének kódja a Thing Speak -hez
- 8. lépés: Általános kód
- 9. lépés: Hitelek
Videó: THINGSPEAK HŐMÉRSÉKLET ÉS PÁRÁNYALKALMAZÁS ESP8266 használatával: 9 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
Miközben az elektronikus dolgaimmal foglalkozom, eszembe jutott, hogy webalapú időjárási alkalmazást készítsek. Ez a webes alkalmazás az SHT31 érzékelőt használja a valós idejű hőmérséklet- és páratartalom-adatok lekérésére. A projektünket az ESP8266 WiFi modulon telepítettük. Online vagy offline! Nem kell aggódnia, akár online, akár offline, bárhonnan és bármikor megkapja az időjárás -frissítéseket. Ez a webalkalmazás adatokat küld a helyi webszerverre, valamint a felhőbe. A felhőműveletekhez ThingSpeak API -t használunk. Az SHT31 az I2C -t használja az adatok érzékeléséhez.
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:
- SHT 31
- Adafruit Huzzah ESP8266
- ESP8266 I2C adapter
- 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 a határidőt, 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 közzétesszük az érzékelő leolvasását a ThingSpeak API felhőbe
- 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, 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.
void taskI2CCallback ();
void taskI2CDisable (); void taskAPCCalback (); void taskAPDisable (); void taskWiFiCallback (); void taskWiFiDisable (); // Feladatok az i2c -hez, webkiszolgáló tárolása és közzététel a thingspeak -en Task tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL és taskI2CDisable); 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ása void taskI2CCallback () {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ében az intro weboldalhoz, és a 192.168.1.4/Érték az olvasó weboldalhoz értéket
// statikus Ip APIPAddress 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 AP const char APssid = "********"; const char APpass = "********"; ESP8266WebServer szerver (80); void setup {server.on ("/", onHandleDataRoot); server.on ("/Érték", onHandleDataFeed); server.onNotFound (onHandleNotFound);} void taskAPCallback () {Serial.println ("taskAP elindítva"); 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, "szöveg/sima", ü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); if (ap == igaz) {Serial.print ("csatlakoztatva: / t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();
}
6. lépés: A Thingspeak beállítása
A ThingSpeak egy IoT platform. A ThingSpeak egy ingyenes webszolgáltatás, amely lehetővé teszi az érzékelő adatok gyűjtését és tárolását a felhőben.
Ebben a lépésben egy rövid eljárást adok a Thing Speak -fiók beállításához
- Regisztráljon új felhasználói fiókra a ThingSpeak szolgáltatásban
- Hozzon létre új csatornát a Csatornák, Saját csatornák, majd az Új csatorna kiválasztásával
- Szerkessze a mezőket
- Ezek a mezők tartalmazzák az érzékelő adatait
- Jegyezze meg az API írási kulcs és a csatornaazonosítót
- Az Arduino vázlatán használhatja a ThingSpeak könyvtárat az Arduino számára, vagy közvetlenül posztolhatja az adatokat a ThingSpeak API -ba
- a következő lépés a tartalom Thing Speak API -ba történő közzétételével foglalkozik
7. 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 beszédben. Hozzon létre csatornákat és mezőket az érzékelőadatok tárolásához
- 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
id 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 (); }
8. lépés: Általános kód
A teljes kód elérhető a GitHub lerakatomban
9. lépés: Hitelek
- Arduino JSON
- ESP826WebServer
- Feladat ütemező
- SHT 31
- I2C szkennelés
- HIH6130 oktatható oktatóanyag
- Huzal
- NCD.io
Ajánlott:
DHT hőmérséklet és páratartalom monitorozás az ESP8266 és az AskSensors IoT platform használatával: 8 lépés
DHT hőmérséklet- és páratartalom -figyelés az ESP8266 és az AskSensors IoT Platform használatával: Egy korábbi utasításban lépésről lépésre ismertettem az ESP8266 nodeMCU és az AskSensors IoT platform használatának megkezdéséhez. Ebben az oktatóanyagban DHT11 érzékelőt csatlakoztatok az MCU csomóponthoz. A DHT11 általánosan használt hőmérséklet és páratartalom
ESP8266 Nodemcu hőmérséklet -figyelés DHT11 használatával a helyi webszerveren - Szobahőmérséklet és páratartalom beállítása a böngészőben: 6 lépés
ESP8266 Nodemcu hőmérséklet -figyelés DHT11 használatával a helyi webszerveren | Szobahőmérséklet és páratartalom beállítása böngészőjében: Sziasztok, ma páratartalmat és amp; hőmérséklet -felügyeleti rendszer ESP 8266 NODEMCU & DHT11 hőmérséklet -érzékelő. A hőmérsékletet és a páratartalmat a DHT11 Sensor & böngészőben látható, hogy melyik weboldalt fogják kezelni
Hőmérséklet leolvasása az LM35 hőmérséklet -érzékelő használatával Arduino Uno segítségével: 4 lépés
Hőmérséklet leolvasása az LM35 hőmérséklet -érzékelő használatával az Arduino Uno segítségével: Sziasztok, srácok, ebben az útmutatóban megtanuljuk, hogyan kell használni az LM35 -öt az Arduino -val. Az Lm35 egy hőmérséklet -érzékelő, amely -55 ° C és 150 ° C közötti hőmérséklet -értékeket képes leolvasni. Ez egy 3 kivezetésű eszköz, amely analóg feszültséget biztosít a hőmérséklettel arányosan. Hig
ESP8266 NodeMCU hozzáférési pont (AP) webszerverhez DT11 hőmérséklet -érzékelővel és nyomtatási hőmérséklet és páratartalom a böngészőben: 5 lépés
ESP8266 NodeMCU hozzáférési pont (AP) webszerverhez DT11 hőmérséklet -érzékelővel és nyomtatási hőmérséklet és páratartalom a böngészőben: Sziasztok srácok, a legtöbb projektben ESP8266 -ot használunk, és a legtöbb projektben ESP8266 -ot használunk webszerverként, így az adatok hozzáférhetők bármilyen eszköz wifi -n keresztül az ESP8266 által üzemeltetett webszerver elérésével, de az egyetlen probléma az, hogy működő útválasztóra van szükségünk
ESP32 NTP hőmérséklet szonda főzési hőmérő Steinhart-Hart korrekcióval és hőmérséklet riasztással: 7 lépés (képekkel)
ESP32 NTP hőmérséklet szonda főzési hőmérő Steinhart-Hart korrekcióval és hőmérséklet riasztással: Még mindig úton van egy "közelgő projekt" befejezéséhez, "ESP32 NTP hőmérséklet szonda főzési hőmérő Steinhart-Hart korrekcióval és hőmérséklet riasztással" egy utasítás, amely bemutatja, hogyan adhatok hozzá NTP hőmérséklet -szondát, piezo b