OpenMV MicroPython OpenMV MicroPython OpenMV MicroPython
  • Trang chủ
  • Hướng dẫn
  • Thư viện
  • Bo mạch
  • Shield
  • Cảm biến
  • Ngôn ngữ
  • CPython
  • Nội bộ
  • Nhật ký thay đổi
  • Giấy phép
/
  • English
  • العربية
  • 简体中文
  • 繁體中文
  • Hrvatski
  • Čeština
  • Nederlands
  • Suomi
  • Français
  • Deutsch
  • עברית
  • Magyar
  • Bahasa Indonesia
  • Italiano
  • 日本語
  • 한국어
  • Polski
  • Português (Brasil)
  • Português (Portugal)
  • Română
  • Русский
  • Español
  • Svenska
  • ไทย
  • Türkçe
  • Українська
  • Tiếng Việt
  • Thảo luận
  • Hướng dẫn
    • 1. Bắt đầu nhanh
    • 2. Tổng quan về Python
    • 3. Điều khiển phần cứng
    • 4. Cảm biến thị giác
    • 5. Xử lý ảnh
    • 6. NumPy
    • 7. Học máy
    • 8. Asyncio
    • 9. Kết nối mạng
    • 10. Web Server
    • 11. Bluetooth
      • 11.1. Tại sao chọn Bluetooth
      • 11.2. Ngăn xếp BLE
      • 11.3. Radio và tầng liên kết
      • 11.4. Quảng bá và quét
      • 11.5. Kết nối
      • 11.6. Dịch vụ và đặc trưng
      • 11.7. Các thao tác GATT
      • 11.8. Module aioble
      • 11.9. Hoạt động như một thiết bị ngoại vi
      • 11.10. Hoạt động như một central
      • 11.11. Các kênh L2CAP
      • 11.12. Các vai trò đồng thời và nhiều kết nối
      • 11.13. Ghép nối và liên kết
      • 11.14. Tổng kết
    • 12. Giao thức Host
    • 13. Công cụ
    • 14. Production
  • Thư viện
  • Boards
  • Shields
  • Cảm biến
  • Ngôn ngữ
  • CPython
  • Nội bộ
  • Changelog
  • Giấy phép

Trên trang này

  • 11.3.1. Radio
  • 11.3.2. Tầng liên kết
  • 11.3.3. Những gì camera và peer chia sẻ
  • 11.3.4. Những gì Python nhìn thấy từ tất cả điều này
micropython-doc 0 0
Chỉnh sửa trang này
  1. OpenMV MicroPython /
  2. Hướng Dẫn OpenMV Cam /
  3. 11. Bluetooth /
  4. 11.3. Radio và tầng liên kết
Xem nguồn Mở trong ChatGPT Mở trong Claude Mở trong Perplexity

11.3. Radio và tầng liên kết¶

Hai tầng dưới cùng của ngăn xếp BLE gần như hoàn toàn tự động từ góc độ Python -- silicon radio và các tầng mà MicroPython chạy trên đó xử lý mọi thứ từ việc chọn kênh đến truyền lại gói tin bị mất. Ba trong số các lựa chọn mà chúng thực hiện vẫn hiển thị qua API hướng người dùng: công suất, tầm xa và thông lượng.

11.3.1. Radio¶

BLE sử dụng cùng băng tần 2.4 GHz Industrial-Scientific-Medical (ISM) như Wi-Fi, lò vi sóng và hầu hết các thiết bị không dây tầm ngắn khác. Băng tần được chia thành 40 kênh rộng 2 MHz.

  • Ba trong số 40 kênh được dành riêng cho quảng bá -- các thông báo ngắn thông báo sự hiện diện của thiết bị cho bất kỳ ai đang nghe. Chúng được phân bổ khắp băng tần để một thiết bị nghe có thể quét nhanh cả ba và do đó sự can thiệp trên bất kỳ kênh nào cũng khó làm thiết bị mất kết nối hoàn toàn.

  • Ba mươi bảy kênh là các kênh dữ liệu. Khi hai thiết bị kết nối, chúng trao đổi các gói tin trên các kênh này, nhảy giữa chúng theo một chuỗi giả ngẫu nhiên mà hai bên đồng ý vào thời điểm kết nối. Adaptive frequency hopping cho phép một trong hai bên đánh dấu một kênh là xấu (can thiệp Wi-Fi nặng, lò vi sóng, mạng BLE lân cận) để chuỗi bỏ qua nó.

A horizontal frequency axis from 2400 MHz to 2480 MHz with 40 narrow channel slots drawn on it. Three of the slots, at the bottom edge, middle, and upper edge of the band, are highlighted as "advertising channels". The remaining 37 are labelled "data channels".

40 kênh BLE trên băng tần 2.4 GHz. Ba kênh dùng để quảng bá, phần còn lại mang lưu lượng trên kết nối mở.¶

Radio phát các gói tin ngắn -- dài nhất là vài mili giây -- và ngủ giữa các lần phát. Giấc ngủ đó là thứ làm cho công nghệ này có năng lượng thấp. Một peripheral BLE điển hình dành dưới một phần trăm thời gian của nó thực sự phát; phần còn lại là radio tắt nguồn giữa các sự kiện đã lên lịch.

11.3.2. Tầng liên kết¶

Tầng liên kết là đơn vị nhỏ nhất của BLE giao tiếp với đối tác trên một thiết bị khác. Nó xử lý bốn công việc.

  • Đóng khung gói tin. Mỗi gói tin mang một header ngắn (địa chỉ truy cập kênh, độ dài gói tin, các bit điều khiển), một payload và một CRC. Bộ nhận kiểm tra CRC và loại bỏ bất kỳ thứ gì bị hỏng.

  • Địa chỉ. Mỗi thiết bị BLE có một địa chỉ thiết bị 48-bit xác định nó trên radio. Một số là public -- một định danh phần cứng mà nhà sản xuất đã gán, có thể truy xuất mãi mãi. Một số là random -- được tạo trên thiết bị, xoay vòng định kỳ và tùy chọn được mã hóa để kẻ nghe trộm không thể liên kết hai lần truyền với cùng một phần cứng vật lý. Địa chỉ xuất hiện lại trong Quảng bá và quét.

  • Lập lịch kết nối. Khi hai thiết bị kết nối, tầng liên kết lên lịch các sự kiện radio định kỳ trên chuỗi nhảy -- cách nhau một khoảng thời gian kết nối cố định -- và đóng gói bất kỳ dữ liệu nào đang xếp hàng từ tầng GATT bên trên vào mỗi sự kiện. Cả hai bên ngủ giữa các sự kiện. Khoảng thời gian kết nối là một thông số mà ứng dụng có thể yêu cầu (xem Kết nối).

  • Độ tin cậy. Mỗi gói tin trên một kết nối được xác nhận bởi phía kia. Tầng liên kết truyền lại bất kỳ thứ gì không nhận được phản hồi, do đó các tầng bên trên nhìn thấy một luồng byte có thứ tự, không mất dữ liệu. Không giống như UDP -- gửi gói tin, hy vọng điều tốt nhất ở phía mạng, BLE không có chế độ không đáng tin cậy riêng biệt trong sử dụng thông thường -- mỗi gói tin trên một kết nối mở đều được thử lại cho đến khi đến nơi hoặc liên kết được tuyên bố là mất.

Tầng liên kết cũng là nơi mã hóa chạy khi một cặp thiết bị đã đồng ý về một khóa trong quá trình ghép đôi (xem Ghép nối và liên kết). Mỗi gói tin trên một liên kết được mã hóa đều được giải mã tại bộ nhận trước khi các tầng bên trên thấy nó.

11.3.3. Những gì camera và peer chia sẻ¶

Các radio ở cả hai đầu đồng ý vào thời điểm kết nối về một vài thông số điều chỉnh cuộc trò chuyện:

  • Khoảng thời gian kết nối -- tần suất hai bên thức dậy để trao đổi gói tin, từ 7.5 ms đến 4 giây.

  • Peripheral latency -- số khoảng thời gian liên tiếp mà peripheral có thể bỏ qua nếu nó không có gì để nói, để tiết kiệm điện.

  • Supervision timeout -- thời gian mỗi bên chờ đợi trước khi tuyên bố liên kết mất khi phía kia im lặng.

  • MTU -- gói tin đơn lớn nhất mà một trong hai bên sẽ gửi tới GATT (mặc định là 23 byte, có thể được thương lượng lên).

Radio và tầng liên kết cùng nhau chịu trách nhiệm truyền các gói tin đáng tin cậy, có thứ tự từ thiết bị này sang thiết bị khác trong khi giữ cả hai radio tắt càng nhiều càng tốt. Mọi tầng bên trên đều tự do hành xử như thể tồn tại một kênh byte sạch, riêng tư giữa hai điểm cuối.

11.3.4. Những gì Python nhìn thấy từ tất cả điều này¶

Gần như không có gì. Các API bluetooth và aioble không hiển thị các kênh, chuỗi nhảy, CRC gói tin hay bộ định thời truyền lại; tất cả những thứ đó đều được xử lý bên trong cổng BLE và radio. Các phần có hiện ra là những phần mà việc thương lượng thời điểm kết nối hiển thị -- khoảng thời gian kết nối, MTU, loại địa chỉ.

Trước
11.2. Ngăn xếp BLE
Tiếp theo
11.4. Quảng bá và quét

Dành cho OpenMV firmware v5.0.0 · dựa trên MicroPython v1.28 · tài liệu được xây dựng 18 tháng 6, 2026 · Bản quyền © 2014-2026 bởi OpenMV, Damien P. George và những người khác.

Được tạo bằng Sphinx sử dụng chủ đề Shibuya.