Përmbajtje:

THINGSPEAK TEMPERATURA DHE LARGSIA PPR APLIKIMIN ESP8266: 9 hapa
THINGSPEAK TEMPERATURA DHE LARGSIA PPR APLIKIMIN ESP8266: 9 hapa

Video: THINGSPEAK TEMPERATURA DHE LARGSIA PPR APLIKIMIN ESP8266: 9 hapa

Video: THINGSPEAK TEMPERATURA DHE LARGSIA PPR APLIKIMIN ESP8266: 9 hapa
Video: How to make IoT project using raspberry pi | Interface sensors with Thingspeak | Experimentalist. 2024, Nëntor
Anonim
APLIKIMI I TEMPERATURES S TH THINGSPEAK DHE LAGUMSIS US P USR PINGRDORIMIN ESP8266
APLIKIMI I TEMPERATURES S TH THINGSPEAK DHE LAGUMSIS US P USR PINGRDORIMIN ESP8266

Ndërsa merresha me gjërat e mia elektronike, më erdhi kjo ide për të bërë aplikacionin e motit të bazuar në ueb. Ky aplikacion në internet përdor sensorin SHT31 për të marrë të dhënat e temperaturës dhe lagështisë në kohë reale. Ne kemi vendosur projektin tonë në modulin ESP8266 WiFi. Online ose offline! Nuk ka nevojë të shqetësoheni, pavarësisht nëse jeni online ose jashtë linje, do të merrni përditësimet e motit nga kudo dhe në çdo kohë. Ky aplikacion në internet poston të dhëna në serverin lokal të internetit, si dhe në cloud. Për operacionet cloud, ne po përdorim ThingSpeak API. SHT31 përdor I2C për të marrë të dhënat nga sensori.

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. SHT 31
  2. Adafruit Huzzah ESP8266
  3. Përshtatës ESP8266 I2C
  4. Kabllo I2C

Hapi 2: 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

Kodi për caktimin e detyrave
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 kohën e vet, 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ë kalback Në Detyrën 3 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 kohën e vet, 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.

void taskI2CCallback ();

void taskI2CDisable (); void taskAPCallback (); void taskAPDisable (); void taskWiFiCallback (); void taskWiFiDisable (); // Detyrat për i2c, web serverin pritës dhe postimin në thingspeak Task tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); 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ë

Kodi për Leximin e Vlerave të Temperaturës dhe Lagështisë
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ë e 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 hyrje në uebfaqe dhe 192.168.1.4/Vlera për leximin e sensorit në uebfaqe

// IP statike për APIPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); Adresa IP_subnet (255, 255, 255, 0); // ssid dhe AP për WiFi lokal në modalitetin STA const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid dhe pass për AP const char APssid = "********"; const char APpass = "********"; Serveri ESP8266WebServer (80); void setup {server.on ("/", onHandleDataRoot); server.on ("/Vlera", onHandleDataFeed); server.onNotFound (onHandleNotFound);} task voidAPCallback () {Serial.println ("taskAP filloi"); server.handleClient (); } void onHandleDataRoot () {server.send (200, "text/html", PAGE1); } void onHandleDataFeed () {server.send (200, "text/html", PAGE2); } void onHandleNotFound () {String message = "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 () {WiFi.mode (WIFI_AP_STA); vonesë (100); WiFi. Shkëputje (); statusi boolean = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == true) {Serial.print ("Setting soft-AP …"); boolean ap = WiFi.softAP (APssid, APpass); if (ap == true) {Serial.print ("lidhur me: / t"); // IPAdresa myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();

}

Hapi 6: Konfigurimi i Thingspeak

Konfigurimi i Thingspeak
Konfigurimi i Thingspeak
Konfigurimi i Thingspeak
Konfigurimi i Thingspeak
Konfigurimi i Thingspeak
Konfigurimi i Thingspeak

ThingSpeak është një platformë IoT. ThingSpeak është një shërbim falas në internet që ju lejon të mblidhni dhe ruani të dhënat e sensorëve në cloud.

Në këtë hap, unë do t'ju jap një procedurë të shkurtër për të krijuar llogarinë tuaj Thing Speak

  • Regjistrohuni për llogarinë e re të përdoruesit në ThingSpeak
  • Krijoni një kanal të ri duke zgjedhur Kanalet, Kanalet e Mia dhe më pas Kanali i Ri
  • Ndryshoni fushat tuaja
  • Këto fusha përmbajnë të dhënat tuaja të sensorit
  • Shënoni çelësin API të Shkrimit dhe ID -në e kanalit
  • Në skicën tuaj Arduino, mund të përdorni bibliotekën ThingSpeak për Arduino ose mund t'i postoni drejtpërdrejt të dhënat në ThingSpeak API
  • hapi tjetër përpunon rreth postimit të përmbajtjes në Thing Speak API

Hapi 7: 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ë thing talk 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ë

id taskWiFiCallback () {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 8: Kodi i përgjithshëm

Kodi i përgjithshëm është i disponueshëm në depon time GitHub

Hapi 9: Kredite

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

Recommended: