Мазмұны:

Esp8266: 7 қадамдарын қолданатын ауа райы бағдарламасы
Esp8266: 7 қадамдарын қолданатын ауа райы бағдарламасы

Бейне: Esp8266: 7 қадамдарын қолданатын ауа райы бағдарламасы

Бейне: Esp8266: 7 қадамдарын қолданатын ауа райы бағдарламасы
Бейне: Using Digispark Attiny85 Mini Arduino boards: Lesson 108 2024, Мамыр
Anonim
Esp8266 көмегімен ауа райы туралы қосымша
Esp8266 көмегімен ауа райы туралы қосымша

SHT 31 - бұл Sensirion шығарған температура мен ылғалдылық сенсорлары. SHT31 ± 2% RH айналасында дәлдіктің жоғары деңгейін қамтамасыз етеді. Ылғалдылық диапазоны 0 -ден 100% -ға дейін, ал температура диапазоны -40 -тан 125 ° C -қа дейін. Бұл сенсордың 8 секундтық жауап беру уақытымен әлдеқайда сенімді және жылдам. Оның функционалдығы сигналды жақсартуды өңдеу мен I2C үйлесімділігін қамтиды. Оның әртүрлі жұмыс режимдері бар, бұл энергияны үнемдеуге мүмкіндік береді.

Бұл оқулықта біз SHT 31 -ді Adafruit Huzzah тақтасымен байланыстырдық. Температура мен ылғалдылық мәндерін оқу үшін біз ESP8266 I2C қалқанын қолдандық. Бұл адаптер барлық түйреуіштерді пайдаланушыға қол жетімді етеді және пайдаланушыға ыңғайлы I2C ортасын ұсынады.

1 -қадам: Жабдық қажет

Жабдық қажет
Жабдық қажет
Жабдық қажет
Жабдық қажет
Жабдық қажет
Жабдық қажет

Бұл тапсырманы орындау үшін қолданылатын аппараттық құралдар:

1. SHT31

2. Adafruit Huzzah ESP8266

3. ESP8266 I2C адаптері

4. I2C кабелі

2 -қадам: Аппараттық қосылулар

Аппараттық қосылулар
Аппараттық қосылулар
Аппараттық қосылулар
Аппараттық қосылулар

Бұл қадамға аппараттық қосылуға арналған нұсқаулық кіреді. Бұл бөлім негізінен сенсор мен ESP8266 арасындағы сымдық қосылыстарды түсіндіреді. Байланыстар келесідей.

  1. SHT31 I2C арқылы жұмыс істейді. Жоғарыдағы сурет ESP8266 мен SHT31 модулі арасындағы байланысты көрсетеді. Біз I2C кабелін қолданамыз, немесе біз 4 F -F қосқыш сымдарын қолдана аламыз.
  2. бір сым Vcc үшін пайдаланылады, екінші сым GND үшін және басқа екеуі сәйкесінше SDA мен SCL үшін.
  3. 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 -тапсырмада біз сенсордың оқуын ThingSpeak API бұлтына орналастырамыз
  • 3 -тапсырма әр бес секунд сайын 50 секундқа дейін орындалады
  • Task3 күту уақыты аяқталғанда 1 -тапсырма қайтадан қосылады және 3 -тапсырма өшіріледі.
  • Қайта қоңырау шалмаса немесе құрылғы бос болса, ол Light Sleep режиміне өтеді, осылайша қуатты үнемдейді.

Жоспарлаушы ts;

// i2c үшін тапсырмалар, веб -серверді орналастыру және нәрселер туралы пост

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 тапсырмасына қайта қоңырау шалу жарамсыз тапсырмаI2CCallback ()

{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/Value енгізіңіз.

// AP үшін статикалық Ip

IPAddress ap_local_IP (192, 168, 1, 4);

IPAddress ap_gateway (192, 168, 1, 254);

IPAddress ap_subnet (255, 255, 255, 0); // STA режимінде жергілікті WiFi үшін ssid және AP

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);

}

жарамсыз 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.disconnect ();

логикалық күй = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);

if (status == true) {

Serial.print («soft-AP орнату …»);

логикалық ap = WiFi.softAP (APssid, APpass);

егер (ап == шын) {

Serial.print («қосылған: / t»);

// IPAddress myIP = WiFi.softAPIP ();

Serial.println (WiFi.softAPIP ());

}

server.begin ();

}

}

6 -қадам: Мәтінді сөйлеуге жіберу коды

Мәтінді сөйлеуге жіберу коды
Мәтінді сөйлеуге жіберу коды
Мәтінді сөйлеуге жіберу коды
Мәтінді сөйлеуге жіберу коды
Мәтінді сөйлеуге жіберу коды
Мәтінді сөйлеуге жіберу коды
Мәтінді сөйлеуге жіберу коды
Мәтінді сөйлеуге жіберу коды

Мұнда біз сенсорлық көрсеткіштерді Thing Speak -ке орналастырамыз. Бұл тапсырманы орындау үшін келесі қадамдар қажет:

  • Өзіңіздің есептік жазбаңызды жасаңыз
  • Сенсорлық деректерді сақтау үшін арналар мен өрістер жасаңыз
  • біз GSP және POST сұрауларын пайдаланып api-ге ESP-ден thingSpeak-ке деректерді алуға және жіберуге болады.
  • біз ThingSpeak -ке өз деректерімізді келесідей орналастыра аламыз

void 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 (); }

7 -қадам: Жалпы код

Жалпы код менің github репозиторийімде қол жетімді

Несие:

  • Arduino JSON: ArduinoJson
  • ESP826WebServer
  • Тапсырмаларды жоспарлаушы
  • SHT 31
  • I2C сканері
  • HIH6130 нұсқаулық оқулығы
  • Ардуино сымы
  • NCD.io

Ұсынылған: