Съдържание:

Свързване на сензор DHT11/DHT22 към облака с платка, базирана на ESP8266: 9 стъпки
Свързване на сензор DHT11/DHT22 към облака с платка, базирана на ESP8266: 9 стъпки

Видео: Свързване на сензор DHT11/DHT22 към облака с платка, базирана на ESP8266: 9 стъпки

Видео: Свързване на сензор DHT11/DHT22 към облака с платка, базирана на ESP8266: 9 стъпки
Видео: DHT11/22 Temp Sensor Trouble - Collin’s Lab Notes #adafruit #collinslabnotes 2024, Септември
Anonim
Свързване на сензор DHT11/DHT22 към облака с платка, базирана на ESP8266
Свързване на сензор DHT11/DHT22 към облака с платка, базирана на ESP8266

В предишната статия свързах моята ESP8266 базирана NodeMCU платка с услуга Cloud4RPi. Сега е време за истински проект!

Консумативи

Хардуерни изисквания:

  • Всяка платка, базирана на чип ESP8266 (например NodeMCU)
  • Сензор DHT11 или DHT22

Софтуер и услуги:

  • DHT сензорна библиотека от Adafruit - v1.3.7
  • Унифициран сензор Adafruit - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - Облачен контролен панел за IoT устройства
  • PlatformIO IDE за VSCode

Стъпка 1: Измерете температурата и влажността

Измерете температурата и влажността
Измерете температурата и влажността

Вече имах сензор DHT11, затова реших да го използвам за измерване на температура и влажност. Нека да изберем библиотека на Arduino за четене на сензорни данни.

Регистърът на Arduino съдържа няколко библиотеки, от които избрах най -популярната.

Според тяхното хранилище на GitHub, ние също трябва да добавим пакет Adafruit Unified Sensor.

Стъпка 2: Създайте и конфигурирайте проект

Създаване и конфигуриране на проект
Създаване и конфигуриране на проект

Вече описах как да създадете проект PlatformIO и да инсталирате библиотеки в първата част. Моят проект се нарича „MyNodeMCU“. Структурата е показана по -горе.

Този проект е леко модифициран пример за Cloud4RPi. Реших да съхраня маркера на устройството и идентификационните данни за Wi-Fi в конфигурационния файл вместо в кода.

Файлът platform.io изглежда така:

[platformio] default_envs = nodemcuv2 [env: nodemcuv2] платформа = espressif8266 framework = arduino board = nodemcuv2

Стъпка 3: Инсталирайте библиотеки

Инсталирайте библиотеки
Инсталирайте библиотеки

Инсталирането на библиотеки е доста просто. Можете да го направите от графичния интерфейс на IDE или чрез добавяне на задължителни имена на библиотеки към секцията lib_deps на файла platform.io:

; … Lib_deps = cloud4rpi -esp -arduino Унифицирана сензорна библиотека DHT build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0 -D SSID_ / YIP D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"

Добавените библиотеки ще бъдат автоматично инсталирани в подпапката на проекта.

Заглавката main.cpp изглежда така:

#включи #включи #включи #включи "DHT.h"

Стъпка 4: Свържете DHT11 сензор

Adafruit предоставя DHTtester.ino пример за връзка със сензор.

Този код инициализира сензор и определя структура за съхраняване на резултата от измерването (в случай че е бил успешен):

#дефинирайте DHTPIN 2 // Цифров щифт, свързан към DHT сензора#дефинирайте DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… struct DHT_Result {float h; float t; }; DHT_Result dhtResult;

Следващата функция показва как да се четат сензорните данни и да се съхраняват в описаната по -горе структура от данни

void readSensors () {float h = dht.readHumidity (); // Четене на температурата като Celsius (по подразбиране) float t = dht.readTemperature ();

// Проверете дали четенето е неуспешно и излезте

if (isnan (h) || isnan (t)) {Serial.println (F ("Неуспешно четене от DHT сензор!")); връщане; } dhtResult.h = h; dhtResult.t = t; }

Стъпка 5: Изпращане на данни в облака

След като имаме тези данни, следващата стъпка е да ги изпратим до услугата Cloud4RPi.

Страницата Cloud4RPi за Arduino описва библиотечния API, който е набор от методи, използвани за:

  • създаване, четене и актуализиране на променливи,
  • изпраща променливи стойности в облака, използвайки протокола MQTT.

Библиотеката поддържа три типа променливи: Bool, Numeric и String.

Работният процес на библиотеката започва със създаване на екземпляр на API с помощта на Device Token от уебсайта cloud4rpi.io (вижте част 1 на статията за подробности).

#ако е дефиниран (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #endif

След това декларирайте променливи за показанията на DHT11:

c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");

След това вземете данни от сензора, запишете ги в променливи и публикувайте данните в Cloud4RPi:

c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();

Температурата и влажността не се променят бързо, така че изпращането на повече от една стойност на 5 минути не се изисква.

Стъпка 6: Диагностика

Cloud4RPi поддържа диагностични данни заедно с променливи стойности. Използвах време за работа, сила на Wi-Fi сигнала и IP адрес като диагностични данни:

c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // Сила на WiFi сигнала c4r.declareDiagVariable ("Uptime");

Забележка: Функцията millis, която използвам, за да получа нулиране на ъптайм на нула на всеки ~ 50 дни. Което е повече от достатъчно за моя проект.

Следният код задава стойности на диагностична променлива:

c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();

Функцията uptimeHumanReadable преобразува милисекунди в удобна форма:

String uptimeHumanReadable (без знак без дълги милисекунди) {static char uptimeStr [32]; без знаци дълги секунди = милисекунди / 1000; неподписани дълги минути = секунди / 60; беззнакови int часове = мин / 60; беззнакови int дни = часове / 24; секунди -= минути * 60; мин -= часове * 60; часове -= дни * 24; sprintf (uptimeStr, "%d дни%2.2d:%2.2d:%2.2d", (байт) дни, (байт) часове, (байт) минути, (байт) секунди); return String (uptimeStr); }

Функцията извежда низ като този 5 дни 10:23:14 вместо странно голямо число.

Стъпка 7: Стартирайте и отстранете грешки в проекта

Стартирайте и отстранете грешки в проекта
Стартирайте и отстранете грешки в проекта

След като компилира създадения код и го мига в NodeMCU, устройството се свързва с облачна услуга и започва да изпраща данни.

Можете да увеличите многословието на регистриране, като зададете променливата на препроцесора CLOUD4RPI_DEBUG на 1 (добавете -D CLOUD4RPI_DEBUG = 1 към файла build_flags във файла platform.io).

След това отворете сайта cloud4rpi.io и забележете новото устройство онлайн. Отворете го, за да видите всички променливи стойности, получени от устройството: сензор и диагностика.

Стъпка 8: Конфигуриране на таблото за управление

Конфигурация на таблото за управление
Конфигурация на таблото за управление

На тази стъпка връзката за данни с облака работи. Сега нека конфигурираме визуалното представяне на данните.

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

Таблото за управление е споделено, така че незабавно го споделям с приятеля си.

Стъпка 9: Заключение

Заключение
Заключение

Пълният код на проекта е достъпен в същността.

Това е всичко за сега!

Въпроси и предложения са добре дошли в коментарите.

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