Përmbajtje:
- Hapi 1: Kërkohet harduer
- Hapi 2: Lidhjet e harduerit
- Hapi 3: Kodi për caktimin e detyrave
- Hapi 4: Kodi për Leximin e Vlerave të Temperaturës dhe Lagështisë
- Hapi 5: Kodi për pritjen e një serveri në internet
- Hapi 6: Kodi për Postimin e të Dhënave në Gjë
- Hapi 7: Kodi i përgjithshëm
Video: Ueb aplikacioni i motit duke përdorur Esp8266: 7 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:17
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
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
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ë.
- 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.
- 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.
- 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
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ë
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:
Sistemi i Monitorimit Vizual të Bazuar në LoRa për Bujqësinë Iot - Hartimi i një aplikacioni të përparuar duke përdorur Firebase & Angular: 10 hapa
Sistemi i Monitorimit Vizual të Bazuar në LoRa për Bujqësinë Iot | Hartimi i një aplikacioni të përparuar duke përdorur Firebase & Angular: Në kapitullin e mëparshëm ne flasim për mënyrën sesi sensorët po punojnë me modulin loRa për të mbushur bazën e të dhënave të bazës së zjarrit Realtime, dhe ne pamë diagramin e nivelit shumë të lartë se si po punon i gjithë projekti ynë. Në këtë kapitull do të flasim se si mund të
Ueb-aplikacioni i edukimit: 13 hapa
Ueb-aplikacioni i Edukimit: Ky projekt u krijua si një detyrë për kursin e videove dhe televizionit dixhital në të cilin duhej të zgjidhnim problemin e mësimdhënies dhe të mësuarit në tre nivele: Metodologjike, Funksionale dhe Konceptuale. Ky projekt u krijua si një detyrë
Aplikacioni Android Pjesa 1: Spërkatja e ekranit duke përdorur fragmente/Kotlin: 5 hapa
Aplikacioni Android Pjesa 1: Spërkatja e ekranit duke përdorur fragmente/Kotlin: Përshëndetje përsëri, ka shumë të ngjarë që keni disa " falas " koha në shtëpi për shkak të COVID19 dhe mund të ktheheni për të kontrolluar temat që keni dashur të mësoni në të kaluarën. Zhvillimi i Aplikacionit Android është padyshim një prej tyre për mua dhe vendosa disa javë më parë të jepja
SmartMirror i bazuar në ueb duke përdorur komunikimin serik: 6 hapa
SmartMirror i bazuar në ueb duke përdorur komunikimin serial: Ky udhëzues jepet me të gjithë kodin gati për t’u përdorur. Zhvillimi ishte shumë i komplikuar, por sapo të vendoset është vërtet e lehtë për tu personalizuar. Hidhini një sy dhe kënaquni;)
Stacioni i motit Acurite 5 në 1 duke përdorur një Raspberry Pi dhe Weewx (Stacionet e tjera të motit janë të pajtueshme): 5 hapa (me fotografi)
Stacioni i motit Acurite 5 në 1 Duke përdorur një Raspberry Pi dhe Weewx (Stacionet e tjera të motit janë të pajtueshme): Kur kisha blerë stacionin e motit Acurite 5 në 1 doja të isha në gjendje të kontrolloja motin në shtëpinë time ndërsa isha larg. Kur mbërrita në shtëpi dhe e vendosa, kuptova se ose duhej ta kisha ekranin të lidhur me një kompjuter ose të blija shpërndarësin e tyre të zgjuar,