Raspberry Pi Bluetooth

Hướng dẫn này sẽ chỉ cho bạn cách sử dụng Raspberry Pi để điều khiển Module Bluetooth HC-05. Cụ thể, chúng ta sẽ học:

Raspberry Pi Bluetooth

Mục đích của hướng dẫn này:

Hướng dẫn này về việc sử dụng Classic Bluetooth (Bluetooth 2.0). Nếu bạn đang tìm kiếm Bluetooth Low Energy - BLE (Bluetooth 4.0), vui lòng tham khảo hướng dẫn tương tự: Raspberry Pi - BLE

Phần Cứng Cần Thiết

1×Raspberry Pi 5
1×HC-05 Bluetooth Module
1×dây jumper
1×(Khuyến nghị) Screw Terminal Block Shield for Raspberry Pi
1×(Khuyến nghị) Raspberry Pi Prototyping Base Plate & Breadboard Kit
1×(Khuyến nghị) HDMI Touch Screen Monitor for Raspberry Pi

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về Module Bluetooth HC-05

HC-05 là một module Bluetooth Serial hoạt động như một bộ chuyển đổi Serial sang Bluetooth. Nó có khả năng:

  • Nhận dữ liệu từ chân Serial RX và truyền đến thiết bị đã ghép nối (như smartphone) qua Bluetooth
  • Nhận dữ liệu từ Bluetooth (từ thiết bị đã ghép nối) và gửi đến chân Serial TX.

Cụ thể, để Raspberry Pi giao tiếp với ứng dụng Smartphone (Android/iOS):

  • Raspberry Pi được kết nối với Module Bluetooth HC-05 thông qua các chân Serial.
  • Module Bluetooth HC-05 được ghép nối với ứng dụng smartphone.
  • Raspberry Pi gửi dữ liệu đến ứng dụng smartphone đơn giản bằng cách gửi dữ liệu đến Serial.
  • Raspberry Pi nhận dữ liệu từ ứng dụng smartphone đơn giản bằng cách đọc từ Serial.
  • Không cần mã Bluetooth đặc biệt trên Raspberry Pi.

Sơ Đồ Chân Module Bluetooth HC-05

Bluetooth sơ đồ chân

Module Bluetooth HC-05 có 6 chân:

  • Chân Enable/Key: Chân này được sử dụng để chuyển đổi giữa Chế độ Dữ liệu (đặt LOW) và Chế độ Lệnh (đặt HIGH). Nếu không kết nối, mặc định sẽ ở Chế độ Dữ liệu.
  • Chân VCC: chân nguồn, nên được kết nối với +5V của nguồn cung cấp.
  • Chân GND: chân nguồn, nên được kết nối với GND của nguồn cung cấp.
  • Chân TX: chân dữ liệu Serial, nên được kết nối với chân RX của Raspberry Pi. Dữ liệu nhận được qua Bluetooth sẽ được gửi đến chân này dưới dạng dữ liệu serial.
  • Chân RX: chân dữ liệu Serial, nên được kết nối với chân TX của Raspberry Pi. Dữ liệu nhận được từ chân này sẽ được gửi đến Bluetooth.
  • State: Chân state được kết nối với LED onboard, có thể được sử dụng như phản hồi để xác định Bluetooth có hoạt động đúng không.

Tuy nhiên, cho các hoạt động cơ bản, chúng ta chỉ cần 4 chân của Module Bluetooth HC-05 được kết nối với Raspberry Pi.

Module Bluetooth HC-05 cũng bao gồm hai thành phần tích hợp:

  • Một LED: chỉ thị trạng thái của Module
    • Nhấp nháy mỗi hai giây một lần: cho biết Module đã vào Chế độ Lệnh
    • Nhấp nháy liên tục: nghĩa là đang chờ kết nối trong Chế độ Dữ liệu
    • Nhấp nháy hai lần mỗi giây: báo hiệu kết nối thành công trong Chế độ Dữ liệu
  • Một nút nhấn: được sử dụng để điều khiển chân Key/Enable để chọn chế độ hoạt động (Chế độ Dữ liệu hoặc Chế độ Lệnh)

Cách Thức Hoạt Động

Module Bluetooth HC-05 có hai chế độ hoạt động:

  • Chế độ dữ liệu được sử dụng để trao đổi dữ liệu với thiết bị đã ghép nối
  • Chế độ lệnh được sử dụng để cấu hình các tham số.

May mắn thay, module Bluetooth HC-05 có thể hoạt động với Raspberry Pi mà không cần cấu hình gì, sử dụng cài đặt mặc định.

Cài Đặt Mặc Định HC-05

Tên Bluetooth Mặc Định "HC-05"
Mật Khẩu Mặc Định 1234 hoặc 0000
Giao Tiếp Mặc Định Slave
Chế Độ Mặc Định Chế Độ Dữ liệu
Tốc Độ Baud Chế Độ Dữ liệu Mặc Định 9600, 8, N, 1
Tốc Độ Baud Chế Độ Lệnh Mặc Định 38400, 8, N, 1

Về Ứng Dụng Bluetooth Serial Monitor

Ứng dụng Bluetooth Serial Monitor cho phép giao tiếp với Raspberry Pi qua Bluetooth mà không cần mã bổ sung nào cho module Bluetooth trong mã Raspberry Pi. Để sử dụng nó, các bước sau cần được thực hiện:

  • Kết nối Raspberry Pi với module Bluetooth HC-05
  • Cài đặt ứng dụng Bluetooth Serial Monitor trên smartphone của bạn
  • Mở ứng dụng và ghép nối với module Bluetooth HC-05

Bây giờ, bạn có thể truyền và nhận dữ liệu từ Raspberry Pi.

Sơ Đồ Đấu Dây

Raspberry Pi Bluetooth sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Bảng Kết Nối Đấu Dây. Sơ Đồ Đấu Dây. Biểu Đồ Liên Kết Đấu Dây

Chân Raspberry Pi Chân HC-05 Bluetooth
RX (GPIO15) TX
TX (GPIO14) RX
5V VCC
GND GND
Enable/Key (KHÔNG kết nối)
State (KHÔNG kết nối)

Raspberry Pi gửi dữ liệu đến Ứng dụng Bluetooth trên Smartphone

Để truyền dữ liệu từ Raspberry Pi đến Ứng dụng Bluetooth trên Smartphone, mã sau cho Raspberry Pi phải được sử dụng:

Trong ví dụ này, chúng ta sẽ có Raspberry Pi gửi "Raspberry Pi here, command me!" đến Ứng dụng Bluetooth trên Smartphone mỗi giây.

Các Bước Nhanh

  • Đảm bảo bạn đã cài đặt Raspbian hoặc hệ điều hành tương thích khác với Raspberry Pi trên Pi của bạn.
  • Đảm bảo Raspberry Pi của bạn được kết nối với cùng mạng cục bộ với PC của bạn.
  • Đảm bảo Raspberry Pi của bạn được kết nối internet nếu bạn cần cài đặt một số thư viện.
  • Nếu đây là lần đầu tiên bạn sử dụng Raspberry Pi, xem Raspberry Pi - Cài Đặt Phần Mềm
  • Kết nối PC của bạn với Raspberry Pi qua SSH bằng SSH client tích hợp trên Linux và macOS hoặc PuTTY trên Windows. Xem cách kết nối PC của bạn với Raspberry Pi qua SSH.
  • Đảm bảo bạn đã cài đặt thư viện RPi.GPIO. Nếu chưa, cài đặt bằng lệnh sau:
sudo apt-get update sudo apt-get install python3-rpi.gpio
pip install pyserial
  • Tạo tệp script Python bluetooth_send.py.py và thêm mã sau:
# Mã Raspberry Pi này được phát triển bởi newbiely.vn # Mã Raspberry Pi này được cung cấp để sử dụng công khai, không có ràng buộc. # Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: # https://newbiely.vn/tutorials/raspberry-pi/raspberry-pi-bluetooth import serial from time import sleep # Define serial port for communication bluetooth = serial.Serial('/dev/ttyS0', baudrate=9600, timeout=1) # Main program try: while True: bluetooth.write(b"Raspberry Pi here, command me!\n") sleep(1) except KeyboardInterrupt: pass finally: bluetooth.close()
  • Lưu tệp và chạy script Python bằng cách thực hiện lệnh sau trong terminal:
python3 bluetooth_send.py

Script chạy trong vòng lặp vô hạn liên tục cho đến khi bạn nhấn Ctrl + C trong terminal.

  • Cài đặt ứng dụng Bluetooth Serial Monitor trên smartphone của bạn.
  • Đấu dây module Bluetooth HC-05 với Raspberry Pi theo sơ đồ đấu dây.
  • Mở ứng dụng Bluetooth Serial Monitor trên smartphone và chọn chế độ Classic Bluetooth.
Bluetooth serial monitor app
  • Kết nối với module Bluetooth HC-05.
Bluetooth serial monitor pairing
  • Kiểm tra kết quả trên ứng dụng Android.
Bluetooth serial monitor app
  • Kiểm tra kết quả trong Terminal.
PuTTY - Raspberry Pi
Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me!

Ứng dụng Bluetooth Gửi dữ liệu Đến Raspberry Pi

Mã sau:

  • Cho phép Ứng dụng Bluetooth gửi dữ liệu đến Raspberry Pi
  • Cho phép Raspberry Pi đọc dữ liệu và gửi phản hồi trở lại Ứng dụng Bluetooth

Các Bước Nhanh

  • Tạo tệp script Python bluetooth_send_receive.py và thêm mã sau:
# Mã Raspberry Pi này được phát triển bởi newbiely.vn # Mã Raspberry Pi này được cung cấp để sử dụng công khai, không có ràng buộc. # Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: # https://newbiely.vn/tutorials/raspberry-pi/raspberry-pi-bluetooth import serial from time import sleep # Define serial port for Bluetooth communication bluetooth = serial.Serial('/dev/ttyS0', baudrate=9600, timeout=1) # Main program try: bluetooth.flushInput() # Clear any existing data in the input buffer while True: bluetooth.write(b"Raspberry Pi here, command me!\n") if bluetooth.inWaiting() > 0: command = bluetooth.readline().decode('utf-8').strip() # Read until newline character if command == "LED OFF": print("LED is turned OFF") # Report action to console # TODO: Control your LED here elif command == "LED ON": print("LED is turned ON") # Report action to console # TODO: Control your LED here # Add a delay to avoid excessive looping sleep(0.5) except KeyboardInterrupt: pass finally: bluetooth.close()
  • Lưu tệp và chạy script Python bằng cách thực hiện lệnh sau trong terminal:
python3 bluetooth_send_receive.py
  • Kết nối ứng dụng Android với module Bluetooth HC-05, như đã thực hiện trước đó.
  • Khi đã kết nối, nhập "LED ON" hoặc "LED OFF" trên ứng dụng Android và nhấn nút "SEND".
Bluetooth serial monitor app
  • Raspberry Pi nhận dữ liệu và in phản hồi ra cổng Serial.
  • Phản hồi này sau đó sẽ được gửi đến ứng dụng Bluetooth.
  • Kết quả có thể được xem trên ứng dụng Android.
Bluetooth serial monitor app
  • Kiểm tra đầu ra trong Terminal.
PuTTY - Raspberry Pi
Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! LED ON LED is turned ON Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! LED OFF LED is turned OFF Raspberry Pi here, command me! Raspberry Pi here, command me!

Bạn sẽ thấy rằng thông tin hiển thị trên ứng dụng Android là giống nhau.

Mã Raspberry Pi - Điều khiển LED bằng ứng dụng smartphone qua Bluetooth

Vui lòng tham khảo hướng dẫn Raspberry Pi Điều Khiển LED qua Bluetooth.

Mã Raspberry Pi - Điều khiển Servo Motor bằng ứng dụng smartphone qua Bluetooth

Vui lòng tham khảo hướng dẫn Raspberry Pi Điều Khiển Servo Motor qua Bluetooth.