Мазмұны:

DHT11/DHT22 сенсорын ESP8266 негізіндегі тақтаның көмегімен бұлтқа қосу: 9 қадам
DHT11/DHT22 сенсорын ESP8266 негізіндегі тақтаның көмегімен бұлтқа қосу: 9 қадам

Бейне: DHT11/DHT22 сенсорын ESP8266 негізіндегі тақтаның көмегімен бұлтқа қосу: 9 қадам

Бейне: DHT11/DHT22 сенсорын ESP8266 негізіндегі тақтаның көмегімен бұлтқа қосу: 9 қадам
Бейне: ESP8266 ESP01 DHT11 температуралық ылғалдылық сенсорының модулін бағдарламалау | RemoteXY | FLProg 2024, Маусым
Anonim
DHT11/DHT22 сенсорын ESP8266 негізіндегі тақтаның көмегімен бұлтқа қосу
DHT11/DHT22 сенсорын ESP8266 негізіндегі тақтаның көмегімен бұлтқа қосу

Алдыңғы мақалада мен ESP8266 негізіндегі NodeMCU тақтасын Cloud4RPi қызметіне қостым. Енді нақты жобаның уақыты келді!

Жабдықтар

Аппараттық құралдарға қойылатын талаптар:

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

Прграммалық жабдықтау мен қызметтер:

  • Adafruit DHT сенсорлық кітапханасы - v1.3.7
  • Adafruit бірыңғай сенсоры - 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 = «-WD_ID_ID_ID_ID_ID D CLOUD4RPI_TOKEN = / «_ СІЗДІҢ ҚҰРЫЛҒЫҢЫЗ_ТОҚЕН _ \»

Қосылған кітапханалар жобаның ішкі қалтасына автоматты түрде орнатылады.

Main.cpp тақырыбы келесідей көрінеді:

#қосу #қосу #қосу #қосу «DHT.h»

4 -қадам: DHT11 датчигін қосыңыз

Adafruit DHTtester.ino сенсор қосылымының мысалын ұсынады.

Бұл код сенсорды инициализациялайды және өлшеу нәтижесін сақтайтын құрылымды анықтайды (егер ол сәтті болса):

#define DHTPIN 2 // DHT сенсорына қосылған сандық түйін#DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… құрылым DHT_Result {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, Сандық және String.

Кітапхананың жұмыс процесі cloud4rpi.io веб -сайтынан Device Token көмегімен API данасын құрудан басталады (толығырақ мақаланың 1 бөлімін қараңыз).

#if анықталған (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #басқа Cloud4RPi c4r («!!! _ҚҰРЫЛЫСЫ_ТОҚЫЛБАЙДЫ _ !!!»); #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 («Жұмыс уақыты»);

Ескерту: жұмыс уақытын алу үшін мен қолданатын millis функциясы ~ 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; қол қойылмаған int сағ = мин / 60; қол қойылмаған 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 -қадам: бақылау тақтасын конфигурациялау

Бақылау тақтасының конфигурациясы
Бақылау тақтасының конфигурациясы

Бұл қадамда бұлтқа деректер байланысы жұмыс істейді. Енді деректердің визуалды көрінісін конфигурациялайық.

Мен келесі бақылау тақтасын жасау үшін бақылау тақтасының конфигурация интерфейсін қолдандым.

Бақылау тақтасы ортақ, сондықтан мен оны бірден досыммен бөлісемін.

9 -қадам: Қорытынды

Қорытынды
Қорытынды

Жобаның толық коды түпнұсқада қол жетімді.

Әзірге бәрі осында!

Сұрақтар мен ұсыныстар түсініктемелерде қабылданады.

Ұсынылған: