Բովանդակություն:
- Քայլ 1: Պահանջվում է սարքավորում
- Քայլ 2: Սարքավորման միացումներ
- Քայլ 3. Առաջադրանքների պլանավորման ծածկագիր
- Քայլ 4. Codeերմաստիճանի և խոնավության արժեքների ընթերցման ծածկագիր
- Քայլ 5. Վեբ սերվեր հյուրընկալելու ծածկագիր
- Քայլ 6. Խոսքի վրա տվյալների տեղադրման կոդ
- Քայլ 7: Ընդհանուր ծածկագիր
Video: Եղանակի վեբ ծրագիր ՝ օգտագործելով Esp8266: 7 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:47
SHT 31- ը ջերմաստիճանի և խոնավության տվիչներ է, որը պատրաստվել է Sensirion- ի կողմից: SHT31- ը ապահովում է բարձր ճշգրտություն ± 2% RH- ի սահմաններում: Խոնավության միջակայքը 0 -ից 100% է, իսկ ջերմաստիճանը ՝ -40 -ից 125 ° C: Այն շատ ավելի հուսալի և արագ է ՝ 8 վրկ սենսորային արձագանքման ժամանակ: Դրա ֆունկցիոնալությունը ներառում է ազդանշանի ուժեղացված մշակում և I2C համատեղելիություն: Այն ունի գործունեության տարբեր եղանակներ, ինչը դարձնում է էներգաարդյունավետ:
Այս ձեռնարկում մենք SHT 31 -ին միացրել ենք Adafruit Huzzah տախտակը: Peratերմաստիճանի եւ խոնավության արժեքները կարդալու համար մենք օգտագործել ենք ESP8266 I2C վահանը: Այս ադապտորը բոլոր կապումներն օգտվողին հասանելի է դարձնում և առաջարկում է օգտագործողի համար հարմար I2C միջավայր:
Քայլ 1: Պահանջվում է սարքավորում
Այս խնդիրը կատարելու համար օգտագործվող սարքավորումները.
1. SHT31
2. Adafruit Huzzah ESP8266
3. ESP8266 I2C ադապտեր
4. I2C մալուխ
Քայլ 2: Սարքավորման միացումներ
Այս քայլը ներառում է ապարատային կապի ուղեցույց: Այս բաժինը հիմնականում բացատրում է տվիչի և ESP8266- ի միջև պահանջվող էլեկտրագծերի միացումները: Կապերը հետեւյալն են.
- SHT31- ն աշխատում է I2C- ով: Վերոնշյալ պատկերը ցույց է տալիս ESP8266- ի և SHT31 մոդուլի միջև կապը: Մենք դրա համար օգտագործում ենք I2C մալուխ, կամ կարող ենք օգտագործել 4 F- ից F թռիչքային լարեր:
- մեկ մետաղալարն օգտագործվում է Vcc- ի համար, երկրորդը `GND- ի, իսկ մյուսը` համապատասխանաբար SDA- ի և SCL- ի համար:
- Ըստ I2C ադապտերի, ESP8266 տախտակի pin2 և pin 14 օգտագործվում են համապատասխանաբար որպես SDA և SCL
Քայլ 3. Առաջադրանքների պլանավորման ծածկագիր
Այս ձեռնարկում մենք կատարում ենք երեք գործողություն
- Կարդացեք SHT11- ի տվյալները `օգտագործելով I2C արձանագրությունը
- ընդունեք վեբ սերվերը և տեղադրեք սենսորի ընթերցումը վեբ էջում
- տեղադրեք սենսորի ընթերցումները ThingSpeak API- ին
Դրան հասնելու համար մենք օգտագործում ենք TaskScheduler գրադարանը: Մենք նախատեսել ենք երեք տարբեր առաջադրանքներ, որոնք վերաբերում են վերահսկման երեք տարբեր գործողություններին: սա արվում է հետևյալ կերպ
- Առաջադրանք 1 -ը սենսորի արժեքի ընթերցման համար է: Այս առաջադրանքը կատարվում է 1 վայրկյան, մինչև այն հասնում է 10 վրկ:
- Երբ Task1- ը հասնում է իր ժամկետի ավարտին, 2 -ը միացված է, և Task1- ը անջատված է:
- Այս հետադարձ կապում մենք միանում ենք AP- ին: Երկու բուլո փոփոխական են ընդունվում `STA- ի և AP- ի միջև անցումը հոգալու համար:
- Առաջադրանք 2 -ում մենք հյուրընկալում ենք վեբ սերվերին ՝ 192.168.1.4. Այս առաջադրանքը կատարվում է յուրաքանչյուր 5 վայրկյանում, մինչև այն հասնի իր ժամանակի ընդմիջմանը, որը 50 վրկ է
- Երբ առաջադրանք 2 -ի ժամանակը սպառվում է, առաջադրանք 3 -ը միացված է, և առաջադրանք 2 -ը անջատված է:
- Այս հետադարձ կապում մենք միանում ենք STA- ին (տեղական IP)
- 3 -րդ առաջադրանքում մենք տեղադրում ենք սենսորի ընթերցումը ամպային ThingSpeak API- ում
- 3 -րդ առաջադրանքն ընթանում է յուրաքանչյուր հինգ վայրկյանում, մինչև այն հասնի իր ժամանակի ավարտին, այսինքն `50 վրկ
- Երբ Task3- ը հասնում է իր ժամկետի ավարտին, Task 1 -ը կրկին միացված է, և Task3- ը անջատված է:
- Երբ հետադարձ կապ չի կանչվում կամ սարքն անգործուն է, այն անցնում է Light Sleep- ին ՝ այդպիսով խնայելով էներգիան:
Ժամանակացույց ts;
// Առաջադրանքներ i2c- ի, վեբ սերվերի հոստինգի և հաղորդագրությունների տեղադրման համար
Առաջադրանք tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CD անջատելի); Առաջադրանք tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); Առաջադրանք tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // առաջադրանքի առաջադրանքների tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // միացնել I2C առաջադրանքը tI2C.enable ();
Քայլ 4. Codeերմաստիճանի և խոնավության արժեքների ընթերցման ծածկագիր
Մենք օգտագործում ենք Wire.h գրադարանը `ջերմաստիճանի և խոնավության արժեքները կարդալու համար: Այս գրադարանը հեշտացնում է i2c հաղորդակցությունը սենսորի և հիմնական սարքի միջև: 0x44- ը SHT31- ի I2C հասցեն է:
SHT31- ը գործում է այլ ռեժիմով: Դրա համար կարող եք անդրադառնալ տվյալների թերթիկին:
Մենք օգտագործում ենք 0x2C և 0x06 համապատասխանաբար որպես MSB և LSB մեկ կրակոցով աշխատելու համար:
// I2C առաջադրանքի հետադարձ կապ void taskI2CCallback ()
{Serial.println ("taskI2CStarted"); անստորագիր int արմատ [6]; // սկսել փոխանցումը 0x44- ից; Wire.beginTransmission (Addr); // մեկ կրակոց փոխանցման բարձր կրկնվողությամբ մենք օգտագործում ենք 0x2C (MSB) և 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // ավարտել փոխանցումը Wire.endTransmission (); // պահանջել բայթեր 0x44 Wire.beginTransmission- ից (Addr); Wire.endTransmission (); Հաղորդալար. Խնդրում ենք (Addr, 6); եթե (Wire.available () == 6) {// տվյալները [0] և տվյալները [1] պարունակում են 16 բիթ ջերմաստիճան: արմատ [0] = Wire.read (); արմատ [1] = Wire.read (); // տվյալները [2] պարունակում են 8 բիթ CRC արմատ [2] = Wire.read (); // տվյալները [3] և տվյալները [4] պարունակում են 16 բիթ խոնավության արմատ [3] = Wire.read (); արմատ [4] = Wire.read (); // տվյալները [5] բաղկացած են 8 բիթանոց CRC արմատից [5] = Wire.read (); } int temp = (արմատ [0] * 256) + արմատ [1]; // տեղափոխել MSB- ն 8 բիթով ավելացնել LSB float cTemp = -45.0 + (175.0 * temp /65535.0); float fTemp = (cTemp * 1.8) + 32.0; // տեղափոխել MSB- ն 8 բիթով, ավելացնել LSB- ն դրան բաժանել ամբողջական լուծաչափով և * 100 բոցի խոնավության տոկոսով = (100.0 * ((արմատ [3] * 256.0) + արմատ [4])) /65535.0;
tempC = cTemp;
tempF = fTemp; խոնավ = խոնավություն; Serial.print («Cերմաստիճանը C: / t»); Serial.println (Լար (cTemp, 1)); Serial.print («Fերմաստիճանը F: / t»); Serial.println (Լարային (fTemp, 1)); Serial.print ("Խոնավություն: / t"); Serial.println (Լար (խոնավություն, 1)); }
Քայլ 5. Վեբ սերվեր հյուրընկալելու ծածկագիր
Մենք հյուրընկալել ենք վեբ սերվեր մեր սարքից ստատիկ IP հասցեով:
- ESP8266WebServer գրադարանը օգտագործվում է վեբ սերվերը հյուրընկալելու համար
- Սկզբում մենք պետք է հայտարարենք IP հասցե, Gateway և ենթացանցի դիմակ `մեր ստատիկ IP- ն ստեղծելու համար
- Այժմ հայտարարեք ssid և գաղտնաբառ ձեր մուտքի կետի համար:
- միացեք մուտքի կետին ցանկացած STA սարքից
- հյուրընկալել սերվերը 80 նավահանգստում, որը ինտերնետ կապի արձանագրության կանխադրված նավահանգիստ է, Hypertext Transfer Protocol (HTTP)
- մուտքի վեբ էջի համար մուտքագրեք 192.168.1.4 ձեր վեբ դիտարկիչում և 192.168.1.4/ արժեք սենսորների ընթերցման վեբ էջի համար
// ստատիկ Ip AP- ի համար
IP հասցե ap_local_IP (192, 168, 1, 4);
IPAddress ap_gateway (192, 168, 1, 254);
IPAddress ap_subnet (255, 255, 255, 0); // ssid և AP STA ռեժիմում տեղական WiFi- ի համար
const char WiFissid = "*********";
const char WiFipass = "*********";
// ssid և փոխանցեք AP- ի համար
const char APssid = "********";
const char APpass = "********";
ESP8266WebServer սերվեր (80);
դատարկ կարգավորում {
server.on ("/", onHandleDataRoot);
server.on ("/Value", onHandleDataFeed);
server.onNotFound (onHandleNotFound);
}
void taskAPCallback () {
Serial.println («taskAP- ը սկսվեց»);
server.handleClient ();
}
void onHandleDataRoot () {server.send (200, "text/html", PAGE1); }
void onHandleDataFeed () {
server.send (200, "text/html", PAGE2); }
void onHandleNotFound () {
Լարային հաղորդագրություն = "Ֆայլը չգտնվեց / n / n";
հաղորդագրություն += "URI:";
հաղորդագրություն += server.uri ();
հաղորդագրություն += "\ n Մեթոդ.";
հաղորդագրություն += (server.method () == HTTP_GET)? "GET": "POST";
հաղորդագրություն += "\ n Փաստարկներ.";
հաղորդագրություն += server.args ();
հաղորդագրություն += "\ n";
server.send (404, «տեքստ/պարզ», հաղորդագրություն);}
դատարկ վերամիացում APWiFi () {
WiFi.mode (WIFI_AP_STA);
ուշացում (100);
WiFi.d անջատել ();
բուլյան կարգավիճակ = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);
եթե (կարգավիճակը == ճշմարիտ) {
Serial.print ("Soft-AP … կարգավորելը");
բուլյան ap = WiFi.softAP (APssid, APpass);
եթե (ap == ճշմարիտ) {
Serial.print ("կապված է ՝ / t");
// IPAddress myIP = WiFi.softAPIP ();
Serial.println (WiFi.softAPIP ());
}
server.begin ();
}
}
Քայլ 6. Խոսքի վրա տվյալների տեղադրման կոդ
Այստեղ մենք տեղադրում ենք սենսորային ընթերցումները Thing Speak- ում: Այս առաջադրանքը կատարելու համար անհրաժեշտ են հետևյալ քայլերը.
- Ստեղծեք ձեր հաշիվը խոսքի մեջ
- Ստեղծեք ալիքներ և դաշտեր ՝ ձեր սենսորային տվյալները պահելու համար
- մենք կարող ենք ստանալ և տեղադրել տվյալները ESP- ից thingSpeak- ին և հակառակը ՝ օգտագործելով GET և POST հարցումները api- ին:
- մենք կարող ենք մեր տվյալները ThingSpeak- ին տեղադրել հետևյալ կերպ
void taskWiFiCallback () {
WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& դաշտ 1 ="; postStr += լարային (խոնավ); postStr += "& դաշտ 2 ="; postStr += Լար (tempC); postStr += "& field3 ="; postStr += Լար (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /update HTTP /1.1 / n"); wifiClient.print ("Հաղորդավար` api.thingspeak.com / n "); wifiClient.print ("Միացում. փակել / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Content-Type: application/x-www-form-urlencoded / n"); wifiClient.print ("Բովանդակություն-երկարություն."); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }
Քայլ 7: Ընդհանուր ծածկագիր
Ընդհանուր ծածկագիրը հասանելի է իմ github պահոցում
Վարկեր:
- Arduino JSON: ArduinoJson
- ESP826WebServer
- Առաջադրանքների ժամանակացույց
- SHT 31
- I2C սկան
- HIH6130 ուսուցողական ձեռնարկ
- Լար Arduino
- NCD.io
Խորհուրդ ենք տալիս:
Կրթության վեբ-ծրագիր. 13 քայլ
Կրթություն վեբ-ծրագիր. Այս նախագիծը ստեղծվել է որպես տեսաֆիլմերի և թվային հեռուստատեսության դասընթացի առաջադրանք, որի ընթացքում մենք պետք է լուծեինք ուսուցման և ուսուցման խնդիրը երեք մակարդակներով ՝ մեթոդաբանական, գործառական և հայեցակարգային: Այս նախագիծը ստեղծվել է որպես առաջադրանք
THINGSPEAK EMԵՐՄԱՈՈԹՅՈՆ ԵՎ Խոնավության ծրագիր ՝ օգտագործելով ESP8266: 9 քայլ
THINGSPEAK EMԵՐՄԱՈՈ ANDԹՅՈ ANDՆ ԵՎ Խոնավության ծրագիր ՝ ESP8266- ի օգտագործմամբ. Իմ էլեկտրոնային իրերի հետ շփվելիս այս գաղափարն ունեցա ՝ վեբ-եղանակային եղանակային ծրագիր պատրաստելու համար: Այս վեբ հավելվածն օգտագործում է SHT31 տվիչը `իրական ժամանակի ջերմաստիճանի և խոնավության տվյալներ ստանալու համար: Մենք մեր նախագիծը տեղակայել ենք ESP8266 WiFi մոդուլի վրա: Առցանց կամ օֆլայն
ESP8266 Եղանակի մոնիտորի վեբ սերվեր (Առանց Arduino) ՝ 4 քայլ
ESP8266 Եղանակի մոնիտոր վեբ սերվեր (Առանց Arduino). «Իրերի ինտերնետը» (IoT) օրեցօր դառնում է խոսակցությունների ավելի ու ավելի աճող թեմա: Դա հասկացություն է, որը ոչ միայն ներուժ ունի ազդելու մեր ապրելակերպի, այլև մեր աշխատանքի վրա: Արդյունաբերական մեքենաներից մինչև կրելի սարքեր `օգտագործելով ներկառուցված
Վեբ-միացված SMART LED անիմացիոն ժամացույց ՝ վեբ վրա հիմնված կառավարման վահանակով, Serverամային սերվերի համաժամացում ՝ 11 քայլ (նկարներով)
Վեբ-միացված SMART LED անիմացիոն ժամացույց ՝ վեբ վրա հիմնված կառավարման վահանակով, Time Server Synchronized: Այս ժամացույցի պատմությունը հեռու է գնում ՝ ավելի քան 30 տարի: Հայրս այս գաղափարի առաջատարն էր, երբ ես ընդամենը 10 տարեկան էի, LED- ի հեղափոխությունից շատ առաջ: Իսկական
Վեբ վարորդի IO ձեռնարկը `օգտագործելով կենդանի վեբ կայք և աշխատանքային օրինակներ. 8 քայլ
Վեբ վարորդի IO ձեռնարկը ՝ օգտագործելով կենդանի վեբ կայք և աշխատանքային օրինակներ. հետաքրքիր մարտահրավեր ներկայացվեց ինձ: Ինձ պետք էր