Съдържание:
- Консумативи
- Стъпка 1: Измерете температурата и влажността
- Стъпка 2: Създайте и конфигурирайте проект
- Стъпка 3: Инсталирайте библиотеки
- Стъпка 4: Свържете DHT11 сензор
- Стъпка 5: Изпращане на данни в облака
- Стъпка 6: Диагностика
- Стъпка 7: Стартирайте и отстранете грешки в проекта
- Стъпка 8: Конфигуриране на таблото за управление
- Стъпка 9: Заключение
Видео: Свързване на сензор DHT11/DHT22 към облака с платка, базирана на ESP8266: 9 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
В предишната статия свързах моята 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: Заключение
Пълният код на проекта е достъпен в същността.
Това е всичко за сега!
Въпроси и предложения са добре дошли в коментарите.
Препоръчано:
Свързване на Arduino WiFi към облака с помощта на ESP8266: 7 стъпки
Свързване на Arduino WiFi към облака с помощта на ESP8266: В този урок ще ви обясним как да свържете вашия Arduino към облака на IoT чрез WiFi. Ще конфигурираме настройка, съставена от Arduino и ESP8266 WiFi модул като IoT нещо и ще го направим готов за комуникация с облака AskSensors.L
Ръководство за свързване на PLSD: Свързване към телевизори на Apple чрез AirPlay [неофициално]: 10 стъпки
Ръководство за свързване на PLSD: Свързване към Apple TV чрез AirPlay [Неофициално]: Следното ръководство е предоставено, за да илюстрира процеса на свързване към Apple TV към конферентна зала чрез AirPlay. Този неофициален ресурс е предоставен с любезното съдействие на администрацията, персонала и упълномощените гости на местния училищен район Perkins
Свързване на сензор Infineon DPS422 с Infineon XMC4700 и изпращане на данни към NodeMCU: 13 стъпки
Свързване на сензор Infineon DPS422 с Infineon XMC4700 и изпращане на данни към NodeMCU: В този урок ще се научим как да използваме DPS422 за измерване на температура и барометрично налягане с XMC4700.DPS422 DPS422 е миниатюрен цифров барометричен сензор за въздушно налягане и температура с висока точност и нисък ток потребление
Неуспешен опит за свързване на кабел към конектор към дънна платка: 6 стъпки
Неуспешен опит да свържете мост към конектор към дънна платка: Първоначално (в друга инструкция) бях споял плосък гъвкав кабел към дънната платка на ipod. Реших обаче да добавя още малко спойка за здравина и свързах връзка. Мислех, че мога да постигна същото с
Издушете вашата платка (как да добавите LED индикатор за захранване към прозрачна платка на Solarbotics): 7 стъпки
Издушете вашата платка (как да добавите LED индикатор за захранване към прозрачна платка на Solarbotics): Тези прозрачни дъски са много подобни на всяка друга електроника, но са ясни! И така, какво може да се направи с ясна таблица? Мисля, че очевидният отговор е добавяне на светодиоди за захранване