Sisukord:

Ilma veebirakendus esp8266 abil: 7 sammu
Ilma veebirakendus esp8266 abil: 7 sammu

Video: Ilma veebirakendus esp8266 abil: 7 sammu

Video: Ilma veebirakendus esp8266 abil: 7 sammu
Video: Vana veebirakendus testimine PHP 5.6 versooniga 2024, November
Anonim
Ilma veebirakendus esp8266 abil
Ilma veebirakendus esp8266 abil

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

Vajalik riistvara
Vajalik riistvara
Vajalik riistvara
Vajalik riistvara
Vajalik riistvara
Vajalik riistvara

Selle ülesande täitmiseks kasutatav riistvara:

1. SHT31

2. Adafruit Huzzah ESP8266

3. ESP8266 I2C adapter

4. I2C kaabel

Samm: riistvaraühendused

Riistvaraühendused
Riistvaraühendused
Riistvaraühendused
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.

  1. 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.
  2. ühte juhet kasutatakse Vcc jaoks, teist traati GND jaoks ja teisi kahte vastavalt SDA ja SCL jaoks.
  3. 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

Veebiserveri hostimise kood
Veebiserveri hostimise kood
Veebiserveri hostimise kood
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

Andmete Thing Speakisse postitamise kood
Andmete Thing Speakisse postitamise kood
Andmete Thing Speakisse postitamise kood
Andmete Thing Speakisse postitamise kood
Andmete Thing Speakisse postitamise kood
Andmete Thing Speakisse postitamise kood
Andmete Thing Speakisse postitamise kood
Andmete Thing Speakisse postitamise kood

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: