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: Koodi tietojen lähettämiseen Thing Speakiin
- Vaihe 7: Yleinen koodi
Video: Sää -verkkosovellus käyttämällä Esp8266: 7 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
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:
1. SHT31
2. Adafruit Huzzah ESP8266
3. ESP8266 I2C -sovitin
4. 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: han (paikallinen IP) tässä takaisinsoitossa
- 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 otetaan uudelleen käyttöön 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.
Ajastin ts;
// Tehtävät i2c: lle, web -palvelimen isännöinti ja postitus asioille
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 tyhjä tehtäväI2CCallback ()
{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 tukiaseman ssid ja salasana.
- muodostaa yhteys tukiasemaan mistä tahansa STA -laitteesta
- isännöi palvelinta portilla 80, joka on oletusportti Internet -viestintäprotokollalle, Hypertext Transfer Protocol (HTTP)
- kirjoita selaimeesi 192.168.1.4 intro -verkkosivulle ja 192.168.1.4/Arvo sensorin lukemalle verkkosivulle
// staattinen Ip AP: lle
IPAddress 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: lle
const char APssid = "********";
const char APpass = "********";
ESP8266WebServer -palvelin (80);
mitätön asennus {
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, "teksti/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);
jos (status == true) {
Serial.print ("Soft-AP: n asettaminen …");
boolean ap = WiFi.softAP (APssid, APpass);
jos (ap == totta) {
Serial.print ("yhdistetty: / t");
// IPAddress myIP = WiFi.softAPIP ();
Serial.println (WiFi.softAPIP ());
}
server.begin ();
}
}
Vaihe 6: 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 tilisi juttuihin
- Luo kanavia ja kenttiä anturitietojesi tallentamiseen
- 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
void 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 7: Yleinen koodi
Yleinen koodi on saatavilla github -arkistossani
Laajuus:
- Arduino JSON: ArduinoJson
- ESP826WebServer
- Tehtävien ajoitus
- SHT 31
- I2C -skannaus
- HIH6130 -opetusohjelma
- Lanka Arduino
- NCD.io
Suositeltava:
Yksinkertainen sääasema käyttämällä ESP8266: 6 vaihetta (kuvilla)
Yksinkertainen sääasema ESP8266: n avulla: Tässä opetusohjelmassa jaan, kuinka ESP8266: n avulla saadaan tietoja, kuten lämpötila, paine, ilmasto jne., Ja YouTube -tietoja, kuten tilaajat & Katselukerrat yhteensä. ja näyttää tiedot sarjamonitorissa ja näyttää ne nestekidenäytössä. Tiedot ovat f
Tee itse -edullinen kotiautomaatio käyttämällä Esp8266: 6 vaihetta
DIY Halvat kotiautomaatiot Esp8266: lla: Hei kaikki, tänään näissä ohjeissa aion näyttää teille, kuinka valmistelin oman kodin automaation askeleena kohti älykästä kotia käyttämällä ESP 8266 -moduulia, joka tunnetaan yleisesti nimellä nodemcu, joten tuhlaamatta aikaa aloitetaan:)
IOT - Lähetä tiedot Thingspeakiin käyttämällä ESP8266: 3 vaihetta
IOT | Lähetä tiedot asioiden esittelyyn käyttämällä ESP8266: Nykyään IoT on trendi ja monilla koneilla on tietoja ladattavaksi pilven kautta ja analysoitava tiedot. Pienet anturit päivittävät tiedot pilvestä ja toimilaite toisesta päästä vaikuttaa siihen, aion selittää yhden IoT -esimerkin. Minä tämän artikkelin ja minä
WiFi RGB -matkapuhelinlamppu käyttämällä ESP8266: 6 vaihetta
WiFi RGB -matkapuhelinlamppu ESP8266: n avulla: Tässä viestissä rakennamme kauniin RGB -solulampun, jota voidaan ohjata WiFi -yhteydellä. Ohjaussivu koostuu väripyörästä, jonka avulla voit vaihtaa värejä nopeasti, ja voit myös määrittää RGB -arvot suoraan, jotta voit luoda yhteensä yli
Sää Kynttilä - Sää ja lämpötila yhdellä silmäyksellä: 8 vaihetta
Sääkynttilä - Sää ja lämpötila yhdellä silmäyksellä: Tämän taikakynttilän avulla voit kertoa hetkellisen lämpötilan ja olosuhteet heti