Съдържание:

ПРИЛОЖЕНИЕТО ЗА ТЕМПЕРАТУРА И ВЛАЖНОСТ НА THINGSPEAK С ИЗПОЛЗВАНЕ НА ESP8266: 9 стъпки
ПРИЛОЖЕНИЕТО ЗА ТЕМПЕРАТУРА И ВЛАЖНОСТ НА THINGSPEAK С ИЗПОЛЗВАНЕ НА ESP8266: 9 стъпки

Видео: ПРИЛОЖЕНИЕТО ЗА ТЕМПЕРАТУРА И ВЛАЖНОСТ НА THINGSPEAK С ИЗПОЛЗВАНЕ НА ESP8266: 9 стъпки

Видео: ПРИЛОЖЕНИЕТО ЗА ТЕМПЕРАТУРА И ВЛАЖНОСТ НА THINGSPEAK С ИЗПОЛЗВАНЕ НА ESP8266: 9 стъпки
Видео: ESP32: ThingSpeak cервис для сбора и обработки данных 2024, Ноември
Anonim
ПРИЛОЖЕНИЕТО ЗА ТЕМПЕРАТУРА И ВЛАЖНОСТ НА THINGSPEAK, ИЗПОЛЗВАЩО ESP8266
ПРИЛОЖЕНИЕТО ЗА ТЕМПЕРАТУРА И ВЛАЖНОСТ НА THINGSPEAK, ИЗПОЛЗВАЩО ESP8266

Докато се занимавах с електронните си неща, имам тази идея да направя уеб-базирано приложение за времето. Това уеб приложение използва сензора SHT31 за получаване на данни за температурата и влажността в реално време. Разположихме нашия проект на WiFi модул ESP8266. Онлайн или офлайн! Няма нужда да се притеснявате, независимо дали сте онлайн или офлайн, ще получавате актуализации за времето отвсякъде и по всяко време. Това уеб приложение публикува данни на локалния уеб сървър, както и в облака. За облачни операции използваме ThingSpeak API. SHT31 използва I2C за получаване на данните от сензора.

SHT 31 е сензор за температура и влажност, произведен от Sensirion. SHT31 осигурява високо ниво на точност около ± 2% относителна влажност. Диапазонът на влажност е между 0 до 100%, а температурният диапазон е между -40 до 125 ° C. Той е много по -надежден и бърз с 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 и pin 14 на платка ESP8266 се използват съответно като SDA и SCL

Стъпка 3: Код за планиране на задачи

Код за планиране на задачи
Код за планиране на задачи

В този урок изпълняваме три операции

  • Прочетете данните от SHT11, използвайки I2C протокол
  • хоствайте уеб сървъра и публикувайте показанията на сензора на уеб страницата
  • публикувайте показанията на сензора в ThingSpeak API

За да постигнем това, използваме библиотеката TaskScheduler. Планирали сме три различни задачи, отнасящи се до три различни контролни операции. това се прави по следния начин

  • Задача 1 е за отчитане на стойността на сензора, тази задача се изпълнява за 1 секунда, докато достигне таймаут от 10 секунди.
  • Когато Task1 изтече времето за изчакване, Task 2 е активиран и Task1 е деактивиран.
  • Ние се свързваме с AP в това обратно извикване. Две булеви променливи са взети, за да се погрижат за превключването между STA и AP
  • В задача 2 ние хостваме уеб сървър на адрес 192.168.1.4. Тази задача се изпълнява на всеки 5 секунди, докато достигне времето за изчакване, което е 50 секунди
  • Когато задача 2 достигне таймаут, задача 3 е активирана и задача 2 е деактивирана.

  • В този calback се свързваме със STA (локален IP) В задача 3 публикуваме показанията на сензора в облака ThingSpeak API
  • Задача 3 се изпълнява на всеки пет секунди, докато достигне времето за изчакване, т.е. 50 секунди
  • Когато Task3 изтече времето за изчакване, Task 1 се активира отново и Task3 е деактивиран.
  • Когато не се извиква обратно повикване или устройството не работи, то преминава в Light Sleep, като по този начин пести енергия.

void taskI2CCallback ();

void taskI2CDisable (); void taskAPCCallback (); void taskAPDisable (); void taskWiFiCallback (); void taskWiFiDisable (); // Задачи за i2c, хостинг на уеб сървър и публикуване на thingspeak Task tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Задача tI2C (1 * TASK_SECOND, TASK_FOREVER и & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Task 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 е I2C адресът за SHT31.

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 бита температура. 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 поплавък cTemp = -45.0 + (175.0 * temp /65535.0); float fTemp = (cTemp * 1.8) + 32.0; // изместване на MSB с 8 бита добавяне на LSB към него разделяне с пълна разделителна способност и * 100 за процент влажност на плаващия = (100.0 * ((корен [3] * 256.0) + корен [4])) /65535.0; tempC = cTemp; tempF = fTemp; влажен = влажност; Serial.print ("Температура в C: / t"); Serial.println (Низ (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/ стойност за четене на уеб страница от сензор

// статичен IP за APIPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IP Адрес ap_subnet (255, 255, 255, 0); // ssid и AP за локален WiFi в режим STA const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid и pass за AP const char APssid = "********"; const char APpass = "********"; ESP8266WebServer сървър (80); void setup {server.on ("/", onHandleDataRoot); server.on ("/Стойност", onHandleDataFeed); server.onNotFound (onHandleNotFound);} невалиден taskAPCCallback () {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Метод:"; съобщение += (server.method () == HTTP_GET)? "GET": "POST"; съобщение += "\ nАргументи:"; съобщение += server.args (); съобщение += "\ n"; server.send (404, "текст/обикновен", съобщение); } невалидно повторно свързванеAPWiFi () {WiFi.mode (WIFI_AP_STA); забавяне (100); WiFi.disconnect (); логическо състояние = WiFi.softAPCConfig (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"); // IP Адрес myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();

}

Стъпка 6: Настройка на Thingspeak

Настройка на Thingspeak
Настройка на Thingspeak
Настройка на Thingspeak
Настройка на Thingspeak
Настройка на Thingspeak
Настройка на Thingspeak

ThingSpeak е IoT платформа. ThingSpeak е безплатна уеб услуга, която ви позволява да събирате и съхранявате сензорни данни в облака.

В тази стъпка ще ви дам кратка процедура за създаване на вашия акаунт в Thing Speak

  • Регистрирайте се за нов потребителски акаунт в ThingSpeak
  • Създайте нов канал, като изберете Канали, Моите канали и след това Нов канал
  • Редактирайте полетата си
  • Тези полета съдържат вашите сензорни данни
  • Обърнете внимание на API API за запис и ИД на канал
  • На вашата скица на Arduino можете да използвате библиотеката ThingSpeak за Arduino или можете директно да публикувате данните в ThingSpeak API
  • следващата стъпка описва публикуването на съдържанието в Thing Speak API

Стъпка 7: Код за публикуване на данни, за да говорите

Код за публикуване на данни, за да говорите
Код за публикуване на данни, за да говорите
Код за публикуване на данни, за да говорите
Код за публикуване на данни, за да говорите
Код за публикуване на данни, за да говорите
Код за публикуване на данни, за да говорите
Код за публикуване на данни, за да говорите
Код за публикуване на данни, за да говорите

Тук публикуваме показанията на сензора в Thing Speak. за изпълнение на тази задача са необходими следните стъпки-

  • Създайте своя акаунт в нещо говори Създайте канали и полета, за да съхранявате вашите сензорни данни
  • можем да получим и публикуваме данните от ESP в thingSpeak и обратно, като използваме 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 ("Тип съдържание: 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

Препоръчано: