Përmbajtje:

Ueb aplikacioni i motit duke përdorur Esp8266: 7 hapa
Ueb aplikacioni i motit duke përdorur Esp8266: 7 hapa

Video: Ueb aplikacioni i motit duke përdorur Esp8266: 7 hapa

Video: Ueb aplikacioni i motit duke përdorur Esp8266: 7 hapa
Video: 12V Bluetooth Relay to control AC or DC load using mobile Phone 2024, Nëntor
Anonim
Ueb aplikacioni i motit duke përdorur Esp8266
Ueb aplikacioni i motit duke përdorur Esp8266

SHT 31 është një Sensorë Temperature dhe Lagështie e prodhuar nga Sensirion. SHT31 siguron një nivel të lartë saktësie rreth ± 2% RH. Gama e lagështisë së saj është nga 0 në 100% dhe diapazoni i temperaturës është nga -40 në 125 ° C. Muchshtë shumë më i besueshëm dhe i shpejtë me 8 sekonda kohë të përgjigjes së sensorit. Funksionaliteti i tij përfshin përpunim të shtuar të sinjalit dhe pajtueshmëri me I2C. Ka mënyra të ndryshme të funksionimit, gjë që e bën atë efikas në energji.

Në këtë tutorial, ne kemi ndërlidhur SHT 31 me tabelën Adafruit Huzzah. Për të lexuar vlerat e Temperaturës dhe Lagështisë ne kemi përdorur mburojën ESP8266 I2C. Ky përshtatës i bën të gjitha kunjat të arritshme për përdoruesit dhe ofron mjedis miqësor ndaj përdoruesit I2C.

Hapi 1: Kërkohet harduer

Kërkohet harduer
Kërkohet harduer
Kërkohet harduer
Kërkohet harduer
Kërkohet harduer
Kërkohet harduer

Pajisjet kompjuterike të përdorura për të përfunduar këtë detyrë:

1. SHT31

2. Adafruit Huzzah ESP8266

3. Përshtatës ESP8266 I2C

4. Kabllo I2C

Hapi 2: Lidhjet e harduerit

Lidhjet e harduerit
Lidhjet e harduerit
Lidhjet e harduerit
Lidhjet e harduerit

Ky hap përfshin udhëzuesin e lidhjes së harduerit. Ky seksion në thelb shpjegon lidhjet e telave të kërkuara midis sensorit dhe ESP8266. Lidhjet janë si më poshtë.

  1. SHT31 punon mbi I2C. Imazhi i mësipërm demonstron lidhjen midis modulit ESP8266 dhe SHT31. Ne po përdorim kabllon I2C për të ose mund të përdorim tela kërcyes 4 F në F.
  2. një tel përdoret për Vcc, tela e dytë për GND dhe dy të tjera përkatësisht për SDA dhe SCL.
  3. Sipas përshtatësit I2C pin2 dhe kunja 14 e një bordi ESP8266 përdoren si SDA dhe SCL respektivisht

Hapi 3: Kodi për caktimin e detyrave

Në këtë tutorial, ne po kryejmë tre operacione

  • Lexoni të dhënat nga SHT11 duke përdorur protokollin I2C
  • strehoni serverin në internet dhe postoni leximin e sensorit në faqen në internet
  • postoni leximet e sensorit në ThingSpeak API

Për ta arritur këtë ne po përdorim bibliotekën TaskScheduler. Ne kemi planifikuar tre detyra të ndryshme duke iu referuar tre operacioneve të ndryshme të kontrollit. kjo bëhet si më poshtë

  • Detyra 1 është për të lexuar vlerën e sensorit, kjo detyrë funksionon për 1 sekondë derisa të arrijë afatin prej 10 sekondash.
  • Kur Task1 arrin afatin e tij Detyra 2 është e aktivizuar dhe Task1 është e çaktivizuar.
  • Ne lidhemi me AP në këtë përgjigje, Dy variabla boole janë marrë për t'u kujdesur për ndërrimin midis STA dhe AP
  • Në Detyrën 2 ne po presim një server në internet në 192.168.1.4. Kjo detyrë funksionon për çdo 5 sekonda derisa të arrijë kohën e saj që është 50 sekonda
  • Kur Detyra 2 arrin afatin, Detyra 3 është aktivizuar dhe Task2 është çaktivizuar.
  • Ne lidhemi me STA (IP lokale) në këtë përgjigje
  • Në Detyrën 3 ne po postojmë leximin e sensorit në cloud ThingSpeak API
  • Detyra 3 funksionon çdo pesë sekonda derisa të arrijë afatin e saj domethënë 50 sekonda
  • Kur Task3 arrin afatin e tij Detyra 1 aktivizohet përsëri dhe Task3 është çaktivizuar.
  • Kur asnjë telefonatë nuk thirret ose pajisja është e papunë, ajo shkon në Gjumë të lehtë, duke kursyer energji.

Planifikues ts;

// Detyrat për i2c, hostimin e serverit në internet dhe postimin në gjërat e folura

Detyra tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Detyra tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); Detyra tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // timeout për detyrat tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // aktivizo detyrën I2C tI2C.aktivizo ();

Hapi 4: Kodi për Leximin e Vlerave të Temperaturës dhe Lagështisë

Ne po përdorim bibliotekën Wire.h për të lexuar vlerat e temperaturës dhe lagështisë. Kjo bibliotekë lehtëson komunikimin i2c midis sensorit dhe pajisjes kryesore. 0x44 është adresa I2C për SHT31.

SHT31 funksionon në një mënyrë të ndryshme operacionesh. Ju mund t'i referoheni fletës së të dhënave për këtë.

Ne po përdorim 0x2C dhe 0x06 si MSB dhe LSB respektivisht për funksionimin me një goditje të vetme.

// I2C task callback void taskI2CCallback ()

{Serial.println ("taskI2CStarted"); rrënjë int e panënshkruar [6]; // filloni transmetimin nga 0x44; Wire.beginTransmetimi (Addr); // për transmetimin e një goditjeje me përsëritje të lartë ne përdorim 0x2C (MSB) dhe 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // përfundoni transmetimin Wire.endTransmission (); // kërko byte nga 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Tela. Kërkohet Nga (Addr, 6); nëse (Wire.available () == 6) {// të dhënat [0] dhe të dhënat [1] përmbajnë 16 bit temperaturë. rrënjë [0] = Wire.read (); rrënjë [1] = Wire.read (); // të dhënat [2] përmbajnë 8 bit të rrënjës CRC [2] = Wire.read (); // të dhënat [3] dhe të dhënat [4] përmbajnë 16 bit rrënjë lagështie [3] = Wire.read (); rrënjë [4] = Wire.read (); // të dhënat [5] përbëhen nga rrënjë CRC 8 bit [5] = Wire.read (); } int temp = (rrënja [0] * 256) + rrënja [1]; // zhvendos MSB me 8 bit shtoni LSB float cTemp = -45.0 + (175.0 * temp /65535.0); noton fTemp = (cTemp * 1.8) + 32.0; // zhvendos MSB me 8 bit shtoni LSB në të ndarë me rezolucion të plotë dhe * 100 për përqindjen e lagështisë së notimit = (100.0 * ((rrënja [3] * 256.0) + rrënja [4])) /65535.0;

tempC = cTemp;

tempF = fTemp; i lagësht = lagështia; Serial.print ("Temperatura në C: / t"); Serial.println (String (cTemp, 1)); Serial.print ("Temperatura në F: / t"); Serial.println (String (fTemp, 1)); Serial.print ("Lagështia: / t"); Serial.println (String (lagështia, 1)); }

Hapi 5: Kodi për pritjen e një serveri në internet

Kodi për pritjen e një serveri në internet
Kodi për pritjen e një serveri në internet
Kodi për pritjen e një serveri në internet
Kodi për pritjen e një serveri në internet

Ne kemi pritur një server në internet nga pajisja jonë në një IP statike.

  • Biblioteka ESP8266WebServer përdoret për të pritur serverin në internet
  • Së pari ne duhet të deklarojmë adresën IP, Gateway dhe maskën e nën -rrjetës për të krijuar IP -në tonë statike
  • Tani deklaroni ssid dhe fjalëkalimin për pikën tuaj të hyrjes.
  • lidheni me pikën e hyrjes nga çdo pajisje STA
  • strehoni serverin në portin 80 i cili është një port i paracaktuar për protokollin e komunikimit në internet, Protokolli i Transferimit të Hipertekstit (HTTP)
  • futni 192.168.1.4 në shfletuesin tuaj të internetit për faqen hyrëse dhe 192.168.1.4/Vlera për faqen e leximit të sensorit

// Ip statike për AP

Adresa IP_local_IP (192, 168, 1, 4);

Adresa IP_gateway (192, 168, 1, 254);

IPAdresa ap_subnet (255, 255, 255, 0); // ssid dhe AP për WiFi lokal në modalitetin STA

const char WiFissid = "*********";

const char WiFipass = "*********";

// ssid dhe kalo për AP

const char APssid = "********";

const char APpass = "********";

Serveri ESP8266WebServer (80);

konfigurimi i pavlefshëm {

server.on ("/", onHandleDataRoot);

server.on ("/Vlera", onHandleDataFeed);

server.onNotFound (onHandleNotFound);

}

detyrë e pavlefshmeAPCallback () {

Serial.println ("taskAP filloi");

server.handleClient ();

}

void onHandleDataRoot () {server.send (200, "text/html", PAGE1); }

void onHandleDataFeed () {

server.send (200, "text/html", PAGE2); }

void onHandleNotFound () {

Mesazhi i vargut = "Skedari nuk u gjet / n / n";

mesazh += "URI:";

mesazh += server.uri ();

mesazh += "\ nMetoda:";

mesazh += (server.metoda () == HTTP_GET)? "MERR": "POST";

mesazh += "\ nArgumentet:";

mesazh += server.args ();

mesazh += "\ n";

server.send (404, "tekst/thjeshtë", mesazh);}

rilidhje e pavlefshmeAPWiFi () {

Modaliteti WiFi (WIFI_AP_STA);

vonesë (100);

WiFi. Shkëputje ();

statusi boolean = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);

nëse (statusi == e vërtetë) {

Serial.print ("Setting soft-AP …");

boolean ap = WiFi.softAP (APssid, APpass);

nëse (ap == e vërtetë) {

Serial.print ("lidhur me: / t");

// IPAdresa myIP = WiFi.softAPIP ();

Serial.println (WiFi.softAPIP ());

}

server.filloj ();

}

}

Hapi 6: Kodi për Postimin e të Dhënave në Gjë

Kodi për Postimin e të Dhënave në Gjë
Kodi për Postimin e të Dhënave në Gjë
Kodi për Postimin e të Dhënave në Gjë
Kodi për Postimin e të Dhënave në Gjë
Kodi për Postimin e të Dhënave në Gjë
Kodi për Postimin e të Dhënave në Gjë
Kodi për Postimin e të Dhënave në Gjë
Kodi për Postimin e të Dhënave në Gjë

Këtu po postojmë leximet e sensorit në Thing Speak. hapat e mëposhtëm janë të nevojshëm për të përfunduar këtë detyrë-

  • Krijoni llogarinë tuaj në gjënë e folur
  • Krijoni kanale dhe fusha për të ruajtur të dhënat tuaja të sensorit
  • ne mund të marrim dhe postojmë të dhënat nga ESP në thingSpeak dhe anasjelltas duke përdorur kërkesat GET dhe POST në api.
  • ne mund t'i postojmë të dhënat tona në ThingSpeak si më poshtë

detyrë e pavlefshmeWiFiCallback () {

WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& field1 ="; postStr += String (i lagësht); postStr += "& field2 ="; postStr += String (tempC); postStr += "& field3 ="; postStr += String (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /përditëso HTTP /1.1 / n"); wifiClient.print ("Pritësi: api.thingspeak.com / n"); wifiClient.print ("Lidhja: mbyll / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Lloji i përmbajtjes: aplikacioni/x-www-forma-urlencoded / n"); wifiClient.print ("Përmbajtja-Gjatësia:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }

Hapi 7: Kodi i përgjithshëm

Kodi i përgjithshëm është i disponueshëm në depon time të github

Kredite:

  • Arduino JSON: ArduinoJson
  • ESP826WebServer
  • Programi i detyrave
  • SHT 31
  • Skanimi I2C
  • Udhëzues udhëzues HIH6130 udhëzues
  • Tela Arduino
  • NCD.io

Recommended: