สร้าง RGB LED Controller ด้วย ESP32-S3-Box-3 และ Touch Screen
ควบคุม RGB LED ด้วย Touch Screen Interface แบบ Real-time
ESP32-S3-Box-3 เป็น Development Board ที่มาพร้อมกับ Touch Screen 2.4 นิ้ว ทำให้เหมาะสำหรับสร้าง GUI Application ต่างๆ ในบทความนี้เราจะมาสร้าง RGB LED Controller ที่สามารถควบคุมสี ความสว่าง และโหมดต่างๆ ของ RGB LED ผ่าน Touch Screen Interface ที่สวยงามและใช้งานง่าย พร้อมโค้ดตัวอย่างและคำอธิบายทีละขั้นตอน
รู้จักกับ ESP32-S3-Box-3
ESP32-S3-Box-3 เป็น Development Board จาก Espressif ที่ออกแบบมาสำหรับ AIoT Applications โดยมีจุดเด่นคือ Touch Screen ในตัว ทำให้สามารถสร้าง GUI Application ได้ง่ายและสวยงาม
คุณสมบัติหลัก:
- 🎯 ESP32-S3 - Dual-core Xtensa LX7 @ 240 MHz
- 📱 Touch Screen - 2.4" IPS LCD 320x240 pixels
- 🎤 Microphone - Dual microphones สำหรับ Voice Recognition
- 🔊 Speaker - 1W Speaker ในตัว
- 📡 WiFi & Bluetooth - WiFi 802.11 b/g/n + BLE 5.0
- 🔌 GPIO Expansion - Pmod™ compatible connector
- 💾 Memory - 8MB PSRAM + 16MB Flash
- 🔋 USB-C - สำหรับ Programming และจ่ายไฟ
💡 ทำไมต้อง ESP32-S3-Box-3:
- ✅ มี Touch Screen ในตัว - ไม่ต้องซื้อแยก
- ✅ ใช้ LVGL Library - สร้าง GUI สวยงามได้ง่าย
- ✅ มี Example Code มากมาย
- ✅ เหมาะกับ Smart Home, IoT Dashboard
- ✅ ราคาไม่แพง (~1,500-2,000 บาท)
RGB LED Module ที่ใช้ในโปรเจค
ในโปรเจคนี้เราจะใช้ RGB LED Module แบบ Common Cathode ซึ่งเป็น LED ที่รวม LED สี Red, Green, Blue ไว้ในตัวเดียว สามารถผสมสีได้หลากหลาย
ประเภทของ RGB LED:
- 🔴 Common Cathode - ขา GND ร่วมกัน, ขา R/G/B ต่อกับ GPIO (ใช้ในโปรเจคนี้)
- 🔵 Common Anode - ขา VCC ร่วมกัน, ขา R/G/B ต่อกับ GPIO (Logic กลับกัน)
การทำงานของ RGB LED:
- ใช้ PWM (Pulse Width Modulation) ควบคุมความสว่างของแต่ละสี
- PWM Duty Cycle 0-255 (0 = ดับ, 255 = สว่างสุด)
- ผสมสีโดยการปรับ Duty Cycle ของ R, G, B
- ตัวอย่าง: Red(255,0,0), Green(0,255,0), Blue(0,0,255), White(255,255,255)
| สี | Red | Green | Blue | ผลลัพธ์ |
|---|---|---|---|---|
| Red | 255 | 0 | 0 | 🔴 แดง |
| Green | 0 | 255 | 0 | 🟢 เขียว |
| Blue | 0 | 0 | 255 | 🔵 น้ำเงิน |
| Yellow | 255 | 255 | 0 | 🟡 เหลือง |
| Cyan | 0 | 255 | 255 | 🔵 ฟ้า |
| Magenta | 255 | 0 | 255 | 🟣 ม่วง |
| White | 255 | 255 | 255 | ⚪ ขาว |
⚠️ ข้อควรระวัง:
- ต้องใช้ Resistor ต่อกับขา R, G, B (แนะนำ 220Ω - 330Ω)
- ไม่ควรจ่ายไฟเกิน 20mA ต่อสี
- ตรวจสอบว่าเป็น Common Cathode หรือ Common Anode
การต่อวงจร RGB LED กับ ESP32-S3-Box-3
ESP32-S3-Box-3 มี Pmod™ Connector ที่สามารถต่อกับ External Module ได้ง่าย เราจะใช้ GPIO Pins จาก Connector นี้ในการควบคุม RGB LED
อุปกรณ์ที่ต้องใช้:
- ✅ ESP32-S3-Box-3 (1 ตัว)
- ✅ RGB LED Module Common Cathode (1 ตัว)
- ✅ Resistor 220Ω หรือ 330Ω (3 ตัว - สำหรับ R, G, B)
- ✅ Breadboard
- ✅ Jumper Wires
- ✅ USB-C Cable (สำหรับ Programming และจ่ายไฟ)
ตารางการต่อขา:
| RGB LED Pin | Resistor | ESP32-S3-Box-3 GPIO | หมายเหตุ |
|---|---|---|---|
| R (Red) | 220Ω | GPIO 1 | PWM Channel 0 |
| G (Green) | 220Ω | GPIO 2 | PWM Channel 1 |
| B (Blue) | 220Ω | GPIO 3 | PWM Channel 2 |
| GND | - | GND | Common Cathode |
เตรียม Breadboard
วาง RGB LED Module บน Breadboard และต่อ Resistor 220Ω กับขา R, G, B ของ LED
ต่อขา GND
ต่อขา GND (Common Cathode) ของ RGB LED เข้ากับ GND ของ ESP32-S3-Box-3
ต่อขา R, G, B
ต่อขา R, G, B (ผ่าน Resistor) เข้ากับ GPIO 1, 2, 3 ของ ESP32-S3-Box-3 ตามลำดับ
ตรวจสอบการต่อวงจร
ตรวจสอบให้แน่ใจว่าการต่อถูกต้อง และไม่มีขาลัดวงจร
💡 Tips:
- ใช้สาย Jumper สีต่างกันเพื่อง่ายต่อการตรวจสอบ (แดง=R, เขียว=G, น้ำเงิน=B)
- ถ้าใช้ GPIO อื่น ให้แก้ไขในโค้ดด้วย
- ตรวจสอบว่า RGB LED เป็น Common Cathode (ถ้าเป็น Common Anode ต้องแก้โค้ด)
ติดตั้ง Arduino IDE และ ESP32-S3 Board
ก่อนเริ่มเขียนโค้ด เราต้องติดตั้ง Arduino IDE และ ESP32-S3 Board Support ก่อน
ดาวน์โหลด Arduino IDE
ดาวน์โหลด Arduino IDE เวอร์ชันล่าสุดจาก arduino.cc
เพิ่ม ESP32 Board URL
เปิด Arduino IDE → File → Preferences → Additional Board Manager URLs แล้วเพิ่ม:
ติดตั้ง ESP32 Board
Tools → Board → Boards Manager → ค้นหา "esp32" → ติดตั้ง "esp32 by Espressif Systems"
เลือก Board
Tools → Board → esp32 → เลือก "ESP32S3 Dev Module"
ตั้งค่า Board Configuration
ติดตั้ง Libraries
Sketch → Include Library → Manage Libraries → ติดตั้ง:
- ✅ lvgl (เวอร์ชัน 8.3.x)
- ✅ ESP32_Display_Panel
- ✅ ESP32_IO_Expander
⚠️ สำคัญ:
- ใช้ LVGL เวอร์ชัน 8.3.x (ไม่ใช่ 9.x)
- ตรวจสอบว่า USB CDC On Boot เป็น "Enabled"
- ถ้า Upload ไม่ได้ ให้กดปุ่ม BOOT ค้างไว้ขณะ Upload
เขียนโค้ด RGB LED Controller
ตอนนี้เรามาเขียนโค้ดสร้าง Touch Screen Interface สำหรับควบคุม RGB LED กัน โค้ดจะแบ่งเป็นส่วนสำคัญดังนี้:
โครงสร้างโค้ด:
- 🎨 LVGL GUI - สร้าง Touch Screen Interface
- ⚡ PWM Control - ควบคุม RGB LED ด้วย PWM
- 🎚️ Sliders - ปรับค่า R, G, B แยกกัน
- 🎨 Color Picker - เลือกสีสำเร็จรูป
- 💡 Brightness Control - ปรับความสว่างรวม
- 🌈 Effect Modes - โหมดเอฟเฟกต์ต่างๆ (Rainbow, Fade, Strobe)
โค้ดหลัก (ส่วนที่ 1 - Setup PWM):
โค้ดหลัก (ส่วนที่ 2 - LVGL GUI):
โค้ดหลัก (ส่วนที่ 3 - Color Presets):
🎨 Features ที่มีในโค้ด:
- ✅ Sliders สำหรับปรับ R, G, B แยกกัน (0-255)
- ✅ Brightness Slider ปรับความสว่างรวม (0-100%)
- ✅ Color Preset Buttons - 8 สีสำเร็จรูป
- ✅ Real-time Update - เห็นผลทันทีที่ปรับค่า
- ✅ Label แสดงค่า RGB และ Brightness
เพิ่มฟีเจอร์ขั้นสูง - Effect Modes
นอกจาก Basic Control แล้ว เรายังสามารถเพิ่มโหมดเอฟเฟกต์ต่างๆ ให้กับ RGB LED ได้ เช่น Rainbow, Fade, Strobe
โหมดเอฟเฟกต์ที่น่าสนใจ:
- 🌈 Rainbow - วนสีรุ้งแบบต่อเนื่อง
- ✨ Fade - ค่อยๆ เปลี่ยนสีแบบนุ่มนวล
- ⚡ Strobe - กระพริบเร็ว
- 🔥 Fire - จำลองเปลวไฟ
- 🌊 Wave - คลื่นสี
โค้ด Rainbow Effect:
โค้ด Fade Effect:
โค้ด Strobe Effect:
เพิ่มปุ่มเลือก Effect Mode:
Rainbow Mode
วนสีรุ้งแบบต่อเนื่อง เหมาะกับงานปาร์ตี้
Fade Mode
ค่อยๆ เปลี่ยนสีแบบนุ่มนวล เหมาะกับบรรยากาศผ่อนคลาย
Strobe Mode
กระพริบเร็ว เหมาะกับงาน Concert
Manual Mode
ควบคุมด้วยตัวเอง ปรับสีตามใจชอบ
💡 ไอเดียเพิ่มเติม:
- 🎵 Music Reactive - ใช้ Microphone ในตัวรับเสียงเพลง แล้วให้ LED เต้นตามจังหวะ
- 📱 WiFi Control - สร้าง Web Server ควบคุมผ่าน Browser
- ⏰ Schedule - ตั้งเวลาเปิด-ปิด หรือเปลี่ยนสีอัตโนมัติ
- 🌡️ Sensor Integration - เปลี่ยนสีตามอุณหภูมิหรือความชื้น
สรุป
ในบทความนี้เราได้เรียนรู้การสร้าง RGB LED Controller ด้วย ESP32-S3-Box-3 และ Touch Screen Interface ตั้งแต่การต่อวงจร การเขียนโค้ด ไปจนถึงการเพิ่มฟีเจอร์ขั้นสูง
สิ่งที่ได้เรียนรู้:
- ✅ การใช้งาน ESP32-S3-Box-3 และ Touch Screen
- ✅ การควบคุม RGB LED ด้วย PWM
- ✅ การสร้าง GUI ด้วย LVGL Library
- ✅ การทำ Color Picker และ Sliders
- ✅ การสร้าง Effect Modes ต่างๆ
ประโยชน์ที่ได้:
- 🎨 ควบคุม RGB LED ได้ง่ายผ่าน Touch Screen
- 💡 ปรับแสงสีได้ตามต้องการ
- 🌈 มีโหมดเอฟเฟกต์หลากหลาย
- 📱 สามารถนำไปต่อยอดเป็น Smart Home Controller
การต่อยอด:
- 🏠 ใช้ควบคุมไฟในบ้าน (Smart Home Lighting)
- 🎮 สร้าง Gaming Setup RGB Controller
- 🎨 ทำ Mood Lighting สำหรับห้องนอน
- 📸 ใช้เป็น Photography Light Controller
🎯 Next Steps:
- ลองเพิ่ม WS2812B LED Strip แทน RGB LED Module
- เพิ่ม WiFi Control ผ่าน Mobile App
- ทำ Voice Control ด้วย Microphone ในตัว
- เชื่อมต่อกับ Home Assistant หรือ Google Home
ช้อปอุปกรณ์ / เข้าร่วม Community
หากคุณสนใจ ESP32-S3-Box-3, RGB LED Module หรืออุปกรณ์สำหรับโปรเจค IoT และ Smart Home สามารถกดปุ่มด้านล่างนี้ได้เลย หรืออยากพูดคุยแลกเปลี่ยนความรู้เกี่ยวกับ Maker Projects ก็เข้าร่วม Community ของเราได้