Module Bluetooth HM-10 - Ví dụ giao tiếp với Arduino

Module Bluetooth HM-10 - Ví dụ giao tiếp với Arduino

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à:

Sơ đồ chân HM-10

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.

Module Bluetooth HM-10 giao tiếp với Arduino nano

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.

Ví dụ module Bluetooth HM-10

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:

Bài viết cùng chuyên mục

NHANH

NHANH

Vì Đổi mới liên tục nên Nhanh hơn

ĐÚNG

ĐÚNG

Coi trọng và ưu tiên việc làm Đúng

ĐỦ

ĐỦ

Tìm và mua Đủ Đơn hàng hơn

KỊP THỜI

KỊP THỜI

Hiệu suất tối ưu bởi Kịp Thời hơn