Mục Lục:
- Tổng quan module HC-05
- PinOUT
- Ứng dụng
- Hướng dẫn giao tiếp bluetooth HC-05 với máy tính
- Các bước đấu nối
- Các tập lệnh cơ bản
- Cấu hình HC-05 bằng arduino
- Nạp code
- Các bước đấu nối
- Thực hành bật tắt thiết bị qua bluetooth HC-05 bằng giọng nói
Tổng quan về module HC-05
• HC05 tuân theo giao thức “Bluetooth V2.0 + EDR” (EDR là viết tắt của Tốc độ dữ liệu nâng cao) .
• Tần số hoạt động của nó là Băng tần ISM 2,4 GHz .
• HC05 sử dụng hệ thống Bluetooth CSR Bluecore 04-chip đơn bên ngoài với công nghệ CMOS .
• Mô-đun này tuân theo giao thức chuẩn 802.15.1 của IEEE (Institute of Electrical and Electronics Engineers) .
• Kích thước của HC-05 là 12,7mmx27mm .
• Điện áp hoạt động của nó là 5V.
• Nó gửi và nhận dữ liệu bởi UART, cũng được sử dụng để thiết lập tốc độ truyền.
• Nó có độ nhạy -80dBm .
• Mô-đun này cũng sử dụng (FHSS), một kỹ thuật mà tín hiệu vô tuyến được gửi ở các mức tần số khác nhau.
• Mô-đun này có khả năng hoạt động như một chế độ Master / Slave.
• Mô-đun này có thể dễ dàng kết nối với máy tính xách tay hoặc điện thoại di động qua Bluetooth.
PINOUT HC-05
Pin#1 | Enable Pin | The purpose of this pinout is to set data value at a high and low level. (Đặt giá trị HIGH hoặc LOW vào chân này ) |
Pin#2 | Vcc | At this pinout, the input supply is provided to the module. Its operating voltage is plus five volts. ( Chân cấp nguồn ) |
Pin#3 | GND | Ground (0V) |
Pin#4 | TX | Serial Transmitting Pin. ( Chân truyền ) |
Pin#5 | RX | Serial Receiving Pin ( Chân nhận ) |
Pin#6 | State | This Pin is connected to an LED, shows the operating state of the HC-05 Bluetooth module. (có thể kết nối với led ngoài) |
Ứng dụng của HC-05
• HC-05 thường được sử dụng trong các dự án nhúng, nơi dữ liệu cần được truyền không dây trong một khoảng cách nhỏ.
• Có thể truyền dữ liệu giữa hai mô-đun HC-05 và cũng có thể gửi dữ liệu từ HC-05 đến bất kỳ thiết bị Bluetooth nào, chẳng hạn như điện thoại di động, máy tính xách tay, v.v.
Để làm được như vậy, trước hết, chúng ta cần khởi động mô-đun HC-05 của mình, như thể hiện trong các bước dưới đây:
Hướng dẫn giao tiếp bluetooth HC-05 với máy tính
Dụng cụ chuẩn bị:
- HC-05
- Dây cắm test board
- Mạch USB TTL bất kỳ, ở đây mình dùng CP2102
Phần mềm sử dụng:
- Chương trình giao tiếp với máy tính: https://www.hw-group.com/software/hercules-setup-utility
- Nơi tải Drive cp2102: https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
Sơ đồ đấu nối:
Bước 1: Nối chéo TX-RX giữa Bluetooth HC-05 và USB ttl, cấp nguồn 5V từ USB ttl sang bluetooth HC-05, sau đó nối chân EN (hoặc KEY) sang chân GND.
Bước 2: Cắm USB vào máy tính sau đó rút chân EN (hoặc chân KEY) từ chân GND sang chân VCC 5V
Bước 3: Mở phần mềm giao tiếp với máy tính tên Heculus lên thực hiện các bước sau:
Lưu ý:
Trên hình ở bước số 2 để xem COM của usb TTL các bạn mở Device Manager > Ports (COM & PORT),
ở bước số 3 mặc định là baud 9600 nhưng một số trường hợp là 115200 nên khi gửi tập lệnh mà các bạn thấy các ký tự lạ xuất hiện thì cần thử lại các baude khác
Ở bước số 4 khi nhập tập lệnh các bạn thêm hậu tố <CR><LF> điều này có mục đích xuống dòng và hỗ trợ
Hướng dẫn sử dụng tập lệnh HC-05: https://drive.google.com/file/d/1GYMI3X5Nkuil-nFfvStK6iBHQPEU2nOQ/view?usp=sharing
Các tập lệnh cơ bản:
AT<CR><LF> // kiểm tra giao tiếp, trả về OK
AT+NAME?<CR><LF> // kiểm tra tên bluetooth, trả về tên bluetooth
AT+NAME=””<CR><LF> // đặt lại tên bluetooth, thêm dữ liệu vào 2 dấu “ “
AT+PSWD?<CR><LF> // kiểm tra mật khẩu, trả về mật khẩu của bluetooth
AT+PSWD=””<CR><LF> // đặt lại mật khẩu, thêm dữ liệu vào 2 dấu “ ”
AT+ADDR?<CR><LF> // kiểm tra địa chỉ bluetooth, trả về địa chỉ bluetooth
AT+ROLE?<CR><LF> // kiểm tra chế độ hoạt động
AT+VERSION?<CR><LF> // trả về firmware hiện tại của bluetooth
AT+UART=9600,0,0?<CR><LF> // ( thiết lập baudrate 9600,1 bit stop, no parity)
Các lệnh ở chế độ Master:
AT+RMAAD?<CR><LF> // ngắt kết nối với các thiết bị đã ghép
AT+ROLE=1<CR><LF> // đặt là module ở master
AT+RESET<CR><LF> // reset lại thiết bị
AT+CMODE=0<CR><LF> // Cho phép kết nối với bất kì địa chỉ nào
AT+INQM=0,5,5<CR><LF> // Dừng tìm kiếm thiết bị khi đã tìm được 5 thiết bị hoặc sau 5s
AT+INQ<CR><LF> // Bắt đầu tìm kiếm thiết bị để ghép nối Sau lệnh này một loạt các thiết bị tìm thấy được hiện thị. Định ra kết quả sau lệnh này như sau INQ:address,type,signal
Phần địa chỉ (address) sẽ có định dạng như sau: 0123:4:567890. Để sử dụng địa chỉ này trong các lệnh tiếp theo ta phải thay dấu “:” thành “,” 0123:4:567890 -> 0123,4,5678
AT+PAIR=<address>,<timeout><CR><LF> // Đặt timeout(s) khi kết nối với 1 địa chỉ slave
AT+LINK=<address><CR><LF> // Kết nối với slave
Các lệnh ở chế độ Slave:
AT+ORGL<CR><LF> // Reset lại cài đặt mặc định
AT+RMAAD<CR><LF> // Xóa mọi thiết bị đã ghép nối
AT+ROLE=0<CR><LF> // Đặt là chế độ SLAVE
AT+ADDR<CR><LF> // Hiển thị địa chỉ của SLAVE
Hướng dẫn sử dụng tập lệnh AT HC-05: https://drive.google.com/file/d/1GYMI3X5Nkuil-nFfvStK6iBHQPEU2nOQ/view?usp=sharing
Cấu hình HC-05 bằng arduino
Tiến hành nạp code bên dưới cho arduino
#include <SoftwareSerial.h>
SoftwareSerial Bluetooth(2,3);
char c=’ ‘;
void setup()
{
Serial.begin(9600);
Serial.println(“ready”);
Bluetooth.begin(38400);
}
void loop()
{
if(Bluetooth.available())
{
c=Bluetooth.read();
Serial.write(c);
}
if(Serial.available())
{
c=Serial.read();
Bluetooth.write(c);
}
}
Sau đó rút usb ra đấu nối như hình vẽ:
Như hình các bạn cấp nguồn 5V cho module bluetooth
Chân D2 nối chân TX BL
Chân D3 nối với chân 1k của cầu chia áp, cầu còn lại nối RX
Chân KEY( hay EN) khi chưa cắm vào máy tính thì nối vào GND
Như hình vẽ sau khi cắm vào máy tính ta đổi chân KEY( hay EN) qua VCC 5V
Mở serial và chuyển Baud thành 38400 sau đó lại chuyển về 9600 //CÁC BẠN CHÚ Ý ĐOẠN NÀY
Lúc này ta tiến hành test
Test
Gửi các tập lệnh cơ bản như ở trên đã test với phần mềm Heculus bên trên chỉ có điều là không thêm hậu tố <CR><LF>, chú ý không để dư khoảng trắng.
AT // kiểm tra giao tiếp, trả về OK
AT+NAME? // kiểm tra tên bluetooth, trả về tên bluetooth
AT+NAME=”” // đặt lại tên bluetooth, thêm dữ liệu vào 2 dấu “ “
AT+PSWD? // kiểm tra mật khẩu, trả về mật khẩu của bluetooth
AT+PSWD=”” // đặt lại mật khẩu, thêm dữ liệu vào 2 dấu “ ”
Thực hành điều khiển thiết bị bằng giọng nói với arduino
Sơ đồ:
Code:
#include <SoftwareSerial.h>
SoftwareSerial Bluetooth(2,3);
#define relay1 12
# define relay2 13
String voice = “”;
char c=’ ‘;
void setup() {
Serial.begin(9600);
Bluetooth.begin(9600);
Serial.println(“ready”);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
}
void loop() {
while (Bluetooth.available()) {
delay(10);
c = Bluetooth.read();
if (c == ‘#’) {
break;
}
Serial.write(c);
voice = char(c);
}
if (voice.length() > 0) {
Serial.println(voice);
if (voice == “*bật đèn 1”) {
lighton();
} else if (voice == “*tắt đèn 2”) {
lightoff();
} else if (voice == “*bật đèn 2”) {
fanon();
} else if (voice = “*tắt đèn 2”) {
fanoff();
}
voice = “”;
}
}
void lighton() {
digitalWrite(relay1, LOW);
}
void lightoff() {
digitalWrite(relay1, HIGH);
}
void fanon() {
digitalWrite(relay2, LOW);
}
void fanoff() {
digitalWrite(relay2, HIGH);
}
Tải phần mềm điều khiển:
Nói “Bật đèn 1” để bật thiết bị 1
Nói “Tắt đèn 1” để tắt thiết bị 1
Nói “Bật đèn 2” để bật thiết bị 2
Nói “Tắt đèn 2” để tắt thiết bị 2