วิธีใช้งาน Bluetooth Module HC06 กับ Arduino ควบคุมเปิดปิดไฟบ้าน
วิธีใช้งาน Bluetooth Module HC06 กับ Arduino ควบคุมเปิดปิดไฟบ้าน
HC06 เป็นโมดูล Bluetooth ที่ทำให้ Arduino สื่อสารกับมือถือหรืออุปกรณ์อื่นได้ผ่าน Serial Port บทความนี้จะสอนวิธีอ่านค่าที่แอปในมือถือส่งมา แล้วนำมาสั่งรีเลย์ 4 ช่องเปิดปิดไฟบ้าน
HC06 ทำงานอย่างไร
HC06 ทำหน้าที่เป็น Slave คือรอให้อุปกรณ์อื่น (มือถือ) เชื่อมต่อเข้ามา เมื่อเชื่อมต่อสำเร็จแล้วข้อมูลจะส่งผ่าน Serial Port มาที่ Arduino สามารถตั้งค่าชื่ออุปกรณ์และรหัสผ่านได้ด้วย AT Command แต่ในบทความนี้จะเน้นการใช้งานจริงในการควบคุมรีเลย์
อุปกรณ์ที่ต้องใช้
- Arduino UNO R3 พร้อมสาย USB
- Bluetooth Module HC06
- บอร์ด Relay 4 ช่อง 5V (250V/10A)
- Switching Power Supply 5V 5A (จ่ายไฟให้รีเลย์)
- Power Adapter 9V 2A สำหรับ Arduino
- MB-102 Breadboard 830 จุด
- สายจัมเปอร์ผู้-ผู้, ผู้-เมีย, เมีย-เมีย
- สายไฟพร้อมหัวปลั๊ก 220V AC
วงจรและการต่อสาย
ต่อ HC06 กับ Arduino
| HC06 | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| TX | Pin 2 |
| RX | Pin 3 |
ต่อ Relay Module กับ Arduino
| Relay | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| IN1 | Pin 8 |
| IN2 | Pin 9 |
| IN3 | Pin 10 |
| IN4 | Pin 11 |
ข้อสำคัญ ต้องใช้ Switching Power Supply 5V 5A จ่ายไฟให้รีเลย์แยกต่างหาก ห้ามใช้ไฟจาก Arduino โดยตรง เพราะรีเลย์ 4 ช่องกินกระแสมากเกินไป
โค้ด Arduino อ่านค่าจาก HC06
#include <SoftwareSerial.h>
int i = 0;
char str[11] = {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'};
SoftwareSerial mySerial(2, 3); // RX, TX
void setup() {
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
// ตั้งค่า initial state ของรีเลย์ทุกตัวเป็น OFF (HIGH)
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
Serial.begin(9600);
while (!Serial) ;
mySerial.begin(9600);
}
void loop() {
if (mySerial.available()) {
i = i + 1;
str[i] = mySerial.read();
Serial.println(str[i]);
if (i == 9) i = 0;
// ตรวจสอบค่าจากแอป: str[5] = หมายเลขรีเลย์, str[7] = คำสั่ง
// คำสั่ง 3 = ON, คำสั่ง 2 = OFF
// รีเลย์ตัวที่ 1
if (str[5] == '1' && str[7] == '3') digitalWrite(8, LOW);
if (str[5] == '1' && str[7] == '2') digitalWrite(8, HIGH);
// รีเลย์ตัวที่ 2
if (str[5] == '2' && str[7] == '3') digitalWrite(9, LOW);
if (str[5] == '2' && str[7] == '2') digitalWrite(9, HIGH);
// รีเลย์ตัวที่ 3
if (str[5] == '3' && str[7] == '3') digitalWrite(10, LOW);
if (str[5] == '3' && str[7] == '2') digitalWrite(10, HIGH);
// รีเลย์ตัวที่ 4
if (str[5] == '4' && str[7] == '3') digitalWrite(11, LOW);
if (str[5] == '4' && str[7] == '2') digitalWrite(11, HIGH);
}
if (Serial.available())
mySerial.write(Serial.read());
}
วิธีอ่านค่าที่แอปส่งมา
แอป Ardroid จะส่งค่ามาเป็นชุด เช่น เมื่อกดเปิดไฟรีเลย์ตัวที่ 1 จะส่งค่าที่มีตัวอักษร ‘1’ อยู่ใน str[5] และ ‘3’ อยู่ใน str[7] การเปิด/ปิดรีเลย์แต่ละตัวทำได้โดยกดปุ่ม Pin1-Pin4 ในแอป
ค่าที่ส่งมา: X1Y3 -> เปิดรีเลย์ 1
ค่าที่ส่งมา: X1Y2 -> ปิดรีเลย์ 1
ค่าที่ส่งมา: X2Y3 -> เปิดรีเลย์ 2
การติดตั้งและใช้งานแอป Ardroid
- ดาวน์โหลดแอป Ardroid จาก Play Store
- เปิดแอปแล้วกดปุ่ม 3 จุดมุมขวาบน
- เลือก Bluetooth แล้วจับคู่กับ HC06 (รหัสผ่านปกติคือ 1234)
- เมื่อเชื่อมต่อสำเร็จ ไฟ LED บน HC06 จะหยุดกระพริบ
วิดีโออ้างอิง
https://www.youtube.com/embed/JhL1BYnjbj0
สรุป
จากบทความนี้เราได้เรียนรู้วิธีใช้ SoftwareSerial รับค่าจาก HC06 เก็บไว้ในอาร์เรย์แล้วตรวจสอบด้วย if เพื่อสั่งงานรีเลย์แต่ละตัว หลักการนี้ใช้ควบคุมอุปกรณ์อื่นได้หลากหลาย ไม่ว่าจะเป็นพัดลม ปั๊มน้ำ หรือมอเตอร์ แทนที่จะเป็นแค่ไฟบ้าน
อยากทำโปรเจคแบบนี้?
รับทำโปรเจค Arduino / IoT จบงานไว ส่งงานครบ พร้อมสอน
หากต้องการ รับทำโปรเจคอาดูโน่ หรือระบบ IoT แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก
จ้างทำโปรเจคเลย