آموزش ESP32 50/55 - کنترل LED RGB از هر نقطهای در دنیا | کیت ESP32 سانفاندر
در این آموزش، ما یاد میگیریم که چگونه رنگ یک LED RGB را با استفاده از میکروکنترلر ESP32 از طریق Wi-Fi کنترل کنیم، با استفاده از پروتکل MQTT و سرویس Adafruit IO. این تنظیم به شما این امکان را میدهد که رنگ LED RGB را از هر نقطهای در جهان تغییر دهید و یک کاربرد عملی از فناوری IoT را فراهم میآورد. ما همچنین بررسی خواهیم کرد که چگونه میتوان از لغزندهها و انتخابگر رنگ برای انتخاب رنگ مورد نظر استفاده کرد.

ESP32 یک میکروکنترلر قدرتمند است که دارای قابلیتهای Wi-Fi و Bluetooth داخلی است و آن را برای پروژههای IoT ایدهآل میسازد. در این ساختار، ما یک LED RGB را به ESP32 متصل خواهیم کرد و رنگ آن را از طریق یک کارگزار MQTT که توسط Adafruit ارائه شده کنترل خواهیم کرد. این آموزش شما را از طریق تنظیمات سختافزاری، دستورالعملهای سیمکشی و شِفر (کود) لازم برای کارکرد هموار همه چیز راهنمایی خواهد کرد (در ویدئو در 00:00).
توضیح سختافزار
برای این پروژه، اجزای اصلی که استفاده خواهیم کرد میکروکنترلر ESP32 و LED RGB هستند. ESP32 قادر به اتصال به شبکههای Wi-Fi است و به این ترتیب میتواند با سرویس Adafruit IO ارتباط برقرار کند. LED RGB شامل سه LED مستقل (قرمز، سبز و آبی) است که میتوانند با هم ترکیب شوند تا طیف وسیعی از رنگها را ایجاد کنند.
LED RGB بر اساس اصل آند مشترک یا کاتد مشترک کار میکند، به این معنی که آند (مثبت) یا کاتد (منفی) هر LED باید به درستی متصل شود تا کار کند. هر رنگ میتواند با استفاده از مدولاسیون عرض پالس (PWM) کنترل شود، که با تغییر چرخه کار، روشنایی هر LED را تنظیم میکند.
جزئیات دیتاشیت
| تولیدکننده | SunFounder |
|---|---|
| شماره قطعه | LED RGB |
| ولتاژ پیشخوان (V)F) | ۲.۰-۳.۴ ولت |
| جریان پیشرو (IF) | ۲۰ میلی آمپر |
| طول موج اوج (نانومتر) | قرمز: ۶۲۰، سبز: ۵۲۵، آبی: ۴۶۵ |
| بسته | استاندارد ۴ پایه |
| یادداشتها / واریانتها | گزینههای آند مشترک یا کاتد مشترک در دسترس است |
- برای هر رنگ LED از مقاومتی ۲۲۰ اهمی برای محدود کردن جریان استفاده کنید.
- اطمینان حاصل کنید که سیمکشی به درستی برای پیکربندی آند مشترک یا کاتد مشترک انجام شده است.
- منبع تغذیه ESP32 را بررسی کنید تا از افت ولتاژ جلوگیری شود.
- فرکانس PWM را در محدودههای مجاز نگهدارید تا انتقالات رنگ به طور نرم انجام شود.
- اطمینان حاصل کنید که اطلاعات احراز هویت Wi-Fi برای اتصال به سرویس Adafruit IO صحیح است.
دستورالعملهای سیمکشی

برای اتصال LED RGB به ESP32، با شناسایی پایانهها روی LED RGB شروع کنید. بلندترین پایانه، پایانه مشترک است. برای یک پیکربندی آند مشترک، این پایانه را به منبع ولتاژ مثبت (3.3V) متصل کنید. سه پایانه دیگر مربوط به LED های قرمز، سبز و آبی هستند. پایانه قرمز را به GPIO 27، پایانه سبز را به GPIO 26 و پایانه آبی را به GPIO 25 متصل کنید. هر یک از این اتصالات باید از طریق یک مقاومت 220 اهمی انجام شود تا جریان عبوری از LED ها محدود شود.
سپس، زمین (GND) ESP32 را به خط زمین مدار خود متصل کنید. اطمینان حاصل کنید که اتصالات محکم هستند تا از هرگونه اتصال ناپایدار جلوگیری شود. اگر از یک LED RGB کاتد مشترک استفاده میکنید، پایه مشترک را به زمین متصل کنید و پایههای رنگی جداگانه را از طریق مقاومتها به منبع مثبت وصل کنید. قبل از تامین برق مدار، تمام اتصالات را دوباره بررسی کنید.
نمونههای شِفر (کود) و راهنمایی
در شِفر (کود) آردوینو، ما با تعریف پایهها برای ال ای دیهای قرمز، سبز و آبی با استفاده از شناسهها شروع میکنیم.redPin,greenPin, andbluePinبعلاوه، ما کانالهای PWM را برای هر رنگ تعریف میکنیم با استفاده ازredChannel,greenChannel, andblueChannelفرکانس PWM به 5000 هرتز با دقت 8 بیت تنظیم شده است.
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
const int redChannel = 0;
const int greenChannel = 1;
const int blueChannel = 2;در الsetup()در این تابع، کانالهای PWM را راهاندازی کرده و پایههای مربوطه را متصل میکنیم. همچنین با استفاده از مدارک تعریفشده به شبکه Wi-Fi متصل میشویم و مشتری MQTT را برای برقراری ارتباط با Adafruit IO تنظیم میکنیم.
void setup() {
ledcSetup(redChannel, freq, resolution);
ledcAttachPin(redPin, redChannel);
// Connect to WiFi
WiFi.begin(WLAN_SSID, WLAN_PASS);
}حلقه اصلی اتصال MQTT را بررسی کرده و پیامهای ورودی را پردازش میکند. همچنین مقادیر RGB فعلی را به نمایشگر مسلسل چاپ میکند. رنگ LED بر اساس مقادیر دریافتی از طریق اشتراکگذاری MQTT بهروزرسانی میشود.
void loop() {
MQTT_connect();
mqtt.processPackets(500);
setColor();
}برای جزئیات بیشتر در مورد شِفر (کود) کامل، لطفاً به شِفر (کود) کامل بارگذاری شده در زیر مقاله مراجعه کنید.
نمایش / چه انتظاری داشته باشید
پس از اینکه همه چیز تنظیم شد و شِفر (کود) بارگذاری شد، باید ببینید که LED RGB به تغییرات رنگی که از طریق داشبورد Adafruit IO انجام میدهید، پاسخ میدهد. وقتی که لغزندههای قرمز، سبز و آبی را تنظیم میکنید، LED باید رنگ خود را به تناسب تغییر دهد. اگر با مشکلی مواجه شدید، مطمئن شوید که اتصال Wi-Fi پایدار است و نامهای موضوع MQTT با آنچه در شِفر (کود) تعریف شده است، مطابقت دارد (در ویدیو در ساعت 17:30).
چالشهای رایج شامل سیمکشی نادرست، نامهای موضوع نامتناسب و فراموش کردن تنظیم اعتبارنامههای صحیح Wi-Fi است. اگر LED روشن نشد، اتصالات مقاومت را دوباره بررسی کنید و اطمینان حاصل کنید که ESP32 به درستی مقداردهی شده است.
برچسبهای زمانی ویدئو
- ۰۰:۰۰ شروع
- ۲:۲۳ مقدمهای بر پروژه
- MQTT چیست؟
- 7:55 راهاندازی Adafruit IO
- 14:09 توضیحاتی در مورد سیم کشی
- 16:07 شِفر (کود) توضیح داده شده
- انتخاب برد ESP32 و پورت COM در Arduino IDE :03
- نمایش پروژه 29:12
- 31:25 RGB LED چیست؟
- :26 رنگ RGB
/*
* این یک اسکیچ آردوینو برای ESP32 است تا LED RGB را با استفاده از خدمات MQTT آدافرویت کنترل کند
* دستور ویدئویی https://youtu.be/-9q1GfGsnr0
* 📚⬇️ صفحه دانلود و منابع https://robojax.com/RJT672
* نوشته احمد شمشیری
* در ۱۸ فوریه ۲۰۲۴
*
* کتابخانه MQTT آدافرویت مثال SSL/TLS آدافرویت ESP32
*
* /// مرجع: https://www.electronicwings.com/esp32/esp32-mqtt-client
* /
* // تعریف پایههای LED RGB
*/
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
// تعریف کانالهای PWM
const int redChannel = 0;
const int greenChannel = 1;
const int blueChannel = 2;
// فرکانس و وضوح PWM را تعریف کنید.
const int freq = 5000;
const int resolution = 8;
int colorR, colorG, colorB;
#include <WiFi.h>
#include "WiFiClientSecure.h"
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
/*
* نقطه دسترسی WiFi *********************************/
*
* #define WLAN_SSID "کتاب"
* #define WLAN_PASS "888-888"
*
* ************************* راه اندازی Adafruit.io
*/
#define AIO_SERVER "io.adafruit.com"
// استفاده از پورت ۸۸۸۳ برای MQTTS
#define AIO_SERVERPORT 8883
// پیکربندی حساب Adafruit IO
// برای به دست آوردن این مقادیر، به https://io.adafruit.com مراجعه کنید و روی Active Key کلیک کنید.
// #define AIO_USERNAME "نام_کاربری_ادافرویت_آیاو_شما"
// #define AIO_KEY "کلید آدافروت آیاو شما"
#define AIO_USERNAME "robojax"
#define AIO_KEY "aio_NBQQ75Rn7liRNcRn5uGUBMsBYmjD"
/*
* وضعیت جهانی (شما نیازی به تغییر این ندارید!) ******************/
*
* // WiFiFlientSecure برای پشتیبانی از SSL/TLS
* WiFiClientSecure client;
*
* // راه اندازی کلاس مشتری MQTT با انتقال مشتری WiFi و جزئیات سرور و ورود MQTT.
* Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
*
* // ریشه CA io.adafruit.com
* const char* adafruitio_root_ca = \
* "-----BEGIN CERTIFICATE-----\n"
* "MIIEjTCCA3WgAwIBAgIQDQd4KhM/xvmlcpbhMf/ReTANBgkqhkiG9w0BAQsFADBh\n"
* "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n"
* "d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH\n"
* "MjAeFw0xNzExMDIxMjIzMzdaFw0yNzExMDIxMjIzMzdaMGAxCzAJBgNVBAYTAlVT\n"
* "MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\n"
* "b20xHzAdBgNVBAMTFkdlb1RydXN0IFRMUyBSU0EgQ0EgRzEwggEiMA0GCSqGSIb3\n"
* "DQEBAQUAA4IBDwAwggEKAoIBAQC+F+jsvikKy/65LWEx/TMkCDIuWegh1Ngwvm4Q\n"
* "yISgP7oU5d79eoySG3vOhC3w/3jEMuipoH1fBtp7m0tTpsYbAhch4XA7rfuD6whU\n"
* "gajeErLVxoiWMPkC/DnUvbgi74BJmdBiuGHQSd7LwsuXpTEGG9fYXcbTVN5SATYq\n"
* "DfbexbYxTMwVJWoVb6lrBEgM3gBBqiiAiy800xu1Nq07JdCIQkBsNpFtZbIZhsDS\n"
* "fzlGWP4wEmBQ3O67c+ZXkFr2DcrXBEtHam80Gp2SNhou2U5U7UesDL/xgLK6/0d7\n"
* "6TnEVMSUVJkZ8VeZr+IUIlvoLrtjLbqugb0T3OYXW+CQU0kBAgMBAAGjggFAMIIB\n"
* "PDAdBgNVHQ4EFgQUlE/UXYvkpOKmgP792PkA76O+AlcwHwYDVR0jBBgwFoAUTiJU\n"
* "IBiV5uNu5g/6+rkS7QYXjzkwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsG\n"
* "AQUFBwMBBggrBgEFBQcDAjASBgNVHRMBAf8ECDAGAQH/AgEAMDQGCCsGAQUFBwEB\n"
* "BCgwJjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEIGA1Ud\n"
* "HwQ7MDkwN6A1oDOGMWh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEds\n"
* "b2JhbFJvb3RHMi5jcmwwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEW\n"
* "HGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwDQYJKoZIhvcNAQELBQADggEB\n"
* "AIIcBDqC6cWpyGUSXAjjAcYwsK4iiGF7KweG97i1RJz1kwZhRoo6orU1JtBYnjzB\n"
* "c4+/sXmnHJk3mlPyL1xuIAt9sMeC7+vreRIF5wFBC0MCN5sbHwhNN1JzKbifNeP5\n"
* "ozpZdQFmkCo+neBiKR6HqIA+LMTMCMMuv2khGGuPHmtDze4GmEGZtYLyF8EQpa5Y\n"
* "jPuV6k2Cr/N3XxFpT3hRpt/3usU/Zb9wfKPtWpoznZ4/44c1p9rzFcZYrWkj3A+7\n"
* "TNBJE0GmP2fhXhP1D/XVfIW/h0yCJGEiV9Glm/uGOa3DXHlmbAcxSyCRraG+ZBkA\n"
* "7h4SeM6Y8l/7MBRpPCz6l8Y=\n"
* "-----END CERTIFICATE-----\n";
*
* /****************************** خوراک ها
*/
// یک خوراک به نام 'test' برای انتشار و 'test2' برای اشتراک ایجاد کنید.
// مسیرهای MQTT برای AIO به شکل زیر است: <username>/feeds/<feedname>
Adafruit_MQTT_Subscribe COLOR_R = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/rgb-led-color.red");
Adafruit_MQTT_Subscribe COLOR_G = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/rgb-led-color.green");
Adafruit_MQTT_Subscribe COLOR_B = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/rgb-led-color.blue");
Adafruit_MQTT_Subscribe COLOR_RGB = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/color-picker");
Common Course Links
Common Course Files
منابع و مراجع
هنوز هیچ منبعی موجود نیست.
فایلها📁
هیچ فایلی موجود نیست.