در این آموزش، ما یک سیستم نظارت بر دما از راه دور با استفاده از ESP32 و پروتکل MQTT ایجاد خواهیم کرد. این پروژه به ما این امکان را میدهد که دادههای دما را به یک کارگزار MQTT منتشر کنیم و یک LED را بهطور از راه دور با استفاده از یک رابط وب کنترل کنیم. با فشار دادن یک دکمه، میتوانیم قرائتهای دما را به ابری ارسال کنیم و همچنین میتوانیم دستورات روشن یا خاموش کردن LED را دریافت کنیم.
esp32-47-mqt-1
ESP32 یک میکروکنترلر قدرتمند است که دارای Wi-Fi و Bluetooth داخلی است و آن را برای برنامههای اینترنت اشیاء (IoT) ایدهآل میسازد. در این تنظیمات، ما از یک ترمیستور NTC برای اندازهگیری دما، یک دکمه فشار برای شروع خوانشها و یک LED برای نشاندادن وضعیت استفاده خواهیم کرد. دادهها به HiveMQ، یک کارگزار MQTT محبوب، ارسال میشود، جایی که میتوان بهصورت از راه دور به آن دسترسی پیدا کرد (در ویدئو در ۰۰:۴۵).
esp32-47-mqt-2
توضیح سختافزار
برای این پروژه، ما از اجزای زیر استفاده خواهیم کرد:
میکروکنترولر ESP32:این بورد به عنوان واحد پردازش مرکزی عمل میکند و اتصالات Wi-Fi و ارتباطات MQTT را مدیریت میکند.
ترمیستور NTC:این حساس(حس کننده) دما بر اساس دما مقاومت خود را تغییر میدهد. این حساس(حس کننده) یک سیگنال آنالوگ ارائه میدهد که ESP32 میتواند آن را بخواند تا دمای فعلی را تعیین کند.
ال ای دی:این دیود ساطعکننده نور برای نشان دادن وضعیت بر اساس دستورات دریافتی از طریق MQTT استفاده خواهد شد.
دکمه را فشار دهید:این دکمه باعث میشود ESP32 دما را خوانده و آن را به کارگزار MQTT منتشر کند.
جزئیات برگه اطلاعات
تولید کننده
سان فاندور
شماره قطعه
ESP32
ولتاژ منطقی/ورودی و خروجی
3.3 ولت
ولتاژ تأمین
۵ ولت (از طریق USB)
جریان خروجی (به ازای هر کانال)
12 میلیآمپر حداکثر
راهنمایی فرکانس PWM
تا ۴۰ کیلوهرتز
آستانههای منطقی ورودی
۰.۳ ولت (پایین)، ۲.۴ ولت (بالا)
محدودیتهای حرارتی
-40 تا 85 درجه سانتیگراد
بسته
ESP32-WROOM-32
تنظیم سطوح ولتاژ مناسب برای جلوگیری از آسیب.
از مقاومتهای Pull-up برای دکمه فشار استفاده کنید تا خوانشهای پایداری داشته باشید.
خازنهای جداکننده میتوانند به تثبیت منبع تغذیه کمک کنند.
در مورد سیمکشی ترمیستور احتیاط کنید تا از اشتباه در قرائتها جلوگیری شود.
جزئیات کارگزار MQTT خود را برای اتصال موفق بررسی کنید.
دستورالعملهای سیمکشی
esp32-47-mqtt-wiring
برای سیمکشی اجزا، ابتدا شروع به اتصال ترمیستور NTC کنید. یک پایه ترمیستور را به منبع 3.3 ولت روی ESP32 متصل کنید. پایه دیگر به پایه 36 روی ESP32 متصل میشود و باید به یک مقاومت 10 کΩ نیز متصل شود که بعداً به زمین متصل میشود. این یک تقسیمکننده ولتاژ ایجاد میکند که به ESP32 اجازه میدهد مقاومت ترمیستور را بخواند.
سپس LED را متصل کنید. پایه بلندتر (آند) LED به پایه ۴ بر روی ESP32 از طریق یک مقاومت ۲۲۰ Ω متصل میشود، در حالی که پایه کوتاهتر (کاتد) به زمین متصل میشود. برای دکمه فشار، یک سمت را به ۳.۳ ولت و سمت دیگر را به پایه ۱۴ بر روی ESP32 متصل کنید. علاوه بر این، یک مقاومت ۱۰ کΩ از پایه دکمه به زمین متصل کنید تا وضعیت LOW پایداری را زمانی که دکمه فشردنی نیست، تضمین کند.
کتابخانه مورد نیاز را نصب کنید
متن:PubSubClientکتابخانه در اینجا استفاده میشود، میتوانید آن را از نصب کنیدمدیر کتابخانه.
esp32-47-کتابخانه-mqtt
نمونههای شِفر (کود) و راهنمایی
در راهاندازی، ارتباط سریال را راهاندازی میکنیم، اتصال Wi-Fi را تنظیم میکنیم و سرور MQTT را پیکربندی میکنیم. در اینجا یک بخش از شِفر (کود) راهاندازی آمده است:
این قسمت شِفر (کود) اتصال به شبکه Wi-Fi را برقرار کرده و سرور MQTT را راهاندازی میکند. وضعیت پایهها برای دکمه و LED نیز در اینجا تنظیم شده است.
تابع حلقه به طور مداوم وضعیت دکمه را بررسی میکند و زمانی که فشار داده میشود، دادههای دما را منتشر میکند. در اینجا یک بخش متمرکز از حلقه آورده شده است:
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
if (digitalRead(buttonPin)) {
long now = millis();
if (now - lastMsg > 5000) {
lastMsg = now;
char tempString[8];
dtostrf(thermistor(), 1, 2, tempString);
client.publish("SF/TEMP", tempString);
}
}
}
در این حلقه، بررسی میکنیم که آیا ESP32 به کارگزار MQTT متصل است یا خیر. اگر دکمه فشار داده شود، دما را از ترمیستور خوانده و هر ۵ ثانیه آن را به موضوع "SF/TEMP" منتشر میکند.
نمایشگاه / چه انتظاری باید داشته باشید
زمانی که پروژه راهاندازی و بهکار افتاد، فشردن دکمه دمای کنونی را به کارگزار MQTT ارسال خواهد کرد. شما میتوانید این دادهها را از هر کلاینت MQTT نظارت کنید. علاوه بر این، میتوانید پیامهایی برای کنترل LED ارسال کنید؛ ارسال "روشن" آن را روشن میکند، در حالی که "خاموش" آن را خاموش میکند. برای مشاهده رفتار مورد انتظار به ویدیو در ساعت 15:30 توجه کنید، جایی که قرائتهای دما پس از هر فشردن دکمه نمایش داده میشود.
زمانبندی ویدیو
۰۰:۰۰ شروع
۲:۰۵ مقدمهای بر پروژه
7:06 خدمات رایگان HiveMQ
۷:۵۶ توضیحات سیمکشی
11:11 توضیح شِفر (کود) آردوینو
انتخاب بورد ESP32 و پورت COM در Arduino IDE در ساعت ۱۸:۴۶
۲۰:۳۰ نمایش HiveMQ Free broker
تصاویر
esp32-47-mqt-1
esp32-47-mqt-2
esp32-47-mqtt-library
esp32-47-mqtt-wiring
esp32-47-mqt-1
esp32-47-mqt-2
esp32-47-mqtt-library
esp32-47-mqtt-wiring
847-ESP32 Tutorial 46/55- Arduino code for IoT Communication with MQTT