กลับไปหน้ารวมไฟล์
rgb-led-light-with-hc-05-bluetooth-module-and-arduino-6a19a2.md

Introduction

โปรเจคนี้จะมาสอนวิธีควบคุม RGB SMD LED ด้วย HC-05 Bluetooth Module กับ Arduino กันนะน้อง

แอพ Android ที่เราทำจะมีสองโหมดให้เลือกเปลี่ยนสี LED นะ ตัวแรกคือ Palette กับตัวที่สองคือ Slider

โหมด Palette น้องก็แค่จิ้มเลือกสีจากแผงสีได้เลย ง่ายๆ

ส่วนโหมด Slider น้องจะได้ปรับค่าความเข้มของสีพื้นฐาน (RGB) แต่ละตัวด้วยตัวเองเลย

พอเลือกสีได้แล้ว แอพก็จะส่งข้อมูลสีมาให้ HC-05 จากนั้น Arduino ก็จะอ่านข้อมูลแล้วสั่งงาน LED ตามนั้นเลยจ้า

สำหรับโค้ดแอพ น้องๆ ไปดูใน description ของวิดีโอได้เลย

Video

Wireless Photonics: Bluetooth RGB Controller

รีโมต RGB ทั่วไปที่ใช้ Infrared (IR) นี่มันโบราณแล้วน้อง มันต้องหันไปหาตัวรับตรงเป๊ะๆ ถึงจะใช้ได้ โปรเจค Bluetooth HC-05 RGB LED Light นี้เราจะทิ้งเซนเซอร์ IR แล้วอัพเกรดมาใช้ลิงก์ Serial 2.4GHz แรงๆ แทน ด้วยการแยกข้อมูลหลายไบต์จากแอพเลือกสีบน Android แล้ว Arduino ก็จะใช้พิน PWM สามตัวผสมสีได้ถึง 16 ล้านสีแบบเนียนๆ โดยที่ไม่ต้องหันไปมองไฟเลย!

The Bluetooth Protocol (Hex / String Parsing)

เวลาน้องลากวงล้อสีบนแอพ Android ไปที่สี "ส้ม" มันไม่สามารถส่งแค่คำว่า "ส้ม" มาได้หรอก มันจะส่งสตริงข้อความดิบๆ มา ซึ่งมักจะฟอร์แมตเป็นโค้ด Hex หรือคั่นด้วยคอมม่าแบบนี้: R255G128B0\n

  1. พิน RX ของ HC-05 จะรับสตริงตัวอักษรยาวๆ นี้เข้ามา
  2. Arduino ต้องทำการบัฟเฟอร์ข้อมูลนี้แบบดุเดือดด้วย while(Serial.available())
  3. คณิตศาสตร์การแยกข้อมูล (Index Parsing Math): น้องต้องใช้ indexOf() กับ substring() ในการตัดข้อมูลออกเป็นส่วนๆ!
int rIndex = incomingData.indexOf('R');
int gIndex = incomingData.indexOf('G');
int bIndex = incomingData.indexOf('B');

String redString = incomingData.substring(rIndex + 1, gIndex);
int redPWM = redString.toInt(); // แปลงสตริง "255" ให้เป็นเลขจำนวนเต็ม 255!
  1. พอได้ค่าจำนวนเต็มสามตัว (redPWM, greenPWM, bluePWM) มาแล้ว Arduino ก็จะโยนมันไปให้ฮาร์ดแวร์ทำงานต่อทันที!

The AnalogWrite PWM Mixing Array

LED RGB มันก็คือ LED เล็กๆ สามดวง (แดง, เขียว, น้ำเงิน) ที่ถูกยัดรวมอยู่ในพลาสติกทรงโดมเดียวกันนั่นแหละ

  • analogWrite(RedPin, redPWM); (ปกติจะเป็น Pin 9)
  • analogWrite(GreenPin, greenPWM); (ปกติจะเป็น Pin 10)
  • analogWrite(BluePin, bluePWM); (ปกติจะเป็น Pin 11)
  • ด้วยการสั่งให้พินทั้งสามสั่นด้วยความเร็วต่างกัน ดวงตาคนเราก็จะหลงคิดว่าเห็นเป็นสีเดียวที่สวยงาม เช่น R:255, G:128, B:0 ก็จะได้สีส้มอันร้อนแรงออกมา!

Bluetooth RGB Hardware Needs

  • Arduino Uno/Nano.
  • โมดูล HC-05 Transceiver (ต้องใช้ตัวต้านทาน (Resistor) 1K / 2K ทำ Voltage divider บนพิน RX ด้วยนะ! เพราะ Uno ใช้ 5V แต่ HC-05 ใช้ Logic 3.3V!).
  • Common Cathode RGB LED (ขาที่ยาวสุดให้ต่อกับ GND).
  • หรือจะอัพสเกล: ใช้ ทรานซิสเตอร์ NPN แบบ TIP120 3 ตัว เพื่อขับ RGB LED strip แบบอะนาล็อก ขนาด 5 เมตร 12V ให้สว่างไสวไปทั้งห้องเลยก็ได้! สู้งานนะน้อง

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x MIT App Inventor 2"
  - "1x Arduino IDE"
author: "shreyas_arbatti"
category: ""
components:
  - "1x Jumper wires (generic)"
  - "1x RGB Diffused Common Cathode"
  - "1x Arduino UNO"
  - "1x HC-05 Bluetooth Module"
  - "1x Breadboard (generic)"
description: "โปรเจคนี้จะสอนน้องๆ ควบคุมไฟ LED แบบ RGB ผ่านมือถือด้วยโมดูล HC-05 Bluetooth กับ Arduino ไว้จัดแสงสีตึงๆ ตามใจ วัยรุ่นต้องลอง!"
difficulty: "Easy"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX1/oAYX/A5LnhG8BDgJJ9vBXGSHGVQuwwiBUiTl2SnwUPTIn+bvAOyTN8Hh9Fyng5vikoHXGIK4SiHhRVkLJuOogUt3TCGEW1ergeNUlI0x4K4sZ/GMsvxv/"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/rgb-led-light-with-hc-05-bluetooth-module-and-arduino-6a19a2_cover.jpg"
lang: "en"
likes: 0
passwordHash: "d1dea7b3d63ea66569799307b28db4eff7fb9b3a323b13097d2abbd7f84d8a08"
price: 699
seoDescription: "Learn how to control an RGB SMD LED using HC-05 Bluetooth Module and Arduino in this simple electronics project."
tags:
  - "bluetooth"
  - "rgb led"
  - "hc 05"
title: "RGB LED Light with HC 05 Bluetooth Module and Arduino"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/D_z75leWNCY"
views: 6967