Hướng dẫn kết nối arduino và modul bluetooth

Post by vannguyen on Jun 10, 2018 15:04:17 GMT 7

Kết nối giữa Arduino Uno R3 và Module Bluetooth để thực hiện mốt số đề tài điều khiển bằng kết nối bằng Bluetooth, với kết nối này, bạn có thể kết nối Arduino với các thiết bị ngoại vi có hỗ trợ Bluetooth như điện thoại hay Laptop,từ có có thể điều khiển Arduino từ xa qua thông buetooth. Ở bài viết này, mình sẽ giới thiệu cách kết nối và đọc các thông số sau khi truyền nhận từ Bluetooth .

Giới thiệu về Module Bluetooth HC-06

Module bluetooth HC06 (slave) ứng dụng là cầu nối giữa vi điều khiển, arduino với các thiết bị ngoại vi như: Điện thoại thông minh, máy tính Laptop, Usb bluetooth thông qua Bluetooth (giao tiếp serial gửi và nhận tín hiệu 2 chiều).Module buletooth HC06 hoạt động ở mức điện áp 3-6v. Nên bạn không cần lo lắng về mức chênh lệch điện áp như 3-5v. Không được sử dụng mức điện áp 7V

- Module gồm có 6 chân theo thứ tự: KEY, VCC, GND, TX, RX, STATE.

- Đây là loại module SLAVE: có nghĩa là bạn không thể chủ động kết nối từ vi điều khiển đến các thiết bị ngoại vi. Mà cách kết nối là: bạn phải sử dụng thiết bị ngoại vi (điện thoại thông minh, máy tính laptop) để dò tín hiệu kêt nối Buletooth mà HC06 phát ra. Sau khi pair thành công bạn có thể gửi tín hiệu từ vi điều khiển đến các thiết bị ngoại vi này, và ngược lại.

Thông số kĩ thuật HC - 06

- Cấu hình Slave là cấu hình ban đầu, không thay đổi được

- Sử dụng chip CSR Bluetooth V2.0

- Điện áp sử cho 3.3V ( Hỗ trợ IC ổn áp đầu vào 5V)

- Tốc Độ Hỗ Trợ: 200,2400,4800,9600,19200,38400,57600,115200

- Kích thước Module: 28mm x 15 mm x 2.35mm

- Dòng hoạt động: 20-30mA

- Tần số: 2.4GHz ISM band

- Bảo mật: Authentication and encryption

- Giao tiếp: Bluetooth serial port

- Nhiệt độ làm việc: -20 ~ +75 Độ C

Hướng dẫn kết nối arduino và modul bluetooth

Kết nối Arduino với Module Bluetooth HC -06

Module Bluetooth HC -06 bao gồm 4 chân chính: - Vcc : Nối nguồn . - GND : Nối nguồn âm. - Txd : Chân truyền kết nối . - Rxd : Chân nhận kết nối

Hướng dẫn kết nối arduino và modul bluetooth

Code cho Arduino Code cho Arduino được viết trên Arduino IDE

// Khai báo byte mặc định

byte blueTooth =0;

void setup() {

// Khởi động Serial ở mức 9600 ** Serial.begin(9600);

}

void loop() {

if(Serial.available() >0)

{

// Đọc giá trị lấy từ cổng Serial

blueTooth = Serial.read();

}

delay(100);

// In ra màn hình Console Serial.println(blueTooth);

Serial.println( " ");

}

** Mức Baudrate

Để việc truyền và nhận không đồng bộ xảy ra thành công thì các thiết bị tham gia phải thống nhất nhau về khoảng thời gian dành cho 1 bit truyền đi, tốc độ này gọi là Bau. Tốc độ Baud là số bits truyền trong 1 giây .Để giao tiếp với máy tính, phải dùng một trong các mức baudrate sau: 300, 600,

1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, hoặc 115200. Ngoài ra,có thể thay thế mức baudrate khác những mức trên trong trường hợp giao tiếp với mộtmạch nào đó có sẵn mức baudrate xác định và không thay đổi được.

Tốc độ baudrate do tần số xung nhịp quyết định. Tốc độ càng cao thì truyền nhậncàng nhanh nhưng dễ lỗi ( mất bit hoặc nhiễu tần số cao) . Tốc độ thấp thì truyền nhậnchậm nhưng ít xảy ra lỗi . Vì vậy, người ta hay dùng tốc độ tầm trung : 9600

Nhấn Ctril + U để nạp code vào Arduino ,Nếu thành công thì ta có thể tìm được tên Bluetooth trên các thiết bị ngoại vi rồi sau đó kết nối với Bluetooth HC- 06 ( mật khẩu kết nối mặc định là 1234 ) Nhấn Ctril + Shift + M để mở Console ,tại đây bạn sẽ thấy các thông số được truyền đến Arduino.

CHÚC CÁC BẠN THÀNH CÔNG

Ở phần này, mình chỉ hướng dẫn các bạn cách nhận giá trị được truyền đến từ các thiết bị ngoại vi. Ở phần tiếp theo, mình sẽ hướng dẫn các bạn tạo một ứng dụng nhỏ trên thiết bị Android để kết nối và truyền các giá trị, Từ đây các bạn có thể tạo một dự án điều khiển Arduino bằng thiết bị Android

Hướng dẫn kết nối arduino và modul bluetooth
.

HC06 Module Bluetooth 2.0 là một trong những module giao tiếp khoảng cách ngắn và rẻ nhất. Tiêu thụ điện năng rất thấp và có công nghệ Bluetooth 2.0.

Chức năng cơ bản của module là thiết lập giao tiếp khoảng cách ngắn giữa hai bộ vi điều khiển và hệ thống. Module Bluetooth chủ yếu chỉ sử dụng với Arduino / vi điều khiển trong các dự án đang phát triển vì module này có các giao tiếp dữ liệu qua công nghệ Bluetooth hiện đại.

Module chỉ thực hiện các chức năng của slave và Module có phương thức lưu trữ dữ liệu bên trong để thiết bị slave cuối cùng kết nối mà không cần bất kỳ sự cho phép hoặc xác minh nào. Tự động kết nối và các phương pháp khác có thể thay đổi bằng cách sử dụng chế độ dòng lệnh cho HC06.

Hướng dẫn kết nối arduino và modul bluetooth

Cấu hình chân HC06

Module HC06 là thiết bị Bluetooth slave có giao thức UART. Module chỉ có chân giao tiếp và chân nguồn. Tất cả các chân của HC06 là:

Hướng dẫn kết nối arduino và modul bluetooth

VCC

Module HC06 có một chân nguồn duy nhất, kết nối + 5V để cấp nguồn cho thiết bị.

GND

Chân GND là chân nối đất chung.

TX

Giao thức giao tiếp trong thiết bị là UART và chân TX là để gửi dữ liệu.

RX

Chân nhận dữ liệu trong giao tiếp UART với các thiết bị bên ngoài như Arduino hoặc vi điều khiển.

  • Module HC06 BT có tính năng ghi nhớ tên thiết bị giúp kết nối một cách tự động.
  • Có thể gửi dữ liệu với tốc độ lên đến 2-3MBs trong một khoảng cách ngắn.
  • Module Bluetooth HC06 là slave và có thể thay đổi bằng chế độ dòng lệnh.
  • Module có cả chế độ dòng lệnh và dữ liệu mặc định
  • Thiết bị có thể hoạt động với các thiết bị TTL / CMOS do điện áp hoạt động của nó là 5V và cấu trúc bên trong của nó.
  • Có ăng-ten tích hợp 2,4 GHz.
  • Việc truyền dữ liệu cho HC06 dựa trên công nghệ GFSK. Do đó, module mã hóa và xác thực để đảm bảo an toàn cho dữ liệu.
  • Nhiệt độ hoạt động từ -20 độ C đến +55 độ C và nó hoạt động ở dòng điện 20mA.

Lựa chọn thay thế

HC05, HM10, HC03, HC03

Cách sử dụng HC06

Module Bluetooth có thể sử dụng được với bất kỳ bộ vi điều khiển nào có giao tiếp UART. Trong mọi thiết bị đều có phần cứng giao tiếp uart và trong cả phần mềm thiết bị.

Ở đây bạn sẽ học cách sử dụng HC06 với Arduino và làm theo cách tương tự sẽ giao tiếp được với các bộ vi điều khiển khác và thậm chí cả bo mạch khác. Đầu tiên, kết nối module theo sơ đồ mạch đã cho.

Hướng dẫn kết nối arduino và modul bluetooth

Hoạt động như một thiết bị slave. HC06 có thể kết nối với các thiết bị bên ngoài bằng cách bật nguồn và điền mật khẩu.

  • Mật khẩu mặc định - 1234 hoặc 0000

Module sẽ bắt đầu chuyển dữ liệu đến các chân uart và để đọc chúng, lập trình đọc dữ liệu nối tiếp của Arduino / vi điều khiển sẽ có ích.

Giao tiếp UART Arduino

Trong Arduino, hai giao thức hữu ích để đọc và ghi dữ liệu theo thứ tự. Đầu tiên là phần cứng uart là mặc định. Để sử dụng phần cứng uart, tham khảo code sau.

void setup() { Serial.begin(9600);} void loop() { if (Serial.available() > 0 ) {byte data = Serial.read(); Serial.print(data);}   Serial.print("DATA"); Serial.write("DATA");}

Lệnh đầu tiên serial.begin là để khởi tạo tốc độ truyền dữ liệu. Tốc độ truyền mặc định của module HC06 là 9600 nhưng vẫn có thể thay đổi. Mọi thiết bị có giao tiếp UART đều có các cách thay đổi tốc độ truyền ở các mức cụ thể.

Lệnh thứ hai là serial.available để phát hiện kết nối và lệnh cuối cùng quan trọng nhất là serial.read. Serial.read dùng để đọc dữ liệu từ module bên ngoài.

Do đó, hãy luôn ghi nhớ đọc dữ liệu biến byte vì dữ liệu di chuyển giữa các module luôn tính bằng byte. Serial.write / Serial.print là để gửi dữ liệu. Mọi dữ liệu đều có thể sử dụng được bằng các dòng lệnh sau.

Chế độ dòng lệnh HC06

Chế độ dòng lệnh là một trong những chế độ cài đặt mặc định cho module HC06 BT, nơi có thể thay đổi cài đặt gốc của nó. Để truy cập chế độ dòng lệnh, code ở trên có thể sử dụng được nhưng tốc độ truyền cần phải thay đổi.

Tốc độ truyền cho chế độ dòng lệnh là 38400. Sau khi tạo tốc độ truyền ở 38400, các lệnh sẽ hoạt động ở màn hình serial của Arduino IDE. Các lệnh chung sau đây giúp thay đổi cài đặt thiết bị.

Lệnh Chức năng AT Để vào chế độ dòng lệnh hoặc để xác minh thông tin liên lạc. AT+VERSION Công ty thiết bị có thể xem được thông qua lệnh này. AT+NAME Thay thế "name" để đặt tên mới của thiết bị. AT+PIN1234 Đặt mã PIN của module thành 1234 AT+BAUDX

Thay X bằng một số tương ứng tốc độ truyền.

1. 1200

2. 2400

3. 4800

4. 9600

5. 19200

6. 38400

7. 57600

8. 115200

9. 230400

10. 460800

11. 921600

12. 1382400

Có hai phương pháp để gửi lệnh. Đầu tiên là viết trực tiếp và thứ hai là bằng lệnh Serial.print trong cổng COM của Arduino. chỉ cần nhập lệnh như ví dụ sau:

Serial.print ("AT");

Trong một số thiết bị, một giao thức hoạt động phụ thuộc vào các phiên bản phần mềm và module.

Phần mềm uart Arduino cho HC06

Phần mềm lập trình nối tiếp sử dụng các chân digital để tạo dữ liệu theo byte và truyền và nhận chúng chính xác qua giao thức UART. Đoạn code sau sẽ giúp giao tiếp dữ liệu nối tiếp và tránh giao tiếp nhầm với phần cứng cho các thiết bị khác:

include  

SoftwareSerial mySerial (10, 11); // RX, TX  void setup () {  mySerial.begin (38400); }  void loop () {  if (mySerial.available ())  Serial.print (mySerial.read ()); }  mySerial.print (Serial.read ());  mySerial.write (Serial.read ()); }

Trong đoạn code trên, chân 10 sẽ hoạt động như chân RX và 11 như TX. Cả hai chân đều có thể thay đổi được.

Hướng dẫn kết nối arduino và modul bluetooth

Mục đích cơ bản của giao thức nối tiếp qua phần mềm là để giành phần cứng cho các thiết bị khác. Vì vậy, chúng có thể hoạt động mà không bị gián đoạn Arduino.

Phần mềm serial tương thích với Bluetooth HC06 cho mọi loại dữ liệu vì dữ liệu của nó truyền theo byte. Nếu không, các phần mềm khó thực hiện được vì chỉ có thể gửi dữ liệu từ 0-255 ở dạng số nguyên.

Ví dụ IOT HC06 Với Arduino, DHT11

Ở đây chúng ta sẽ tích hợp Bluetooth cho một ứng dụng IoT. Sử dụng DHT11 để cảm biến nhiệt độ và HC06 Bluetooth để truyền dữ liệu. Arduino sẽ thực hiện các hoạt động cơ bản của cả hai thiết bị. Đây là mạch sau.

Hướng dẫn kết nối arduino và modul bluetooth

Để hoạt động, dưới đây là code tham khảo cho sơ đồ trên.

include "DHT.h"

DHT dht(2, DHT11); void setup() {   Serial.begin(9600);   dht.begin();   pinMode(3, OUTPUT);} void loop() {   float temp = dht.readTemperature();   float hum = dht.readHumidity();   Serial.print(temp);   delay(100);   Serial.print(hum);   delay(1000);   if (temp == 25)     digitalWrite(3, HIGH);   else     digitalWrite(3, HIGH); }

Code sẽ lấy dữ liệu từ các chân đầu vào analog và sau đó nó sẽ truyền tới Bluetooth hc06. Bluetooth sẽ truyền dữ liệu đến thiết bị nhận Bluetooth.

Thiết bị nhận có thể là bất kỳ thứ gì như màn hình, máy tính hoặc điện thoại thông minh. Sau đó, tín hiệu phát sóng có thể xem được sau mỗi giây. code có giới hạn tăng nhiệt độ. Trong trường hợp nhiệt độ tăng từ trên 50 độ C, còi sẽ kích hoạt để báo động cho người sử dụng.