- Vật liệu thiết yếu
- Sơ đồ mạch
- Cấu hình ban đầu của mô-đun HC05
- Thử nghiệm giao tiếp Bluetooth từ Arduino đến Arduino
Mô-đun Bluetooth HC-05 là mô-đun Bluetooth phù hợp cho bất kỳ dự án Arduino nào! Thật dễ dàng để kết nối và viết mã trong Arduino IDE. Trong hầu hết các dự án, chúng tôi thường kết nối HC05 với Arduino và sử dụng nó để giao tiếp không dây với một thiết bị thông minh khác như điện thoại di động. Điều này khá đơn giản và chúng tôi đã xây dựng nhiều dự án thú vị với nó như Robot điều khiển bằng Bluetooth, Điều khiển bằng giọng nói Bluetooth, Tự động hóa gia đình Bluetooth, v.v. Tuy nhiên, bạn đã bao giờ cần kết nối hai HC-05 với nhau chưa? Việc kết nối HC05 với điện thoại thông minh không đơn giản như vậy, có một số bước bổ sung liên quan. Hướng dẫn này sẽ hướng dẫn bạn thực hiện quá trình này. Hãy bắt tay ngay vào!
Vật liệu thiết yếu
- 2x Arduino (Bất kỳ mô hình nào cũng được; Tôi đang sử dụng Arduino Uno R3 và Arduino Nano)
- 2x Mô-đun Bluetooth HC05
- Breadboard
- Dây nhảy
- Điện trở 2x 1kΩ
- Điện trở 2x 2,2kΩ
Sơ đồ mạch
Đây là sơ đồ mạch cơ bản. Nối dây 2 trong số các mạch này, một cho chính và một cho nô lệ. Đối với các kết nối, tất cả những gì chúng tôi đang làm ở đây là kết nối HC05 với Arduino. Chân thu (Rx) của HC05 hoạt động ở dải 0V đến 3,3V và Arduino hoạt động ở dải 0V đến 5V. Vì vậy, chúng tôi sẽ sử dụng điện trở (R1 và R2) để tạo ra một bộ chia điện áp để giảm đầu ra 5V của Arduino xuống 3,3V, để không làm hỏng mô-đun HC05.
Tôi đang sử dụng 1kΩ cho R1 và 2,2KΩ cho R2 nhưng bạn có thể sử dụng bất kỳ giá trị điện trở nào miễn là R2 xấp xỉ gấp đôi giá trị của R1 (R2 ≈ 2R1). Tương tự như vậy, lặp lại các mạch cho cả chủ và nô lệ, các Arduino Thạc sĩ Bluetooth Circuit và Arduino Slave Bluetooth Circuit được hiển thị bên dưới.
Cấu hình ban đầu của mô-đun HC05
Đây là bước bổ sung cần thiết để kết nối hai mô-đun HC05 với nhau. Chúng tôi cần thay đổi một số cài đặt bên trong Mô-đun Bluetooth HC05, để thực hiện việc này, chúng tôi phải vào Chế độ lệnh AT của mô-đun HC05 và gửi lệnh đến nó thông qua màn hình nối tiếp của Arduino IDE. Để thực hiện việc này, chúng ta cần viết mã Arduino để gửi lệnh qua màn hình nối tiếp đến HC05.
Các mã để cấu hình các module HC05 có thể được tìm thấy ở dưới cùng của trang này, lời giải thích của mã này là như sau
Thêm thư viện SoftwareSerial vào mã này.
#include < SoftwareSerial.h>
Xác định số chân truyền (Tx) và nhận (Rx). Tôi đang sử dụng chân 2 cho Tx và chân 3 cho Rx.
#define tx 2 #define rx 3
Đặt tên cho kết nối Bluetooth (ở đây tôi đang sử dụng configBt), sau đó cho thư viện SoftwareSerial biết chân nào là Tx và chân nào là Rx. Cú pháp là bluetoothName (Rx, Tx);
SoftwareSerial configBt (rx, tx); // RX, TX
Để định cấu hình mô-đun Bluetooth, Arduino cần gửi lệnh đến nó với tốc độ truyền 38400 baud. Tương tự, chúng tôi cũng đặt tốc độ truyền của kết nối Bluetooth thành 38400 baud. Đặt Truyền (Tx) thành chân đầu ra và Nhận (Rx) thành chân đầu vào
void setup () { Serial.begin (38400); configBt.begin (38400); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Bên trong vòng lặp vĩnh viễn, chúng ta có đoạn mã chính. Ý tưởng ở đây là gửi bất cứ thứ gì được nhập trong hộp văn bản trong màn hình nối tiếp tới HC05 thông qua chân Tx của Arduino. Sau đó, hiển thị bất cứ thứ gì được xuất ra bởi HC05 trong màn hình nối tiếp.
void loop () {if (configBt.available ()) // nếu HC05 đang gửi thứ gì đó… { Serial.print (configBt.readString ()); // in trong màn hình nối tiếp} if (Serial.available ()) // nếu màn hình nối tiếp đang xuất thứ gì đó… {configBt.write (Serial.read ()); // ghi vào chân Tx của Arduino}}
Tải mã này lên Arduino được kết nối với mô-đun HC05 chính trước. Sau khi tải mã lên, hãy cắm cáp nguồn Arduino. Nhấn và giữ nút trên HC05. Bây giờ hãy cắm cáp nguồn Arduino trong khi vẫn giữ nút trên HC05. Được rồi, bây giờ bạn có thể nhả nút trên HC05. Đây là cách bạn chuyển sang chế độ AT của HC05. Để kiểm tra xem bạn đã làm đúng chưa, hãy đảm bảo đèn đỏ trên HC05 nhấp nháy khoảng một giây (nhấp nháy chậm!). Thông thường trước khi HC05 được kết nối với bất kỳ thiết bị Bluetooth nào, đèn đỏ sẽ nhấp nháy với tần số rất cao (nhấp nháy nhanh!).
Tiếp theo, mở màn hình nối tiếp (nút màn hình nối tiếp ở trên cùng bên phải của Arduino IDE). Ở góc dưới cùng bên phải của cửa sổ Serial monitor, nếu bạn chưa làm như vậy, hãy đảm bảo rằng bạn đặt cài đặt kết thúc dòng thành “Cả NL và CL” và tốc độ truyền là 38400. Bây giờ, nhập AT vào màn hình nối tiếp, nếu mọi việc suôn sẻ, bạn sẽ nhận được thông báo “OK” từ HC05 được hiển thị trong cửa sổ màn hình nối tiếp. Xin chúc mừng! Bạn đã đăng nhập thành công vào chế độ lệnh AT của mô-đun HC05.
Bây giờ, hãy nhập các lệnh sau vào bảng bên dưới để định cấu hình mô-đun HC05 chính:
COMMAND (nhập mã này vào màn hình nối tiếp và nhấn enter) |
RESPONSE (phản hồi từ HC05, hiển thị trong màn hình nối tiếp) |
Chức năng (Lệnh này làm gì?) |
AT |
đồng ý |
Kiểm tra |
AT + CMODE? |
đồng ý |
Kiểm tra CMODE hoặc Chế độ kết nối ----------------------------- CMODE: 0 là nô lệ 1 là chủ |
AT + CMODE = 1 |
đồng ý |
Đặt CMODE đến 1 như chúng ta được cấu hình tổng thể HC05 |
TẠI + ĐỊA CHỈ? |
+ ĐỊA CHỈ: FCA8: 9A: 58D5 đồng ý * Đây là địa chỉ của HC05 chính chủ của mình. Địa chỉ của bạn sẽ khác! |
Trả về địa chỉ của HC05, hãy ghi lại điều này vì chúng ta sẽ cần nó sau này! |
Tiếp theo kết nối máy tính của bạn với HC05 khác của bạn, nô lệ:
COMMAND (nhập mã này vào màn hình nối tiếp và nhấn enter) |
RESPONSE (phản hồi từ HC05, hiển thị trong màn hình nối tiếp) |
Chức năng (Lệnh này làm gì?) |
AT |
đồng ý |
Kiểm tra |
AT + CMODE? |
đồng ý |
Kiểm tra CMODE hoặc Chế độ kết nối ----------------------------- CMODE: 0 là nô lệ 1 là chủ |
AT + CMODE = 0 |
đồng ý |
Đặt CMODE đến 0 như chúng ta đang cấu hình các nô lệ HC05 |
AT + BIND = FCA8,9A, 58D5 * Thay thế “:” trong địa chỉ HC05 chính bằng “,” * Ở đây tôi đang sử dụng địa chỉ của chính HC05 mà tôi đã ghi lại từ bảng trước. Bạn nên sử dụng địa chỉ của HC05 chính chủ của bạn! |
đồng ý |
Đặt địa chỉ của HC05 chính mà HC05 phụ này sẽ tự động kết nối khi khởi động |
AT + BIND? |
+ BIND: FCA8: 9A: 58D5 đồng ý * Đây là địa chỉ của HC05 chính chủ của mình. Địa chỉ của bạn sẽ khác! |
Kiểm tra địa chỉ ràng buộc của nô lệ của bạn. Nếu nó khớp với địa chỉ của chính HC05 của bạn, bạn tốt để đi! |
Thử nghiệm giao tiếp Bluetooth từ Arduino đến Arduino
Đầu tiên, cấp nguồn cho cả mô-đun HC05 chính và phụ. Sau khi bật nguồn và một vài giây trôi qua, hãy nhìn vào đèn đỏ trên các mô-đun HC05.
Tốc độ nhấp nháy của đèn đỏ |
Nó có nghĩa là gì |
Nhấp nháy với tần suất rất cao (nhấp nháy nhanh!) |
Không tốt! Nó có nghĩa là các mô-đun HC05 của bạn không kết nối với nhau! Đã đến lúc khắc phục sự cố! |
Nhấp nháy ở tần số thấp (nhấp nháy chậm!) |
Đẹp! Bạn đã làm xong việc đó! Nhưng chúng tôi vẫn phải kiểm tra thêm một lần nữa để đảm bảo rằng thiết lập này hoạt động! Tiến lên! |
Khi đèn đỏ của bạn nhấp nháy ở tần số thấp (nhấp nháy chậm!), Bạn có thể chắc chắn rằng cả hai HC05 của bạn được kết nối với nhau, nhưng chúng tôi chưa kiểm tra xem dữ liệu có thể được gửi qua lại giữa chính và phụ hay không. Rốt cuộc, đó là mục đích chính ở đây.
Tải mã bên dưới lên một trong các Arduinos, đây là mã để kiểm tra bộ phát (Tx), một lần nữa , bạn có thể tìm thấy mã hoàn chỉnh cho cả bộ phát và bộ thu ở cuối trang này.
Tiếp theo mã trước, chúng tôi thêm thư viện SoftwareSerial vào mã này và xác định số pin truyền (Tx) và nhận (Rx). Sau đó, chúng tôi đặt tên cho kết nối Bluetooth và chuyển số pin Tx và Rx vào thư viện.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Trong chức năng thiết lập, chúng tôi đang đặt lại tốc độ truyền cho màn hình nối tiếp Arduino và Bluetooth. Bạn có thấy sự khác biệt ở đây so với mã trước đó? Chúng tôi đang sử dụng tốc độ truyền là 9600 baud. Đây là tốc độ truyền giao tiếp được đặt trước mặc định của mô-đun Bluetooth HC05 khi giao tiếp với các thiết bị Bluetooth khác. Vì vậy, lưu ý rằng 38400 baud là để cấu hình HC05 với các lệnh AT và 9600 baud là tốc độ truyền mặc định của mô-đun HC05. Cuối cùng, giống như trước khi chúng ta định cấu hình chân Tx làm đầu ra và chân Rx làm đầu vào.
void setup () { Serial.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Bên trong vòng lặp vĩnh viễn, tất cả những gì chúng tôi đang làm là truyền một giá trị ngẫu nhiên là “123” qua HC05.
void loop () {bt.write (123); }
Tải mã này lên Arduino khác, đây là mã để kiểm tra nhận (Rx):
Hoàn toàn giống với các mã trước đó, chúng tôi cấu hình thư viện SoftwareSerial.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Mã trong chức năng thiết lập hoàn toàn giống với mã để kiểm tra truyền (Tx).
void setup () { Serial.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Trong vòng lặp mãi mãi, chúng ta chỉ cần nhận những gì chúng ta đang gửi từ Arduino đang truyền. Nếu bộ đệm nhận đã nhận một số dữ liệu từ HC05, thì hiển thị bất kỳ dữ liệu nào nhận được trong màn hình nối tiếp.
void loop () {if (bt.available ()> 0) { Serial.println (bt.read ()); }}
Sau khi bạn đã tải các mã tương ứng lên từng Arduino, hãy mở màn hình nối tiếp tới Arduino nhận. Đảm bảo rằng bạn chọn tốc độ truyền là 9600 và dòng kết thúc là Newline trong màn hình nối tiếp. Nếu mọi thứ hoạt động tốt, bạn sẽ thấy 123.
Lưu ý: Nếu bạn đã kết nối cả Arduinos truyền và nhận với cùng một máy tính xách tay, hãy đảm bảo bạn chọn đúng cổng COM trong TOOLS> PORT. Bạn phải được kết nối với cổng COM của Arduino nhận.
Các bác sĩ cho biết thêm:Nếu mọi việc suôn sẻ, hãy hoán đổi các mô-đun HC05 để đảm bảo giao tiếp có thể diễn ra theo cả hai hướng và CHÚNG TÔI ĐÃ LÀM!