Mô tả sản phẩm: Sáp thơm xe ô tô
Các thiết bị BLE có thể hoạt động trong 1 dãy tần số từ 2402MHz đến 2480 MHz và dãy tần số này được chia làm 40 kênh truyền, trong đó các chip BLE có thể sử dụng 1 trong 40 kênh tần số để truyền dữ liệu. Giá trị tần số của mỗi kênh truyền được tính như sau:
fn = 2402 + 2*n (MHz) với 0 <= n <= 39
Các kênh tần số này sẽ được sử dụng như sau:
- Kênh 2402MHz, 2426MHz và 2480MHz là 3 kênh chỉ được dùng để truyền dữ liệu nhận dạng (Advertising data)của BLE Peripheral trước khi kết nối và được gọi là Advertising Channels.
- Tất cả 37 kênh còn lại sẽ được dùng để truyền dữ liệu ứng dụng giữa các thiết bị BLE sau khi kết nối và được gọi là Data Channels.
Lý do chúng ta lại cần đến 3 kênh truyền Advertising data và tới 37 kênh để truyền dữ liệu ứng dụng là để BLE Central có thể giao tiếp với nhiều thiết bị BLE Peripheral cùng một lúc. Ví dụ, nếu chỉ có 1 kênh Advertising Channel, sẽ có 2 trường hợp có thể xảy ra: một là BLE Central chỉ nhận được Advertising data từ 1 BLE Peripheral mà thôi nếu chỉ 1 thiết bị BLE Peripheral đó sử dụng kênh truyền tại thời điểm mà BLE Central thức dậy để nhận dữ liệu, hoặc hai là BLE Central sẽ không nhận đúng Advertising data nếu nhiều thiết bị BLE Peripheral cùng lúc sử dụng kênh truyền đó. Tương tự 37 Data Channels có thể giúp BLE Central giao tiếp với nhiều thiết bị BLE Peripheral cùng một lúc (mỗi kênh cho mỗi BLE Peripheral).
Dưới đây là hình minh họa về 40 kênh tần số hoạt động của các thiết bị BLE:
Hình 2.6: 40 kênh hoạt động của các thiết bị BLE.
2.3.1 Quá trình kết nối của các thiết bị BLE
Để kết nối thì BLE Central sẽ nhận Advertising data từ các BLE Peripherl ở xung quanh. Cả 2 thiết bị BLE Central và BLE Peripheral đều truyền/nhận dữ liệu theo chu kỳ tương ứng chứ không liên tục (để tiết kiệm năng lượng). Cụ thể như BLE Central sẽ có khái niệm chu kỳ nhận dữ liệu nhận dạng (scanning interval) trong đó BLE Central sẽ thức dậy và nhận dữ liệu nhận dạng sau mỗi scanning interval (nhận dữ liệu trên cả 3 kênh Advertising Channels đã giới thiệu ở trên). Tương tự BLE Peripheral sẽ có khái niệm chu kỳ phát dữ liệu nhận dạng (advertising interval) trong đó thiết bị sẽ thức dậy sau mỗi chu kỳ để truyền advertising data (cũng phát dữ liệu trên cả 3 kênh tần số của Advertising Channels), và đặc biệt là mỗi lần thức dậy các thiết bị BLE Peripheral sẽ truyền nhiều lần dữ liệu nhận dạng (cái này gọi là Advertising Packets) chứ không phải đơn thuần là truyền 1 lần nhằm mục đích để tăng khả năng nhận được dữ liệu của BLE Central
Từ đó chúng ta có thể thấy các yếu tố ảnh hưởng việc nhanh/chậm khi BLE Central nhận biết các thiết bị BLE Peripheral xung quanh.
- Nếu chọn Scanning Interval thấp, thì BLE Central sẽ thức dậy nhiều hơn và nhận được nhiều advertising data hơn nên tìm đúng BLE Peripheral nhanh hơn (nhưng cũng tốn pin nhiều hơn).
- Nếu chọn Advertising Interval thấp, thì BLE Peripheral sẽ thức dậy nhanh hơn và phát nhiều dữ liệu hơn dẫn đến tăng khả năng nhận của BLE Central (tốn pin tập 1). Hơn nữa, nếu chọn số Advertising Packets lớn, thì sẽ phát nhiều dữ liệu hơn nữa (tiếp tục tốn pin tập 2)
Do đó, chúng ta phải cân nhắc tốc độ kết nối và mức năng lượng tiêu thụ khi khởi tạo các thông số trên cho thiết bị BLE. Nếu cứ chọn Scanning Interval và Advertising Interval giống nhau thì chắc chắn 2 thiết bị sẽ thấy nhau nhanh nhất và ít tốn năng lượng nhất. Nhưng chúng ta thường không biết trước được Advertising Interval của các thiết bị BLE Peripheral và mỗi nhà sản xuất có thể chọn các giá trị Advertising Interval khác nhau cho tất cả hoặc mỗi loại thiết bị của họ.
Hình bên dưới minh họa cho quá trình nhận dữ liệu nhận dạng ( Scanning) của BLE Central và quá trình phát dữ liệu nhận dạng (Advertising) của BLE.
2.3.1 Cấu trúc dữ liệu của Advertising data
Advertising data chính là dữ liệu nhận dạng được phát ra từ các BLE Peripheral để các BLE Central nhận dạng và gửi yêu cầu kết nối. Sau mỗi chu kỳ Advertising Interval, BLE Peripheral sẽ thức dậy và gửi 3 gói Advertising data giống nhau trên 3 kênh Advertising Channel(người ta gọi là Advertising Packets). Một gói Advertising Packet sẽ có tối đa 31 bytes dữ liệu nhận dạng (thực tế BLE Peripheral phát ra tối đa 47 bytes cho mỗi Advertising Packet trong đó 16bytes chứa các thông tin về cấu trúc của Advertising data và tối đa 31 bytes chứa các thông tin nhận dạng của thiết bị BLE Peripheral).
Cấu trúc dữ liệu của 1 Advertising Packet có thể được thể hiện trong hình dưới đây:
Hình 2.8: Cấu trúc dữ liệu của 1 Advertising Packet.
Ở đây chúng ta sẽ tập trung vào phần dữ liệu nhận dạng nằm trong gói dữ liệu gọi là Advertising Channel PDU (PDU = Packet Data Unit) vì đó là phần dữ liệu nhận dạng của 1 thiết bị BLE Peripheral chúng ta phải xác lập trong code. Các thành phần khác trong Advertising Packet như là Preample, Access Address và CRC sẽ được BLE chip tự động thêm vào ở mức hardware.
Các thành phần trong Advertising Channel PDU có thể được giải thích như sau:
- Phần thông tin cấu hình (gọi là Header) dài 2 bytes bao gồm các thông tin:
- Loại Advertising Packet (PDU Type)(4 bit) là thông tin về chức năng của gói Advertising Packet. Như đã giới thiệu thì quá trình scanning và advertising của BLE Central và BLE Peripheral đều thực hiện trên 3 kênh Advertising Channel, do đó PDU Type sẽ cho biết đây là loại packet nào. Thông tin chi tiết được thể hiện trong bảng bên dưới.
- RFU (Reserved for Future Use)(4 bit) là các bit chưa dùng và để dành cho tương lai.
- TxAdd(1 bit) để xác định địa chỉ MAC của thiết bị BLE là Public hay Random (địa chỉ MAC là địa chỉ phần cứng).
- RxAdd(1 bit) để xác định Advertising Packet này có chức năng beacon hay không.
- Length(6 bit) để xác định độ dài của của phần dữ liệu nằm trong phần payload của Advertising Packet.
Sau đây là bảng thông tin các loại dữ liệu có thể truyền trên 3 kênh Advertising Packet