วิธีใช้งาน Bluetooth Module HC05 กับ Arduino ผ่านมือถือ
วิธีใช้งาน Bluetooth Module HC05 กับ Arduino ผ่านมือถือ
HC05 เป็นโมดูล Bluetooth ที่ใช้งานง่าย ราคาถูก และสามารถสื่อสารกับ Arduino ผ่าน Serial Port ได้โดยตรง โมดูลตัวนี้เหมาะสำหรับคนที่ต้องการควบคุมอุปกรณ์อิเล็กทรอนิกส์ผ่านมือถือ ไม่ว่าจะเป็นการเปิดปิดไฟ ควบคุมมอเตอร์ หรือรับค่าจากเซนเซอร์
คุณสมบัติของ HC05
HC05 มีจุดเด่นที่ต่างจาก HC06 ตรงที่สามารถตั้งค่าเป็นได้ทั้ง:
- โหมด Slave — ให้อุปกรณ์อื่น (เช่น มือถือ) มาเชื่อมต่อ
- โหมด Master — ให้ HC05 ไปหาเชื่อมต่อกับอุปกรณ์อื่น
การตั้งค่าต่าง ๆ เช่น ชื่ออุปกรณ์ รหัสผ่าน ทำได้ผ่าน AT Command โดยกดปุ่มบนโมดูลค้างไว้ก่อนจ่ายไฟ แล้วค่อยปล่อย
อุปกรณ์ที่ต้องใช้
| อุปกรณ์ | จำนวน |
|---|---|
| Arduino UNO R3 | 1 บอร์ด |
| Bluetooth Module HC05 | 1 ตัว |
| Breadboard MB-102 | 1 ตัว |
| สายจัมเปอร์ ผู้-เมีย | 4 เส้น |
| Power Adapter 9V 2A | 1 ตัว (ถ้าจ่ายไฟจากภายนอก) |
การต่อวงจร HC05 กับ Arduino
การเชื่อมต่อทำได้ตามตารางด้านล่าง:
| HC05 | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| TX | Pin 2 (RX) |
| RX | Pin 3 (TX) |
สิ่งที่ต้องระวังคือ HC05 รับไฟที่ 3.3V บนขา RX แต่ขา TX ของมันส่งสัญญาณออกมาเป็น 3.3V ซึ่ง Arduino UNO อ่านได้ (เพราะระดับ HIGH ของ 3.3V อยู่เหนือเกณฑ์) จึงไม่ต้องต่อ Voltage Divider ก็ใช้งานได้เลย
โค้ด Arduino สำหรับอ่านค่าจาก HC05
#include <SoftwareSerial.h>
// กำหนดขา RX = Pin 2, TX = Pin 3
SoftwareSerial mySerial(2, 3);
void setup() {
Serial.begin(9600);
while (!Serial) ; // รอจนกว่า Serial พร้อม (สำหรับ Leonardo)
mySerial.begin(9600);
}
void loop() {
// ถ้ามีข้อมูลเข้ามาจาก HC05 ให้ส่งไป Serial Monitor
if (mySerial.available()) {
Serial.write(mySerial.read());
}
// ถ้ามีข้อมูลจาก Serial Monitor ให้ส่งไป HC05
if (Serial.available()) {
mySerial.write(Serial.read());
}
}
โค้ดนี้ทำหน้าที่ส่งต่อข้อมูลระหว่าง HC05 กับ Serial Monitor ของ Arduino ทุกทิศทาง เมื่อกดปุ่มในแอปบนมือถือ ค่าจะไปปรากฏที่ Serial Monitor และเราก็เห็นว่าแอปส่งอะไรมา
วิธีประยุกต์ใช้ค่าจาก Bluetooth
จากโค้ดตัวอย่าง mySerial.read() จะเก็บค่าตัวอักษรที่ส่งมาจากมือถือ เรานำค่านี้ไปเขียนเงื่อนไขควบคุมอุปกรณ์ได้เลย เช่น:
void loop() {
if (mySerial.available()) {
char data = mySerial.read();
if (data == 'A') {
digitalWrite(13, HIGH); // เปิดไฟ LED
} else if (data == 'B') {
digitalWrite(13, LOW); // ปิดไฟ LED
}
// แสดงค่าที่รับได้ที่ Serial Monitor
Serial.println(data);
}
}
ถ้าอยากควบคุมรีเลย์เพื่อเปิดปิดไฟบ้านก็ทำได้โดยต่อขา Signal ของรีเลย์เข้ากับ Pin ที่ต้องการ แล้วเปลี่ยนเงื่อนไขในโค้ดตามปุ่มที่กดในแอป
ติดตั้งแอป Ardroid บนมือถือ
แอปที่ใช้กับบทความนี้ชื่อ Ardroid ดาวน์โหลดได้จาก Play Store:
ขั้นตอนการใช้งานแอป:
- เปิดแอป Ardroid กดปุ่ม 3 จุดมุมขวาบน
- เลือก Bluetooth แล้วจับคู่กับ HC05 (รหัสผ่านปกติคือ 1234)
- เมื่อเชื่อมต่อสำเร็จ ไฟสถานะบน HC05 จะเปลี่ยนจากกระพริบเร็วเป็นติดค้าง
แอปมีหลายหน้าสำหรับทดสอบ:
- หน้า Digital — กด Pin1 Pin2 Pin3 เพื่อส่งค่าตัวเลขไปยัง Arduino
- หน้า Analog — ลากแถบบาร์เพื่อส่งค่าตัวเลขแบบต่อเนื่อง
- หน้า Data — พิมพ์ข้อความแล้วกดส่ง เช่น พิมพ์ “myarduino” แล้วกด Send ค่านั้นจะไปแสดงที่ Serial Monitor
[image: หน้าตาแอป Ardroid แสดงปุ่ม Pin1 Pin2 Pin3 ที่ใช้สำหรับทดสอบ]
วิดีโออ้างอิง
สรุป
HC05 เป็นตัวเลือกที่ดีสำหรับโปรเจกต์ที่ต้องการควบคุม Arduino ผ่านมือถือ ข้อดีคือต่อวงจรง่าย ใช้ไฟ 5V จาก Arduino ได้เลย และสื่อสารผ่าน Serial Port ทำให้เขียนโค้ดไม่ซับซ้อน ข้อควรระวังคือต้องต่อ TX ของ HC05 เข้าขา RX ของ Arduino และ RX ของ HC05 เข้าขา TX ของ Arduino ถ้าต่อกลับข้อมูลจะส่งไม่ได้
อยากทำโปรเจคแบบนี้?
รับทำโปรเจค Arduino / IoT จบงานไว ส่งงานครบ พร้อมสอน
หากต้องการ รับทำโปรเจคอาดูโน่ หรือระบบ IoT แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก
จ้างทำโปรเจคเลย