Sisukord:
- Samm: vajalik riistvara
- Samm: riistvaraühendused
- 3. samm: ülesannete ajastamise kood
- Samm: temperatuuri ja niiskuse väärtuste lugemise kood
- Samm: veebiserveri hostimise kood
- 6. samm: kood andmete postitamiseks Thing Speaki
- Samm 7: üldine kood
Video: Ilma veebirakendus esp8266 abil: 7 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
SHT 31 on Sensirioni toodetud temperatuuri ja niiskuse andurid. SHT31 tagab kõrge täpsuse umbes ± 2% RH. Selle niiskus on vahemikus 0 kuni 100% ja temperatuurivahemik -40 kuni 125 ° C. See on 8 sekundi anduri reageerimisajaga palju usaldusväärsem ja kiirem. Selle funktsionaalsus hõlmab täiustatud signaalitöötlust ja I2C ühilduvust. Sellel on erinevad töörežiimid, mis muudavad selle energiatõhusaks.
Selles õpetuses oleme liidestanud SHT 31 Adafruit Huzzah plaadiga. Temperatuuri ja niiskuse väärtuste lugemiseks kasutasime kaitsekilpi ESP8266 I2C. See adapter muudab kõik tihvtid kasutajale kättesaadavaks ja pakub kasutajasõbralikku I2C keskkonda.
Samm: vajalik riistvara
Selle ülesande täitmiseks kasutatav riistvara:
1. SHT31
2. Adafruit Huzzah ESP8266
3. ESP8266 I2C adapter
4. I2C kaabel
Samm: riistvaraühendused
See samm sisaldab riistvara ühendamise juhendit. Selles jaotises selgitatakse põhimõtteliselt anduri ja ESP8266 vahel vajalikke juhtmestiku ühendusi. Ühendused on järgmised.
- SHT31 töötab üle I2C. Ülaltoodud pilt näitab ühendust ESP8266 ja SHT31 mooduli vahel. Kasutame selle jaoks I2C -kaablit, kas saame kasutada 4 F kuni F hüppajajuhtmeid.
- ühte juhet kasutatakse Vcc jaoks, teist traati GND jaoks ja teisi kahte vastavalt SDA ja SCL jaoks.
- Vastavalt I2C adapterile kasutatakse ESP8266 plaadi pin2 ja tihvti 14 vastavalt SDA ja SCL -na
3. samm: ülesannete ajastamise kood
Selles õpetuses teeme kolme toimingut
- Lugege SHT11 andmeid I2C protokolli abil
- hostida veebiserverit ja postitada sensori näit veebilehele
- postitage anduri näidud ThingSpeak API -sse
Selle saavutamiseks kasutame TaskScheduleri teeki. Oleme kavandanud kolm erinevat ülesannet, mis viitavad kolmele erinevale kontrollitoimingule. seda tehakse järgmiselt
- Ülesanne 1 on anduri väärtuse lugemiseks, see ülesanne kestab 1 sekund, kuni see jõuab 10 sekundi aegumiseni.
- Kui ülesanne 1 jõuab oma ajalukku, on ülesanne 2 lubatud ja ülesanne 1 keelatud.
- Selles tagasihelistamises loome ühenduse AP -ga. STA ja AP vahel vahetamise eest hoolitsetakse kahe loogilise muutuja eest
- Ülesandes 2 hostime veebiserverit aadressil 192.168.1.4. See ülesanne kestab iga 5 sekundi järel, kuni jõuab aegumiseni, mis on 50 sekundit
- Kui ülesanne 2 jõuab ajalõpule, on ülesanne 3 lubatud ja ülesanne 2 keelatud.
- Selles tagasihelistamises loome ühenduse STA -ga (kohalik IP)
- Ülesandes 3 postitame anduri näidu pilve ThingSpeak API -sse
- Ülesanne 3 töötab iga viie sekundi tagant, kuni see jõuab oma aegumiseni, st 50 sekundini
- Kui ülesanne 3 jõuab oma aegumiseni, on ülesanne 1 uuesti lubatud ja ülesanne 3 keelatud.
- Kui tagasihelistamist ei helistata või seade on jõudeolekus, läheb see valgusrežiimi, säästes seega energiat.
Planeerija ts;
// Ülesanded i2c -le, veebiserveri hostimine ja postitamine asjades
Ülesanne tI2C (1 * TASK_SECOND, TASK_FOREVER ja & taskI2CCallback, & ts, false, NULL ja taskI2CDisable); Ülesanne tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL ja & taskAPDisable); Task tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL ja & taskWiFiDisable); // ülesannete ajalõpp tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // lubage I2C ülesanne tI2C.enable ();
Samm: temperatuuri ja niiskuse väärtuste lugemise kood
Temperatuuri ja niiskuse väärtuste lugemiseks kasutame Wire.h raamatukogu. See teek hõlbustab i2c suhtlust anduri ja põhiseadme vahel. 0x44 on SHT31 I2C -aadress.
SHT31 töötab erinevas töörežiimis. Selle jaoks saate viidata andmelehele.
Kasutame ühe võtte tegemiseks vastavalt MSB ja LSB -d vastavalt 0x2C ja 0x06.
// I2C ülesande tagasihelistamise tühine ülesanneI2CCallback ()
{Serial.println ("taskI2CStarted"); allkirjastamata int juur [6]; // alustada edastamist alates 0x44; Wire.beginTransmission (Addr); // suure korratavusega ühe lasu edastamiseks kasutame 0x2C (MSB) ja 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // lõppülekanne Wire.endTransmission (); // taotle baite alates 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); kui (Wire.available () == 6) {// andmed [0] ja andmed [1] sisaldavad 16 bitti temperatuuri. juur [0] = Wire.read (); juur [1] = Wire.read (); // andmed [2] sisaldavad 8 bitti CRC juur [2] = Wire.read (); // andmed [3] ja andmed [4] sisaldavad 16 bitti niiskust juur [3] = Wire.read (); juur [4] = Wire.read (); // andmed [5] koosneb 8 -bitisest CRC juurist [5] = Wire.read (); } int temp = (juur [0] * 256) + juur [1]; // nihutage MSB 8 bitti võrra lisage LSB ujuk cTemp = -45,0 + (175,0 * temp /65535,0); ujuk fTemp = (cTemp * 1,8) + 32,0; // nihutage MSB -d 8 bitti, lisage sellele LSB, jagage see täisresolutsiooniga ja * 100 ujuki niiskuse protsendi jaoks = (100,0 * ((juur [3] * 256,0) + juur [4])) /65535.0;
tempC = cTemp;
tempF = fTemp; niiske = niiskus; Serial.print ("Temperatuur C: / t"); Serial.println (String (cTemp, 1)); Serial.print ("Temperatuur F: / t"); Serial.println (String (fTemp, 1)); Serial.print ("Niiskus: / t"); Serial.println (String (niiskus, 1)); }
Samm: veebiserveri hostimise kood
Oleme hostinud oma seadmest veebiserveri staatilisel IP -l.
- Veebiserveri majutamiseks kasutatakse ESP8266WebServeri teeki
- Esmalt peame staatilise IP loomiseks deklareerima IP -aadressi, lüüsi ja alamvõrgu maski
- Nüüd deklareerige oma pääsupunkti jaoks ssid ja parool.
- ühendage pääsupunktiga mis tahes STA -seadmest
- hostida serverit pordil 80, mis on Interneti -suhtlusprotokolli vaikeport, hüperteksti edastusprotokoll (HTTP)
- sissejuhatava veebilehe jaoks sisestage oma veebibrauserisse 192.168.1.4 ja veebilehe sensori lugemise väärtus 192.168.1.4/Väärtus
// staatiline Ip AP jaoks
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 kohaliku WiFi jaoks STA -režiimis
const char WiFissid = "*********";
const char WiFipass = "*********";
// ssid ja pass AP jaoks
const char APssid = "********";
const char APpass = "********";
ESP8266WebServer server (80);
tühine seadistus {
server.on ("/", onHandleDataRoot);
server.on ("/Value", onHandleDataFeed);
server.onNotFound (onHandleNotFound);
}
tühine ülesanneAPCallback () {
Serial.println ("taskAP käivitati");
server.handleClient ();
}
void onHandleDataRoot () {server.send (200, "text/html", PAGE1); }
void onHandleDataFeed () {
server.send (200, "tekst/html", PAGE2); }
void onHandleNotFound () {
String message = "Faili ei leitud / n / n";
sõnum += "URI:";
sõnum += server.uri ();
message += "\ nMetod:";
sõnum += (server.method () == HTTP_GET)? "GET": "POST";
message += "\ nArgumendid:";
sõnum += server.args ();
sõnum += "\ n";
server.send (404, "tekst/tavaline", sõnum);}
void reconnectAPWiFi () {
WiFi -režiim (WIFI_AP_STA);
viivitus (100);
WiFi.disconnect ();
boolean olek = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);
if (olek == tõene) {
Serial.print ("Soft-AP seadistamine …");
boolean ap = WiFi.softAP (APssid, APpass);
kui (ap == tõsi) {
Serial.print ("ühendatud: / t");
// IPAddress myIP = WiFi.softAPIP ();
Serial.println (WiFi.softAPIP ());
}
server.begin ();
}
}
6. samm: kood andmete postitamiseks Thing Speaki
Siin postitame anduri näidud Thing Speaki. selle ülesande täitmiseks on vaja järgmisi samme-
- Looge oma konto, et rääkida
- Looge kanalid ja väljad andurite andmete salvestamiseks
- saame hankida ja postitada andmed ESP-st saidile thingSpeak ja vastupidi, kasutades apetile GET- ja POST-päringuid.
- saame oma andmed ThingSpeaki postitada järgmiselt
void taskWiFiCallback () {
WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& väli1 ="; postStr += String (niiske); postStr += "& väli2 ="; postStr += String (tempC); postStr += "& väli3 ="; postStr += String (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /uuenda HTTP /1.1 / n"); wifiClient.print ("Host: api.thingspeak.com / n"); wifiClient.print ("Ühendus: sulge / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Sisu tüüp: application/x-www-form-urlencoded / n"); wifiClient.print ("Sisu-pikkus:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }
Samm 7: üldine kood
Üldine kood on saadaval minu githubi hoidlas
Autorid:
- Arduino JSON: ArduinoJson
- ESP826WebServer
- Ülesannete planeerija
- SHT 31
- I2C skaneerimine
- HIH6130 juhendatav juhend
- Traat Arduino
- NCD.io
Soovitan:
Digitaalkell mikrokontrolleri abil (AT89S52 ilma RTC -ahelata): 4 sammu (piltidega)
Digitaalkell mikrokontrolleri abil (AT89S52 ilma RTC -ahelata): kirjeldame kella … "Kell on seade, mis loeb ja näitab aega (suhteline)"! . MÄRKUS: lugemiseks kulub 2-3 minutit, palun lugege kogu projekt läbi, muidu ma ei
Hariduse veebirakendus: 13 sammu
Hariduse veebirakendus: see projekt loodi video- ja digitaaltelevisiooni kursuse ülesandena, kus pidime lahendama õpetamise ja õppimise probleemi kolmel tasandil: metoodiline, funktsionaalne ja kontseptuaalne. See projekt loodi ülesandena
Kella tegemine M5stick C abil Arduino IDE abil RTC reaalajas kell M5stack M5stick-C abil: 4 sammu
Kella tegemine M5stick C abil, kasutades Arduino IDE | RTC reaalajas kell koos M5stack M5stick-C-ga: Tere, selles juhendis olevad poisid, me õpime, kuidas Arduino IDE abil kella m5stick-C arendusplaadiga teha. Nii kuvab m5stick kuupäeva, kellaaja ja amp; kuunädal ekraanil
Välk ESP-01 (ESP8266) ilma USB-jadaadapterita Raspberry Pi abil: 3 sammu
Välk ESP-01 (ESP8266) ilma USB-jadaadapterita Raspberry Pi abil: see juhend juhendab teid, kuidas alustada ESP8266 mikrokontrolleri programmeerimist WIFI-moodulis ESP-01. Alustamiseks on vaja ainult (muidugi peale ESP-01 mooduli) vaid Raspberry Pi Jumper juhtmete 10K takisti, mida tahtsin värskendada
Navigeerige robot kingade anduritega, ilma GPS -iga, ilma kaardita: 13 sammu (koos piltidega)
Navigeerige robotil jalatsianduritega, ilma GPS-i, ilma kaardita: robot liigub eelnevalt programmeeritud teel ja edastab (üle Bluetoothi) oma tegeliku liikumisteabe telefoni reaalajas jälgimiseks. Arduino on eelnevalt programmeeritud teega ja oblu kasutatakse roboti liikumise tuvastamiseks. oblu edastab liikumisteavet