Агуулгын хүснэгт:

DHT11/DHT22 мэдрэгчийг үүлэнд ESP8266 суурилсан самбар ашиглан холбох: 9 алхам
DHT11/DHT22 мэдрэгчийг үүлэнд ESP8266 суурилсан самбар ашиглан холбох: 9 алхам

Видео: DHT11/DHT22 мэдрэгчийг үүлэнд ESP8266 суурилсан самбар ашиглан холбох: 9 алхам

Видео: DHT11/DHT22 мэдрэгчийг үүлэнд ESP8266 суурилсан самбар ашиглан холбох: 9 алхам
Видео: Best ESP32 Data Logger? 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 framework = arduino board = 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 = / "SSD_ID_IF_D_I_ID_ID_ID_ID_ID_ID_IFI_IFT D CLOUD4RPI_TOKEN = / "ТАНЫ_ДЕВИК_ТОКЕН _ \"

Нэмэгдсэн сангууд нь төслийн дэд хавтсанд автоматаар суулгагдах болно.

Main.cpp толгой дараах байдлаар харагдаж байна.

#include #include #include #include "DHT.h"

Алхам 4: DHT11 мэдрэгчийг холбоно уу

Adafruit нь мэдрэгч холболтын DHTtester.ino жишээгээр хангадаг.

Энэ код нь мэдрэгчийг эхлүүлж, хэмжилтийн үр дүнг хадгалах бүтцийг тодорхойлдог (хэрэв амжилттай болсон бол):

#тодорхойлох 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 ("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; 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 болгож (log.io файл дахь build_flags хэсэгт -D CLOUD4RPI_DEBUG = 1 -ийг нэмж оруулснаар) бүртгэлийн үг хэллэгийг нэмэгдүүлэх боломжтой.

Дараа нь cloud4rpi.io сайтыг нээгээд шинэ төхөөрөмжийг онлайнаар анзаараарай. Төхөөрөмжөөс хүлээн авсан бүх хувьсах утгыг харахын тулд үүнийг нээнэ үү: мэдрэгч ба оношлогоо.

Алхам 8: Хяналтын самбарын тохиргоо

Хяналтын самбарын тохиргоо
Хяналтын самбарын тохиргоо

Энэ үе шатанд үүл рүү дата холболт ажиллаж байна. Одоо өгөгдлийн харааны дүрслэлийг тохируулцгаая.

Би хяналтын самбарыг тохируулах UI ашиглан дараах самбарыг үүсгэсэн.

Хяналтын самбар хуваалцах боломжтой тул би үүнийг найзтайгаа шууд хуваалцаж байна.

Алхам 9: Дүгнэлт

Дүгнэлт
Дүгнэлт

Төслийн бүрэн кодыг үндсэн утгаар нь авах боломжтой.

Энэ бүхэн одоогоор байна!

Асуулт, саналыг коммент хэсэгт хүлээж авах боломжтой.

Зөвлөмж болгож буй: