Мазмұны:
- 1 -қадам: Жабдық қажет
- 2 -қадам: Аппараттық қосылулар
- 3 -қадам: тапсырмаларды жоспарлау коды
- 4 -қадам: Температура мен ылғалдылық мәндерін оқу коды
- 5 -қадам: Веб -серверді орналастыру коды
- 6 -қадам: Thingspeak орнату
- 7 -қадам: Мәтінді сөйлеуге жіберу коды
- 8 -қадам: Жалпы код
- 9 -қадам: Несие
Бейне: THINGSPEAK ТЕМПЕРАТУРАСЫ ЖӘНЕ ЫЛҒАЛДЫҚ ҚОЛДАНБАСЫ ESP8266: 9 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Электронды заттармен жұмыс жасай отырып, мен ауа-райына арналған веб-қосымшаны жасау туралы идея алдым. Бұл веб-бағдарлама температура мен ылғалдылық туралы нақты ақпаратты алу үшін SHT31 сенсорын пайдаланады. Біз жобамызды ESP8266 WiFi модуліне орналастырдық. Онлайн немесе офлайн! Уайымдамаудың қажеті жоқ, сіз желіде болсаңыз да, желіден тыс болсаңыз да, ауа райы туралы жаңартуларды кез келген жерден және кез келген уақытта аласыз. Бұл веб -бағдарлама деректерді жергілікті веб -серверге, сонымен қатар бұлтқа жібереді. Бұлтты операциялар үшін біз ThingSpeak API қолданамыз. SHT31 сенсордан деректерді алу үшін I2C пайдаланады.
SHT 31 - бұл Sensirion шығарған температура мен ылғалдылық сенсорлары. SHT31 ± 2% RH айналасында дәлдіктің жоғары деңгейін қамтамасыз етеді. Ылғалдылық диапазоны 0 -ден 100% -ға дейін, ал температура диапазоны -40 -тан 125 ° C -қа дейін. Бұл сенсордың 8 секундтық жауап беру уақытымен әлдеқайда сенімді және жылдам. Оның функционалдығы сигналды жақсартуды өңдеу мен I2C үйлесімділігін қамтиды. Оның әртүрлі жұмыс режимдері бар, бұл энергияны үнемдеуге мүмкіндік береді.
Бұл оқулықта біз SHT 31 -ді Adafruit Huzzah тақтасымен байланыстырдық. Температура мен ылғалдылық мәндерін оқу үшін біз ESP8266 I2C қалқанын қолдандық. Бұл адаптер барлық түйреуіштерді пайдаланушыға қол жетімді етеді және пайдаланушыға ыңғайлы I2C ортасын ұсынады.
1 -қадам: Жабдық қажет
Бұл тапсырманы орындау үшін қолданылатын аппараттық құралдар:
- SHT 31
- Adafruit Huzzah ESP8266
- ESP8266 I2C адаптері
- I2C кабелі
2 -қадам: Аппараттық қосылулар
Бұл қадамға аппараттық қосылуға арналған нұсқаулық кіреді. Бұл бөлім негізінен сенсор мен ESP8266 арасындағы сымдық қосылыстарды түсіндіреді. Байланыстар келесідей.
- SHT31 I2C арқылы жұмыс істейді. Жоғарыдағы сурет ESP8266 мен SHT31 модулі арасындағы байланысты көрсетеді. Біз I2C кабелін қолданамыз, немесе біз 4 F -F қосқыш сымдарын қолдана аламыз.
- бір сым Vcc үшін пайдаланылады, екінші сым GND үшін және басқа екеуі сәйкесінше SDA мен SCL үшін
- I2C адаптеріне сәйкес, ESP8266 тақтасының pin2 және pin 14 сәйкесінше SDA және SCL ретінде пайдаланылады.
3 -қадам: тапсырмаларды жоспарлау коды
Бұл оқулықта біз үш операцияны орындаймыз
- I2C протоколы арқылы SHT11 деректерін оқыңыз
- веб -серверді орналастырыңыз және сенсордың оқуын веб -бетке орналастырыңыз
- сенсордың көрсеткіштерін ThingSpeak API -ге жіберіңіз
Бұл үшін біз TaskScheduler кітапханасын қолданамыз. Біз үш түрлі бақылау операцияларына байланысты үш түрлі тапсырманы жоспарладық. бұл келесідей орындалады
- Тапсырма 1 сенсордың мәнін оқуға арналған, бұл тапсырма 10 секунд күтуге жеткенше 1 секунд жұмыс істейді.
- Тапсырма1 уақыты аяқталғанда 2 -тапсырма қосылады және 1 -тапсырма өшіріледі.
- Біз AP -ге осы кері байланыста қосыламыз, екі логикалық айнымалылар STA мен AP арасындағы ауысуға назар аударады.
- 2 -тапсырмада біз 192.168.1.4 веб -серверін орналастырамыз. Бұл тапсырма әр 5 секундта 50 секунд уақытқа жеткенше орындалады
- 2 -тапсырма күту уақытына жеткенде, 3 -тапсырма қосылады және 2 -тапсырма өшіріледі.
- Біз STA -ға (жергілікті IP) қосыламыз.
- 3 -тапсырма әр бес секунд сайын 50 секундқа дейін орындалады
- Тапсырма3 уақыты аяқталғанда 1 -тапсырма қайтадан қосылады және 3 -тапсырма өшіріледі.
- Қайта қоңырау шалмаса немесе құрылғы бос болса, ол Light Sleep режиміне өтеді, осылайша қуатты үнемдейді.
жарамсыз міндетI2CCallback ();
жарамсыз тапсырмаI2CDisable (); жарамсыз taskAPCallback (); void taskAPDisable (); void taskWiFiCallback (); void taskWiFiDisable (); // i2c, хостинг веб -серверіне арналған тапсырмалар және tI2C тапсырмасын жариялау (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); TI2C тапсырмасы (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); 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 -қадам: Температура мен ылғалдылық мәндерін оқу коды
Біз 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 (); Wire.requestFrom (Addr, 6); if (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; // МББ -ны 8 битке жылжыту, оған толық ажыратымдылық бойынша LSB қосыңыз және ылғалдылықтың пайыздық көрсеткіші бойынша * 100 = (100.0 * ((түбір [3] * 256.0) + түбір [4])) /65535.0; tempC = cTemp; tempF = fTemp; ылғалдылық = ылғалдылық; Serial.print («C температурасы: / t»); Serial.println (String (cTemp, 1)); Serial.print («Температура F: / t»); Serial.println (String (fTemp, 1)); Serial.print («Ылғалдылық: / t»); Serial.println (Жол (ылғалдылық, 1)); }
5 -қадам: Веб -серверді орналастыру коды
Біз тұрақты IP мекенжайында құрылғымыздан веб -серверді орналастырдық.
ESP8266WebServer кітапханасы веб -серверді орналастыру үшін қолданылады
- Алдымен бізге IP мекенжайын, шлюзді және ішкі желі маскасын статикалық IP құру үшін жариялау керек
- Енді кіру нүктесінің ssid және құпия сөзін жариялаңыз. Кез келген STA құрылғысынан кіру нүктесіне қосылыңыз
- серверді интернет -байланыс протоколының әдепкі порты болып табылатын 80 портында орналастырыңыз, гипертексті тасымалдау протоколы (HTTP) веб -браузер үшін 192.168.1.4 енгізіңіз және веб -беттің сенсоры үшін 192.168.1.4/ мәні.
// APIPAddress ap_local_IP үшін статикалық Ip (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0); // Wi -Fi STA режиміндегі жергілікті WiFi үшін ssid және AP байланысы char WiFissid = «*********»; const char WiFipass = «*********»; // ssid және pass for AP const char APssid = «********»; const char APpass = «********»; ESP8266WebServer сервері (80); жарамсыз баптау {server.on («/», onHandleDataRoot); server.on («/Value», onHandleDataFeed); server.onNotFound (onHandleNotFound);} жарамсыз taskAPCallback () {Serial.println («taskAP басталды»); server.handleClient (); } void onHandleDataRoot () {server.send (200, «text/html», PAGE1); } void onHandleDataFeed () {server.send (200, «text/html», PAGE2); } void onHandleNotFound () {String message = «Файл табылмады / 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.disconnect (); логикалық күй = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == true) {Serial.print («Soft-AP параметрін орнату …»); логикалық ap = WiFi.softAP (APssid, APpass); if (ap == true) {Serial.print («қосылған: / t»); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();
}
6 -қадам: Thingspeak орнату
ThingSpeak - бұл IoT платформасы. ThingSpeak - бұлттағы сенсорлық мәліметтерді жинауға және сақтауға мүмкіндік беретін ақысыз веб -қызмет.
Бұл қадамда мен сізге Thing Speak есептік жазбасын орнатудың қысқаша процедурасын беремін
- ThingSpeak -те жаңа пайдаланушы есептік жазбасына тіркеліңіз
- Арналарды, Менің арналарымды, содан кейін Жаңа арнаны таңдау арқылы жаңа арна жасаңыз
- Өрістерді өңдеңіз
- Бұл өрістерде сенсорлық деректер бар
- Write API кілті мен арна идентификаторына назар аударыңыз
- Arduino эскизінде сіз Arduino үшін ThingSpeak кітапханасын қолдана аласыз немесе ThingSpeak API -ге деректерді тікелей орналастыра аласыз.
- Келесі қадам мазмұнды Thing Speak API -ге орналастыру туралы нақтылайды
7 -қадам: Мәтінді сөйлеуге жіберу коды
Мұнда біз сенсорлық көрсеткіштерді Thing Speak -ке орналастырамыз. Бұл тапсырманы орындау үшін келесі қадамдар қажет:
- Есептік жазбаңызды сенсорлық деректерді сақтау үшін арналар мен өрістер жасаңыз
- біз GSP және POST сұрауларын пайдаланып api-ге ESP-ден thingSpeak-ке деректерді алуға және жіберуге болады.
- біз ThingSpeak -ке өз деректерімізді келесідей орналастыра аламыз
id taskWiFiCallback () {WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += «& field1 =»; postStr += Жол (ылғалды); postStr += «& field2 =»; postStr += Жол (tempC); postStr += «& field3 =»; postStr += Жол (tempF); postStr += «\ r / n / r / n»; wifiClient.print («POST /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 («Content-Length:»); wifiClient.print (postStr.length ()); wifiClient.print («\ n / n»); wifiClient.print (postStr); } wifiClient.stop (); }
8 -қадам: Жалпы код
Жалпы код GitHub репозиторийімде қол жетімді
9 -қадам: Несие
- Arduino JSON
- ESP826WebServer
- Тапсырмаларды жоспарлаушы
- SHT 31
- I2C сканері
- HIH6130 нұсқаулық оқулығы
- Сым
- NCD.io
Ұсынылған:
BLYNK ESP8266 және DHT11 көмегімен интернеттегі бөлме температурасы: 5 қадам (суреттермен)
BLYNK ESP8266 & DHT11 көмегімен интернеттегі бөлмедегі температура: Сәлеметсіздер ме, балалар, біз бүгін әлемнің кез келген нүктесінен біздің бөлмемізді бақылауға болатын бөлме температурасы мониторын жасаймыз және мұны істеу үшін біз BLYNK IoT тақтайшасын қолданамыз. DHT11 бөлме температурасын оқу үшін біз ESP8266 қолданамыз
ESP8266 және Visuino: DHT11 температурасы мен ылғалдылығы веб -сервері: 12 қадам
ESP8266 және Visuino: DHT11 температурасы мен ылғалдылығы веб-сервері: ESP8266 модульдері-бұл Wi-Fi кіріктірілген төмен бағалы автономды контроллерлер, мен қазірдің өзінде олар туралы бірнеше нұсқаулықтар жасадым. және Arduino ылғалдылық сенсорлары, мен сан жасадым
Arduino MKR1000 және M.I.T бар ақылды үй. Android қолданбасы: 4 қадам
Arduino MKR1000 және M.I.T бар ақылды үй. Android қолданбасы: Бұл оқулықта мен ақылды үйді бірнеше компоненттермен қалай жақсартуға болатынын сипаттаймын, бұл ақылды үй дизайнының негізі - бұл Arduino MKR1000 тақтасы, ол қосымшамен басқарылады, ол M.I.T. (Массачусетс институты
DHT 11: 5 ҚОЛДАНУДА ТЕМПЕРАТУРА ЖӘНЕ ЫЛҒАЛДЫҚ ӨЛШЕУІ
DHT 11 ПАЙДАЛАНылатын ТЕМПЕРАТУРА ЖӘНЕ ЫЛҒАЛДЫҚ ӨЛШЕУІ: Бұл жобада мен қоршаған ортаның температурасын, сондай-ақ Arduino (Nano) көмегімен ылғалдылықты өлшеу үшін DHT 11 температурасы мен ылғалдылық сенсорын қолданамын. (өлшеу): 0,3 mACUR
IOT Heart Rate Monitor (ESP8266 және Android қолданбасы): 5 қадам
IOT Heart Rate Monitor (ESP8266 және Android қолданбасы): Менің соңғы жылдық жобамның бір бөлігі ретінде мен сіздің жүрек соғу жиілігін бақылайтын, сіздің деректеріңізді серверде сақтайтын құрылғыны жасағым келеді және сіздің жүрек соғу жиілігі қалыпты болмаған кезде сізге хабарландыру арқылы хабарлаймын. Бұл жобаның идеясы мен құрылыс салуға тырысқанда пайда болды