فهرست مطالب:
- تدارکات
- مرحله 1: دما و رطوبت را اندازه گیری کنید
- مرحله 2: ایجاد و پیکربندی پروژه
- مرحله 3: کتابخانه ها را نصب کنید
- مرحله 4: سنسور DHT11 را وصل کنید
- مرحله 5: ارسال داده ها به ابر
- مرحله 6: تشخیص
- مرحله 7: شروع و اشکال زدایی پروژه
- مرحله 8: پیکربندی داشبورد
- مرحله 9: نتیجه گیری
تصویری: اتصال سنسور DHT11/DHT22 به ابر با برد مبتنی بر ESP8266: 9 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
در مقاله قبلی ، من برد 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: نتیجه گیری
کد کامل پروژه در اصل موجود است.
فعلا این همه!
سوالات و پیشنهادات در نظرات خوش آمدید.
توصیه شده:
نحوه اتصال Raspberry Pi به ابر با استفاده از Node.js: 7 مرحله
نحوه اتصال Raspberry Pi به ابر با استفاده از Node.js: این آموزش برای افرادی که به دنبال اتصال Raspberry Pi به ابر ، به ویژه به پلت فرم AskSensors IoT با استفاده از Node.js. هستند مفید است. Raspberry Pi ندارید؟ اگر در حال حاضر Raspberry Pi ندارید ، من به شما توصیه می کنم که یک Raspberry تهیه کنید
سنسور دما و رطوبت (DHT22) با برد Dexter: 7 مرحله
سنسور دما و رطوبت (DHT22) با برد Dexter: برد Dexter یک کیت آموزشی مربی است که یادگیری لوازم الکترونیکی را سرگرم کننده و آسان می کند. هیئت مدیره تمام اجزای لازم را که یک مبتدی برای تغییر ایده به یک نمونه اولیه موفق نیاز دارد گرد هم می آورد. با وجود آردوینو در قلب خود ، تعداد زیادی از
اتصال وای فای آردوینو به ابر با استفاده از ESP8266: 7 مرحله
اتصال Arduino WiFi به ابر با استفاده از ESP8266: در این آموزش ما نحوه اتصال Arduino خود به ابر IoT از طریق WiFi را برای شما توضیح خواهیم داد. ما یک تنظیم متشکل از Arduino و یک ماژول WiFi ESP8266 را به عنوان یک IoT Thing پیکربندی کرده و آماده می کنیم برای برقراری ارتباط با ابر AskSensors.L
اصول اینترنت اشیا: اتصال اینترنت اشیاء خود به ابر با استفاده از سیستم عامل Mongoose: 5 مرحله
اصول اینترنت اشیا: اتصال اینترنت اشیاء خود به ابر با استفاده از سیستم عامل Mongoose: اگر فردی هستید که درگیر وسایل الکترونیکی و وسایل الکترونیکی است ، بیشتر اوقات با واژه اینترنت اشیا ، که معمولاً مخفف IoT نامیده می شود ، برخورد خواهید کرد. به مجموعه ای از دستگاه ها اشاره می کند که می توانند به اینترنت متصل شوند! چنین آدمی بودن
Aquaponics هوشمند خودکار (با داشبورد مبتنی بر ابر): 11 مرحله
Aquaponics هوشمند خودکار (با داشبورد مبتنی بر ابر): Aquaponics به شما امکان می دهد غذای ارگانیک خود را در هر مکانی (داخلی یا خارجی) ، در فضای بسیار کمتر ، با رشد بیشتر ، مصرف کمتر آب و بدون هیچ گونه کود شیمیایی خارجی پرورش دهید. همچنین می توانید شرایط را در داشبورد مبتنی بر ابر نظارت کنید