Bỏ qua, đến nội dung chính
Bài viếtHardwareMới

HC-05 vs HM-10 vs BLE 5.0: Chọn Module Bluetooth Nào Cho Dự Án?

So sánh HC-05, HM-10 và module BLE 5.0 theo Bluetooth Classic, BLE GATT, UART, điện thoại, khoảng cách, điện năng và khả năng mở rộng cho Arduino, ESP32 và IoT.

Chia sẻ

LinkedInFacebookX
Three realistic Bluetooth module boards arranged on an electronics workbench beside a microcontroller board

Nếu bạn tìm “module Bluetooth cho Arduino”, HC-05, HM-10 và BLE 5.0 gần như chắc chắn sẽ xuất hiện. Nhìn bên ngoài, chúng đều là board nhỏ có VCC, GND, TX và RX. Nhưng chọn nhầm loại có thể khiến bạn mất cả buổi debug vì điện thoại không tìm thấy thiết bị, app dùng sai profile hoặc pin tụt nhanh hơn dự kiến.

Mình sẽ bắt đầu từ khác biệt quan trọng nhất: HC-05 thuộc Bluetooth Classic và thường dùng SPP như một cổng serial không dây; HM-10 dùng Bluetooth Low Energy với GATT; còn “BLE 5.0” là tên của cả một nhóm module, không phải một model duy nhất.

Tóm tắt nhanh

Ba module Bluetooth dạng breakout được đấu thử trên breadboard với vi điều khiển tại bàn điện tử.

Nhìn ngoài chúng khá giống nhau, nhưng HC-05, HM-10 và BLE 5.x dùng các profile và cách làm việc rất khác.

Tiêu chíHC-05HM-10BLE 5.x
Công nghệBluetooth Classic, thường là SPPBluetooth Low Energy, GATTBluetooth Low Energy, PHY/tính năng mới hơn
Cách lập trìnhUART như serial trong suốtUART + service/characteristicUART bridge hoặc lập trình SoC
Điện thoạiAndroid thường dễ hơn; iOS không có SPP chungAndroid/iOS dùng BLEAndroid/iOS dùng BLE
Điện năngThường cao hơn BLEThấp, hợp cảm biếnPhụ thuộc stack, PHY và firmware
Phù hợpThay dây serial, robot, máy tínhĐiều khiển/cảm biến đơn giảnSản phẩm mới, pin, cần mở rộng
Đánh đổiCũ và phụ thuộc SPPClone không đồng nhấtKhó hơn, không có một chuẩn breakout

Bluetooth Classic khác BLE ở đâu?

Bluetooth Classic phù hợp với kết nối kiểu stream. Với HC-05, MCU gửi byte vào UART; module lo phần Bluetooth và đầu kia nhìn thấy một đường serial SPP.

BLE không mở serial port mặc định. Dữ liệu được tổ chức bằng GATT: service chứa characteristic, characteristic hỗ trợ Read, Write, Notify hoặc Indicate. Điện thoại phải discover đúng UUID rồi mới trao đổi dữ liệu. Bài thiết kế giao tiếp BLE cho thiết bị IoT đi sâu hơn vào GATT, packet, MTU và reconnect.

Sơ đồ so sánh đường UART sang Bluetooth Classic SPP, UART sang BLE GATT và module BLE 5.x có firmware riêng.

Chọn profile trước khi chọn board: SPP dễ như serial, còn BLE cần thiết kế service và characteristic.

HC-05: dễ nhất nếu bạn cần “serial không dây”

HC-05 thường là lựa chọn nhanh cho project đã có UART. Repo HC05 Arduino Library có ví dụ điều khiển module và vào AT command mode bằng chân KEY/command.

HC-05 hợp với robot điều khiển bằng Android, gửi log giữa Arduino và máy tính, hoặc thay một sợi cáp serial trong prototype. Một số module còn hỗ trợ vai trò master/slave, tuỳ firmware.

HC-05 không phải BLE, nên đừng kỳ vọng iPhone dùng nó như BLE peripheral. Ngoài ra, nhiều breakout nhận VCC 5 V nhờ regulator nhưng logic UART vẫn là 3,3 V. Mình luôn kiểm tra đúng breakout, đặc biệt chân RX, trước khi nối vào MCU.

AT command mode cũng khác nhau giữa các clone. Data mode có thể chạy 9600 baud, còn command mode thường dùng tốc độ khác. Hãy gửi AT, xác nhận response và ghi lại baud trước khi viết firmware.

Module Bluetooth Classic kiểu HC-05 nối với board Arduino bằng UART và dây jumper trên breadboard.

HC-05 hợp để thay một sợi cáp serial, nhưng cần kiểm tra logic UART và khả năng hỗ trợ SPP của thiết bị đầu kia.

HM-10: bước chuyển hợp lý sang BLE

HM-10 thường được bán như module BLE 4.0 dựa trên CC2540/CC2541, nhưng thị trường có nhiều clone mang tên HM-10. Vì vậy firmware/version thực tế quan trọng hơn cái tên trên listing.

MCU vẫn nói chuyện qua UART, nhưng điện thoại không còn được cấp serial port tự động. Bạn cần biết UUID service/characteristic và quyết định characteristic nào dùng cho Write, Notify hay Read.

HM-10 hợp với cảm biến gửi dữ liệu nhỏ, app chạy cả Android/iOS và prototype cần BLE nhưng chưa muốn tự làm RF. Đổi lại, bạn phải viết GATT client; app terminal SPP không thay thế được. Mình luôn đọc AT+VERSION, kiểm tra UUID và test notify trên đúng module trước khi chốt PCB.

BLE 5.0: không phải cứ có chữ “5.0” là nhanh hơn

BLE 5.x có các lựa chọn như 2M PHY và LE Coded PHY. Tài liệu Bluetooth SIG mô tả 2M PHY cho tốc độ symbol cao hơn LE 1M, còn LE Coded PHY hướng tới tầm xa hơn với đánh đổi về tốc độ và airtime.

Một module BLE 5.0 giá rẻ có thể chỉ expose một phần tính năng, hoặc firmware UART bridge không cho chỉnh PHY. Khoảng cách vẫn phụ thuộc công suất phát, độ nhạy thu, antenna, vỏ, nhiễu và hướng đặt board. Đừng ghi “BLE 5.0 = 2 Mbps và 100 m” vào specification nếu chưa đo trên phần cứng cuối.

Board BLE 5.x kiểu nRF52 nối với board cảm biến và điện thoại đang kiểm tra kết nối GATT.

Ảnh minh họa board BLE 5.x kiểu nRF52; BLE 5.0 là một nhóm tính năng, còn module thực tế phụ thuộc chip, firmware, antenna và vỏ.

Nếu chọn nRF52, Adafruit nRF52 Arduino core là điểm bắt đầu tốt. Nếu chọn ESP32, các example NimBLE của ESP-IDF giúp kiểm tra peripheral/central trước khi làm board riêng.

Chọn theo tình huống

Điều khiển robot bằng Android

Chọn HC-05 nếu app đã dùng SPP và bạn muốn prototype nhanh. Chọn HM-10 nếu app phải chạy cả iPhone và Android, chấp nhận phải làm GATT client.

Cảm biến chạy pin

Mình sẽ bỏ qua HC-05 trước. HM-10 đủ cho telemetry nhỏ; BLE 5.x đáng chọn khi cần kiểm soát tốt hơn hoặc có roadmap dài. Hãy đo advertising, connected idle, notify và reconnect, đừng tin một con số “low power” trên shop.

Sản phẩm mới

Mình nghiêng về module BLE 5.x có datasheet, SDK và firmware rõ ràng. Module breakout chỉ là lớp RF; sản phẩm còn phụ thuộc antenna, nguồn, EMC, bootloader, OTA và GATT.

Thay một sợi cáp UART

HC-05 dễ hiểu nhất, nhưng phải kiểm tra thiết bị đầu kia có hỗ trợ Bluetooth Classic SPP không. Nếu cần iOS, BLE thường ít rủi ro compatibility hơn.

AT command không phải protocol của sản phẩm

AT command chỉ cấu hình module. Mình tách ba lớp:

  1. UART giữa MCU và module: baud, flow control, mức logic.
  2. Bluetooth link: SPP hoặc GATT, pairing và connection parameters.
  3. Application protocol: version, length, sequence/transaction ID.

Với HC-05, lớp Bluetooth giống byte stream nên dễ bị bỏ qua. Với HM-10 và BLE 5.x, UUID, MTU, Notify và subscription state phải được ghi rõ. Packet nhị phân nhỏ có version sẽ dễ nâng cấp hơn JSON không có schema.

Checklist trước khi mua

  • Điện thoại mục tiêu là Android, iOS, máy tính hay module khác?
  • Bạn cần SPP/serial stream hay GATT?
  • Module là peripheral, central hay cả hai?
  • Datasheet và firmware version có rõ không?
  • UART là 3,3 V hay 5 V tolerant?
  • Baud data mode và AT mode khác nhau thế nào?
  • Có KEY/EN, STATE/LED và reset không?
  • Antenna có cách xa kim loại và mép vỏ không?
  • Dòng advertising, idle, connected và burst là bao nhiêu?
  • Có cần OTA, bonding, encryption hoặc GATT về sau không?

Kết luận

Nếu bạn thay dây serial trong prototype Android, HC-05 vẫn rất thực dụng. Nếu cần BLE cơ bản cho cả iOS và Android, HM-10 dễ bắt đầu hơn. Nếu đây là sản phẩm mới chạy pin hoặc cần quyền kiểm soát lâu dài, mình chọn module BLE 5.x có chip, SDK và tài liệu rõ ràng.

Không có module nào thắng tuyệt đối. Chọn profile trước, rồi mới chọn board; làm ngược lại rất dễ có một mạch “đã kết nối Bluetooth” nhưng không dùng được với app thật.

Nguồn tham khảo

Chia sẻ

LinkedInFacebookX

Tiếp tục khám phá

Đọc tiếp

Bài viết liên quan

Xem thêm trong Bài viết

Nastrotek sử dụng cookie để phân tích truy cập và cá nhân hóa quảng cáo, giúp hiểu cách website được sử dụng. Bạn có thể chấp nhận hoặc từ chối các cookie không thiết yếu. Chính sách bảo mật