Professional Documents
Culture Documents
Giới thiệu
Ngày nay, Bluetooth đã trở thành một phần trong cuộc sống của chúng ta do các ứng dụng to
lớn của nó từ các thiết bị âm thanh bao gồm tai nghe và điện thoại di động, máy nghe nhạc MP3,
máy tính xách tay, máy tính để bàn, máy tính bảng, v.v. Với bluetooth, người ta có thể truyền dữ
liệu, âm thanh, hình ảnh, video từ thiết bị này sang thiết bị khác miễn là chúng tuân thủ
bluetooth. Tiêu chuẩn IEEE 802.15.1 mô tả chi tiết thông số kỹ thuật bluetooth.
Bluetooth là một công nghệ không dây để kết nối các thiết bị cố định hoặc di động bằng cách
sử dụng liên kết vô tuyến ngắn. Nó nhằm mục đích cung cấp giao tiếp không dây cùng với kích
thước nhỏ, tiêu thụ điện năng thấp và giá cả thấp. Tên của Bluetooth như một lời tri ân đến vua
Viking ở thế kỷ thứ 10 Harald Blatand, người đã thống nhất một cách hòa bình nhiều vương quốc
nhỏ dưới khu vực của ông đang hoạt động theo các quy tắc khác nhau giống như được thực hiện
trong công nghệ Bluetooth. Harald thích ăn quả việt quất, loại quả này giúp hàm răng của anh có
màu xanh, dẫn đến biệt danh “Bluetooth”.
Có 2 loại Bluetooth:
Bluetooth Classic (tốc độ cơ bản - BR/tốc độ nâng cao - EDR)
Bluetooth Low Energy (BLE)
Tuy nhiên, BR và BLE không tương thích với nhau.
Bluetooth Classic thường được sử dụng để truyền tải dữ liệu lớn, chẳng hạn như nhạc từ
điện thoại đến loa hoặc tai nghe của bạn. Do đó, Bluetooth Classic tiêu thụ mức năng lượng cao
hơn.
BLE truyền dữ liệu ở một khoảng thời gian đều đặn, tiêu thụ ít năng lượng hơn và do đó,
có thể kéo dài trong vài tháng (đôi khi lên đến hàng năm) với một pin duy nhất.
Beacon Bluetooth
Hình
Beacon Bluetooth là thiết bị phát sóng vô tuyến (bao gồm một bộ vi xử lý nhỏ, đài và pin)
không dây sử dụng BLE làm giao thức truyền dẫn. Thiết bị truyền sóng vô tuyến nhỏ này có
thể được ‘phát hiện’ bởi tất cả các máy quét BLE trong một bán kính nhất định (khoảng 10–30 m
đối với không gian nội thất), nhưng ngược lại thì không.
Beacon Bluetooth là một phần của Internet of Things (IoT), là kết nối giữa các thiết bị và máy
móc khác nhau để thu thập và truyền dữ liệu mà không có mối quan hệ giữa người với người
hoặc giữa người với máy tính.
Beacon Bluetooth hoạt động bằng cách truyền các gói dữ liệu, các dữ liệu này được nhận bởi các
thiết bị nhận tương thích thông qua qua sóng vô tuyến. Các gói dữ liệu này hoặc là độc lập hoặc
là tác nhân kích hoạt các sự kiện trên thiết bị nhận, chẳng hạn như thông báo đẩy, hành động
ứng dụng và lời nhắc.
BLE sử dụng cùng dải phổ với Bluetooth Classic (băng tần ISM 2.400–2.4835 GHz) nhưng trên
một tập hợp kênh khác. BLE có 3 kênh quảng cáo chính, giúp các thiết bị kết nối nhanh hơn và
giảm thời gian quét thiết bị nghe. Để ngăn chặn các vấn đề nhiễu băng hẹp, BLE sử dụng nhảy
tần thông qua kỹ thuật điều chế kỹ thuật số hoặc trải phổ chuỗi trực tiếp để chống lại.
Một beacon Bluetooth có khoảng cách bán kính tối đa theo lý thuyết là dưới 100m. Nó cũng có
thể có độ trễ lên đến 6ms từ trạng thái không kết nối. Phạm vi thực tế và thời gian phản hồi phụ
thuộc vào bản thân beacon và quá trình mà nó đã được lập trình để thực hiện.
BLE Master yếu được sử dụng trong các ứng dụng tầm ngắn (sử dụng 1M PHY tiêu chuẩn). Phạm
vi hoạt động điển hình là khoảng 2 đến 5 mét, tùy thuộc vào công suất phát. Phạm vi càng cao
thì mức tiêu thụ pin càng cao.
Trong trường hợp của các thiết bị thông minh như điện thoại, việc chấp nhận tín hiệu phát sóng
BLE thường được bật thông qua một ứng dụng cho phép kết nối tự động xảy ra.
Một nhược điểm của beacon Bluetooth là chúng không tự hoạt động. Beacon là một phần của
hệ thống, có nghĩa là toàn bộ thiết lập phụ thuộc vào người dùng mang thiết bị tương thích
(trong hầu hết các trường hợp).
Trong một số hệ thống, bộ thu thay vào đó là một thiết bị cố định được lắp đặt trong một cơ sở
và các beacon là di động. Một ví dụ về điều này là hệ thống theo dõi tài sản với thiết bị định vị cố
định và các beacon được gắn vào tài sản nhằm mục đích theo dõi vị trí của chúng trong một cơ
sở.
iBeacon hỗ trợ hai tương tác chính - giám sát và phạm vi.
Giám sát xảy ra khi bạn vào hoặc ra khỏi một khu vực. Khi điều này xảy ra, ứng dụng của bạn sẽ
được thông báo. Giám sát hoạt động trong nền và không yêu cầu bất kỳ hành động nào từ người
dùng để chạy.
Tiêu chuẩn Eddystone là một giao thức Bluetooth Low Energy được phát hành vào năm 2015
bởi Google. Nó là một giao thức mở mã nguồn mở và đa nền tảng, hỗ trợ cả iOS và Android.
Không giống như iBeacon, Eddystone chỉ hỗ trợ một tương tác cơ bản chính - “khám phá
Eddystone”, là một khái niệm tương tự như phạm vi của iBeacon.
Tương tác này được chứa trong ba loại gói dữ liệu khác nhau - Eddystone UID, Eddystone URL và
Eddystone TLM.
Eddystone UID là một gói dữ liệu có thể kích hoạt thông báo đẩy hoặc hành động ứng
dụng. Ngược lại, URL Eddystone gửi một URL thực. Dữ liệu đơn giản và không cần ứng dụng để
hoạt động.
Cuối cùng, Eddystone TLM được sử dụng để quản lý báo hiệu và bao gồm thông tin như pin và
điện áp, nhiệt độ báo hiệu, số lượng gói hàng đã gửi và thời gian hoạt động của báo hiệu. TLM
được gửi cùng với hai loại gói khác và hoạt động như siêu dữ liệu về beacon.
Trang web thực
Web trong cuộc sống bắt đầu với ý tưởng rằng một beacon có thể phát một URL mà thiết bị của
người dùng có thể nhận được. Thiết bị này cần ở chế độ “thức” và không ở chế độ chờ, có nghĩa
là thiết bị sẽ không Master động quét bất kỳ tín hiệu báo hiệu nào. Theo một cách nào đó, điều
này giúp tiết kiệm thời lượng pin của thiết bị và giảm căng thẳng và tiêu hao pin cho thiết bị.
Người dùng có thể thực hiện hành động để quét và tìm kiếm các tín hiệu lân cận. Nếu máy quét
tìm thấy thứ gì đó, nó sẽ cung cấp cho bạn một danh sách để bạn lựa chọn, bao gồm khả năng
phân loại và lọc kết quả để giảm spam và đưa nội dung phù hợp nhất lên đầu.
Tất cả những gì còn lại cần làm là chọn URL phù hợp nhất và mở nó.
Web trong cuộc sống sử dụng URL vì chúng được người dùng cuối nói chung hiểu rõ và linh hoạt
vì nó có thể liên kết đến một trang web thực tế, hướng người dùng đến một không gian giàu nội
dung hoặc được liên kết sâu để mở một ứng dụng khác trên điện thoại của bạn.
Khi nói đến beacon Bluetooth và Web trong cuộc sống, beacon chỉ chịu trách nhiệm nhận URL
đến thiết bị. Mục đích của Web trong cuộc sống là giảm thiểu sự khó khăn của việc khám phá
URL.
Tuy nhiên, Web trong cuộc sống đã bị Google khai tử vào tháng 10 năm 2017 do ngừng hỗ trợ
cho nó. Điều này có nghĩa là bạn không còn có thể nhận thông báo trên điện thoại của mình nếu
không tải ứng dụng xuống.
Sự kết hợp của nhiều piconet được gọi là scatternet. Một thiết bị có thể tham gia vào nhiều
piconet. Nó sẽ chia sẻ thời gian và cần được đồng bộ hóa với Master của piconet hiện tại.
Nó hỗ trợ tốc độ dữ liệu dựa trên các phiên bản khác nhau từ 720 kbps đến khoảng 24 Mb/s,
phạm vi phủ sóng từ 1 đến 100 mét dựa trên loại công suất được hỗ trợ trên các thiết bị
bluetooth.
Cấu trúc liên kết tối đa 7 liên kết trong cấu hình sao
Bluetooth hoạt động ở băng tần ISM 2,4 GHz. Bảng sau xác định tần số buletooth được sử dụng
trên toàn thế giới. Băng thông đủ để xác định 79 kênh (ở Mỹ, Châu Âu và các quốc gia khác) có
băng thông 1 MHz trong mỗi kênh. Nhật Bản, Tây Ban Nha và Pháp sử dụng 23 kênh bluetooth.
Nhật Bản 2,471 đến 2,497 GHz f = 2.473 + n, MHz (n = 0 đến 22)
Tây Ban Nha 2,445 đến 2,475 GHz f = 2.449 + n, MHz (n = 0 đến 22)
Nước pháp 2,4465 đến 2,4835 GHz f = 2,454 + n, MHz (n = 0 đến 22)
Bluetooth xác định 3 loại công suất Master được sử dụng bởi các thiết bị. Kiểm soát công suất
được sử dụng để giữ bức xạ trong giới hạn để hệ thống hoạt động hiệu quả mà không gây nhiễu
các thiết bị bluetooth hàng xóm. Thuật toán điều khiển công suất được thiết kế giữa thiết bị
Master và thiết bị Slave sử dụng giao thức quản lý liên kết. Bảng sau đây đề cập đến phạm vi phủ
sóng khoảng cách cho mỗi lớp công suất.
Khoảng
cách bao
Lớp Giới hạn công suất phủ
Công suất đầu ra 100mW (20 dBm) để đạt được phạm vi tối đa
Công suất tối thiểu là 1mW
Class1 Điều khiển công suất là bắt buộc phải có trong lớp này 100 m
Class3 Công suất đầu ra thấp nhất có thể với lớp này, danh nghĩa là 1mW. 1m
Core protocols
Bluetooth Radio: Xác định giao diện không khí, các dải tần số, thông số kỹ thuật nhảy tần, kỹ
thuật điều chế được sử dụng và truyền tải các lớp công suất.
Baseband: Sắp xếp địa chỉ, định dạng khung gói, các thuật toán điều khiển thời gian và công
suất cần thiết để thiết lập kết nối giữa các thiết bị bluetooth trong piconet được định nghĩa trong
phần này của đặc điểm kỹ thuật giao thức.
Link Manager protocol: Thiết lập liên kết giữa các thiết bị bluetooth và duy trì liên kết giữa
chúng. Giao thức này cũng bao gồm các thông số kỹ thuật xác thực và mã hóa. Việc thương
lượng kích thước gói giữa các thiết bị có thể được thực hiện bởi điều này.
Logical link control and adaptation protocol: Giao thức L2CAP này điều chỉnh khung lớp trên
sang định dạng khung lớp baseband và ngược lại. L2CAP đảm nhận cả dịch vụ định hướng kết
nối và dịch vụ không kết nối.
Service discovery protocol: Các truy vấn liên quan đến dịch vụ bao gồm thông tin thiết bị có
thể được xử lý tại giao thức này để có thể thiết lập kết nối giữa các thiết bị bluetooth.
Cable replacement protocol
Cổng nối tiếp phổ biến để cung cấp giao tiếp nối tiếp giữa các thiết bị. Bluetooth sử dụng
RFCOMM làm giao thức thay thế cáp. RFCOMM hoạt động như một cổng nối tiếp ảo và vận
chuyển các bit dữ liệu số nhị phân. Về cơ bản, nó mô phỏng các thông số kỹ thuật RS232 qua lớp
vật lý bluetooth.
TCS-BIN là giao thức được sử dụng ở đây là giao thức có định hướng bit. Nó chỉ định các tín hiệu
điều khiển cuộc gọi và các thủ tục quản lý tính di động. Những tín hiệu này đảm nhận việc thiết
lập các cuộc gọi dữ liệu và lời nói.
Adopted protocols
Các giao thức này đã được xác định bởi các cơ quan tiêu chuẩn khác được kết hợp mà không có
bất kỳ thay đổi nào trong kiến trúc ngăn xếp giao thức bluetooth. Các giao thức là PPP,
TCP/UDP/IP, OBEX và WAE/WAP:
PPP là một giao thức điểm Slavei điểm được sử dụng để truyền dữ liệu IP.
TCP/UDP/IP là một phần của mô hình TCP/IP cơ bản.
OBEX là một giao thức trao đổi đối tượng được phát triển bởi IrDA và nó tương tự
như HTTP. Nó là một giao thức cấp phiên.
WAE/WAP cung cấp Môi trường ứng dụng không dây và WAP cung cấp Giao thức
ứng dụng Wirelesss.
Lớp vật lý Bluetooth bao gồm các thông số kỹ thuật vô tuyến và băng tần cơ sở như được định
nghĩa trong IEEE 802.15.1.
Nhảy tần số
Hệ thống Bluetooth sử dụng sơ đồ nhảy tần với khoảng 80 tần số khác nhau, với khoảng cách
sóng mang khoảng 1MHz. Khi bật tính năng nhảy tần, một kênh logic được xác định bằng chuỗi
nhảy. Tại bất kỳ thời điểm nào băng thông 1 MHz được chia sẻ tối đa. 8 thiết bị. Các kênh logic
khác nhau có thể sử dụng cùng một lúc BW 80 MHz. Xung đột xảy ra khi hai thiết bị bluetooth sử
dụng cùng một tần số nhảy tần đồng thời nếu chúng ở trên các piconet khác nhau và các kênh
logic khác nhau. Tốc độ nhảy là 1600 bước mỗi giây, do đó kênh vật lý chỉ tồn tại trong 0,625ms.
Đài phát thanh Bluetooth sử dụng cấu trúc liên kết TDD trong đó việc truyền dữ liệu diễn ra theo
một hướng tại một thời điểm và nó luân phiên theo hai hướng lần lượt. Quyền truy cập là TDMA,
vì phương tiện piconet được chia sẻ giữa hai thiết bị. Do đó truy cập piconet được gọi là FH-TDD-
TDMA.
Có 2 cách liên kết có thể được thiết lập giữa Master và Slave.
SCO (Synchronous connection oriented) được gọi là định hướng kết nối đồng
bộ. Trong kiểu này, băng thông cố định được phân bổ cho kết nối điểm Slavei điểm giữa
Master và Slave. Đặt trước cơ bản là 2 slot liên tiếp. Master hỗ trợ 3 liên kết SCO và slave
hỗ trợ 2 hoặc 3 liên kết.
ACL (Asynchronous connectionless) được gọi là kết nối không đồng bộ. Điều này
được sử dụng cho liên kết điểm Slavei đa điểm giữa Master và Slave. Chỉ có một liên kết
ACL tồn tại và để truyền lại gói tin nhiều hơn được yêu cầu. Trong trường hợp các vị trí
không được đặt trước trong các liên kết SCO, thiết bị Master có thể trao đổi gói với bất kỳ
thiết bị Slave nào trên mỗi khe thời gian.
Baseband packet formats
Bluetooth Packet Format = Access Code(72 bits) + Header(54 bits) + Payload (0 to 2745 bits)
Access code bao gồm preamble(4bits), sync word(64bits) và trailer field(4 bits).
Header field bao gồm AM_ADDR(3 bits), type(4 bits), flow(1 bit), ARQN(1 bit),
SEQN(1 bit) và HEC(8 bits).
Như đã đề cập ở trên, Access code trong gói được sử dụng để đồng bộ hóa thời gian và các phần
ofset khác. Access code cũng được sử dụng cho các yêu cầu phân trang, phản hồi phân trang và
các mục đích điều tra.
Header được sử dụng để xác định loại gói và sẽ mang thông tin điều khiển giao thức.
Trường trọng tải sẽ mang dữ liệu hoặc giọng nói của người dùng. Mã truy cập kênh xác định một
piconet, Mã truy cập thiết bị được sử dụng để phân trang REQ/RES, Mã truy cập yêu cầu được sử
dụng cho mục đích yêu cầu.
Cấu trúc gói cho BR và EDR được thể hiện trong hình.
Xử lý tiêu đề thông qua Lớp vật lý Bluetooth
Phần phát:
HEC được tạo và thêm vào phần tiêu đề gói tin.
Các bit tiêu đề được xáo trộn bằng cách sử dụng từ làm trắng.
Mã hóa FEC được áp dụng cho các bit dữ liệu được xáo trộn ở trên.
Các bit dữ liệu được mã hóa FEC được điều chế.
Việc định hình xung được áp dụng trước khi chuyển đổi lên RF.
Dữ liệu dạng xung được đảo ngược ở tần số 2,4 GHz và truyền qua không khí.
Phần thu:
Các thao tác ngược lại được thực hiện ở phần viz thu bluetooth. Chuyển đổi xuống RF, khử
xung, giải điều chế, giải mã FEC, khử làm trắng, kiểm tra HEC trước khi tiêu đề được giải
mã.
Xử lý tải trọng sử dụng tất cả các mô-đun như được áp dụng cho xử lý tiêu đề. Ngoài ra, nó sử
dụng mô-đun mã hóa E0 hoặc AES-CCM. Khi mã hóa E0 được áp dụng, toàn bộ tải trọng phải
được mã hóa. Khi mã hóa AES-CCM được áp dụng, chỉ phần thân tải trọng và MIC mới được mã
hóa; trong đó tiêu đề tải trọng và CRC sẽ không được mã hóa.
Phần phát của quá trình xử lý lớp vật lý bluetooth và phần xử lý của bộ thu được tự giải thích
như thể hiện trong hình.
Lớp MAC của Bluetooth bao gồm Giao thức Trình quản lý Liên kết (LMP) và Giao thức Điều
khiển Liên kết Hợp lý và Thích ứng (L2CAP).
Tiêu chuẩn Bluetooth xác định 5 loại kênh dữ liệu logic khác nhau dựa trên lưu lượng tải trọng
khác nhau do chúng mang theo. Chúng là kiểm soát liên kết, trình quản lý liên kết, không đồng
bộ người dùng, đồng bộ người dùng và đồng bộ người dùng. Kênh điều khiển liên kết mang
thông tin như ARQ, điều khiển luồng và đặc tính tải trọng.
Trong trạng thái kết nối, thiết bị bluetooth có thể ở một trong 4 chế độ bao gồm chế độ hoạt
động, chế độ Sniff, chế độ giữ và chế độ đỗ.
Trong chế độ Hoạt động, thiết bị bluetooh tham gia tích cực vào kênh.
Trong chế độ Sniff, thiết bị Slave trợ bluetooth sẽ không nghe trên tất cả các khe đã
nhận mà chỉ nghe các khe được chỉ định cho các bản tin dành cho nó.
Ở chế độ Giữ, thiết bị bluetooth không truyền dữ liệu trong thời gian dài.
Ở chế độ đỗ, thiết bị bluetooth sẽ có ít hoạt động được thực hiện và do đó sẽ tiêu
thụ điện năng rất thấp.
Giao thức LMP được sử dụng để thiết lập liên kết và kiểm soát liên kết. Kiểm soát Liên kết (LC)
cung cấp độ tin cậy cho Giao thức Trình quản lý Liên kết. LM PDU được gửi trong các gói khe cắm
đơn.
PDU = Opcode (7bits), ID giao dịch (1bit), nội dung thông tin
Giao thức điều khiển và thích ứng liên kết logic (L2CAP)
Giao thức L2CAP này giống như LLC chăm sóc các dịch vụ giao thức lớp liên kết giữa các thực
thể. Nó cung cấp các dịch vụ cho các lớp trên và dựa vào lớp dưới để kiểm soát luồng cũng như
kiểm soát lỗi. L2CAP sử dụng các liên kết ACL và không sử dụng các liên kết SCO.
L2CAP cung cấp hai loại dịch vụ không kết nối và dịch vụ chế độ kết nối. Loại không kết nối cung
cấp dịch vụ phân phối dữ liệu đáng tin cậy. Loại chế độ kết nối cung cấp dịch vụ sử dụng giao
thức HDLC.
Do ứng dụng rộng rãi của công nghệ bluetooth trong cuộc sống hàng ngày của chúng ta, bảo
mật của các thiết bị bluetooth đã trở thành một mối quan tâm đối với người dùng. Mặc dù thiết
bị bluetooth được sử dụng song song với các thiết bị WPAN khác nhưng các thuật toán bảo mật
bluetooth được phát triển để chăm sóc xác thực và mã hóa chỉ giữa các thiết bị bluetooth trên
đường dẫn vô tuyến.
Đặc điểm kỹ thuật bluetooth đã xác định 3 dịch vụ bảo mật: xác thực, bảo mật và ủy quyền. Hơn
nữa bluetooth có 3 chế độ bảo mật như sau:
Chế độ bảo mật 1: Chế độ không an toàn
Chế độ bảo mật 2: Chế độ bảo mật thực thi cấp dịch vụ
Chế độ bảo mật 3: Chế độ bảo mật thực thi cấp liên kết
Sự tiêu thụ năng lượng Thấp (dưới 30 mA) Rất thấp (dưới 15 mA)
Tốc độ, vận tốc 700 Kb/s 1 Mb/s
64b/128b, lớp ứng dụng do 128 bit AES, lớp ứng dụng do người
Bảo vệ người dùng xác định dùng xác định
Thông lượng ứng dụng 0,7 đến 2,1 Mb/giây dưới 0,3 Mb/giây
Công nghệ Bluetooth cung cấp khả năng không dây tầm ngắn để hai thiết bị có thể truyền dữ
liệu với nhau. Trong nhiều năm, nhiều phiên bản Bluetooth khác nhau đã được phát triển, bao
gồm v1.2, v2.0, v2.1, v3.0, v4.0 và v4.1. Nó hoạt động ở dải tần ISM 2,4 GHz. Công nghệ này dựa
trên tiêu chuẩn IEEE 802.15.1. Cả hai lớp PHY và MAC của Bluetooth đều được xác định trong
tiêu chuẩn WPAN này.
Tất cả các phiên bản bluetooth đều có các yêu cầu về tốc độ và tốc độ dữ liệu khác nhau. Chúng
tương thích với các phiên bản trước của chúng để thiết bị có một phiên bản có thể tương thích
với phiên bản kia. Mạng Bluetooth bao gồm các piconet. Mỗi piconet sẽ có một Master và một
đến bảy Slave giao tiếp với nhau.
Bluetooth v1.2
Tốc độ hoặc tốc độ dữ liệu: 720 kbps
Khả năng tương thích ngược: v1.1
Bluetooth v2.0
Tốc độ: 2,1 Mbps
Tương thích ngược: Bluetooth v1.2
Bluetooth v2.1
Tốc độ: 2 Mbit/s
Tương thích ngược: Bluetooth v1.2
Bluetooth v3.0
Tốc độ: 24 Mbps
Tương thích ngược: Bluetooth v2.1
Bluetooth v4.0
Tốc độ: 24 Mbps
Tương thích ngược: Bluetooth v3.0
Bluetooth v4.1
Được thiết kế để hoạt động liên tục với công nghệ di động LTE.
Tương thích ngược với các phiên bản trước.
Mạnh mẽ để hoạt
động trong môi
trường tắc nghẽn Hơn Ít hơn
Thông lượng dữ liệu 2 Mbps, cho khoảng 1,6 Mbps với chi
lý thuyết phí 1 Mb/giây
Sau khi so sánh bluetooth 4.2 so với 5.0 và xác định được sự khác biệt giữa bluetooth 4.2 và 5.0,
bluetooth 5.0 sẽ trở nên phổ biến trong các thiết bị điện thoại thông minh, thiết bị Internet of
Things (IoT) và Bluetooth Beacons. Các báo hiệu bluetooth phổ biến hiện có là iBeacon của Apple
và Eddystone của Google.
Bluetooth 5.1 đã được Bluetooth SIG xuất bản vào ngày 21 tháng 1 năm 2019.
Nó tương thích ngược với các phiên bản bluetooth trước đó như v5.0 và v4.2.
Bluetooth 5.1 giới thiệu tính năng tìm hướng giúp định vị các phím của bạn có bộ
theo dõi bluetooth trên chúng. Nó cung cấp “độ chính xác từng centimet” trong việc tìm
kiếm vị trí.
Chế độ quảng cáo đã được cải thiện trong bluetooth v5.1, giúp các thiết bị thông
minh như nhiệt kế truyền các phép đo của nó đến các thiết bị bluetooth khác mà không
cần kết nối chúng.
Bluetooth v5.1 này cung cấp độ tin cậy và khả năng mở rộng.
Nó cho phép các thiết bị có pin hạn chế (ví dụ như đồng hồ thông minh) có thể cõng
các thiết bị mạnh mẽ khác như điện thoại di động.
Bluetooth 5.1 tăng tốc quá trình bắt tay với các thiết bị đã được ghép nối trước đó.
Tính năng bắt được giới thiệu trong các phiên bản bluetooth trước, nhưng v5.1 làm
cho nó thông minh hơn.
Đây là những điểm cải tiến chính so với các phiên bản bluetooth trước:
Khoảng thời gian đến (AoA) và Góc khởi hành (AoD)
Chỉ số kênh quảng cáo
GATT Caching
Các tính năng bổ sung nhỏ đợt 1
o Hỗ trợ HCI cho các phím gỡ lỗi trong Kết nối bảo mật LE
o Cơ chế cập nhật độ Master xác của đồng hồ ngủ
o Trường ADI trong dữ liệu phản hồi quét
o Tương tác giữa QoS và Đặc tả luồng
o Phân loại kênh lưu trữ cho quảng cáo Slave
o Cho phép SID xuất hiện trong báo cáo phản hồi quét
o Chỉ định hành vi khi các quy tắc bị vi phạm
Periodic Advertising Sync Transfer
Các tính năng được bổ sung trong CSA6 được tích hợp trong bluetooth v5.1
o Mô hình
o Hệ thống phân cấp mô hình dựa trên lưới
Tính năng bị loại bỏ trong phiên bản này: Các phím đơn vị
Bluetooth hoạt động ở Băng tần ISM 2,4 GHz. Nó trải dài từ 2400 đến 2483,5 MHz. Các kênh BLE
cách nhau 1 MHz.
Advertising Channels
37 2402 MHz
38 2426 MHz
39 2480 MHz
Data Channels
Sau khi kết nối được thiết lập giữa Master và Slave, các thiết bị có thể gửi dữ liệu
cho nhau. Điều này đạt được bằng cách trao đổi các PDU kênh dữ liệu trong các sự kiện
kết nối theo lịch trình.
Các thiết bị BLE Master và Slave sử dụng bất kỳ kênh dữ liệu BLE nào sau đây để
truyền/nhận.
Lớp vật lý
Máy phát sử dụng điều chế GFSK và hoạt động ở băng tần 2,4 GHz.
BLE cung cấp tốc độ dữ liệu 1 Mbps (Bluetooth v4.2)/2 Mbps (Bluetooth v5.0).
Nó sử dụng bộ thu phát nhảy tần.
Hai chương trình điều chế được chỉ định để cung cấp 1 Msym/s và 2 Msym/s.
Hai biến thể lớp PHY được chỉ định: chưa được mã hóa và mã hóa.
Cấu trúc liên kết Time Division Duplex (TDD) được sử dụng trong cả hai chế độ PHY.
Lớp liên kết
Chịu trách nhiệm quảng cáo, quét và tạo/duy trì kết nối. Vai trò của các thiết bị BLE thay đổi
trong chế độ ngang hàng (Unicast) hoặc chế độ quảng bá (Broadcast). Các vai trò phổ biến là
Advertiser/Scanner (Initiator), Slave/Master hoặc Broadcaster/Observer. Các trạng thái của lớp
liên kết được xác định trong hình bên dưới.
HCI
Cung cấp giao tiếp giữa Controller và Host thông qua các kiểu giao diện tiêu chuẩn. Lớp HCI này
có thể được triển khai bằng cách sử dụng API hoặc bằng các giao diện như UART/SPI/USB. Các
lệnh và sự kiện HCI tiêu chuẩn được xác định trong thông số kỹ thuật bluetooth.
L2CAP
Lớp này cung cấp các dịch vụ đóng gói dữ liệu cho các lớp trên. Điều này cho phép giao tiếp dữ
liệu từ đầu đến cuối hợp lý.
SMP
Lớp quản lý bảo mật này cung cấp các phương pháp ghép nối thiết bị và phân phối khóa. Nó
cung cấp các dịch vụ cho các lớp ngăn xếp giao thức khác để kết nối và trao đổi dữ liệu giữa các
thiết bị BLE một cách an toàn.
GAP
Lớp này giao diện trực tiếp với lớp ứng dụng và/hoặc các cấu hình trên đó. Nó xử lý các dịch vụ
liên quan đến khám phá thiết bị và kết nối cho thiết bị BLE. Nó cũng quan tâm đến việc khởi tạo
các tính năng bảo mật.
GATT
Lớp này là khung dịch vụ chỉ định các thủ tục con để sử dụng ATT. Truyền dữ liệu giữa hai thiết bị
BLE được xử lý thông qua các thủ tục phụ này. Các ứng dụng và/hoặc cấu hình sẽ sử dụng GATT
trực tiếp.
ATT
Lớp này cho phép thiết bị BLE hiển thị các phần dữ liệu hoặc thuộc tính nhất định.
Application Layer
Các lớp ngăn xếp giao thức BLE tương tác với các ứng dụng và cấu hình như mong
muốn. Khả năng tương tác của ứng dụng trong hệ thống Bluetooth được thực hiện bằng
cấu hình Bluetooth.
Cấu hình xác định các tương tác dọc giữa các lớp cũng như các tương tác ngang
hàng của các lớp cụ thể giữa các thiết bị.
Một hồ sơ bao gồm một hoặc nhiều dịch vụ để giải quyết trường hợp sử dụng cụ
thể. Một dịch vụ bao gồm các đặc điểm hoặc tham chiếu đến các dịch vụ khác.
Mọi cấu hình/ứng dụng chạy trên các lớp GAP/GATT của ngăn xếp giao thức BLE. Nó
xử lý các dịch vụ liên quan đến phát hiện thiết bị và kết nối cho thiết bị BLE.
Preamble: Được sử dụng bởi máy thu để đồng bộ hóa (thời gian, tần số) và để thực hiện AGC
(Điều khiển độ lợi tự động). Nó là mẫu được xác định trước có kích thước 1 byte mà máy thu
biết: gói quảng cáo sử dụng “0b10101010”, gói dữ liệu sử dụng “0b10101010” (nếu LSB của
Access Address là 0) hoặc “0b01010101” (nếu LSB của Access Address là 1).
Access Address: Đối với tất cả các gói quảng cáo được sử dụng mẫu cố định “0x8E89BED6”. Đối
với gói dữ liệu, nó bao gồm giá trị ngẫu nhiên 32 bit do thiết bị BLE tạo ra ở “trạng thái khởi
tạo”. Giá trị tương tự được sử dụng trong thông báo “yêu cầu kết nối (CONNECT_REQ)”.
PDU : Nó bao gồm “PDU kênh quảng cáo” hoặc “PDU kênh dữ liệu”.
CRC: Có kích thước 24 bit, được sử dụng để phát hiện lỗi của gói tin. CRC được tính bằng cách sử
dụng đa thức có dạng x24 + x10 + x9 + x6 + x4 + x3 + x + 1.
GÓI QUẢNG CÁO BLE
Các PDU của kênh quảng cáo phục vụ các chức năng sau.
Truyền dữ liệu.
Giúp phát hiện ra Slave để kết nối với họ.
Có nhiều loại PDU quảng cáo khác nhau với các định dạng và chức năng tải trọng khác nhau.
PDU quảng cáo (ADV_IND, ADV_DIRECT_IND, ADV_NONCONN_IND, ADV_SCAN_IND)
Quét PDU (SCAN_REQ, SCAN_RSP)
Khởi tạo PDU (CONNECT_REQ)
Nguồ
n: Tài liệu đặc điểm kỹ thuật cốt lõi của Bluetooth
Các PDU được chia thành nhiều loại tùy thuộc vào mục đích.
Trước khi chúng tôi liệt kê từng PDU, chúng ta hãy đề cập đến một số thuật ngữ phổ biến:
Trực tiếp so với Không hướng: Các loại quảng cáo được hướng dẫn chấp nhận các yêu
cầu kết nối từ một thiết bị ngang hàng đã biết, trong khi Không hướng chấp nhận các yêu cầu kết
nối từ bất kỳ thiết bị ngang hàng nào.
Có thể kết nối so với Không thể kết nối: xác định xem thiết bị quảng cáo có cho phép
thiết lập kết nối hay không.
Có thể quét và Không quét được: xác định xem thiết bị quảng cáo có khả năng xử lý
thông báo Yêu cầu quét từ người quan sát hoặc trung tâm hay không. Yêu cầu và phản hồi quét
được sử dụng để cho phép các thiết bị quảng cáo nhiều dữ liệu hơn mức có thể vừa với một gói
quảng cáo.
Quảng cáo mở rộng: Quảng cáo mở rộng là một cách để quảng cáo nhiều dữ liệu (giảm
tải) hơn những gì được phép với Quảng cáo cũ. Việc giảm tải được thực hiện bằng cách quảng
cáo đầu tiên trên kênh chính trỏ đến một gói phụ trợ trên kênh phụ.
Lưu ý: Vì các thiết bị không phải Bluetooth 5 sẽ không thể phát hiện ra các quảng cáo mở rộng,
nên các nhà quảng cáo cũng nên sử dụng bộ quảng cáo với các PDU quảng cáo cũ cho các thiết
bị quét cũ hơn để có thể phát hiện ra thiết bị cuối. Bộ quảng cáo được sử dụng để gửi đồng thời
các loại sự kiện quảng cáo khác nhau. Mỗi bộ quảng cáo sẽ có các thông số quảng cáo khác
nhau như loại PDU quảng cáo, khoảng thời gian quảng cáo, PHY.
Quảng cáo định kỳ: Một tính năng khác của Quảng cáo mở rộng Bluetooth 5 là Quảng
cáo định kỳ. Chúng được sử dụng để phát các gói đến các thiết bị trong một khoảng thời gian
nhất định giữa hai thiết bị không được kết nối, có nghĩa là nhiều thiết bị có thể nghe và điều
chỉnh các quảng cáo định kỳ này. Chúng bao gồm các quảng cáo được gửi vào một khoảng thời
gian cố định với dữ liệu quảng cáo thay đổi theo thời gian.
PDU quảng cáo cũ
Chúng có sẵn cho tất cả các phiên bản Bluetooth - cũng cho phép tương thích ngược với các
phiên bản cũ hơn và được sử dụng trên các kênh quảng cáo Chính.
ADV_IND: Quảng cáo vô hướng có thể quét có thể kết nối.
ADV_DIRECT_IND: Quảng cáo được hướng dẫn có thể kết nối
ADV_NONCONN_IND: Quảng cáo không định hướng không thể quét không thể quét được
ADV_SCAN_IND: Quảng cáo vô hướng có thể quét được
PDU quảng cáo mở rộng
Các loại này đã được giới thiệu trong phiên bản Bluetooth 5.0. Họ cung cấp cho các thiết bị tùy
chọn để quảng cáo trên các kênh Quảng cáo phụ ngoài các kênh quảng cáo Chính. Lợi ích của
các kênh Phụ là chúng cho phép tăng dung lượng dữ liệu quảng cáo.
ADV_EXT_IND: Quảng cáo mở rộng (được sử dụng cho tất cả các loại quảng cáo ngoại trừ
Kết nối có thể quét được Không hướng dẫn) - được gửi trên các kênh quảng cáo Chính.
AUX_ADV_IND: Quảng cáo mở rộng (được sử dụng cho tất cả các loại quảng cáo ngoại trừ
Kết nối có thể quét được Không hướng dẫn) - được gửi trên các kênh quảng cáo phụ.
AUX_SCAN_IND: được sử dụng cho quảng cáo định kỳ
AUX_CHAIN_IND: được sử dụng với các loại quảng cáo khác để chứa dữ liệu quảng cáo bổ
sung (chuỗi các gói quảng cáo)
Quét các PDU
Chúng được sử dụng để sử dụng chức năng Yêu cầu quét → Phản hồi quét, cho phép các thiết
bị phát nhiều dữ liệu quảng cáo hơn mức được phép trong một gói quảng cáo.
SCAN_REQ: được sử dụng trong các gói Yêu cầu quét được gửi trên các kênh quảng
cáo Chính
SCAN_RSP: được sử dụng trong các gói Phản hồi quét được gửi trên các kênh quảng
cáo Chính
AUX_SCAN_REQ: được sử dụng trong các gói Yêu cầu quét được gửi trên các kênh Quảng
cáo phụ
AUX_SCAN_RSP: được sử dụng trong các gói Phản hồi quét được gửi trên các kênh Quảng
cáo phụ
Khởi tạo PDU
Chúng được sử dụng để thiết lập kết nối giữa thiết bị ngoại vi và thiết bị trung tâm.
CONNECT_IND: đây là gói yêu cầu kết nối được gửi trên một trong các kênh quảng
cáo Chính
AUX_CONNECT_REQ: đây là gói yêu cầu kết nối được gửi trên một trong các kênh Quảng
cáo phụ
AUX_CONNECT_RSP: đây là gói phản hồi kết nối được gửi bởi thiết bị ngoại vi trên một
trong các kênh Quảng cáo phụ
RFU: Được dự trữ để sử dụng trong tương lai
ChSel: bit này sẽ được đặt thành 1 nếu nhà quảng cáo hỗ trợ tính năng Thuật toán lựa chọn
kênh LE số 2 (tham khảo Đặc điểm kỹ thuật cốt lõi của Bluetooth Tập 6, Phần B, Phần 4.5.8.3).
TxAdd: bit này được đặt thành 1 nếu địa chỉ của nhà quảng cáo là ngẫu nhiên và đặt
thành 0 nếu địa chỉ công khai
RxAdd: bit này được đặt thành 1 nếu địa chỉ của thiết bị đích là ngẫu nhiên và đặt thành 0 nếu
địa chỉ là công khai
Chiều dài: chứa Chiều dài tải trọng của gói tin.
Tải trọng PDU
Nội dung của tải trọng của gói quảng cáo và kích thước tối đa của nó phụ thuộc vào loại PDU
được sử dụng. Dữ liệu quảng cáo bao gồm thông tin mà nhà quảng cáo muốn chuyển tiếp đến
thiết bị quan sát/trung tâm.
Ở đây, chúng tôi Master yếu quan tâm đến các loại PDU có chứa dữ liệu quảng cáo. Các PDU đó
là:
PDU Legacy quảng cáo bao gồm: ADV_IND, ADV_NONCONN_IND,ADV_SCAN_IND
PDU quảng cáo mở rộng bao
gồm: ADV_EXT_IND, AUX_ADV_IND, AUX_SYNC_IND,AUX_CHAIN_IND
Dữ liệu Quảng cáo
Có một số loại dữ liệu tiêu chuẩn có thể được đưa vào dữ liệu quảng cáo. Dữ liệu được định
dạng như sau:
Các loại dữ liệu quảng cáo BLE khác nhau là:
UUID dịch vụ: được sử dụng để bao gồm danh sách các UUID dịch vụ
Tên địa phương: tên thiết bị ( Rút gọn hoặc Hoàn thành )
Cờ: cờ một bit được bao gồm khi một gói quảng cáo có thể kết nối được. Các cờ là: Chế độ
có thể khám phá giới hạn LE, Chế độ có thể khám phá chung LE, BR/EDR không được hỗ trợ, LE
và BR/EDR đồng thời cho cùng một thiết bị có thể sử dụng (Bộ điều khiển), LE và BR/EDR đồng
thời cho cùng một thiết bị có thể sử dụng (Máy Master).
Dữ liệu cụ thể của nhà sản xuất: được sử dụng để bao gồm dữ liệu tùy chỉnh được xác
định bởi mã định danh công ty.
Mức công suất TX: mức công suất truyền
Khoảng thời gian kết nối nô lệ: một cách để giao tiếp phạm vi khoảng thời gian kết nối
ưa thích của Thiết bị ngoại vi trong các gói quảng cáo.
Gợi ý dịch vụ: được sử dụng để “mời” các trung tâm cho phép một hoặc nhiều Dịch vụ
được chỉ định kết nối.
Dữ liệu dịch vụ: bao gồm một UUID dịch vụ và dữ liệu được liên kết với dịch vụ.
Hình thức: xác định “loại” của thiết bị quảng cáo theo các số Giao diện tiêu chuẩn được
chỉ định.
Địa chỉ Mục tiêu Công cộng: xác định địa chỉ của một hoặc nhiều người nhận quảng cáo
dự định khi một hoặc nhiều thiết bị được liên kết bằng địa chỉ công cộng.
Địa chỉ Mục tiêu Ngẫu nhiên: xác định địa chỉ của một hoặc nhiều người nhận quảng cáo
dự định khi một hoặc nhiều thiết bị được liên kết bằng địa chỉ ngẫu nhiên.
Khoảng thời gian quảng cáo: tự giải thích.
Mã định danh tài nguyên đồng nhất: được sử dụng để phát một URI chẳng hạn như
URL.
Các tính năng được hỗ trợ của LE: xác định các tính năng dành riêng cho LE được thiết
bị hỗ trợ. Chúng được định nghĩa trong Đặc điểm kỹ thuật cốt lõi (Quyển 6, Phần B, Phần 4.6).
Ok, đó là nó cho bài viết của tuần này. Chúng tôi sẽ đề cập nhiều hơn trong Phần 2 của loạt bài
này bao gồm:
Ví dụ về các gói quảng cáo
Cách sử dụng gói quảng cáo hiệu quả
Gói quảng cáo mở rộng
Thông số quảng cáo
và nhiều hơn nữa…
Quảng cáo Bluetooth rất quan trọng đối với bất kỳ thiết bị BLE nào vì chúng được sử dụng cho
tất cả các loại ứng dụng, cho dù đó là thiết bị cho phép kết nối hay thiết bị chỉ quảng cáo sự hiện
diện của nó và bao gồm dữ liệu để người khác khám phá.
Để sử dụng các gói quảng cáo một cách hiệu quả, chúng ta cần hiểu cách chúng được sử dụng,
các khả năng khác nhau mà chúng cung cấp, định dạng của các gói và lượng dữ liệu mà chúng có
thể chứa.
Mục tiêu quan trọng nhất của gói quảng cáo là truyền tải thông tin đến các thiết bị BLE khác
thông qua: kiểu gói quảng cáo và kiểu dữ liệu quảng cáo có trong gói.
Cách tốt nhất để hiểu rõ hơn về khái niệm này là xem qua một vài ví dụ về các gói quảng cáo, vì
vậy hãy làm điều đó tiếp theo.
Thiết bị phát sóng
Nếu bạn đang tìm cách thiết kế một thiết bị với vai trò chính là quảng cáo sự hiện diện của nó và
có thể phát một số dữ liệu để các thiết bị BLE khác (thiết bị quan sát, trung tâm) khám phá, thì
bạn có thể triển khai vai trò Truyền phát.
Một ví dụ sẽ là thiết bị beacon.
Quay trở lại với các loại gói quảng cáo khác nhau, đây là những loại mà chúng ta có thể sử dụng
để thực hiện vai trò này:
Quảng cáo kế thừa (được hỗ trợ bởi tất cả các phiên bản Bluetooth):
o ADV_NONCONN_IND: Quảng cáo không định hướng không thể quét không thể quét
được.
Quảng cáo mở rộng (yêu cầu Bluetooth phiên bản 5.0 trở lên):
o ADV_EXT_IND: Quảng cáo mở rộng (được sử dụng cho tất cả các loại quảng cáo
ngoại trừ Kết nối có thể quét được Không hướng dẫn) - được gửi trên các kênh quảng
cáo Chính.
o AUX_ADV_IND: Quảng cáo mở rộng (được sử dụng cho tất cả các loại quảng cáo
ngoại trừ Kết nối có thể quét được Không hướng dẫn) - được gửi trên các kênh quảng cáo phụ.
Hãy xem lại định dạng gói của gói quảng cáo:
Nguồn: Tài liệu đặc điểm kỹ thuật cốt lõi của Bluetooth
Định dạng tải trọng PDU:
Nguồn: Tài liệu đặc điểm kỹ thuật cốt lõi của Bluetooth
Tùy thuộc vào nền tảng và ngăn xếp Bluetooth được sử dụng trên thiết bị của bạn, các API sẽ
khác nhau, nhưng nói chung, bạn sẽ cần xác định những điều sau:
Nội dung PDU
Tiêu đề
PDU Loại PDU:ADV_NONCONN_IND ( 0b100)
Chiều dài: kích thước của dữ liệu quảng cáo
PDU Payload
Flags AD: chúng là tùy chọn trong trường hợp gói quảng cáo không thể kết nối, vì vậy bạn có thể bỏ
qua trường này.
Dữ liệu cụ thể của nhà sản xuất: <Thêm dữ liệu tùy chỉnh của riêng bạn mà bạn muốn thiết bị
phát> (ví dụ: dữ liệu cảm biến)
Tên thiết bị: tùy thuộc vào lượng dữ liệu được sử dụng hết bởi các trường trước đó, bạn có thể
đưa chuỗi tên thiết bị vào tải trọng gói quảng cáo.
Một tùy chọn khác là đưa tên thiết bị vào gói Phản hồi quét.
Trong trường hợp Gói quảng cáo cũ, Tải trọng có kích thước tối đa là 31 byte (với ít nhất 2 byte
được sử dụng hết bởi các trường Độ dài và Loại trong trường hợp bao gồm một loại dữ liệu
quảng cáo, để lại tối đa 29 byte cho khối hàng).
Ngoài ra, hãy nhớ rằng trường Dữ liệu cụ thể của nhà sản xuất sẽ bao gồm 2 byte chứa Mã nhận
dạng công ty, theo sau là dữ liệu người dùng. Mã định danh công ty có thể được lấy miễn phí từ
Bluetooth SIG (miễn là công ty là công ty thành viên của Bluetooth SIG). Tìm hiểu thêm tại
đây: https: //www.bl Bluetooth.com/specification/assigned-numbers/company-identifiers/
Nếu bạn chọn triển khai Phản hồi quét, bạn có thể bao gồm gói quảng cáo thứ hai để gửi dữ liệu
quảng cáo bổ sung không phù hợp với gói quảng cáo chính.
Điều này phụ thuộc vào việc Người quan sát/Trung tâm gửi gói Yêu cầu quét đến thiết bị quảng
cáo, nhà quảng cáo sẽ phản hồi bằng gói Phản hồi quét. Định dạng của gói Phản hồi quét hoàn
toàn giống với gói Quảng cáo.
Hãy xem ví dụ về một thiết bị chỉ quảng cáo Tên địa phương đầy đủ của nó.
Tải trọng PDU sẽ trông giống như sau:
Giá trị Ghi chú
0x4e ‘N’
0x6f ‘o’
0x76 ‘v’
0x65 ‘e’
0x6c ‘l’
0x20 ‘‘
0x42 ‘B’
0x69 ‘tôi’
0x74 ‘t’
0x73 ‘S’
Dữ liệu tải trọng PDU quảng cáo
Để tìm hiểu thêm về các loại dữ liệu quảng cáo khác nhau, hãy tham khảo tài liệu Bổ sung cho
Đặc điểm kỹ thuật cốt lõi của Bluetooth: https: //www.bl Bluetooth.com/specilities/bl
Bluetooth-core-specification /
Các thiết bị có thể kết nối
Nếu bạn đang muốn thiết kế một thiết bị Master yếu cho phép kết nối từ một thiết bị BLE khác
và hoạt động Master yếu ở chế độ kết nối, thì một số điều cần lưu ý:
Bạn được yêu cầu bao gồm trường QUẢNG CÁO Cờ. Trong trường hợp này, bạn muốn bật
bit << BR/EDR Không được hỗ trợ >>.
Đối với Quảng cáo Kế thừa, hãy sử dụng ADV_INDloại quảng cáo.
Đối với Quảng cáo mở rộng (chẳng hạn như trong trường hợp quảng cáo PHY được mã
hóa yêu cầu sử dụng Quảng cáo mở rộng), hãy sử dụng ADV_EXT_INDloại quảng cáo trên các
kênh quảng cáo chính và AUX_ADV_INDtrên các kênh quảng cáo phụ.
Lưu ý: Một số SDK thường sẽ tóm tắt thông tin này cho nhà phát triển và chúng sẽ cung cấp một
thông số API duy nhất để định cấu hình các loại quảng cáo thích hợp cho cả kênh chính và kênh
phụ. Tuy nhiên, bạn có thể vẫn cần xác định PHY được sử dụng cho từng loại kênh.
Một điều quan trọng cần ghi nhớ là Quảng cáo mở rộng không được hỗ trợ bởi tất cả các máy
quét. Vì vậy, nếu bạn đang tìm cách triển khai một thiết bị có thể kết nối có thể được kết nối với
các thiết bị cũ cũng như các thiết bị hỗ trợ quét các quảng cáo mở rộng, thì bạn có thể sử dụng
cái gọi là Bộ quảng cáo (cho phép một thiết bị gửi hai hoặc nhiều loại quảng cáo) và xác định
một bộ cho các quảng cáo kế thừa và một bộ khác cho các quảng cáo mở rộng.
Bluetooth mesh
Bluetooth mesh được phát hành vào 7/2017 với mục tiêu Tăng phạm vi mạng Bluetooth và Hỗ
trợ thêm cho nhiều ứng dụng công nghiệp.
Các phiên bản trước của Bluetooth hỗ trợ 2 cấu trúc liên kết:
One-To-One: khi 2 thiết bị BLE được kết nối.
One-To-Many: khi thiết bị BLE hoạt động ở trạng thái Broadcast, chẳng hạn như Beacon.
Với Bluetooth mesh, các thiết bị hoạt động trong cấu trúc liên kết Many-To-Many (hay còn gọi
là Mesh), nơi các thiết bị có thể thiết lập kết nối với nhiều thiết bị khác trong mạng.
Node (nút)
Một node là một thiết bị đã tham gia một mạng Bluetooth mesh. Các thiết bị không phải là
một phần của mạng được gọi là thiết bị chưa được cấp phép (Unprovisioned Device). Khi một
thiết bị chưa được cấp phép được cấp phép, thiết bị đó sẽ tham gia mạng và trở thành một node.
Một node có thể chứa nhiều phần tử có thể được kiểm soát độc lập. Ví dụ, một thiết bị
chiếu sáng có thể chứa nhiều bóng đèn có thể bật/tắt độc lập.
Trong node có thể có nhiều phần tử khác nhau và mỗi phần tử mang một trạng thái. Ví
dụ: bật và tắt là trạng thái của bóng đèn. Sự thay đổi từ trạng thái này sang trạng thái khác được
gọi là chuyển trạng thái. Điều này có thể xảy ra tức thời hoặc có thể xảy ra theo thời gian.
Một số trạng thái có thể bị ràng buộc với nhau, có nghĩa là sự thay đổi ở một trạng thái sẽ
kích hoạt sự thay đổi ở trạng thái khác.
Thuộc tính được thêm vào trong một số tình huống cho giá trị trạng thái. Ví dụ, xác định
rằng một giá trị nhiệt độ là ngoài trời hay trong nhà.
Tất cả các giao tiếp trong mạng Bluetooth mesh đều theo hướng bản tin và các node gửi
bản tin để điều khiển hoặc chuyển tiếp bản tin cho nhau.
Một số bản tin yêu cầu người nhận gửi xác nhận. Một bản tin xác nhận phục vụ 2 mục đích:
Xác nhận đã nhận được bản tin
Trả về dữ liệu liên quan đến bản tin đã nhận
Trong trường hợp thiết bị gửi không nhận được phản hồi cho bản tin hoặc nhận được phản hồi
không mong muốn, nó có thể gửi lại bản tin. Nhiều bản tin xác nhận nhận được bởi một node
không ảnh hưởng đến quá trình hoạt động của node đó.
Bản tin trong mạng Bluetooth mesh phải được gửi đến và đi từ một địa chỉ. Có 4 loại địa
chỉ:
Unassigned Address (Địa chỉ chưa được gán): các phần tử chưa được định cấu hình,
hoặc không có địa chỉ được chỉ định hoặc có địa chỉ nhưng chưa được chỉ định. Những
phần tử này có thể không được sử dụng trong bản tin.
Unicast Address (Địa chỉ độc nhất): trong quá trình cấp phép, Provisioner phân bổ một
địa chỉ unicast cho mỗi phần tử trong một nút trong suốt thời gian tồn tại của nút đó trên
mạng. Địa chỉ unicast có thể xuất hiện trong trường địa chỉ nguồn và/hoặc trường địa chỉ
đích của bản tin. Bản tin được gửi đến địa chỉ unicast chỉ được xử lý bởi một phần tử.
Virtual Address (Địa chỉ ảo): một địa chỉ có thể được gán cho một hoặc nhiều phần tử,
trải dài một hoặc nhiều node. Điều này hoạt động như một nhãn và có dạng UUID 128 bit
mà bất kỳ phần tử nào cũng có thể được liên kết. Địa chỉ ảo có thể được định cấu hình
trước tại thời điểm sản xuất.
Group Address (Địa chỉ nhóm): một địa chỉ được sử dụng để xác định một nhóm các
node. Một địa chỉ nhóm thường phản ánh một nhóm vật lý của các node như tất cả các
node trong một căn phòng đặc biệt. Địa chỉ nhóm có thể:
o Là Địa chỉ nhóm cố định SIG, được xác định bởi Bluetooth SIG. Chúng bao gồm địa
chỉ All-proxies, All-friends, All-relays, and All-nodes.
o Là Địa chỉ nhóm động, được xác định bởi người dùng thông qua một ứng dụng cấu
hình.
Lợi ích của việc sử dụng địa chỉ nhóm hoặc địa chỉ ảo là việc thêm hoặc xóa các node không yêu
cầu cấu hình lại các node.
Các bản tin được trao đổi trong mạng Bluetooth mesh thông qua cơ
chế publish/subscribe.
Publishing là hành động gửi một bản tin. Subscribing được sử dụng để đăng ký nhận bản
tin. Thông thường, các bản tin được gửi đến các địa chỉ nhóm hoặc địa chỉ ảo.
VD: Mạng Mesh trong một ngôi nhà bao gồm 6 công tắc đèn và 9 bóng đèn. Mạng sử dụng
phương pháp publish/subscribe để cho phép các node gửi bản tin cho nhau.
Hình 5: Publish/Subscribe trong hệ thống điều khiển ánh sáng Bluetooth mesh
Các node có thể đăng ký một lúc nhiều địa chỉ. Ví dụ node light 3 trong hình trên, được đăng ký
cho cả địa chỉ nhóm nhà bếp và phòng ăn. Ngoài ra, nhiều node có thể xuất bản đến cùng một
địa chỉ, chẳng hạn như node switch 5 và 6 điều khiển cùng một nhóm đèn đặt trong vườn.
Nhiều mạng Mesh sử dụng cơ chế định tuyến để chuyển tiếp các bản tin trên toàn mạng. Một
thái cực khác là các bản tin được chuyển tiếp mà không xem xét các tuyến đường tối ưu.
Bluetooth mesh là sự dung hòa của cả 2 kỹ thuật này. Kỹ thuật này được gọi là Managed
Flooding.
Một mô hình xác định một số hoặc tất cả các chức năng của một phần tử nhất định. Có 3
loại mô hình:
Mô hình máy chủ: là tập hợp các trạng thái, các chuyển đổi trạng thái, các ràng buộc
trạng thái và các bản tin mà một phần tử chứa mô hình có thể gửi hoặc nhận.
Mô hình máy khách: không xác định bất kỳ trạng thái nào; thay vào đó, nó chỉ định nghĩa
các bản tin như GET, SET và STATUS được gửi đến một mô hình máy chủ.
Mô hình điều khiển: chứa cả mô hình máy chủ và máy khách cho phép giao tiếp với các
mô hình máy chủ và máy khách khác.
Mô hình có thể được mở rộng để bổ sung chức năng thay vì sửa đổi mô hình ban đầu. Một mô
hình không được mở rộng được gọi là mô hình gốc.
Scene (cảnh)
Cảnh là một tập hợp các trạng thái được lưu trữ và được xác định bằng một số 16 bit duy
nhất trong mạng Mesh.
Cảnh cho phép kích hoạt một hành động để thiết lập nhiều trạng thái của các node khác
nhau. Chúng có thể được kích hoạt theo yêu cầu hoặc tại một thời điểm cụ thể. Ví dụ: một cảnh
có thể được định cấu hình để đặt nhiệt độ của phòng ở 25 độ, phòng khách chiếu sáng ở một
mức độ sáng nhất định và đóng rèm cửa sổ.
Tất cả các loại node đều có thể gửi và nhận các bản tin mesh. Tuy nhiên, các tính năng tùy
chọn cung cấp cho các node cụ thể những khả năng đặc biệt.
Các loại node:
Relay nodes
Proxy nodes
Friend nodes
Low power nodes
Một node có thể hỗ trợ một số hoặc tất cả các tính năng tùy chọn này, có thể được bật hoặc tắt
bất kỳ lúc nào. Ví dụ, một node duy nhất có thể có các tính năng của relay node, proxy node,
và friend node cùng một lúc.
Relay Node
Một relay node là một node hỗ trợ tính năng chuyển tiếp. Điều này có nghĩa là nó có thể
truyền lại các bản tin được phát bởi các node khác. Điều này cho phép mở rộng phạm vi tiếp cận
của các bản tin.
Proxy node
Proxy node cho phép thiết bị BLE không hỗ trợ mesh giao tiếp với mạng mesh. Một proxy
node hoạt động như một thiết bị trung gian và sử dụng GATT để cho phép các node khác
bên ngoài mạng mesh giao tiếp và tương tác với mạng.
Giao thức proxy được thiết kế để sử dụng với một thiết bị được phép kết nối (sử dụng GATT).
Giao thức này được xây dựng dựa trên GATT và cho phép một thiết bị đọc và ghi các PDU của
giao thức proxy từ các đặc điểm của GATT được tiếp xúc bởi node proxy. Node proxy thực hiện
việc dịch giữa các PDU giao thức proxy và các PDU Mesh.
Hình 8: Proxy node
Một friend node và một low power node có liên quan chặt chẽ với nhau: Để một low power
node tham gia vào mạng Bluetooth mesh, nó cần có mối quan hệ hữu nghị với một node khác,
được gọi là friend node.
Các low power node thường có nguồn cung cấp hạn chế như pin, vì vậy chúng cần tiết kiệm năng
lượng bằng cách tắt bộ phát sóng thường xuyên nhất có thể. Các low power node thường gửi
nhiều hơn nhận.
Ví dụ: Friend node P có mối quan hệ hữu nghị với các LPN I, J và K. Friend node O có mối quan hệ
hữu nghị với các LPN L và M. Vì vậy, các bản tin gửi đến các nút I, J hoặc K sẽ được lưu trữ và
chuyển tiếp bởi friend node P. Bản tin gửi đến các nút L hoặc M sẽ được lưu trữ và chuyển tiếp
bởi friend node O. Việc chuyển tiếp bởi friend node chỉ xảy ra khi LPN thăm dò ý kiến của Friend
node về các bản tin đang chờ gửi.
PollTimeout là thời gian tối đa có thể trôi qua giữa hai yêu cầu liên tiếp được gửi bởi LPN
đến friend node của nó. Nếu friend node không nhận được yêu cầu nào từ một LPN trước
khi bộ đếm thời gian PollTimeout hết hạn, thì tình bạn sẽ bị chấm dứt.
Hình 11: Trình tự thời gian PollTimeout
Bảo vệ
Tình bạn không có gì khác biệt và nó sử dụng hai thông tin xác thực bảo mật đặc biệt:
Managed flooding security material: Có nguồn gốc từ NetKey, nó cũng có thể được sử
dụng bởi các nút khác trong cùng một mạng. Các bản tin được mã hóa bằng tài liệu bảo
mật ngập lụt được quản lý có thể được giải mã bởi bất kỳ nút nào trong cùng một mạng.
Friend security material: Được lấy từ NetKey và một số số bộ đếm bổ sung được tạo bởi
LPN và friend node. Thư được mã hóa bằng tài liệu bảo mật của bạn bè chỉ có thể được
giải mã bởi Friend và các LPN sở hữu nó.
Các bản tin tình bạn tương ứng được mã hóa bằng Friend security material là:
Thăm dò ý kiến của bạn bè
Cập nhật bạn bè
Danh sách đăng ký bạn bè Thêm/Xóa/Xác nhận
Các bản tin được lưu trữ mà nút Bạn bè gửi đến LPN
Các bản tin tình bạn tương ứng được mã hóa bằng Managed flooding security material là:
Bạn bè rõ ràng
Xác nhận Xóa bạn bè
Các bản tin được gửi từ LPN đến Friend Node được mã hóa bằng Friend security material hoặc
Managed flooding security material tùy thuộc vào cài đặt ứng dụng.
Bluetooth mesh được xây dựng dựa trên BLE. Các thiết bị trong mạng Bluetooth mesh không
kết nối với nhau như các thiết bị BLE truyền thống. Thay vào đó, chúng sử dụng trạng thái
advertising và scanning để chuyển tiếp bản tin cho nhau.
Hình 14: Kiến trúc Bluetooth mesh
Mô tả cho từng lớp trong kiến trúc của Bluetooth mesh (bắt đầu với lớp dưới cùng):
1. Bluetooth Low Energy layer
Bluetooth mesh được xây dựng trên đầu BLE, vì vậy nó yêu cầu một ngăn xếp BLE đầy đủ để
chạy trên thiết bị. Nó sử dụng các trạng thái advertising và scanning để gửi và nhận bản tin giữa
các thiết bị trong mạng Mesh. Nó cũng hỗ trợ trạng thái được kết nối và GATT cho các thiết bị
đặc biệt được gọi là các proxy node.
2. Bearer layer
Bearer layer định nghĩa cách các gói Mesh khác nhau (Protocol Data Units hoặc PDUs) được xử
lý. Có 2 loại thiết bị Bluetooth mesh bearer:
Advertising bearer: sử dụng trạng thái advertising và scanning của các thiết bị BLE.
GATT bearer: sử dụng trạng thái kết nối của các thiết bị BLE. Nó cho phép các thiết
bị không hỗ trợ mesh tương tác với mạng mesh thông qua các hoạt động GATT. Điều này
được thực hiện thông qua một node đặc biệt được gọi là node proxy.
3. Lower transport layer
Lớp này xử lý 2 tác vụ chính:
o Phân đoạn các gói từ lớp trên (upper transport layer)
o Lắp ráp lại các gói từ lớp dưới (bearer layer)
4. Upper transport layer
Lớp này chịu trách nhiệm cho các chức năng sau:
o Mã hóa
o Giải mã
o Xác thực
o Bản tin kiểm soát vận chuyển (heartbeat, friendship, v.v.)
5. Access layer
Lớp này xác định cách ứng dụng sử dụng lớp truyền tải phía trên. Nó xử lý các tác vụ sau:
o Định dạng dữ liệu ứng dụng
o Mã hóa và giải mã
o Xác minh dữ liệu
6. Foundation Models layer
Lớp này liên quan đến cấu hình mạng và các mô hình quản lý mạng.
7. Models layer
Lớp này giải quyết việc triển khai các mô hình bao gồm các hành vi, bản tin, trạng thái và ràng
buộc trạng thái.
Thông số kỹ thuật Bluetooth mesh xác định giao thức cấp phép, xác định các PDU được sử dụng
để giao tiếp giữa provisioner và thiết bị mới - unprovisioned trong quá trình cung cấp.
Hình 15: Ngăn xếp giao thức cấp phép cùng với ngăn xếp giao thức Bluetooth mesh
Provisioning Bearer
Một lớp provisioning bearer phép vận chuyển provisioning PDU giữa một Provisioner và một
unprovisioned. Hai provisioning bearer được xác định:
PB-ADV: Provisioning bearer được sử dụng để cung cấp thiết bị qua các kênh quảng cáo
Bluetooth. Bộ mang PB-ADV được sử dụng để truyền các PDU cấp phép chung. Một thiết
bị hỗ trợ PB-ADV phải thực hiện quét thụ động với chu kỳ nhiệm vụ gần 100% nhất có thể
để tránh bỏ lỡ bất kỳ PDU cung cấp chung nào sắp Slavei.
PB-GATT: Provisioning bearer được sử dụng để cung cấp thiết bị sử dụng các PDU proxy
lưới Bluetooth từ giao thức proxy. Giao thức proxy cho phép các nút gửi và nhận các PDU
mạng, đèn hiệu lưới, thông báo cấu hình proxy và cung cấp các PDU qua bộ mang
Bluetooth Low Energy (LE) theo định hướng kết nối. PB-GATT đóng gói các PDU cung cấp
trong các hoạt động của GATT, liên quan đến dịch vụ cung cấp GATT và nó được cung cấp
để sử dụng khi provisioner không hỗ trợ PB-ADV.
Provisioning Protocol
Xác định các yêu cầu đối với việc cung cấp PDU, hành vi và bảo mật. Hiểu được giao thức cung
cấp sẽ giúp bạn chọn một cách tiếp cận để xác thực dựa trên các yêu cầu của ứng dụng.
Bước 1: Beaconing
Thiết bị chưa được cấp phép gửi các mesh beacon advertisement trong các advertisement
packet.
Bảo mật mạng, bảo mật ứng dụng và bảo mật thiết bị
Tách các mối quan tâm
được giải quyết một cách độc lập.
Các nút có thể được xóa khỏi mạng một cách an toàn,
Bảo vệ tấn công thùng rác
theo cách ngăn chặn các cuộc tấn công vào thùng rác.
Do sự tách biệt về bảo mật giữa các cấp độ mạng, ứng dụng và thiết bị, có 3 loại khóa bảo mật:
Khóa mạng (NetKey)
Việc sở hữu khóa này làm cho thiết bị trở thành một phần của mạng (còn được gọi là
node). Có 2 khóa bắt nguồn từ NetKey: network encryption key (khóa mã hóa
mạng) và privacy key (khóa riêng tư). Sở hữu NetKey cho phép một node giải mã và xác
thực lên đến lớp mạng, cho phép chuyển tiếp các thông báo, nhưng không giải mã dữ liệu
ứng dụng.
Khóa ứng dụng (AppKey)
Đây là khóa được chia sẻ giữa một tập hợp con các node trong mạng Mesh, thường là
những node tham gia vào một ứng dụng chung. Ví dụ, một hệ thống chiếu sáng AppKey sẽ
được chia sẻ giữa công tắc đèn và bóng đèn, nhưng không được chia sẻ với bộ điều nhiệt
hoặc cảm biến chuyển động. AppKey được sử dụng để giải mã và xác thực thông báo ở
cấp ứng dụng, nhưng nó chỉ hợp lệ trong một mạng Mesh, không phải trên nhiều mạng.
Khóa thiết bị (DevKey)
Đây là khóa dành riêng cho thiết bị được sử dụng trong quá trình cấp phép để đảm
bảo thông tin liên lạc giữa unprovisioned và provisioner.
Loại bỏ nút, Làm mới khóa và Các cuộc tấn công thùng rác
Nếu một nút bị lỗi và cần phải được xử lý hoặc nếu Master sở hữu quyết định bán nút cho một
Master sở hữu khác, thì điều quan trọng là khóa cũ không thể được sử dụng để thực hiện một
cuộc tấn công vào mạng mà nút đó đã được lấy. Do đó, quy trình loại bỏ một nút khỏi mạng
được xác định. Các Provisioner thêm các nút vào một Reject list và sau đó một thủ tục
Key Refresh được bắt đầu.
Thủ tục làm mới khóa đưa ra tất cả các nút trong mạng, ngoại trừ những nút thuộc Reject list, nó
làm mới khóa mạng, khóa ứng dụng và tất cả dữ liệu dẫn xuất có liên quan. Nói cách khác, toàn
bộ bộ khóa bảo mật tạo cơ sở cho bảo mật mạng và ứng dụng được thay thế.
Do đó, một nút đã bị xóa khỏi mạng và chứa một NetKey cũ và bộ AppKey cũ, không còn là
thành viên của mạng và không gây ra mối đe dọa nào.
Sự riêng tư
Khóa bảo mật, bắt nguồn từ NetKey, được sử dụng để làm xáo trộn các giá trị tiêu đề PDU của
mạng, chẳng hạn như địa chỉ nguồn, nó đảm bảo rằng việc nghe trộm thông thường, thụ động
không thể được sử dụng để theo dõi các nút và những người sử dụng chúng. Nó cũng làm cho
các cuộc tấn công dựa trên phân tích lưu lượng trở nên khó khăn.
Trong an ninh mạng, tấn công phát lại là một kỹ thuật mà kẻ nghe trộm chặn và chụp một hoặc
nhiều bản tin và chỉ cần truyền lại chúng sau đó, với mục đích lừa người nhận thực hiện hành
động nào đó mà thiết bị tấn công không được phép thực hiện.
Bluetooth mesh chống lại các cuộc tấn công phát lại bằng cách sử dụng hai trường PDU mạng
được gọi là Sequence Number (SEQ) và IV Index. Các element tăng giá trị SEQ mỗi khi chúng
xuất bản một bản tin. Nút nhận được bản tin từ một element có chứa giá trị SEQ nhỏ hơn hoặc
bằng giá trị của bản tin hợp lệ cuối cùng sẽ loại bỏ nó vì nó có khả năng liên quan đến một cuộc
tấn công phát lại. Tương tự, IV Index là một trường riêng biệt được xem xét cùng với SEQ. Giá trị
IV Index trong thông báo từ một phần tử nhất định phải luôn bằng hoặc lớn hơn thông báo hợp
lệ cuối cùng từ phần tử đó.
Hộp công cụ mật mã
Hầu hết các tính năng bảo mật của Bluetooth mesh dựa trên các thuật toán và quy trình mật mã
tiêu chuẩn công nghiệp.
Có 2 chức năng bảo mật chính được sử dụng trong ngăn xếp Bluetooth mesh: AES-CMAC và AES-
CCM. Đây là các chức năng mã hóa và xác thực cơ bản, và tất cả các chức năng khác được sử
dụng để tạo khóa đều dựa trên chúng.
AES-CMAC
Mã xác thực bản tin dựa trên mật mã (CMAC) là một thuật toán có thể tạo ra giá trị xác thực bản
tin 128 bit có độ dài cố định cho bất kỳ đầu vào có độ dài thay đổi nào. Công thức tạo mã xác
thực bản tin MAC bằng thuật toán AES-CMAC được viết như sau:
MAC = AES-CMACk(m)
Các đầu vào cho AES-CMAC là:
k - khóa 128 bit
m - dữ liệu có độ dài thay đổi được xác thực
AES-CMAC có khả năng phát hiện lỗi tuyệt vời. Các kỹ thuật khác, liên quan đến việc xác minh
tổng kiểm hoặc sử dụng mã phát hiện lỗi, chỉ có thể phát hiện các sửa đổi ngẫu nhiên của dữ
liệu. AES-CMAC được thiết kế để phát hiện các sửa đổi có Master đích, trái phép đối với dữ liệu,
cũng như các sửa đổi ngẫu nhiên.
AES-CCM
AES-CCM là một thuật toán mã hóa chung, được xác thực, được thiết kế để sử dụng với các mật
mã khối mật mã. Trong thông số kỹ thuật Bluetooth mesh , AES-CCM được sử dụng làm chức
năng xác thực và mã hóa cơ bản trong mọi trường hợp. Công thức sử dụng nó như sau:
ciphertext, MIC = AES-CCMk(n, m, a)
Có 4 đầu vào cho AES-CCM:
k - khóa 128 bit
n - một nonce 104 bit
m - dữ liệu có độ dài thay đổi được mã hóa và xác thực
a - dữ liệu có độ dài thay đổi được xác thực nhưng không được mã hóa, còn được gọi
là Dữ liệu bổ sung . Tham số đầu vào này có thể có độ dài bằng không byte
Có hai đầu ra từ AES-CCM:
ciphertext - dữ liệu có độ dài thay đổi sau khi nó đã được mã hóa
MIC - giá trị Kiểm tra tính toàn vẹn của bản tin của m và a
Hình 1 cho thấy một trọng tải văn bản thuần túy, có thể từ lớp mạng Bluetooth mesh hoặc lớp
truyền tải phía trên, đang được AES-CCM xử lý bằng khóa mã hóa đầu vào, trọng tải nonce và
văn bản rõ ràng. Một trọng tải được mã hóa và MIC là đầu ra.
Hình 19: AES-CCM được sử dụng để mã hóa và xác thực tải trọng gói.
Bộ tạo SALT
Bảo mật Bluetooth mesh xác định một chức năng tạo SALT được gọi là s1, sử dụng chức năng
AES-CMAC. Như đã giải thích ở trên, AES-CMAC có hai tham số đầu vào: k và m. Tuy nhiên, khi
được sử dụng để tạo SALT, chỉ có tham số đầu vào m là thay đổi. k luôn được đặt thành giá trị
128-bit: 0x0000 0000 0000 0000 0000 0000 0000 0000 0000, được gọi là ZERO trong đặc tả
Bluetooth mesh.
Bảng 1: Danh sách các công cụ cần thiết cho SDK nRF5 cho Mesh
Liên kết tải xuống
Công cụ dòng lệnh nRF5x
Gói phần mềm SEGGER J-Link
Python 2.7
Python 3
Ngoài các công cụ bắt buộc này, có 2 tùy chọn cho môi trường xây dựng: sử dụng CMake hoặc sử
dụng SES (Segger Embedded Studio). Chúng tôi sẽ tập trung vào giải pháp SES vì nó dễ sử dụng
hơn và dễ sử dụng hơn.
Từ tài liệu của Nordic:
Python không bắt buộc phải xây dựng ngăn xếp Mesh và các ví dụ, nhưng nó được yêu cầu khi
làm việc với DFU, PyACI tương tác, tạo các dự án SEGGER Embedded Studio và khi xây dựng tài
liệu. SDK nRF5 cho Mesh sử dụng Python 3, tuy nhiên, công cụ nrfutil được sử dụng để truyền
DFU qua nối tiếp yêu cầu Python 2.7.
Để cài đặt hoạt động hoàn toàn, hãy làm theo hướng dẫn được trình bày trên trang sau:
Xây dựng ngăn xếp Mesh và các ví dụ
Tương thích phần cứng
Các chipset và bộ công cụ phát triển sau được hỗ trợ bởi SDK nRF5 cho Mesh:
Bảng 2: Danh sách phần cứng được hỗ trợ cho SDK nRF5 cho Mesh
Trong các ví dụ triển khai của chúng tôi, chúng tôi sẽ sử dụng kết hợp các bộ phát triển
nRF52840 và nRF52832.
Ví dụ về Bluetooth mesh nRF52
Có khá nhiều ví dụ được cung cấp với SDK nRF5 cho Mesh. Mỗi loại yêu cầu một số bộ công cụ
phát triển (hoặc thiết bị) khác nhau và thể hiện các khái niệm và tính năng khác nhau trong
Bluetooth mesh. Một số ví dụ này bao gồm:
Công tắc đèn
Thử nghiệm làm mờ
Ứng dụng khách cấp phép từ xa
Máy Master cấp phép từ xa
Beaconing
và hơn thế nữa …
Tóm lược
Trong bài đăng này, chúng tôi đã đề cập đến một số kiến thức cơ bản về SDK nRF5 cho
Mesh. Trong bài đăng tiếp theo của loạt bài này, chúng ta sẽ xem xét các ví dụ khác nhau chuyên
sâu hơn, chọn một trong số chúng và bắt đầu triển khai nó.
Bluetooth mesh (Phần 5)
Trong bài đăng cuối cùng của loạt bài này về Bluetooth mesh (tìm thấy tại đây), chúng tôi đã
cung cấp tổng quan cấp cao về SDK nRF5 cho Bluetooth mesh. Chúng tôi cũng liệt kê các ví dụ
khác nhau được cung cấp như một phần của SDK Bắc Âu. Ví dụ đầy đủ nhất trong số những ví dụ
này là ví dụ về ánh sáng và đây là ví dụ mà chúng tôi sẽ tiếp tục demo và giải thích. Trong bài
đăng của tuần này, chúng ta sẽ xem xét quá trình xây dựng và chạy ví dụ này và tìm hiểu các
phần khác nhau bên trong nó. Trong các bài viết sắp Slavei, chúng ta sẽ đi vào chi tiết mã nguồn
của từng thiết bị.
Đây là sơ đồ hiển thị mạng và các thiết bị chúng tôi sẽ sử dụng trong đó:
vì (;;)
{
(vô hiệu) sd_app_evt_wait ();
}
}
#if BUTTON_BOARD
ERROR_CHECK (hal_buttons_init (button_event_handler));
#endif
uint32_t err_code = nrf_sdh_enable_request ();
APP_ERROR_CHECK (err_code);
#if đã định nghĩa S140 // việc cần làm hãy xóa cái đó sau khi sửa mức độ ưu tiên S140
softdevice_irq_priasty_checker ();
#endif
uint32_t ram_start = 0;
/* Đặt cấu hình mặc định (như được định nghĩa thông qua sdk_config.h). * /
err_code = nrf_sdh_ble_default_cfg_set (MESH_SOFTDEVICE_CONN_CFG_TAG, & ram_start);
APP_ERROR_CHECK (err_code);
gap_params_init ();
conn_params_init ();
mesh_init ();
}
if (! m_device_provisoned)
{
static const uint8_t static_auth_data [NRF_MESH_KEY_SIZE] = STATIC_AUTH_DATA;
mesh_provisionee_start_params_t prov_start_params =
{
.p_static_data = static_auth_data,
.prov_complete_cb = cung cấp_complete_cb,
.p_device_uri = NULL
};
ERROR_CHECK (mesh_provisionee_prov_start (& prov_start_params));
}
o Được gọi khi quá trình cấp phép hoàn tất thành công.
o Khôi phục các thông số connection.
o Nhấp nháy đèn LED để cho biết quá trình cấp phép đã hoàn tất.
app_generic_onoff_client_status_cb ():
/ * Giao diện mô hình máy khách OnOff chung: Xử lý thông báo trạng thái đã nhận trong
cuộc gọi lại này * /
static void app_generic_onoff_client_status_cb (const generic_onoff_client_t * p_self,
const access_message_rx_meta_t * p_meta,
const generic_onoff_status_params_t * p_in)
{
nếu (p_in-> còn lại_time_ms> 0)
{
__LOG (LOG_SRC_APP, LOG_LEVEL_INFO, “Máy Master bật tắt: 0x% 04x, Bật tắt hiện
tại:% d, Bật tắt mục tiêu:% d, Thời gian còn lại:% d ms \ n”,
p_meta-> src.value, p_in-> present_on_off, p_in-> target_on_off, p_in-> còn
lại_time_ms);
}
khác
{
__LOG (LOG_SRC_APP, LOG_LEVEL_INFO, “Máy Master OnOff: 0x% 04x, Hiện tại OnOff:
% d \ n”,
p_meta-> src.value, p_in-> present_on_off);
}
o Điều này báo cáo một thông báo trạng thái được gửi đến Khách hàng.
o Trạng thái chứa người gửi (Máy Master), giá trị trạng thái hiện tại, giá trị
trạng thái đích, cũng như bất kỳ thời gian còn lại nào nếu thao tác sẽ được thực hiện sau này.
config_server_evt_cb ():
o Báo cáo bất kỳ sự kiện nào được Máy Master dự định xử lý. Điều này bao gồm
thông báo Node Reset được gửi khi thiết bị bị xóa khỏi mạng (chưa được cấp phép).
o Trong trường hợp nhận được thông báo Đặt lại node, máy Master đặt lại ngăn xếp
Mesh thông qua hàm node_reset () cục bộ :
button_event_handler ():
o Chức năng này xử lý 4 node được sử dụng bởi 2 Khách hàng theo cách sau:
Các node # 1 và # 2 lần lượt gửi thông báo Bật và Tắt với tư cách là Ứng
dụng khách số 1.
Các node # 3 và # 4 lần lượt gửi thông báo Bật và Tắt với tư cách là Ứng
dụng khách số 2.
Các node số 1 và số 2 chứng tỏ việc gửi một bản tin “đáng tin cậy” yêu cầu
người nhận xác nhận đã nhận được bản tin.
Các node # 3 và # 4 thể hiện việc gửi một bản tin chưa được xác nhận mà
không yêu cầu phản hồi từ người nhận.
o Nó cũng đặt các đèn LED trên bảng phát triển cục bộ ở trạng thái được chỉ định (để
đưa ra phản hồi cho người dùng rằng một thông báo hoạt động đã được gửi đến Máy
Master). Ví dụ, nhấn node # 1 sẽ gửi On bản tin Slavei máy Master nhưng cũng sẽ biến On LED
# 1 để chỉ ra cho người dùng rằng các hoạt động được thực hiện.
rtt_input_handler ():
o Cho phép người dùng tương tác và kích hoạt các lần nhấn node bằng cách gửi lệnh
qua thiết bị đầu cuối nối tiếp thay vì nhấn node vật lý.
models_init_cb ():
o Chức năng này xử lý việc khởi tạo các mô hình thích hợp cho ứng dụng. Trong
trường hợp này, chúng tôi đang khởi tạo 2 Máy khách OnOff Chung [Dòng 12].
o Nếu bạn cần triển khai các mô hình bổ sung, đây sẽ là nơi để làm điều đó.
Node máy Master proxy
Các Proxy Server Node mã nguồn là gần giống như Proxy Client Node mã với một vài ngoại
lệ đáng chú ý:
models_init_cb ():
mà gọi app_model_init ():
o Ở đây, mô hình được khởi tạo là mô hình Máy Master OnOff Chung thay vì mô
hình Máy khách OnOff Chung.
button_event_handler ():
o Node # 1 bật LED # 1 trên bảng phát triển cục bộ và đồng thời kích hoạt thông báo
trạng thái được gửi đến Node máy khách để thông báo về sự thay đổi trạng thái.
o Node số 3 được sử dụng để đặt lại node và “hủy cấp phép” nó khỏi mạng.
Hàm start () không bao gồm nhấp nháy của đèn LED như trong mã ví dụ Proxy Client
Node.
Việc thực hiện 2 chức năng:
o app_onoff_server_set_cb () để thiết lập trạng thái LED:
Tóm lược
Trong bài đăng này, chúng tôi đã đề cập đến mã nguồn cho 2 trong số các node trong mạng
Mesh:
Node máy khách proxy
Node máy Master proxy
Chúng ta đã nói về cách mô hình Generic OnOff được khởi tạo và định cấu hình cho từng node
máy khách và máy Master.
Trong ví dụ này, chúng tôi đã thử nghiệm trong bài trước, chúng tôi sử dụng điện thoại di động
có ứng dụng nRF Mesh làm thiết bị hỗ trợ. Tuy nhiên, SDK nRF5 cho Mesh cũng cung cấp một ví
dụ cấp chứng chỉ chạy trên bộ phát triển nRF52. Trong bài đăng của tuần Slavei, chúng tôi sẽ
kiểm tra provisioner dựa trên nRF và xem mã nguồn cho node này.
Hãy chắc chắn nhập email của bạn vào biểu mẫu bên dưới để được thông báo khi bài hướng dẫn
tiếp theo được xuất bản!
Bluetooth mesh (Phần 7)
Trong hướng dẫn hôm nay:
Trước tiên, chúng tôi sẽ lùi lại một bước và nói một chút về khả năng tương tác và khả
năng tương thích trong Bluetooth mesh.
Sau đó, chúng ta sẽ xem qua bản demo về cách thiết lập mạng Mesh bao gồm kết hợp các
thiết bị bán sẵn.
Cuối cùng, chúng ta sẽ xem qua mã nguồn từng bước và những thay đổi cần thiết để triển
khai chức năng cho bản trình diễn này.
Khả năng tương thích và khả năng tương tác
Sức mạnh của việc có tiêu chuẩn như Bluetooth mesh mà thiết bị được chứng nhận phải tuân
thủ là:
Khả năng thêm các thiết bị từ các nhà sản xuất khác nhau vào bất kỳ mạng Mesh nào.
Khả năng trong mạng để các thiết bị tương tác với những thiết bị khác triển khai một chức
năng chung một cách gần như liền mạch.
Điều này mang lại cho cả nhà sản xuất và người tiêu dùng sự linh hoạt tuyệt vời trong ba khía
cạnh chính:
Chọn loại thiết bị sẽ được sử dụng trong mạng Mesh, bao gồm các ứng dụng phần mềm
có thể được triển khai trên các thiết bị như máy tính bảng và điện thoại di động tương tác với
mạng (ví dụ: provisioner dịch vụ).
Tự do cho các nhà sản xuất cung cấp nhiều loại provisioner các chức năng khác nhau.
Tính linh hoạt cho người dùng cuối trong việc định cấu hình mạng theo sở thích của họ.
Khái niệm về các mô hình, mà chúng ta đã thảo luận trong Phần 2 của loạt bài hướng dẫn này
(tìm thấy ở đây), ngoài các địa chỉ nhóm giúp cung cấp tính linh hoạt này.
Thiết bị Bluetooth mesh tiêu dùng
Tôi đã tìm kiếm trên thị trường các thiết bị, đặc biệt là bóng đèn, được chứng nhận Bluetooth
mesh. Tôi đã xem qua danh sách công khai sau đây về các thiết bị được chứng nhận Mesh,
nhưng 99% sản phẩm được liệt kê là mô-đun hoặc chipset.
Đó là một cuộc đấu tranh để tìm kiếm một sản phẩm tiêu dùng thực sự mà bất kỳ ai cũng có thể
mua và sử dụng ngay lập tức. Điều này là dễ hiểu (tôi đoán) vì tiêu chuẩn này rất mới.
Tôi đã xem danh sách cho LEDVANCE, hóa ra là công ty đứng sau thương hiệu Sylvania. Tôi đã
liên hệ với họ trên Twitter và họ đã có thể chỉ cho tôi đi đúng hướng. Cuối cùng, tôi đã hạ cánh
trên bóng đèn Sylvania SMART +. Tôi đã mua một vài trong số chúng để bắt đầu xây dựng mạng
Bluetooth mesh trong nhà của mình, nhưng cũng để xem việc tạo mạng từ nhiều thiết bị của các
công ty khác nhau sẽ dễ/khó như thế nào.
Mạng Mesh chiếu sáng Bluetooth mesh trong nhà
Khả năng tương thích và tương tác giữa các thiết bị được chứng nhận là chìa khóa thành công
của bất kỳ tiêu chuẩn connection nào. Trải nghiệm của tôi cho đến nay với khía cạnh này của
Bluetooth mesh là rất tốt.
Sau đây là sơ đồ của một mạng Bluetooth mesh đơn giản mà tôi đã bắt đầu xây dựng. Kể từ đó,
tôi đã mở rộng số lượng thiết bị trong mạng và sẽ thử nghiệm nó rộng rãi hơn, đặc biệt là về độ
tin cậy và phạm vi.
Bước 2: Thay đổi hành vi của các node và đèn LED trên bộ công cụ phát triển
Tất cả những thay đổi chúng ta cần thực hiện đều nằm trong hàm static void
button_event_handler (uint32_t button_number).
Thay đổi trạng thái được thiết lập bởi các lần nhấn node thành bật cho các node 1,2 và
3. Tắt cho node 4.
Sửa đổi để node 2 gửi bản tin dưới dạng ứng dụng khách số 2 (được lập chỉ mục ở vị trí
1). Ngoài ra, hãy thực hiện thay đổi để bật LED 2 (được lập chỉ mục ở 1).
trường hợp 1:
/* Thể hiện giao dịch được thừa nhận, sử dụng phiên bản mô hình khách hàng đầu
tiên * /
/* Trong ví dụ này, người dùng sẽ không bị chặn nếu mô hình đang bận * /
(void) access_model_reliable_cancel (m_clients [1].model_handle);
status = generic_onoff_client_set (& m_clients [1], & set_params, &
transfer_params);
hal_led_pin_set (BSP_LED_1, set_params.on_off);
nghỉ;
Sửa đổi để có node 3 và 4 để gửi bản tin dưới dạng ứng dụng khách số 3 (được lập chỉ
mục ở vị trí 2). Ngoài ra, hãy thực hiện thay đổi để đặt trạng thái của cả đèn LED 1 & 2 (được lập
chỉ mục lần lượt là 0 & 1).
trường hợp 2:
trường hợp 3:
/* Thể hiện giao dịch chưa được thừa nhận, sử dụng phiên bản mô hình khách hàng
thứ 2 * /
/* Thể hiện giao dịch được thừa nhận, sử dụng phiên bản mô hình khách hàng đầu
tiên * /
/* Trong ví dụ này, người dùng sẽ không bị chặn nếu mô hình đang bận * /
(void) access_model_reliable_cancel (m_clients [2].model_handle);
status = generic_onoff_client_set (& m_clients [2], & set_params, &
transfer_params);
hal_led_pin_set (BSP_LED_0, set_params.on_off);
hal_led_pin_set (BSP_LED_1, set_params.on_off);
nghỉ;