Module Bluetooth HM-10 là module rẻ nhất với công nghệ bluetooth 4.0. Module có nhiều giao thức giao tiếp nhưng điều duy nhất khiến nó khác biệt với những module khác là công nghệ mới nhất với mức giá rẻ nhất.
Việc sử dụng Bluetooth với công nghệ 4.0 đang ngày càng gia tăng trong thời gian gần đây do tốc độ nhanh và tiêu thụ ít điện năng. Có một loạt các công nghệ Bluetooth với công nghệ 2.0 và 3.0 nhưng HM-10 là công nghệ bluetooth 4.0.
Gửi dữ liệu lên đến 100m với tốc độ 24Mbs, nhanh hơn nhiều đối với các module bluetooth 3.0 khác chỉ có thể đạt được tốc độ lên đến 3Mbs.
Sơ đồ chân HM-10
Module Bluetooth HM-10 có giao giao tiếp duy nhất là giao thức UART. Để sử dụng nó phải phụ thuộc vào thiết bị của bên thứ ba. Tất cả các chân đó là:
Chi tiết cấu hình chân
VCC
Chân cấp nguồn cho module, chân VCC kết nối với cực dương của nguồn.
GND
Chân nối đất của nguồn cấp
RX
Chân nhận dữ liệu giao thức UART
TX
Chân TX sẽ gửi dữ liệu từ Bluetooth đến Arduino / vi điều khiển.
State
Chân chỉ trạng thái. Chân có tín hiệu đầu ra logic cao cho biết kết nối Bluetooth đã thiết lập, nếu không tín hiệu sẽ ở mức logic thấp.
BRK
Chân ngắt giúp ngắt kết nối Bluetooth với một module khác. Để ngắt kết nối, hãy cấp logic thấp vào chân này.
Button
Có một nút trên thiết bị để ngắt kết nối giống như một chân BRK.
Led
Led báo trạng thái hiện tại của module Bluetooth.
Tính năng module HM-10
- HM-10 có công nghệ Bluetooth 4.0 mới nhất.
- Không có giới hạn gửi dữ liệu byte.
- Tiêu thụ điện năng thấp.
- Sử dụng băng tần 2,5GHz trong phạm vi 100m ở khu vực thoáng.
- Có thể được sử dụng như một Master hoặc Slave bằng cách ngắt kết nối.
- Hoạt động ở điện áp từ 2-3.7V, điện áp phổ biến các thiết bị TTL / CMOS.
- Một module có bộ nhớ flash 256Kb và SRAM 8Kb.
- Có các chân GPIO tích hợp trong module có thể sử dụng được thông qua giao tiếp UART,
- GFSK (Gaussian Frequency Shift Keying) giúp truyền dữ liệu.
- Chế độ cấp tín hiệu và chế độ dòng lệnh giúp thiết lập cài đặt bên trong theo yêu cầu của dự án.
Ứng dụng module Bluetooth HM-10
- Mọi thiết bị thương mại như tai nghe và chuột hiện đang sử dụng HM-10 vì mức tiêu thụ điện năng thấp.
- Hầu hết các máy tính xách tay cũng có Bluetooth 4.0.
- Trong thiết bị IoT gửi dữ liệu liên tục cũng có HM-10 vì tính năng không giới hạn dữ liệu của nó.
- Mọi thiết bị giao tiếp hai chiều như robot, ô tô điều khiển từ xa đều sử dụng HM-10 ở cấp độ đang phát triển.
Cách sử dụng HM-10
Việc sử dụng HM-10 dễ dàng hơn các module khác. Có thể sử dụng trực tiếp giao tiếp nối tiếp nhưng đôi khi vẫn sự cố trong quá trình giao tiếp. Tốt hơn là sử dụng các thư viện hỗ trợ có chân digital để tránh lỗi.
Bằng cách sử dụng các thư viện bên ngoài, việc lập trình có thể trở nên phức tạp đối với một số người sử dụng. Module HM-10 chủ yếu giao tiếp với với Arduino vì có thể thực hiện nhiều chức năng. Để sử dụng HM-10 với arduino, tham khảo thư viện sau.
#include <AltSoftSerial.h>
Trong quá trình sử dụng HM-10, đôi khi bo mạch có thể cần sử dụng giao tiếp nối tiếp có thể ảnh hưởng đến Bluetooth. Để tránh gián đoạn, chân digital có thể giao tiếp với Bluetooth bằng cách sử dụng thư viện này. Thiết bị có thể hoạt động ở cả Slave và Master nhưng cả hai chế độ đều có cách thiết lập khác nhau để hoạt động.
Module Bluetooth HM-10 giao tiếp với Arduino nano
Để sử dụng các chân digital của Arduino với HM-10, cần thiết lập đấu nối sau.
Thư viện cài đặt mặc định giao tiếp nối tiếp. Nó chỉ cho phép các chân cụ thể hoạt động.
Chân serial của các bảng mạch phát triển khác
Bảng mạch | TX | RX | Chân PWM |
Arduino Uno / Nano | 9 | 8 | 10 |
Arduino Leonardo | 5 | 13 | Không có |
Arduino Mega | 46 | 48 | 44, 45 |
Teensy 3.0 & 3.1 | 21 | 22 | 22 |
Teensy 2.0 | 9 | 10 | Không có |
Teensy ++ 2.0 | 25 | 4 | 26, 27 |
Sanguino | 13 | 14 | 12 |
Wiring-S | 5 | 6 | 12 |
Module Bluetooth HM-10 hoạt động Slave / Master
Thiết bị sẽ hoạt động như Slave / Master ở chế độ mặc định. Để sử dụng module như một Slave, hãy tham khảo code sau.
#include <AltSoftSerial.h> AltSoftSerial bluetoothSerial; boolean NL = true; void setup () { Serial.begin (9600); while (!Serial); bluetoothSerial.begin (9600);} void loop () { char Serialdata; if (Serial.available ()) { Serialdata = Serial.read (); bluetoothSerial.print (Serialdata); if (Serialdata! = 10 & Serialdata! = 13){ bluetoothSerial.write (Serialdata);} if (NL) {Serial.print ("\ r \ n>"); NL = sai; } Serial.write (Serialdata); if (Serialdata == 10) {NL = true; }} if (bluetoothSerial.available ()) { Serialdata = bluetoothSerial.read (); Serial.print (Serialdata);}}
Code sẽ giúp giao tiếp với Bluetooth bất cứ khi nào. Theo cách này chế độ truyền dữ liệu và chế dòng độ lệnh có thể thiết lập được bằng cách sử dụng cùng một code.
Chế độ dữ liệu và dòng lệnh HM-10
Thiết bị có thể hoạt động ở chế độ dữ liệu và lệnh nhưng nó sẽ cần phải tuân theo một số quy trình để chuyển sang chế độ dòng lệnh. Trong chế độ dòng lệnh, thiết bị có thể thay đổi từ slave sang master. Đầu tiên, hãy mở cổng com Arduino, sau đó ngắt kết nối giữa HC10 và một thiết bị Bluetooth khác, có thể thực hiện bằng ba cách.
- Nút nhấn trên module
- Cấp logic cao vào chân BRK
- Khởi động lại thiết bị.
Sau khi ngắt kết nối, thiết bị sẽ kết nối lại và có thể nhận được từ cổng com. Bây giờ nhập lệnh:
AT
Sau đó, một thông báo “ok” sẽ xuất hiện để xác minh kết nối.
Lệnh AT
Bây giờ các lệnh sau để thực hiện các chức năng.
Lệnh | Mô tả |
AT | Để vào chế độ dòng lệnh |
AT + NAME | Trả về tên module |
AT+ NAMEnewname | Để thay đổi tên của module |
AT + ADDR? | Trả về địa chỉ MAC của module HM-10 |
AT + VERS?
AT + VERR? |
Trả về phiên bản của module |
AT + RESET | Giúp khởi động lại kết nối |
AT+ RENEW | Đặt lại tất cả cài đặt |
AT + BAUD? | Để nhận giá trị tốc độ truyền hiện tại |
AT + BAUDx | Đặt giá trị mới cho tốc độ truyền |
AT + NOTI | Để xem trạng thái thông báo |
AT + NOT0, AT + NOT1 | Bật và tắt thông báo. |
AT + NOTI? | Xem trạng thái thông báo ở dạng 0 và 1 |
AT + PASS? | Truy vấn mật khẩu |
AT + PASS | Để đặt mật khẩu mới |
AT +ROLE? | Kiểm tra các chế độ của module |
AT + ROLEx | Để thay đổi các chế độ bằng cách thay x bằng 0 cho chế độ slave và 1 cho chế độ master |
AT + IMME? | Các thiết lập kết nối có thể xem được trên màn hình serial |
AT + IMMEx | Thay đổi x bằng 0 để tự động kết nối và bằng để kết nối thủ công. |
AT + RESET | Khởi động lại HM-10 |
AT + RENEW | Đặt lại với cài đặt gốc |
Bảo mật
Bảo mật không phải là một vấn đề lớn đối với module. Nó chỉ có thể giao tiếp với một thiết bị duy nhất. Tiếp tục gửi dữ liệu và nhận xác nhận từ đầu bên kia. Trong trường hợp mất kết nối, thiết bị sẽ bị ngắt kết nối và ngừng truyền dữ liệu.
Thiết bị cũng sử dụng mật khẩu để ghép nối với các thiết bị khác. Có hai chế độ kết nối tự động và kết nối thủ công. Cách kết nối thủ công giúp tránh kết nối với các thiết bị không xác định, giúp giao tiếp an toàn hơn.
Ví dụ module Bluetooth HM-10
Trong ví dụ này, module sẽ được sử dụng để điều khiển đèn LED. Trong Arduino, các đèn LED trên bo mạch cũng có thể sử dụng được. Đầu tiên, kết nối mạch theo sơ đồ sau.
Giờ đó, để gửi dữ liệu đến module Bluetooth, nên sử dụng các ứng dụng di động được thiết kế sẵn. Có rất nhiều ứng dụng có thể sử dụng được nhưng để sử dụng các ứng dụng thuộc bên thứ ba, trước tiên hãy đọc hướng dẫn của nó. Các ứng dụng đó luôn có chức năng đặc biệt cho các nút nhấn. Sau đó tải code dưới đây lên Arduino.
#include <AltSoftSerial.h> AltSoftSerial bluetoothSerial; boolean NL = true; void setup() { Serial.begin(9600); while (!Serial) ; bluetoothSerial.begin(9600); pinMode(13, OUTPUT); } void loop() { char Serialdata; if (Serial.available()) { Serialdata = Serial.read(); bluetoothSerial.print(Serialdata); if (Serialdata!=10 & Serialdata!=13 ) { bluetoothSerial.write(Serialdata);} if (NL) { Serial.print("\r\n>"); NL = false; } Serial.write(Serialdata); if (Serialdata==10) { NL = true; } } if (bluetoothSerial.available()) { Serialdata = bluetoothSerial.read(); if(Serialdata == 1) digitalWrite(13, HIGH); // Change the 1 according to the mobile app instructions else digitalWrite(13, LOW); Serial.print(Serialdata);} }
Code trên là ví dụ cơ bản làm đèn LED sáng bất cứ khi có tín hiệu logic 1 đươc dưa đến module Bluetooth.
>>> Mời anh em xem thêm: