Мазмуну:
- 1 -кадам: Аппараттык камсыздоо талап кылынат
- 2 -кадам: Аппараттык туташуулар
- 3 -кадам: Тапшырмаларды пландоо коду
- 4 -кадам: Температураны жана нымдуулукту окуу коду
- 5 -кадам: Веб -серверди хостинг үчүн код
- 6 -кадам: Thingspeak орнотуусу
- 7 -кадам: Thing Speak үчүн маалыматтарды жайгаштыруу коду
- 8 -кадам: Жалпы код
- 9 -кадам: Кредиттер
Video: THINGSPEAK ТЕМПЕРАТУРАСЫ ЖАНА ЫЛДАМДЫК КОЛДОНМОСУ ESP8266 КОЛДОНУП: 9 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:39
Электрондук нерселеримди ойлоп жатып, мен интернетке негизделген аба ырайы тиркемесин жасоону ойлодум. Бул веб-колдонмо SHT31 сенсорун колдонуп, реалдуу убакытта температура жана нымдуулук маалыматын алат. Биз долбоорубузду ESP8266 WiFi модулуна жайгаштырдык. Онлайн же оффлайн! Кабатыр болбоңуз, онлайн же оффлайнда болобу, аба ырайы жаңыртууларын каалаган жерден жана каалаган убакта аласыз. Бул веб -колдонмо маалыматтарды жергиликтүү веб -серверге, ошондой эле булутка жайгаштырат. Булут операциялары үчүн биз ThingSpeak API колдонобуз. SHT31 сенсордон маалыматтарды алуу үчүн I2C колдонот.
SHT 31 - бул Sensirion тарабынан жасалган температура жана нымдуулук сенсорлору. SHT31 ± 2% RH айланасында тактыктын жогорку деңгээлин камсыздайт. Анын нымдуулук диапазону 0дөн 100% га чейин жана температуранын диапазону -40тан 125 ° Сге чейин. Бул 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 адаптерине ылайык 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 режимине өтөт, ошондо кубатты үнөмдөйт.
Void taskI2CCallback ();
Void taskI2CDisable (); Void 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) {// 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 дарегин, шлюзду жана субнет маскасын жарыялашыбыз керек
- Кирүү чекитине SSD жана сырсөздү жарыялаңыз. Кирүү чекитине каалаган СТА түзмөгүнөн туташыңыз
- Интернет байланыш протоколу үчүн демейки порт болгон 80 портунда серверди жайгаштырыңыз, Гипертекстти өткөрүп берүү протоколу (HTTP) веб браузериңизге кирүү веб -баракчасы үчүн 192.168.1.4 жана 192.168.1.4/Value сенсордук веб баракты окуу үчүн кирет
// APIPAddress ap_local_IP үчүн статикалык Ip (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0); // ssid жана AP жергиликтүү WiFi үчүн STA режиминде const 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"; message += "URI:"; билдирүү += server.uri (); билдирүү += "\ nУсулу:"; message += (server.method () == HTTP_GET)? "GET": "POST"; message += "\ 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 ("to connect: / 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 үчүн маалыматтарды жайгаштыруу коду
Бул жерде биз сенсордун окууларын Thing Speakка жайгаштырып жатабыз. бул тапшырманы аткаруу үчүн төмөнкү кадамдар керек-
- Каттоо эсебиңизди түзүңүз Сенсорлоруңузду сактоо үчүн каналдар менен талааларды түзүңүз
- биз ESPтен маалыматтарды toSpeakке жана тескерисинче GET жана POST өтүнүчтөрүн колдонуп, apiге жөнөтө алабыз.
- биз маалыматты 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 /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 (); }
8 -кадам: Жалпы код
Жалпы код GitHub репозиторийимде жеткиликтүү
9 -кадам: Кредиттер
- Arduino JSON
- ESP826WebServer
- Task Scheduler
- SHT 31
- I2C сканерлөө
- HIH6130 үйрөткүч окуу куралы
- Зым
- NCD.io
Сунушталууда:
ESP8266 жана Visuino: DHT11 температурасы жана нымдуулугу Web Server: 12 кадам
ESP8266 жана Visuino: DHT11 Температура жана Нымдуулук Желе Сервери: ESP8266 модулдары Wi-Fi менен курулган арзан баада жалгыз контроллерлер болуп саналат, мен буга чейин алар жөнүндө көптөгөн көрсөтмөлөрдү бердим. жана нымдуулук Arduino сенсорлору, мен бир катар жасадым
DC мотору тегиз башталат, потенциометрди колдонуп, ылдамдык жана багыт, OLED дисплей жана баскычтар: 6 кадам
Потенциометрди, OLED дисплейди жана баскычтарды колдонуу менен DC моторунун тегиз башталышы, ылдамдыгы жана багыты: Бул окуу куралында биз L298N DC MOTOR CONTROL драйверин жана потенциометрди DC моторунун тегиз башталышын, ылдамдыгын жана багытын эки баскыч менен жана OLED дисплейинде потенциометрдин маанисин көрсөтүү. Демонстрациялык видеону көрүү
ESP8266 NodeMCU кирүү чекити (AP) DT11 температура сенсору жана браузердеги басма температурасы жана нымдуулугу менен: 5 кадам
ESP8266 NodeMCU кирүү чекити (AP) DT11 температура сенсору жана браузердеги басуу температурасы жана нымдуулугу бар веб -сервер үчүн: Салам достор, биз ESP8266 колдонгон долбоорлордун көбүндө жана долбоорлордун көбүндө биз ESP8266ды веб -сервер катары колдонобуз, андыктан маалыматтарга жетүү үчүн wifi аркылуу каалаган түзмөк, ESP8266 тарабынан жайгаштырылган Webserverге кирүү менен, бирок бир гана көйгөй, биз үчүн жумушчу роутер керек
Arduino 4 Wheel Drive Bluetooth RC Car UNO R3, HC-05 жана L293D Motorshield коддоо жана Android колдонмосу менен: 8 кадам
Arduino 4 Wheel Drive Bluetooth RC Car UNO R3, HC-05 жана L293D Motorshield менен коддоо жана Android тиркемесин колдонуп: Бүгүн мен сизге HC 05, L293 мотор калканчын колдонуу менен arduino 4 дөңгөлөктүү bluetooth RC машинасын кантип жасоо жөнүндө айтып берейин. 4 DC мотору, коддоону жана андроиддин машинаны башкарууга колдонмосун колдонот. Компонент колдонулат: -1-Arduino UNO R32-Bluetooth HC-053-Motorshield L293
WiFi жана IR Remote жана Android колдонмосун колдонуп NodeMCU жана IR алуучу менен 8 релелик көзөмөл: 5 кадам (сүрөттөр менен)
WiFi жана IR Remote жана Android тиркемесин колдонуп NodeMCU жана IR алуучу менен 8 реле көзөмөлү: wifi жана ир алыскы жана андроид колдонмосу аркылуу nodemcu жана IR кабыл алгычты колдонуп 8 реле өчүргүчтөрүн көзөмөлдөө БУЛ ЖЕРДЕ