Kết nối Module Bluetooth HM-10
1. Mục tiêu bài học #
Sau bài này, bạn có thể:
- Kết nối điện thoại với Arduino qua Bluetooth BLE
- Điều khiển xe bằng app Dabble
- Điều khiển tiến/lùi/trái/phải
- Điều khiển servo bằng nút trên điện thoại
2. Giới thiệu module Bluetooth HM-10 #
HM-10 là module Bluetooth BLE (Bluetooth Low Energy).
Khác với HC-05:
| HM-10 | HC-05 |
|---|---|
| Hỗ trợ BLE | Bluetooth Classic |
| Dùng được tốt với iPhone | Chủ yếu Android |
| Hỗ trợ app Dabble | Có |
| Tiết kiệm pin | Có |
Trong bài này chúng ta sẽ dùng app Dabble để điều khiển xe bằng điện thoại.
4. Sơ đồ kết nối #
5. Cài đặt #
Cài đặt App Dabble
Android
Tìm ứng dụng:
- Dabble by STEMpedia
iPhone
Có thể tìm:
- STEMpedia Dabble
- Dabble
Cài đặt thư viện Dabble cho Arduino
Mở:
- Arduino IDE
- Library Manager
Tìm:
- Dabble
Cài đặt thư viện của STEMpedia.
5. Code đọc cảm biến line cơ bản #
#define L2_PIN 8
#define L1_PIN 9
#define C_PIN 10
#define R1_PIN 11
#define R2_PIN 12
void setup()
{
Serial.begin(9600);
pinMode(L2_PIN, INPUT);
pinMode(L1_PIN, INPUT);
pinMode(C_PIN, INPUT);
pinMode(R1_PIN, INPUT);
pinMode(R2_PIN, INPUT);
}
void loop()
{
int l2 = digitalRead(L2_PIN);
int l1 = digitalRead(L1_PIN);
int c = digitalRead(C_PIN);
int r1 = digitalRead(R1_PIN);
int r2 = digitalRead(R2_PIN);
Serial.print(l2);
Serial.print(" ");
Serial.print(l1);
Serial.print(" ");
Serial.print(c);
Serial.print(" ");
Serial.print(r1);
Serial.print(" ");
Serial.println(r2);
delay(100);
}5. Nạp code và kiểm tra #
Bước 1: Nạp code
Bước 2: Mở Serial Monitor
Chọn:
- Baudrate: 9600
Bạn sẽ thấy:
Khi tất cả cảm biến nằm trên nền trắng:
1 1 1 1 1
Khi mắt giữa nằm trên vạch đen:
1 1 0 1 1
Khi vạch nằm lệch trái:
1 0 0 1 1
Khi vạch nằm lệch phải:
1 1 0 0 1
Có thể sửa code như sau để hiển thị rõ ràng hơn
void loop()
{
int l2 = digitalRead(L2_PIN);
int l1 = digitalRead(L1_PIN);
int c = digitalRead(C_PIN);
int r1 = digitalRead(R1_PIN);
int r2 = digitalRead(R2_PIN);
Serial.print("L2=");
Serial.print(l2);
Serial.print(" L1=");
Serial.print(l1);
Serial.print(" C=");
Serial.print(c);
Serial.print(" R1=");
Serial.print(r1);
Serial.print(" R2=");
Serial.println(r2);
delay(100);
}Ví dụ:
L2=1 L1=1 C=0 R1=1 R2=1
Ta có thể suy ra vị trí của line như sau:
| Trạng thái | Vị trí line |
|---|---|
| 1 1 0 1 1 | Chính giữa |
| 1 0 1 1 1 | Lệch trái |
| 0 1 1 1 1 | Rất lệch trái |
| 1 1 1 0 1 | Lệch phải |
| 1 1 1 1 0 | Rất lệch phải |
7. Một số lưu ý #
Điều chỉnh độ cao
Khoảng cách tốt nhất:
5mm ~ 15mm
so với mặt sàn.
Nếu quá cao:
- Khó phát hiện line.
- Dễ bị nhiễu.
Màu line
Hoạt động tốt nhất với:
- Vạch đen.
- Nền trắng.
Ví dụ:
Nền trắng + line đen
hoặc
Nền vàng nhạt + line đen
8. Ứng dụng #
Encoder thường dùng để:
9. Tổng kết #
Sau bài học này bạn đã:
- Hiểu nguyên lý cảm biến dò line TCRT5000.
- Đọc được dữ liệu từ 5 mắt cảm biến.
- Xác định được vị trí tương đối của vạch line.
- Sẵn sàng xây dựng robot dò line ở bài học tiếp theo.
Cập nhật vào Tháng 5 30, 2026