Tartalomjegyzék:

THINGSPEAK HŐMÉRSÉKLET ÉS PÁRÁNYALKALMAZÁS ESP8266 használatával: 9 lépés
THINGSPEAK HŐMÉRSÉKLET ÉS PÁRÁNYALKALMAZÁS ESP8266 használatával: 9 lépés

Videó: THINGSPEAK HŐMÉRSÉKLET ÉS PÁRÁNYALKALMAZÁS ESP8266 használatával: 9 lépés

Videó: THINGSPEAK HŐMÉRSÉKLET ÉS PÁRÁNYALKALMAZÁS ESP8266 használatával: 9 lépés
Videó: Internet rádió építése. ESP8266 a lelke, de a tudásod is kell, hogy a kedvenc rádiód szóljon. 2024, November
Anonim
THINGSPEAK HŐMÉRSÉKLET ÉS PÁRÁNYALKALMAZÁS ESP8266 használatával
THINGSPEAK HŐMÉRSÉKLET ÉS PÁRÁNYALKALMAZÁS ESP8266 használatával

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

Hardver szükséges
Hardver szükséges
Hardver szükséges
Hardver szükséges
Hardver szükséges
Hardver szükséges

A feladat végrehajtásához használt hardver:

  1. SHT 31
  2. Adafruit Huzzah ESP8266
  3. ESP8266 I2C adapter
  4. I2C kábel

2. lépés: Hardverkapcsolatok

Hardver kapcsolatok
Hardver kapcsolatok

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.

  1. 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.
  2. 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
  3. 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

Feladatütemezési kód
Feladatütemezési kód

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 hőmérséklet és páratartalom értékek leolvasásának kódja
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 webszerver tárhelyének kódja
Egy webszerver tárhelyének kódja
Egy webszerver tárhelyének kódja
Egy 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 beállítása
A Thingspeak beállítása
A Thingspeak beállítása
A Thingspeak beállítása
A Thingspeak beállítása
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

Az adatok közzétételének kódja a Thing Speak -hez
Az adatok közzétételének kódja a Thing Speak -hez
Az adatok közzétételének kódja a Thing Speak -hez
Az adatok közzétételének kódja a Thing Speak -hez
Az adatok közzétételének kódja a Thing Speak -hez
Az adatok közzétételének kódja a Thing Speak -hez
Az adatok közzétételének kódja a Thing Speak -hez
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: