در این آموزش، ما یک پروژه CheerLights با استفاده از ESP32 ایجاد خواهیم کرد که رنگها را بهصورت جهانی از طریق MQTT همگامسازی میکند. این پروژه نه تنها رنگها را بر اساس ورودی از کاربران دیگر تغییر میدهد، بلکه رنگ فعلی و تعداد دفعات بهروزرسانی آن را بر روی یک صفحه نمایش LCD نمایش میدهد. نتیجه یک نمایش سرگرمکننده از قابلیتهای IoT است که چگونه دستگاهها میتوانند با هم تعامل داشته باشند و کاربران را در فواصل دور متصل نگه دارند. برای توضیحات اضافی، ویدئو را در (در ویدئو در 00:00) تماشا کنید.
متن قابل ترجمه نیست.
توضیح سختافزار
برای ساخت این پروژه، به یک میکروکنترلر ESP32، یک نوار LED WS2812 و یک نمایشگر LCD نیاز دارید. ESP32 به عنوان مغز عملیات عمل میکند و از قابلیتهای Wi-Fi داخلی خود برای اتصال به اینترنت و دریافت پیامهای MQTT استفاده میکند. این امکان بهروزرسانیهای لحظهای رنگهای LED را بر اساس ورودی جهانی از سایر کاربران فراهم میکند.
نوار LED WS2812 گزینهای محبوب برای پروژههایی است که به LEDهای RGB قابل آدرسدهی نیاز دارند. هر LED میتواند بهطور مستقل کنترل شود و این امکان نمایش رنگهای غنی را فراهم میکند. LCD تأیید بصری از رنگ جاری و تعداد دفعات تغییر آن را ارائه میدهد که تعامل کاربر را بهبود میبخشد.
cheeLights_LCD
جزئیات دیتاشیت
تولیدکننده
سان فاندار
شماره قطعه
ESP32
ولتاژ منطقی/ورودی و خروجی
۳.۳ ولت
ولتاژ تغذیه
۵ ولت
جریان خروجی (به ازای هر کانال)
۲۰ میلیآمپر
جریان اوج (برای هر کانال)
60 میلی آمپر
راهنمایی فرکانس PWM
۳۰۰ هرتز
آستانههای منطقی ورودی
۰.۱۵ ولت (پایین)، ۰.۸ ولت (بالا)
افت ولتاژ / RDS(on)/ اشباع
۰.۲ ولت
محدودیتهای حرارتی
85 درجه سانتیگراد
بسته
ماجیول ESP32
یادداشتها / تنوعها
شامل Wi-Fi و بلوتوث داخلی است
تأمین منبع تغذیه مناسب برای ESP32 (۵ ولت) و نوار WS2812 (۵ ولت).
از یک پایه مشترک بین ESP32 و نوار LED استفاده کنید.
یک بروکر MQTT مناسب برای همگامسازی رنگ پیادهسازی کنید.
به اتصالات پایه داده برای WS2812 توجه کنید (پایه 14 طبق شِفر (کود)).
با تعداد LEDها احتیاط کنید؛ فراتر رفتن از محدودیتهای توان نیاز به منابع برق اضافی دارد.
دستورالعملهای سیمکشی
ESP32-11_LCD-wiringesp32-47-cheer-light-wiring
برای اتصال اجزا، ابتدا نوار LED WS2812 را وصل کنید. پایه زمین (معمولاً سیاه) نوار LED را به پایه زمین روی ESP32 متصل کنید. سپس پایه VCC (معمولاً قرمز) نوار LED را به خروجی 5V روی ESP32 وصل کنید. در نهایت، پایه داده (اغلب زرد) را به پایه GPIO 14 روی ESP32 متصل کنید.
برای ال سی دی، پایه زمین (معمولاً سیاه) را به زمین روی ESP32 متصل کنید. پایه VCC (که معمولاً قرمز است) باید به خروجی 5 ولت متصل شود. پایه SDA (معمولاً خاکستری) به پایه GPIO 21 متصل میشود، در حالی که پایه SCL (معمولاً سفید) به پایه GPIO 22 متصل میشود. این تنظیم به ESP32 اجازه میدهد تا با ال سی دی ارتباط برقرار کند و اطلاعات را به دلخواه نمایش دهد.
نمونههای شِفر (کود) و راهنمایی
در تابع راهاندازی، ما LCD را راهاندازی کرده و به Wi-Fi متصل میشویم. شِفر (کود) زیر نشان میدهد که چگونه کتابخانههای لازم را تعریف کرده و LCD را راهاندازی کنیم:
#include
#include
LiquidCrystal_I2C lcd(0x27, 16,2); // set the LCD address
void setup() {
Serial.begin(115200);
lcd.init(); // initialize the lcd
lcd.backlight(); // Turns on the LCD backlight.
}
این LCD را برای استفاده راهاندازی میکند و به آن اجازه میدهد پیامها را نمایش دهد. بخش بعدی نحوه برقراری اتصال Wi-Fi را نشان میدهد:
این تابع یک اتصال به شبکه Wi-Fi مشخص شده برقرار میکند و در حین اتصال پیامی را روی LCD نمایش میدهد. در نهایت، منطق تغییر رنگ در تابع بازگشتی مدیریت میشود:
void callback(char* topic, byte* message, unsigned int length) {
String messageTemp;
for (int i = 0; i < length; i++) {
messageTemp += (char)message[i];
}
if (String(topic) == "cheerlights") {
setColor(messageTemp);
}
}
این تابع به پیامهای ورودی در موضوع "cheerlights" گوش میدهد و رنگ را بهطور مناسب بهروزرسانی میکند. شِفر (کود) کامل زیر مقاله بارگذاری میشود، بنابراین مطمئن شوید که آن را برای پیادهسازی کامل بررسی کنید.
نمایش / چه انتظاراتی داشته باشیم
پس از اتمام پروژه، میتوانید انتظار داشته باشید که نوار LED بر اساس ورودیهای یک فید جهانی MQTT رنگها را تغییر دهد. LCD نام رنگ فعلی و تعداد دفعات تغییر آن را نمایش خواهد داد. اگر اینترنت را قطع کنید، LCD نشان میدهد "در حال اتصال..." تا زمانی که ارتباط دوباره برقرار شود (در ویدیو در ساعت ۱۲:۳۰).
دامهای رایج شامل اطمینان از این است که پایههای صحیح برای اتصالات داده استفاده میشوند و بررسی اینکه اعتبارنامههای Wi-Fi دقیق هستند. اگر در SSID یا گذرواژه هر گونه ناسازگاری وجود داشته باشد، ESP32 اتصال را برقرار نخواهد کرد و LCD به نمایش پیام در حال اتصال ادامه خواهد داد.