Sisällysluettelo:
- Vaihe 1: Laitteisto vaaditaan
- Vaihe 2: Laitteistoyhteydet
- Vaihe 3: Tehtävien ajoituksen koodi
- Vaihe 4: Lämpötila- ja kosteusarvojen lukemiskoodi
- Vaihe 5: Koodi verkkopalvelimen isännöintiin
- Vaihe 6: Thingspeak Setup
- Vaihe 7: Koodi tietojen lähettämiseen Thing Speakiin
- Vaihe 8: Yleinen koodi
- Vaihe 9: Lainat
Video: THINGSPEAK LÄMPÖTILA- JA KOSTEUSSOVELLUS ESP8266: 9 -vaiheilla
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Elektronisten asioiden parissa, sain idean tehdä web-pohjainen sääsovellus. Tämä verkkosovellus käyttää SHT31-anturia reaaliaikaisten lämpötila- ja kosteustietojen saamiseen. Olemme ottaneet projektimme käyttöön ESP8266 WiFi -moduulissa. Online tai offline! Ei tarvitse huolehtia, olitpa online- tai offline -tilassa, saat sääpäivityksiä mistä ja milloin tahansa. Tämä verkkosovellus lähettää tietoja paikalliselle verkkopalvelimelle ja pilveen. Pilvitoiminnoissa käytämme ThingSpeak -sovellusliittymää. SHT31 käyttää I2C: tä tiedon vastaanottamiseen anturista.
SHT 31 on Sensirionin valmistama lämpötila- ja kosteusanturi. SHT31 tarjoaa korkean tarkkuuden noin ± 2% RH. Sen kosteusalue on 0-100% ja lämpötila -alue -40-125 ° C. Se on paljon luotettavampi ja nopeampi, kun anturin vasteaika on 8 sekuntia. Sen toiminnallisuus sisältää parannetun signaalinkäsittelyn ja I2C -yhteensopivuuden. Siinä on erilaisia toimintatapoja, mikä tekee siitä energiatehokkaan.
Tässä opetusohjelmassa olemme liittäneet SHT 31: n Adafruit Huzzah -levyyn. Lämpötila- ja kosteusarvojen lukemiseen olemme käyttäneet ESP8266 I2C -suojaa. Tämä sovitin tuo kaikki nastat käyttäjän saataville ja tarjoaa käyttäjäystävällisen I2C-ympäristön.
Vaihe 1: Laitteisto vaaditaan
Tämän tehtävän suorittamiseen käytetyt laitteistot:
- SHT 31
- Adafruit Huzzah ESP8266
- ESP8266 I2C -sovitin
- I2C -kaapeli
Vaihe 2: Laitteistoyhteydet
Tämä vaihe sisältää laitteiston kytkentäoppaan. Tässä osassa selitetään periaatteessa anturin ja ESP8266: n väliset johdotusliitännät. Liitännät ovat seuraavat.
- SHT31 toimii yli I2C. Yllä oleva kuva osoittaa yhteyden ESP8266: n ja SHT31 -moduulin välillä. Käytämme siihen I2C -kaapelia, joko joko 4 - F -hyppyjohtimia.
- toista johdinta käytetään Vcc: lle, toista johtoa GND: lle ja kaksi muuta johdolle SDA: lle ja SCL: lle
- I2C -sovittimen mukaan ESP8266 -kortin pin2 ja nasta 14 käytetään SDA: na ja SCL: nä
Vaihe 3: Tehtävien ajoituksen koodi
Tässä opetusohjelmassa suoritamme kolme toimintoa
- Lue SHT11 -tiedot I2C -protokollaa käyttäen
- isännöi verkkopalvelinta ja lähetä anturin lukema verkkosivulle
- lähetä anturin lukemat ThingSpeak -sovellusliittymään
Tämän saavuttamiseksi käytämme TaskScheduler -kirjastoa. Olemme suunnitelleet kolme eri tehtävää, jotka viittaavat kolmeen erilaiseen ohjaustoimintoon. tämä tehdään seuraavasti
- Tehtävä 1 on anturin arvon lukemiseen, tämä tehtävä kestää 1 sekunnin, kunnes se saavuttaa 10 sekunnin aikakatkaisun.
- Kun tehtävä1 saavuttaa aikakatkaisunsa, tehtävä 2 on käytössä ja tehtävä 1 on poistettu käytöstä.
- Yhdistämme AP: hen tässä takaisinsoitossa. Kaksi boolen muuttujaa otetaan huomioon STA: n ja AP: n välillä vaihtamisen varmistamiseksi
- Tehtävässä 2 isännöimme verkkopalvelinta osoitteessa 192.168.1.4. Tämä tehtävä suoritetaan joka 5 sekunti, kunnes se saavuttaa aikakatkaisunsa, joka on 50 sekuntia
-
Kun tehtävä 2 saavuttaa aikakatkaisun, tehtävä 3 on käytössä ja tehtävä 2 on poistettu käytöstä.
- Yhdistämme STA: n (paikallinen IP) tässä selityksessä. Tehtävässä 3 lähetämme anturin lukeman ThingSpeak -sovellusliittymään
- Tehtävä 3 suoritetaan joka viides sekunti, kunnes se saavuttaa aikakatkaisunsa eli 50 sekuntia
- Kun Task3 saavuttaa aikakatkaisunsa, tehtävä 1 on jälleen käytössä ja tehtävä 3 on poistettu käytöstä.
- Kun takaisinsoittoa ei soiteta tai laite on käyttämättömänä, se siirtyy Light Sleep -tilaan, mikä säästää virtaa.
mitätön tehtäväI2CCallback ();
void taskI2CDisable (); mitätön tehtäväAPCallback (); void taskAPDisable (); mitätön tehtäväWiFiCallback (); void taskWiFiDisable (); // Tehtävät i2c: lle, web -palvelimen isännöinti ja asioiden puhuminen Tehtävä tI2C (1 * TASK_SECOND, TASK_FOREVER ja & taskI2CCallback, & ts, false, NULL ja taskI2CDisable); Tehtävä tI2C (1 * TASK_SECOND, TASK_FOREVER ja & taskI2CCallback, & ts, false, NULL ja taskI2CDisable); Tehtävä tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL ja taskAPDisable); Tehtävä tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL ja & taskWiFiDisable); // tehtävien aikakatkaisu tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // ota käyttöön I2C -tehtävä tI2C.enable ();
Vaihe 4: Lämpötila- ja kosteusarvojen lukemiskoodi
Käytämme Wire.h -kirjastoa lämpötila- ja kosteusarvojen lukemiseen. Tämä kirjasto helpottaa i2c -tiedonsiirtoa anturin ja päälaitteen välillä. 0x44 on SHT31: n I2C -osoite.
SHT31 toimii eri toimintatilassa. Voit viitata siihen tietolomakkeeseen. Käytämme 0x2C: tä ja 0x06 MSB: nä ja LSB: nä vastaavasti yhden laukauksen toiminnassa.
// I2C -tehtävän takaisinsoitto void taskI2CCallback () {Serial.println ("taskI2CStarted"); unsigned int root [6]; // aloita lähetys 0x44; Wire.beginTransmission (Addr); // yhden laukauksen lähetyksessä, jolla on suuri toistettavuus, käytämme 0x2C (MSB) ja 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // lopeta lähetys Wire.endTransmission (); // pyydä tavuja 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); jos (Wire.available () == 6) {// data [0] ja data [1] sisältävät 16 bittiä lämpötilaa. root [0] = Wire.read (); root [1] = Wire.read (); // data [2] sisältää 8 bittiä CRC -juuria [2] = Wire.read (); // data [3] ja data [4] sisältävät 16 bittiä kosteusjuuria [3] = Wire.read (); root [4] = Wire.read (); // data [5] koostuu 8 -bittisestä CRC -juurista [5] = Wire.read (); } int temp = (root [0] * 256) + root [1]; // siirtää MSB: tä 8 bitillä lisää LSB float cTemp = -45,0 + (175,0 * temp /65535,0); kelluva fTemp = (cTemp * 1,8) + 32,0; // siirrä MSB: tä 8 bitillä, lisää siihen LSB jakautuu täyteen resoluutioon ja * 100 prosenttiin kelluvasta kosteudesta = (100,0 * ((juuri [3] * 256,0) + juuri [4])) /65535.0; tempC = cTemp; tempF = fTemp; kostea = kosteus; Serial.print ("Lämpötila C: / t"); Serial.println (Jono (cTemp, 1)); Serial.print ("Lämpötila F: / t"); Sarja.println (Jono (fTemp, 1)); Serial.print ("Kosteus: / t"); Serial.println (Jono (kosteus, 1)); }
Vaihe 5: Koodi verkkopalvelimen isännöintiin
Olemme isännöineet verkkopalvelinta laitteeltamme staattisella IP -osoitteella.
ESP8266WebServer -kirjastoa käytetään verkkopalvelimen isännöintiin
- Ensin meidän on ilmoitettava IP -osoite, yhdyskäytävä ja aliverkon peite staattisen IP -osoitteemme luomiseksi
- Ilmoita nyt tukiasemasi ssid ja salasana. Muodosta yhteys tukiasemaan mistä tahansa STA -laitteesta
- isännöi palvelinta portilla 80, joka on oletusportti Internet -yhteyskäytännölle, Hypertext Transfer Protocol (HTTP) kirjoita 192.168.1.4 selaimellesi intro -verkkosivulle ja 192.168.1.4/Arvo sensorin lukemalle verkkosivulle
// staattinen Ip APIP -osoitteelle ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0); // ssid ja AP paikallista WiFi -yhteyttä varten STA -tilassa const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid ja pass AP const char APssid = "********"; const char APpass = "********"; ESP8266WebServer -palvelin (80); void setup {server.on ("/", onHandleDataRoot); server.on ("/Arvo", onHandleDataFeed); server.onNotFound (onHandleNotFound);} void taskAPCallback () {Serial.println ("taskAP aloitettu"); server.handleClient (); } void onHandleDataRoot () {server.send (200, "text/html", PAGE1); } void onHandleDataFeed () {server.send (200, "text/html", PAGE2); } void onHandleNotFound () {String message = "Tiedostoa ei löydy / n / n"; message += "URI:"; viesti += palvelin.uri (); message += "\ nMenetelmä:"; viesti += (palvelin.metodi () == HTTP_GET)? "GET": "POST"; message += "\ nArgumentit:"; viesti += palvelin.args (); viesti += "\ n"; server.send (404, "teksti/tavallinen", viesti); } void reconnectAPWiFi () {WiFi.mode (WIFI_AP_STA); viive (100); WiFi. Irrota (); boolen tila = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == true) {Serial.print ("Soft-AP: n asetus …"); boolean ap = WiFi.softAP (APssid, APpass); if (ap == true) {Serial.print ("connected to: / t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();
}
Vaihe 6: Thingspeak Setup
ThingSpeak on IoT -alusta. ThingSpeak on ilmainen verkkopalvelu, jonka avulla voit kerätä ja tallentaa anturitietoja pilveen.
Tässä vaiheessa annan sinulle lyhyen menettelyn Thing Speak -tilisi määrittämiseksi
- Hanki uusi käyttäjätili ThingSpeakissa
- Luo uusi kanava valitsemalla Kanavat, Omat kanavat ja sitten Uusi kanava
- Muokkaa kenttiä
- Nämä kentät sisältävät anturitietosi
- Huomaa Write API -avain ja kanavatunnus
- Arduino -luonnoksessasi voit käyttää Arduinon ThingSpeak -kirjastoa tai voit suoraan JÄLJESTÄ tietoja ThingSpeak -sovellusliittymään
- seuraava vaihe käsittelee sisällön lähettämistä Thing Speak -sovellusliittymään
Vaihe 7: Koodi tietojen lähettämiseen Thing Speakiin
Täällä lähetämme anturin lukemat Thing Speakiin. seuraavat vaiheet ovat tarpeen tämän tehtävän suorittamiseksi-
- Luo tili puheessa Luo kanavia ja kenttiä anturitietojesi tallentamiseksi
- voimme saada ja lähettää tietoja ESP: stä thingSpeakiin ja päinvastoin käyttämällä GET- ja POST-pyyntöjä apiin.
- voimme lähettää tietomme ThingSpeakiin seuraavasti
id taskWiFiCallback () {WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& field1 ="; postStr += Jono (kostea); postStr += "& field2 ="; postStr += Jono (tempC); postStr += "& field3 ="; postStr += Jono (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /päivitä HTTP /1.1 / n"); wifiClient.print ("Isäntä: api.thingspeak.com / n"); wifiClient.print ("Yhteys: sulje / 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 (); }
Vaihe 8: Yleinen koodi
Yleinen koodi on saatavana GitHub -arkistostani
Vaihe 9: Lainat
- Arduino JSON
- ESP826WebServer
- Tehtävien ajoitus
- SHT 31
- I2C -skannaus
- HIH6130 -opetusohjelma
- Johto
- NCD.io
Suositeltava:
Huoneen lämpötila Internetin kautta BLYNK ESP8266 & DHT11: 5 vaihetta (kuvilla)
Huonelämpötila Internetin välityksellä BLYNK ESP8266 & DHT11: Hei kaverit, tänään teemme huonelämpötilamittarin, jonka avulla voimme valvoa huoneitamme kaikkialta maailmasta ja käyttää tätä varten BLYNK IoT -levymuotoa ja käytämme DHT11 huonelämpötilan lukemiseen, käytämme ESP8266: a
Hälytystä käyttävä ThingSpeak+ESP32-langaton lämpötila- kosteusanturi: 7 vaihetta
Hälytystä käyttävä ThingSpeak+ESP32-langaton lämpötila- kosteusanturi: Tässä opetusohjelmassa mitataan erilaisia lämpötila- ja kosteustietoja käyttämällä lämpötila- ja kosteusanturia. Opit myös lähettämään nämä tiedot ThingSpeakiin. Jotta voit luoda sähköpostihälytyksen tiettyyn arvoon
ThingSpeak, IFTTT, lämpötila- ja kosteusanturi ja Google -taulukko: 8 vaihetta
ThingSpeak, IFTTT, lämpötila- ja kosteusanturi ja Google -taulukko: Tässä projektissa mitataan lämpötila ja kosteus käyttämällä NCD -lämpötila- ja kosteusanturia, ESP32: ta ja ThingSpeakia. Lähetämme myös erilaisia lämpötila- ja kosteuslukuja Google Sheetille ThingSpeakin ja IFTTT: n avulla analysoidaksesi
IoT-ThingSpeak-ESP32-pitkän kantaman langaton tärinä ja lämpötila: 6 vaihetta
IoT-ThingSpeak-ESP32-pitkän kantaman langaton tärinä ja lämpötila: Tässä projektissa mitataan tärinää ja lämpötilaa käyttämällä NCD-tärinä- ja lämpötila-antureita, Esp32, ThingSpeak. - koneiden ja komponenttien moottoroiduissa laitteissa. Tärinä i
ThingSpeak, ESP32 ja pitkän kantaman langaton lämpötila ja kosteus: 5 vaihetta
ThingSpeak, ESP32 ja pitkän kantaman langaton lämpötila ja kosteus: Tässä opetusohjelmassa mitataan erilaisia lämpötila- ja kosteustietoja käyttämällä lämpötila- ja kosteusanturia. Opit myös lähettämään nämä tiedot ThingSpeakiin. Jotta voit analysoida sitä mistä tahansa eri sovelluksia varten