[STIoT] [Bài 01 (Part 1)] Tổng quan về BLE protocol stack

Ngô Văn Tuân

Gà con
Staff member
Chào các bạn,
Trước khi bắt đầu bài viết thì mình quay lại với mục tự hỏi tự trả lời nhé.
Câu hỏi: Tìm kiếm thông tin chính thức về chuẩn giao tiếp Bluetooth ở đâu?
Trả lời: Mọi thông tin chính thức và cập nhật nhất về chuẩn giao tiếp Bluetooth sẽ được tìm thấy trên website của Bluetooth SIG. Hãy tham khảo Bluetooth specification để hiểu được chi tiết cách hoạt động của Bluetooth.
Câu hỏi: Làm thế nào để hai thiết bị có thể giao tiếp thông qua Bluetooth Low Energy?
Trả lời: Đáp áp câu hỏi này nằm trong Bluetooth Specification, nó khá dài nên mình xin trả lời một cách ngắn gọn (high level overview) như sau:
Các thiết bị Bluetooth Low energy có thể giao tiếp với nhau ở hai chế độ: không kết nối (non-connection) và kết nối (connection).​
  • Ở chế độ không kết nối: thiết bị gửi sẽ broadcast packet, thiết bị khác sẽ scan để nhận packet. Vì thiết bị scan packet chưa chắc scan liên tục nên thiết bị này chưa chắc có thể nhận được hết tất cả các packet được broadcast. Ví dụ về ứng dụng có thể sử dụng chế độ giao tiếp này: các sensor nhiệt độ, độ ẩm được đặt ở nhiều vị trí trong nhà và ngoài trời sẽ broadcast packet, một màn hình sẽ scan để nhận các broadcast packet để hiển thị nhiệt độ, độ ẩm.
  • Ở chế độ kết nối: Các thiết bị phải truyền nhận packet để khởi tạo và duy trì kết nối. Để khởi tạo kết nối, một thiết bị sẽ broadcast packet chứa thông tin của nó, quá trình này gọi là advertise và thiết bị đó gọi là advertiser. Một thiết bị khác gọi là scanner sẽ scan advertising packet, dựa vào advertising packet nhận được, scanner sẽ quyết định có khởi tạo kết nối với advertiser không. Nếu có, scanner sẽ gửi yêu cầu khởi tạo kết nối tới advertiser. Sau khi kết nối thành công thì scanner sẽ trở thành master và advertiser trở thành slave. Ngay cả khi không có dữ liệu cần phải trao đổi giữa master và slave, master vẫn sẽ thường xuyên gửi empty packet cho slave, slave sẽ trả lời để duy trì kết nối. Khi giữa các thiết bị vẫn tồn tại kết nối, để có thể giao tiếp, một thiết bị sẽ mở server gọi là GATT server (GATT server có thể được khởi tạo và chạy trên Master hoặc Slave), thiết bị còn lại sẽ chạy GATT client kết nối và giao tiếp với GATT server.
Trong thực tế, master thường là các thiết bị có nhiều resources (khả năng tính toán, RAM) như điện thoại, máy tính, slave thường là các thiết bị có ít resources hơn.​
Câu hỏi: Mục đích của bài này là gì?
Trả lời: Ta sẽ tìm hiểu sơ qua về cấu trúc của BLE (BLE protocol stack). Qua đó giúp coder có thể phần nào hiểu được quá trình xây dựng một application có giao tiếp BLE dựa vào SDK do nhà sản xuất cung cấp.

BLE Protocol Stack Overview

BLE protocol stack
Hình trên minh họa cấu trúc lớp của BLE protocol stack. Thông thường, chúng ta sẽ code ở lớp Application. Để giao tiếp thông qua Bluetooth, dữ liệu từ application được đưa xuống các lớp dưới, thông qua đường truyền vật lý (ở đây cụ thể là không khí) sẽ đến thiết bị nhận và được đưa từ dưới lên cho đến khi gặp application của thiết bị nhận. Quá trình trên được mô tả bởi hình sau:

BLE communication
Sau đây, mình sẽ giới thiệu sơ qua về cấu tạo, nhiệm vụ, chức năng của từng lớp.

1. Physical Layer:
  • Có nhiệm vụ modulate (điều chế) và demodulate (giải điều chế) tín hiệu tương tự, chuyển tín hiệu tương tự thành tín hiệu số và ngược lại, từ đó giao tiếp với hệ thống số phía trên.
  • Sử dụng dải tần 2.4GHz ISM (Industrial, Scientific and Medical) để truyền nhận tín hiệu.​
  • Dải tần 2.4GHz được chia thành 40 kênh. Trong đó có 37 kênh được sử dụng cho việc truyền dữ liệu, 3 kênh cuối cùng (37,38,39) dùng để advertise (báo cho thế giới biết là có một em BLE đang ở đây), connection set up và broadcast data.​

BLE Frequency Band
Sử dụng Plug-in RSSI Viewer trong nRF connect tool của Nordic Semiconductor, ta có thể quan sát signal strength trên dải tần 2.4GHz một các sống động hơn.


RSSI on 2.4GHz band
Bạn có thể tích chọn Advertisements Only để quan sát riêng các advertising channels.


RSSI on 2.4GHz band - Advertisment Channel Only
 
Top