บทช่วยสอน ESP32 6/55 - การใช้โปรเจกต์ RGB LED 2.3 - ชุดเรียนรู้ IoT ESP32 ของ SunFounder
ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีควบคุม LED RGB โดยใช้ไมโครคอนโทรลเลอร์ ESP32 โปรเจกต์นี้จะช่วยให้คุณเข้าใจวิธีเชื่อมต่อ LED RGB และควบคุมสีของมันโดยใช้สัญญาณ PWM (Pulse Width Modulation) เมื่อจบบทช่วยสอนนี้ คุณจะสามารถสร้างสีผสมใดๆ ก็ได้โดยการปรับความเข้มของแต่ละองค์ประกอบสี LED ทักษะนี้เป็นพื้นฐานสำคัญสำหรับการสร้างโปรเจกต์ที่ดึงดูดสายตา

เพื่อให้เข้าใจ LED RGB และความสามารถในการผสมสีได้ดียิ่งขึ้น เราจะสำรวจการเดินสายไฟและโค้ดที่จำเป็นในการควบคุมด้วย ESP32 หากคุณต้องการความช่วยเหลือด้านภาพ อย่าลืมดูวิดีโอที่ (ในวิดีโอที่ 03:20) เพื่อคำอธิบายที่ชัดเจนยิ่งขึ้นเกี่ยวกับการเดินสายไฟและการตั้งค่าโค้ด
อธิบายฮาร์ดแวร์
ส่วนประกอบหลักของโปรเจกต์นี้ประกอบด้วยโมดูล ESP32, LED RGB และตัวต้านทาน ESP32 เป็นไมโครคอนโทรลเลอร์ที่ทรงพลังซึ่งมี Wi-Fi และ Bluetooth ในตัว ทำให้เหมาะสำหรับแอปพลิเคชัน IoT LED RGB ประกอบด้วย LED สามดวงแยกกัน (แดง เขียว และน้ำเงิน) ภายในแพ็คเกจเดียว ทำให้สามารถสร้างสีได้หลากหลายตามการผสมของสีทั้งสาม
ในการตั้งค่าของเรา LED RGB จะถูกเดินสายในรูปแบบ common anode โดยที่ขาแอโนดเชื่อมต่อกับแรงดันไฟฟ้าบวก และขาแคโทดของแต่ละสีจะถูกควบคุมแยกกัน ด้วยวิธีนี้ เราสามารถปรับความสว่างของแต่ละสีได้โดยการส่งสัญญาณ PWM ผ่าน ESP32
รายละเอียดจาก Datasheet
| ผู้ผลิต | SunFounder |
|---|---|
| หมายเลขชิ้นส่วน | RGB-LED-4PIN |
| ประเภททั่วไป | Common anode |
| แรงดันไฟฟ้าไปข้างหน้า (ต่อ LED) | 2.0 V (แดง), 3.2 V (เขียว), 3.2 V (น้ำเงิน) |
| กระแสสูงสุด (ต่อ LED) | 20 mA |
| อุณหภูมิการทำงาน | -25 ถึง 85 °C |
| แพ็คเกจ | ขา Through-hole 4 ขา |
- ใช้ตัวต้านทาน 220 Ω สำหรับแต่ละสีเพื่อจำกัดกระแสและป้องกันความเสียหาย
- ตรวจสอบให้แน่ใจว่าขาร่วมเชื่อมต่อกับแรงดันไฟฟ้าที่เหมาะสม (3.3 V สำหรับ ESP32)
- ตรวจสอบขั้วอีกครั้งเมื่อเชื่อมต่อ LED RGB เพื่อหลีกเลี่ยงความเสียหายจากการกลับขั้ว
- ใช้ PWM เพื่อควบคุมระดับความสว่าง โดยแนะนำความถี่ประมาณ 5000 Hz
- ทดสอบแต่ละสีแยกกันก่อนเดินสายไฟทั้งชุด
คำแนะนำการเดินสายไฟ
ในการเดินสายไฟ LED RGB เข้ากับ ESP32 ให้เริ่มต้นโดยระบุขาบน LED RGB ขาที่ยาวที่สุดคือขาแอโนดร่วม ซึ่งจะเชื่อมต่อกับแหล่งจ่าย 3.3 V บน ESP32 ขาอีกสามขาที่เหลือคือสำหรับสีแดง เขียว และน้ำเงิน ในการตั้งค่าของเรา ให้เชื่อมต่อขาสีแดงกับ GPIO 27, ขาสีเขียวกับ GPIO 26 และขาสีน้ำเงินกับ GPIO 25 แต่ละขาเหล่านี้จะมีตัวต้านทาน 220 Ω เชื่อมต่ออยู่ด้วย
เริ่มต้นโดยวาง LED RGB บนเบรดบอร์ด โดยตรวจสอบให้แน่ใจว่าขาแอโนดร่วมอยู่ทางด้านซ้าย เสียบขาสีแดงเข้ากับเบรดบอร์ดและเชื่อมต่อกับปลายด้านหนึ่งของตัวต้านทาน โดยปลายอีกด้านของตัวต้านทานไปที่ GPIO 27 ทำซ้ำสำหรับขาสีเขียวและสีน้ำเงิน โดยเชื่อมต่อขาสีเขียวกับ GPIO 26 และขาสีน้ำเงินกับ GPIO 25 สุดท้าย เชื่อมต่อขาร่วมกับขา 3.3 V บน ESP32 เพื่อให้วงจรสมบูรณ์ ตรวจสอบให้แน่ใจว่าได้เชื่อมต่อกราวด์ของ ESP32 เข้ากับเบรดบอร์ดด้วย

ตัวอย่างโค้ดและคำอธิบาย
ในโค้ด เราเริ่มต้นด้วยการกำหนดขา LED RGB โดยใช้ค่าคงที่ ตัวอย่างเช่น const int redPin = 27; กำหนดขา GPIO สำหรับ LED สีแดง เรายังตั้งค่าความถี่ PWM และความละเอียดด้วย const int freq = 5000; และ const int resolution = 8; ซึ่งเป็นการตั้งค่าพารามิเตอร์ที่จำเป็นสำหรับการควบคุมความสว่างของแต่ละสี LED
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
ถัดไป เรากำหนดช่องสัญญาณ PWM สำหรับแต่ละสีในฟังก์ชัน setup() ฟังก์ชัน ledcAttach() เชื่อมโยงแต่ละขากับช่องสัญญาณ PWM ที่เกี่ยวข้อง การตั้งค่านี้ช่วยให้เราสามารถควบคุมความสว่างของแต่ละสีได้อย่างอิสระ
void setup() {
ledcAttach(redPin, freq, resolution);
ledcAttach(greenPin, freq, resolution);
ledcAttach(bluePin, freq, resolution);
}
ในฟังก์ชัน loop() เราใช้ฟังก์ชัน setColor() เพื่อเปลี่ยนสี LED ค่าที่ส่งให้ฟังก์ชันนี้แสดงถึงความเข้มของสีแดง เขียว และน้ำเงิน ตัวอย่างเช่น การเรียก setColor(255, 0, 0); จะตั้งค่า LED เป็นสีแดง หลังจากการเปลี่ยนสีแต่ละครั้ง เราใช้ delay(1000); เพื่อรอหนึ่งวินาทีก่อนที่จะเปลี่ยนเป็นสีถัดไป
void loop() {
setColor(255, 0, 0); // แดง
delay(1000);
setColor(0, 255, 0); // เขียว
delay(1000);
}
การสาธิต / สิ่งที่คาดหวัง
หลังจากเดินสายไฟเสร็จและอัปโหลดโค้ดไปยัง ESP32 แล้ว คุณควรเห็น LED RGB เปลี่ยนสีต่างๆ ตามลำดับ ได้แก่ แดง เขียว น้ำเงิน เหลือง ม่วง และฟ้า หาก LED ไม่สว่างอย่างถูกต้อง ให้ตรวจสอบการเดินสายไฟอีกครั้งและตรวจสอบให้แน่ใจว่าขาแอโนดร่วมเชื่อมต่อกับ 3.3 V นอกจากนี้ หากคุณสังเกตเห็นสีที่ไม่คาดคิด ให้ตรวจสอบการเชื่อมต่อตัวต้านทานกับขา LED
ตามที่สาธิตในวิดีโอ (ในวิดีโอที่ 10:45) การปรับค่าในฟังก์ชัน setColor() ช่วยให้คุณสร้างสีต่างๆ ได้ ทดลองกับชุดค่าผสมต่างๆ เพื่อดูว่า LED RGB ตอบสนองอย่างไร
ไทม์สแตมป์ในวิดีโอ
- 00:00 - แนะนำ RGB LED
- 03:20 - คำอธิบายการเดินสายไฟ
- 10:45 - อธิบายโค้ดทีละขั้นตอน
- 12:30 - สาธิตการผสมสี
// Define RGB LED pins
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
// Define PWM frequency and resolution
const int freq = 5000;
const int resolution = 8;
void setup() {
// Set up PWM pins
ledcAttach(redPin, freq, resolution);
ledcAttach(greenPin, freq, resolution);
ledcAttach(bluePin, freq, resolution);
}
void loop() {
setColor(255, 0, 0); // Red
delay(1000);
setColor(0, 255, 0); // Green
delay(1000);
setColor(0, 0, 255); // Blue
delay(1000);
setColor(255, 255, 0); // Yellow
delay(1000);
setColor(80, 0, 80); // Purple
delay(1000);
setColor(0, 255, 255); // Cyan
delay(1000);
}
void setColor(int red, int green, int blue) {
ledcWrite(redPin, red);
ledcWrite(greenPin, green);
ledcWrite(bluePin, blue);
}
Common Course Links
Common Course Files
แหล่งข้อมูลและเอกสารอ้างอิง
-
เอกสารESP32 Tutorial 6/55 - SunFounder RGB LED doc pagedocs.sunfounder.com
ไฟล์📁
ไม่มีไฟล์ที่พร้อมใช้งาน