Sisällysluettelo:

THINGSPEAK LÄMPÖTILA- JA KOSTEUSSOVELLUS ESP8266: 9 -vaiheilla
THINGSPEAK LÄMPÖTILA- JA KOSTEUSSOVELLUS ESP8266: 9 -vaiheilla

Video: THINGSPEAK LÄMPÖTILA- JA KOSTEUSSOVELLUS ESP8266: 9 -vaiheilla

Video: THINGSPEAK LÄMPÖTILA- JA KOSTEUSSOVELLUS ESP8266: 9 -vaiheilla
Video: Measure Temperature and Humidity WiFi with ESP32 DHT11 and DHT22 - Robojax 2024, Marraskuu
Anonim
THINGSPEAK LÄMPÖTILA- JA KOSTEUSSOVELLUS ESP8266 -KÄYTTÖÖN
THINGSPEAK LÄMPÖTILA- JA KOSTEUSSOVELLUS ESP8266 -KÄYTTÖÖN

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

Laitteisto vaaditaan
Laitteisto vaaditaan
Laitteisto vaaditaan
Laitteisto vaaditaan
Laitteisto vaaditaan
Laitteisto vaaditaan

Tämän tehtävän suorittamiseen käytetyt laitteistot:

  1. SHT 31
  2. Adafruit Huzzah ESP8266
  3. ESP8266 I2C -sovitin
  4. I2C -kaapeli

Vaihe 2: Laitteistoyhteydet

Laitteiston liitännät
Laitteiston liitännät

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.

  1. 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.
  2. toista johdinta käytetään Vcc: lle, toista johtoa GND: lle ja kaksi muuta johdolle SDA: lle ja SCL: lle
  3. I2C -sovittimen mukaan ESP8266 -kortin pin2 ja nasta 14 käytetään SDA: na ja SCL: nä

Vaihe 3: Tehtävien ajoituksen koodi

Tehtävien ajoituksen koodi
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

Lämpötila- ja kosteusarvojen lukemiskoodi
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

Koodi verkkopalvelimen isännöintiin
Koodi verkkopalvelimen isännöintiin
Koodi verkkopalvelimen isännöintiin
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

Thingspeakin asennus
Thingspeakin asennus
Thingspeakin asennus
Thingspeakin asennus
Thingspeak Setup
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

Koodi tietojen lähettämiseen Thing Speakiin
Koodi tietojen lähettämiseen Thing Speakiin
Koodi tietojen lähettämiseen Thing Speakiin
Koodi tietojen lähettämiseen Thing Speakiin
Koodi tietojen lähettämiseen Thing Speakiin
Koodi tietojen lähettämiseen Thing Speakiin
Koodi tietojen lähettämiseen Thing Speakiin
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: