Мазмуну:

DHT11/DHT22 сенсорун булутка ESP8266 негизделген тактасы менен туташтыруу: 9 кадам
DHT11/DHT22 сенсорун булутка ESP8266 негизделген тактасы менен туташтыруу: 9 кадам

Video: DHT11/DHT22 сенсорун булутка ESP8266 негизделген тактасы менен туташтыруу: 9 кадам

Video: DHT11/DHT22 сенсорун булутка ESP8266 негизделген тактасы менен туташтыруу: 9 кадам
Video: Отображение температуры на LCD1602 с помощью датчика температуры LM35 с Arduino 2024, Ноябрь
Anonim
DHT11/DHT22 сенсорун булутка ESP8266 негизделген тактасы менен туташтыруу
DHT11/DHT22 сенсорун булутка ESP8266 негизделген тактасы менен туташтыруу

Мурунку макалада мен ESP8266 негизделген NodeMCU тактамды Cloud4RPi кызматына туташтырдым. Эми чыныгы долбоордун убактысы келди!

Жабдуулар

Аппараттык талаптар:

  • ESP8266 чипине негизделген ар кандай такта (мисалы, NodeMCU)
  • DHT11 же DHT22 сенсору

Программалык камсыздоо жана кызматтар:

  • Adafruit тарабынан DHT сенсор китепканасы - v1.3.7
  • Adafruit Unified Sensor - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - IoT түзмөктөрү үчүн булуттун башкаруу панели
  • VSCode үчүн PlatformIO IDE

1 -кадам: Температураны жана нымдуулукту өлчөө

Температураны жана нымдуулукту өлчөө
Температураны жана нымдуулукту өлчөө

Менде DHT11 сенсору бар болчу, ошондуктан мен аны температура жана нымдуулукту өлчөө үчүн колдонууну чечтим. Сенсордук маалыматтарды окуу үчүн Arduino китепканасын тандап алалы.

Arduino реестринде бир нече китепканалар бар, алардын ичинен мен эң популярдуусун тандадым.

Алардын GitHub репозиторийине ылайык, бизден Adafruit Unified Sensor пакетин кошуу талап кылынат.

2 -кадам: Долбоорду түзүү жана конфигурациялоо

Долбоорду түзүү жана конфигурациялоо
Долбоорду түзүү жана конфигурациялоо

Мен PlatformIO долбоорун кантип түзүү керектигин жана китепканаларды биринчи бөлүктө кантип орнотууну сүрөттөп бергем. Менин долбоорум "MyNodeMCU" деп аталат. Структурасы жогоруда көрсөтүлгөн.

Бул долбоор бир аз өзгөртүлгөн Cloud4RPi мисалы. Мен коддун ордуна конфигурация файлында түзмөктүн энбелгиси менен Wi-Fi грамоталарын сактоону чечтим.

Platform.io файлы төмөнкүчө көрүнөт:

[platformio] default_envs = nodemcuv2 [env: nodemcuv2] платформа = espressif8266 алкак = arduino тактасы = nodemcuv2

3 -кадам: Китепканаларды орнотуу

Китепканаларды орнотуу
Китепканаларды орнотуу

Китепканаларды орнотуу абдан жөнөкөй. Сиз муну IDEнин графикалык интерфейсинен же platform.io файлынын lib_deps бөлүмүнө керектүү китепкана аттарын кошуу менен жасай аласыз:

; … Lib_deps = cloud4rpi -esp -arduino Adafruit бирдиктүү сенсор DHT сенсорунун китепканасы build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = / "_DI_ID_ID_IFI_IFI_IFI_IFI_IFI_IFT D CLOUD4RPI_TOKEN = / "_ СИЗДИН_ДЕВИК_ТОКЕН _ \"

Кошулган китепканалар автоматтык түрдө долбоордун папкасына орнотулат.

Main.cpp аталышы төмөнкүдөй көрүнөт:

#кошуу #кошуу #кошуу #кошуу "DHT.h"

4 -кадам: DHT11 сенсорун туташтырыңыз

Adafruit сенсор байланыш DHTtester.ino мисал менен камсыз кылат.

Бул код сенсорду инициализациялайт жана өлчөө жыйынтыгын сактоочу структураны аныктайт (эгер ал ийгиликтүү болгон болсо):

#Define DHTPIN 2 // DHT сенсоруна туташкан санарип PIN#DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… DHHTResult {float h; сүзүү t; }; DHT_Result dhtResult;

Кийинки функция сенсордук маалыматтарды кантип окуп, аны жогоруда сүрөттөлгөн маалымат структурасында сактоо керектигин көрсөтөт

void readSensors () {float h = dht.readHumidity (); // Окуу температурасы Цельсий (демейки) float t = dht.readTemperature ();

// Окуулар ишке ашпай калганын текшерип, чыгып кетиңиз

if (isnan (h) || isnan (t)) {Serial.println (F ("DHT сенсорунан окулбай калды!")); кайтуу; } dhtResult.h = h; dhtResult.t = t; }

5 -кадам: Маалыматты Булутка жөнөтүү

Бизде бул маалыматтар болгондон кийин, кийинки кадам - аны Cloud4RPi кызматына жөнөтүү.

Cloud4RPi for Arduino баракчасында китепкананын API сүрөттөлөт, ал колдонулган методдордун жыйындысы:

  • өзгөрмөлөрдү түзүү, окуу жана жаңыртуу,
  • MQTT протоколун колдонуу менен өзгөрмөлүү баалуулуктарды булутка жөнөтүү.

Китепкана үч өзгөрмө түрдү колдойт: Bool, Сандык жана Стринг.

Китепкананын иштөө процесси cloud4rpi.io веб -сайтынан Device Token аркылуу API нускасын түзүүдөн башталат (чоо -жайын билүү үчүн макаланын 1 -бөлүгүн караңыз).

#if аныкталган (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #башка 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 ("Иш убактысы");

Эскертүү: Милис функциясы мен жумуш убактысын нөлгө чейин ~ 50 күндө нөлгө кайтарам. Бул менин долбоорум үчүн жетиштүү.

Төмөнкү код диагностикалык өзгөрмө баалуулуктарды белгилейт:

c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Иш убактысы", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();

UptimeHumanReadable функциясы миллисекунддарды ыңгайлуу формага которот:

String uptimeHumanReadable (кол коюлбаган узак миллисекундтар) {static char uptimeStr [32]; кол коюлбаган узак сек = миллисекунд / 1000; белгисиз узак мүнөт = сек / 60; unsigned int hours = mins / 60; unsigned int days = саат / 24; сек -= мүн. * 60; мүнөт -= саат * 60; саат -= күн * 24; sprintf (uptimeStr, "%d күн%2.2d:%2.2d:%2.2d", (байт) күн, (байт) саат, (байт) мүнөт, (байт) сек); кайтуу String (uptimeStr); }

Функция таң калыштуу чоң сандын ордуна 5 күн 10:23:14 сыяктуу сап чыгарат.

7 -кадам: Долбоорду баштоо жана мүчүлүштүктөрдү оңдоо

Долбоорду баштоо жана мүчүлүштүктөрдү оңдоо
Долбоорду баштоо жана мүчүлүштүктөрдү оңдоо

Түзүлгөн кодду түзүп, аны NodeMCU ичине жаркыраткандан кийин, түзмөк булут кызматына туташып, маалыматтарды жөнөтө баштайт.

Сиз CLOUD4RPI_DEBUG препроцессорунун өзгөрмөсүн 1 кылып коюу менен журналдын сөздүгүн көбөйтө аласыз (platform.io файлындагы build_flags бөлүмүнө -D CLOUD4RPI_DEBUG = 1 кошуңуз).

Андан кийин, cloud4rpi.io сайтын ачып, жаңы түзмөктү онлайнда байкаңыз. Түзмөктөн алынган бардык өзгөрмө баалуулуктарды көрүү үчүн аны ачыңыз: сенсор жана диагностика.

8 -кадам: панелдин конфигурациясы

Куралдар тактасынын конфигурациясы
Куралдар тактасынын конфигурациясы

Бул кадамда булутка маалымат туташуусу иштейт. Эми, келгиле, маалыматтардын визуалдык өкүлчүлүгүн конфигурациялайбыз.

Мен төмөнкү панелди түзүү үчүн Dashboard конфигурация интерфейсин колдондум.

Куралдар тактасы бөлүшүлүүчү, ошондуктан мен аны дароо досум менен бөлүшөм.

9 -кадам: Жыйынтык

Жыйынтык
Жыйынтык

Толук долбоордун коду өзөгүндө жеткиликтүү.

Мунун баары азырынча!

Суроолор жана сунуштар комментарийлерде кабыл алынат.

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