Мазмуну:
- 1 -кадам: Аппараттык камсыздоо талап кылынат
- 2 -кадам: Аппараттык туташуулар
- 3 -кадам: Тапшырмаларды пландоо коду
- 4 -кадам: Температураны жана нымдуулукту окуу коду
- 5 -кадам: Веб -серверди хостинг үчүн код
- 6 -кадам: Thing Speak үчүн маалыматтарды жайгаштыруу коду
- 7 -кадам: Жалпы код
Video: Аба ырайы Web App Esp8266 колдонуу: 7 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
SHT 31 - бул Sensirion тарабынан жасалган температура жана нымдуулук сенсорлору. SHT31 ± 2% RH айланасында тактыктын жогорку деңгээлин камсыздайт. Анын нымдуулук диапазону 0дөн 100% га чейин жана температуранын диапазону -40тан 125 ° Сге чейин. Бул 8 сек сенсордун жооп берүү убактысы менен алда канча ишенимдүү жана тез. Анын функционалдуулугу жакшыртылган сигналды иштетүүнү жана I2C шайкештигин камтыйт. Анын энергияны үнөмдүү кылган ар кандай операция режимдери бар.
Бул үйрөткүчтө биз SHT 31ди Adafruit Huzzah тактасы менен байланыштырдык. Температура жана нымдуулук баалуулуктарын окуу үчүн биз 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 адаптерине ылайык pin2 жана ESP8266 тактасынын 14 пини SDA жана SCL катары колдонулат.
3 -кадам: Тапшырмаларды пландоо коду
Бул окуу куралында биз үч операцияны аткарып жатабыз
- I2C протоколун колдонуп SHT11ден маалыматтарды окуңуз
- веб -серверди жайгаштырыңыз жана сенсордун окуусун веб -баракчага жайгаштырыңыз
- сенсордун окуусун ThingSpeak APIге жайгаштыруу
Бул үчүн биз TaskScheduler китепканасын колдонобуз. Биз үч башка контролдук операцияга таандык үч башка тапшырманы пландаштырдык. бул төмөнкүчө жасалат
- 1 -тапшырма сенсордун маанисин окуу үчүн, бул тапшырма 1 секундага созулат, ал 10 сек убактысына жетет.
- Task1 өз мөөнөтүнө жеткенде, Task 2 иштетилет жана Task1 өчүрүлөт.
- Биз бул кайра чалууда APге туташабыз, эки логикалык өзгөрмө STA менен APнын которулушуна кам көрүү үчүн кабыл алынат.
- 2 -тапшырмада биз 192.168.1.4 веб -серверин жайгаштырабыз. Бул тапшырманы аткаруу убактысы 50 секундга жеткенге чейин ар бир 5 секундда иштейт
- 2 -тапшырма күтүү убактысына жеткенде, 3 -тапшырма иштетилип, 2 -тапшырма өчүрүлгөн.
- Бул кайра чалууда STAга (жергиликтүү IP) туташабыз
- 3 -тапшырмада сенсордун окуусун ThingSpeak API булутуна жайгаштырабыз
- 3 -тапшырма ар бир беш секундда иштейт, башкача айтканда 50 секунд
- Task3 өз мөөнөтүнө жеткенде, Task 1 кайра иштетилет жана Task3 өчүрүлөт.
- Эч кандай кайра чалуу же түзмөк бош турганда Light Sleep режимине өтөт, ошондо кубатты үнөмдөйт.
Scheduler 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) {// data [0] жана data [1] 16 бит температураны камтыйт. root [0] = Wire.read (); root [1] = Wire.read (); // маалыматтар [2] 8 бит CRC тамырынан турат [2] = Wire.read (); // маалыматтар [3] жана маалыматтар [4] 16 бит нымдуулук тамырын камтыйт [3] = Wire.read (); root [4] = Wire.read (); // маалыматтар [5] 8 бит CRC тамырынан турат [5] = Wire.read (); } int temp = (root [0] * 256) + root [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 * ((root [3] * 256.0) + root [4])) /65535.0;
tempC = cTemp;
tempF = fTemp; нымдуу = нымдуулук; Serial.print ("Температура С: / т"); Serial.println (String (cTemp, 1)); Serial.print ("Температура F: / t"); Serial.println (String (fTemp, 1)); Serial.print ("Нымдуулук: / t"); Serial.println (String (нымдуулук, 1)); }
5 -кадам: Веб -серверди хостинг үчүн код
Биз статикалык IPде түзмөгүбүздөн веб -серверди өткөрдүк.
- ESP8266WebServer китепканасы веб -серверди жайгаштыруу үчүн колдонулат
- Биринчиден, статикалык IPибизди түзүү үчүн IP дарегин, шлюзду жана субнет маскасын жарыялашыбыз керек
- Эми ssid жана кирүү чекитиңиз үчүн сырсөздү жарыялаңыз.
- Кирүү чекитине каалаган STA түзмөгүнөн туташыңыз
- серверди интернет байланыш протоколу үчүн демейки порт болгон 80 портунда жайгаштыруу, гипертекстти өткөрүп берүү протоколу (HTTP)
- кирүү веб баракчасы үчүн веб браузериңизге 192.168.1.4 киргизиңиз жана 192.168.1.4/ Веб баракты сенсор окуу үчүн
// 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);
}
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 () {
String message = "Файл табылган жок / n / n";
message += "URI:";
билдирүү += server.uri ();
билдирүү += "\ nУсулу:";
message += (server.method () == HTTP_GET)? "GET": "POST";
message += "\ nАргументтер:";
билдирүү += server.args ();
билдирүү += "\ n";
server.send (404, "текст/жөнөкөй", билдирүү);}
Void reconnectAPWiFi () {
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 -кадам: Thing Speak үчүн маалыматтарды жайгаштыруу коду
Бул жерде биз сенсордун окууларын Thing Speakка жайгаштырып жатабыз. бул тапшырманы аткаруу үчүн төмөнкү кадамдар керек-
- Аккаунтуңузду түз сүйлөңүз
- Сенсорлоруңузду сактоо үчүн каналдар менен талааларды түзүңүз
- биз ESPтен маалыматтарды toSpeakке жана тескерисинче GET жана POST өтүнүчтөрүн колдонуп, apiге жөнөтө алабыз.
- биз маалыматты 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 /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 ("Content-Length:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }
7 -кадам: Жалпы код
Жалпы код менин github репозиторийимде жеткиликтүү
Кредиттер:
- Arduino JSON: ArduinoJson
- ESP826WebServer
- Task Scheduler
- SHT 31
- I2C сканерлөө
- HIH6130 үйрөткүч окуу куралы
- Wire Arduino
- NCD.io
Сунушталууда:
ESP8266 колдонуу менен онлайн аба ырайы дисплейи: 4 кадам
ESP8266 аркылуу онлайн аба ырайын көрсөтүү виджети: Бир нече жума мурун, биз белгилүү бир шаар үчүн аба ырайы маалыматын алган жана OLED модулунда көрсөткөн онлайн аба ырайын көрсөтүү тутумун кантип курууну үйрөндүк. Биз жаңы план болгон Arduino Nano 33 IoT тактасын колдондук
Ардуинону колдонуу менен тышкы аба ырайы станциясы: 7 кадам
Тышкы аба ырайы станциясы Arduino аркылуу: Колдонулган материалдар: Баалар болжолдуу жана эс тутуму боюнча. NodeMCU V3 Lua - 3 € Санарип температурасы жана нымдуулугу DTH 22 - 2 € Фоторезистор (LDR) сенсор модулу Arduino үчүн жарыкка сезгич фотодиодду аныктайт - 0.80 € 1 комплект/лот Кар/Жамгыр тамчыларын аныктоочу сенсор
ThingSpeak MQTT жана IFTTT апплеттерин колдонуу менен аба ырайы отчету: 8 кадам
ThingSpeak MQTT жана IFTTT Applets аркылуу аба ырайы отчету: Киришүү Булутка негизделген аба ырайы тиркемеси электрондук почта билдирүүсү катары күнүмдүк аба ырайы отчетторун камсыз кылат. Бул веб -колдонмо SHT25 жана Adafruit Huzzah ESP8266 аркылуу температураны жана нымдуулукту өлчөйт. Бул бизге реалдуу убакыт температурасы жана нымдуулукту берет
Аба ырайы шамы - Аба ырайы жана температура бир караганда: 8 кадам
Аба ырайы шамы - Аба ырайы жана Температура Бир Караганда: Бул сыйкырдуу шамды колдонуп, сиз учурдагы температураны жана шарттарды дароо сыртта айта аласыз
Суу бөтөлкөсүн колдонуу менен аба ырайы бузулган зымсыз тармак адаптери: 4 кадам (сүрөттөр менен)
Суу бөтөлкөсүнүн жардамы менен аба ырайы бузулган адаптер: Иракта жүргөндө, мен зымсыз тармак адаптеримди аба ырайынан ажыратуу үчүн суу бөтөлкөсүн колдондум. Бул жөнөкөй жол -жобосу, бирок абдан натыйжалуу. Албетте, бул көрсөтмө Жакынкы Чыгыштагы эркектер менен аялдарга кызмат кылуу үчүн эң пайдалуу болот, бирок ошондой эле колдонулушу мүмкүн