Мазмуну:

THINGSPEAK ТЕМПЕРАТУРАСЫ ЖАНА ЫЛДАМДЫК КОЛДОНМОСУ ESP8266 КОЛДОНУП: 9 кадам
THINGSPEAK ТЕМПЕРАТУРАСЫ ЖАНА ЫЛДАМДЫК КОЛДОНМОСУ ESP8266 КОЛДОНУП: 9 кадам

Video: THINGSPEAK ТЕМПЕРАТУРАСЫ ЖАНА ЫЛДАМДЫК КОЛДОНМОСУ ESP8266 КОЛДОНУП: 9 кадам

Video: THINGSPEAK ТЕМПЕРАТУРАСЫ ЖАНА ЫЛДАМДЫК КОЛДОНМОСУ ESP8266 КОЛДОНУП: 9 кадам
Video: 8-класс.Диффузия кубулушу.Жылуулук жана температура.Температуралык шкалалар.Термометрлер. 2024, Ноябрь
Anonim
THSPEAK TEMPERATURE AND HUMIDITY APP ESP8266 КОЛДОНУП
THSPEAK TEMPERATURE AND HUMIDITY APP ESP8266 КОЛДОНУП

Электрондук нерселеримди ойлоп жатып, мен интернетке негизделген аба ырайы тиркемесин жасоону ойлодум. Бул веб-колдонмо 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 -кадам: Аппараттык камсыздоо талап кылынат

Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат

Бул тапшырманы аткаруу үчүн колдонулган жабдыктар:

  1. SHT 31
  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 адаптерине ылайык 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 Setup
Thingspeak Setup
Thingspeak Setup
Thingspeak Setup
Thingspeak Setup
Thingspeak Setup

ThingSpeak - бул IoT платформасы. ThingSpeak булуттагы сенсордук маалыматтарды чогултууга жана сактоого мүмкүндүк берген акысыз веб кызматы.

Бул кадамда мен сизге Thing Speak эсебин орнотуу үчүн кыска процедураны берем

  • ThingSpeakте жаңы Колдонуучу эсебине катталыңыз
  • Каналдарды, Менин Каналдарымды, анан Жаңы Каналды тандап, жаңы Канал түзүңүз
  • Талааларыңызды түзөтүңүз
  • Бул талаалар сиздин сенсор маалыматыңызды камтыйт
  • Write API ачкычына жана каналдын идентификаторуна көңүл буруңуз
  • Сиздин Arduino эскизинде, сиз Arduino үчүн ThingSpeak китепканасын колдоно аласыз же маалыматтарды ThingSpeak APIге түздөн -түз ПОСТУңузга жөнөтө аласыз.
  • кийинки кадам мазмунду Thing Speak APIге жайгаштыруу жөнүндө иштейт

7 -кадам: Thing Speak үчүн маалыматтарды жайгаштыруу коду

Thing Speak үчүн маалыматтарды жайгаштыруу коду
Thing Speak үчүн маалыматтарды жайгаштыруу коду
Thing Speak үчүн маалыматтарды жайгаштыруу коду
Thing Speak үчүн маалыматтарды жайгаштыруу коду
Thing Speak үчүн маалыматтарды жайгаштыруу коду
Thing Speak үчүн маалыматтарды жайгаштыруу коду
Thing Speak үчүн маалыматтарды жайгаштыруу коду
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

Сунушталууда: