فهرست مطالب:

اتصال سنسور DHT11/DHT22 به ابر با برد مبتنی بر ESP8266: 9 مرحله
اتصال سنسور DHT11/DHT22 به ابر با برد مبتنی بر ESP8266: 9 مرحله

تصویری: اتصال سنسور DHT11/DHT22 به ابر با برد مبتنی بر ESP8266: 9 مرحله

تصویری: اتصال سنسور DHT11/DHT22 به ابر با برد مبتنی بر ESP8266: 9 مرحله
تصویری: Arduino Tutorial 28 - DHT11 Temperature Sensor with LCD | SunFounder's ESP32 IoT Learnig kit 2024, نوامبر
Anonim
اتصال سنسور DHT11/DHT22 به ابر با برد مبتنی بر ESP8266
اتصال سنسور DHT11/DHT22 به ابر با برد مبتنی بر ESP8266

در مقاله قبلی ، من برد NodeMCU مبتنی بر ESP8266 خود را به یک سرویس Cloud4RPi متصل کردم. اکنون ، زمان یک پروژه واقعی است!

تدارکات

الزامات سخت افزاری:

  • هر برد بر اساس تراشه ESP8266 (به عنوان مثال ، NodeMCU)
  • سنسور DHT11 یا DHT22

نرم افزار و خدمات:

  • کتابخانه حسگر DHT توسط Adafruit - v1.3.7
  • Adafruit Unified Sensor - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - کنترل پنل ابری برای دستگاه های IoT
  • PlatformIO IDE برای VSCode

مرحله 1: دما و رطوبت را اندازه گیری کنید

اندازه گیری دما و رطوبت
اندازه گیری دما و رطوبت

من قبلاً سنسور DHT11 داشتم ، بنابراین تصمیم گرفتم از آن برای اندازه گیری دما و رطوبت استفاده کنم. بیایید کتابخانه آردوینو را برای خواندن داده های حسگر انتخاب کنیم.

رجیستری آردوینو شامل چندین کتابخانه است که من محبوب ترین آنها را انتخاب کردم.

با توجه به مخزن GitHub آنها ، ما همچنین ملزم به اضافه کردن یک بسته Adafruit Unified Sensor هستیم.

مرحله 2: ایجاد و پیکربندی پروژه

ایجاد و پیکربندی پروژه
ایجاد و پیکربندی پروژه

من قبلاً نحوه ایجاد یک پروژه PlatformIO و نصب کتابخانه ها را در قسمت اول توضیح دادم. پروژه من "MyNodeMCU" نام دارد. ساختار بالا نشان داده شده است.

این پروژه یک نمونه Cloud4RPi کمی اصلاح شده است. من تصمیم گرفتم به جای کد ، رمز دستگاه و اطلاعات Wi-Fi را در فایل پیکربندی ذخیره کنم.

فایل platform.io به شرح زیر است:

[platformio] default_envs = nodemcuv2 [env: nodemcuv2] platform = espressif8266 framework = arduino board = nodemcuv2

مرحله 3: کتابخانه ها را نصب کنید

کتابخانه ها را نصب کنید
کتابخانه ها را نصب کنید

نصب کتابخانه ها بسیار ساده است. می توانید این کار را از رابط گرافیکی IDE یا با افزودن نام کتابخانه مورد نیاز به بخش lib_deps فایل platform.io انجام دهید:

؛ سنسور … lib_deps = cloud4rpi-ESP-آردوینو Adafruit را متحد DHT سنسور build_flags کتابخانه = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0 -D SSID_NAME = / "_ _ YOUR_WIFI \" -D SSID_PASSWORD = / "_ _ YOUR_WIFI_PASS \" - 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؛ شناور t ؛ }؛ DHT_Result dhtResult؛

تابع بعدی نحوه خواندن داده های حسگر و ذخیره آنها در ساختار داده توضیح داده شده در بالا را نشان می دهد

void readSensors () {float h = dht.readHumidity ()؛ // دما را به صورت سانتیگراد (پیش فرض) بخوانید t = dht.readTemperature ()؛

// بررسی کنید که آیا خواندن انجام نشد و خارج شوید

if (isnan (h) || isnan (t)) {Serial.println (F ("از سنسور DHT خوانده نشد!")) ؛ برگشت؛ } dhtResult.h = h؛ dhtResult.t = t؛ }

مرحله 5: ارسال داده ها به ابر

هنگامی که این اطلاعات را در اختیار داریم ، مرحله بعدی ارسال آنها به سرویس Cloud4RPi است.

صفحه Cloud4RPi برای آردوینو API کتابخانه را توصیف می کند ، که مجموعه ای از روش های مورد استفاده برای موارد زیر است:

  • ایجاد ، خواندن و به روز رسانی متغیرها ،
  • مقادیر متغیر را با استفاده از پروتکل MQTT به ابر ارسال کنید.

کتابخانه از سه نوع متغیر پشتیبانی می کند: Bool ، Numeric و String.

گردش کار کتابخانه با ایجاد یک نمونه API با استفاده از Device Token از وب سایت cloud4rpi.io شروع می شود (برای جزئیات به قسمت 1 مقاله مراجعه کنید).

#اگر تعریف شده باشد (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN) ؛ #دیگر Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!") ؛ #اندیف

سپس ، متغیرها را برای خواندن 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 روز use استفاده می کنم. که برای پروژه من بیش از حد کافی است.

کد زیر مقادیر متغیر تشخیصی را تنظیم می کند:

c4r.setDiagVariable ("RSSI" ، (رشته) 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 ؛ روزهای بدون امضا = ساعت / 24 ؛ ثانیه -= دقیقه * 60 ؛ دقیقه -= ساعت * 60 ؛ ساعت -= روز * 24 ؛ sprintf (uptimeStr ، "٪ d روز٪ 2.2d:٪ 2.2d:٪ 2.2d" ، (بایت) روز ، (بایت) ساعت ، (بایت) دقیقه ، (بایت) ثانیه) ؛ بازگشت رشته (uptimeStr) ؛ }

این تابع به جای یک عدد بزرگ عجیب ، یک رشته مانند این را 5 روز 10:23:14 خروجی می دهد.

مرحله 7: شروع و اشکال زدایی پروژه

شروع و اشکال زدایی پروژه
شروع و اشکال زدایی پروژه

پس از کامپایل کد ایجاد شده و چشمک زدن آن در NodeMCU ، دستگاه به یک سرویس ابری متصل می شود و شروع به ارسال داده می کند.

با تنظیم متغیر پیش پردازنده CLOUD4RPI_DEBUG بر 1 (افزودن -D CLOUD4RPI_DEBUG = 1 به بخش build_flags در فایل platform.io) می توانید شفافیت ورود به سیستم را افزایش دهید.

در مرحله بعد ، سایت cloud4rpi.io را باز کرده و دستگاه جدید را بصورت آنلاین مشاهده کنید. آن را باز کنید تا همه مقادیر متغیر دریافت شده از دستگاه را ببینید: سنسور و تشخیص.

مرحله 8: پیکربندی داشبورد

پیکربندی داشبورد
پیکربندی داشبورد

در این مرحله ، اتصال داده به ابر عملیاتی است. اکنون ، اجازه دهید نمای بصری داده ها را پیکربندی کنیم.

من از رابط کاربری پیکربندی Dashboard برای ایجاد داشبورد زیر استفاده کردم.

داشبورد قابل اشتراک گذاری است ، بنابراین من فوراً آن را با دوست خود به اشتراک می گذارم.

مرحله 9: نتیجه گیری

نتیجه
نتیجه

کد کامل پروژه در اصل موجود است.

فعلا این همه!

سوالات و پیشنهادات در نظرات خوش آمدید.

توصیه شده: