OpenMV MicroPython OpenMV MicroPython OpenMV MicroPython
  • Home
  • Tutorial
  • Libraries
  • Boards
  • Shields
  • Sensors
  • Language
  • CPython
  • Internals
  • Changelog
  • License
/
  • English
  • 简体中文
  • 繁體中文
  • Deutsch
  • 日本語
  • Español
  • Русский
  • Français
  • 한국어
  • Italiano
  • Português
  • Nederlands
  • Română
  • Hrvatski
  • Čeština
  • Polski
  • Suomi
  • Svenska
  • Magyar
  • Türkçe
  • Discussion
  • Samouczek
    • 1. Szybki start
    • 2. Przegląd Pythona
    • 3. Sterowanie sprzętem
    • 4. Sensory wizyjne
    • 5. Przetwarzanie obrazu
    • 6. NumPy
    • 7. Uczenie maszynowe
    • 8. Asyncio
    • 9. Sieci
    • 10. Serwery WWW
    • 11. Bluetooth
      • 11.1. Dlaczego Bluetooth
      • 11.2. Stos BLE
      • 11.3. Radio i warstwa łącza
      • 11.4. Rozgłaszanie i skanowanie
      • 11.5. Połączenia
      • 11.6. Usługi i charakterystyki
      • 11.7. Operacje GATT
      • 11.8. Moduł aioble
      • 11.9. Działanie jako urządzenie peryferyjne
      • 11.10. Działanie jako central
      • 11.11. Kanały L2CAP
      • 11.12. Współbieżne role i wiele połączeń
      • 11.13. Parowanie i wiązanie
      • 11.14. Podsumowanie
    • 12. Protokół hosta
    • 13. Narzędzia
    • 14. Produkcja
  • Biblioteki
  • Płytki
  • Nakładki
  • Sensory
  • Język
  • CPython
  • Wewnętrzne mechanizmy
  • Dziennik zmian
  • Licencja

On this page

  • 11.3.1. Radio
  • 11.3.2. Warstwa łącza
  • 11.3.3. Co kamera dzieli z urządzeniem partnerskim
  • 11.3.4. Co z tego wszystkiego widzi Python
micropython-doc 0 0
Edit this page
  1. OpenMV MicroPython /
  2. Samouczek OpenMV Cam /
  3. 11. Bluetooth /
  4. 11.3. Radio i warstwa łącza
View Source Open in ChatGPT Open in Claude Open in Perplexity

11.3. Radio i warstwa łącza¶

Dwie najniższe warstwy stosu BLE są z perspektywy Pythona niemal całkowicie automatyczne – krzem radiowy oraz warstwy, które MicroPython uruchamia ponad nim, obsługują wszystko, od wyboru kanału po retransmisję utraconego pakietu. Trzy z podejmowanych przez nie decyzji nadal przebijają się do API widocznego dla użytkownika: moc, zasięg i przepustowość.

11.3.1. Radio¶

BLE używa tego samego pasma 2,4 GHz Industrial-Scientific-Medical (ISM) co Wi-Fi, kuchenki mikrofalowe i większość pozostałych technologii bezprzewodowych krótkiego zasięgu. Pasmo jest podzielone na 40 kanałów o szerokości 2 MHz.

  • Trzy z 40 kanałów są zarezerwowane na rozgłaszanie – krótkie transmisje, które ogłaszają obecność urządzenia każdemu, kto nasłuchuje. Są rozmieszczone w paśmie tak, by nasłuchujący mógł szybko przeszukać wszystkie trzy i by zakłócenie na którymkolwiek z nich raczej nie wyłączyło urządzenia całkowicie z eteru.

  • Trzydzieści siedem to kanały danych. Gdy dwa urządzenia się połączą, wymieniają na nich pakiety, przeskakując między nimi według pseudolosowej sekwencji uzgodnionej przez obie strony w momencie połączenia. Adaptacyjne przeskakiwanie częstotliwości (adaptive frequency hopping) pozwala każdej ze stron oznaczyć kanał jako zły (silne zakłócenia Wi-Fi, kuchenka mikrofalowa, sąsiednia sieć BLE), tak by sekwencja go pomijała.

Pozioma oś częstotliwości od 2400 MHz do 2480 MHz z narysowanymi na niej 40 wąskimi szczelinami kanałów. Trzy ze szczelin, przy dolnej krawędzi, w środku oraz przy górnej krawędzi pasma, są wyróżnione jako "advertising channels". Pozostałe 37 jest oznaczonych jako "data channels".

40 kanałów BLE w paśmie 2,4 GHz. Trzy służą do rozgłaszania, pozostałe przenoszą ruch w otwartym połączeniu.¶

Radio transmituje krótkie pakiety – najwyżej kilka milisekund długości – a w przerwach śpi. To właśnie ten sen czyni technologię niskoenergetyczną (low energy). Typowy peripheral BLE spędza znacznie poniżej jednego procenta czasu na faktycznej transmisji; przez resztę radio jest wyłączone między zaplanowanymi zdarzeniami.

11.3.2. Warstwa łącza¶

Warstwa łącza to najmniejsza jednostka BLE, która komunikuje się ze swoim odpowiednikiem na innym urządzeniu. Realizuje cztery zadania.

  • Ramkowanie pakietów. Każdy pakiet niesie krótki nagłówek (adres dostępu do kanału, długość pakietu, bity sterujące), ładunek oraz CRC. Odbiornik sprawdza CRC i odrzuca wszystko, co uszkodzone.

  • Adresowanie. Każde urządzenie BLE ma 48-bitowy adres urządzenia, który identyfikuje je w eterze. Niektóre są publiczne – identyfikator sprzętowy przypisany przez producenta, możliwy do śledzenia na zawsze. Niektóre są losowe – generowane na urządzeniu, okresowo rotowane i opcjonalnie szyfrowane, tak by podsłuchujący nie mógł powiązać dwóch transmisji z tym samym fizycznym sprzętem. Adresy pojawiają się ponownie w Rozgłaszanie i skanowanie.

  • Harmonogramowanie połączenia. Gdy dwa urządzenia się połączą, warstwa łącza harmonogramuje okresowe zdarzenia radiowe w sekwencji przeskoków – co stały interwał połączenia (connection interval) – i pakuje do każdego z nich dane zakolejkowane przez warstwę GATT powyżej. Obie strony wracają do snu między zdarzeniami. Interwał połączenia to pokrętło, o które aplikacja może poprosić (zobacz Połączenia).

  • Niezawodność. Każdy pakiet w połączeniu jest potwierdzany przez drugą stronę. Warstwa łącza retransmituje wszystko, co nie otrzymało odpowiedzi, dzięki czemu warstwy powyżej widzą uporządkowany, bezstratny strumień bajtów. W odróżnieniu od UDP – wyślij pakiet i miej nadzieję na najlepsze po stronie sieci, BLE nie ma w normalnym użyciu osobnego trybu zawodnego – każdy pakiet w otwartym połączeniu jest ponawiany, aż dotrze albo łącze zostanie uznane za utracone.

Warstwa łącza to także miejsce, w którym działa szyfrowanie, gdy para urządzeń uzgodni klucz podczas parowania (zobacz Parowanie i wiązanie). Każdy pakiet na szyfrowanym łączu jest odszyfrowywany u odbiorcy, zanim warstwy powyżej w ogóle go zobaczą.

11.3.3. Co kamera dzieli z urządzeniem partnerskim¶

Radia na obu końcach uzgadniają w momencie połączenia garść parametrów, które rządzą całą rozmową:

  • Interwał połączenia (connection interval) – jak często obie strony budzą się, by wymienić pakiety, w zakresie od 7,5 ms do 4 s.

  • Opóźnienie peripherala (peripheral latency) – ile kolejnych interwałów peripheral może pominąć, jeśli nie ma nic do powiedzenia, aby oszczędzać energię.

  • Limit czasu nadzoru (supervision timeout) – jak długo każda ze stron czeka, zanim uzna łącze za utracone, gdy druga strona milknie.

  • MTU – największy pojedynczy pakiet, jaki każda ze stron dostarczy do GATT (domyślnie 23 bajty, można negocjować w górę).

Radio i warstwa łącza razem odpowiadają za dostarczanie niezawodnych, uporządkowanych pakietów z jednego urządzenia do drugiego, utrzymując oba radia wyłączone tak długo, jak to możliwe. Każda warstwa powyżej może zachowywać się tak, jakby między dwoma punktami końcowymi istniał czysty, prywatny kanał bajtowy.

11.3.4. Co z tego wszystkiego widzi Python¶

Niemal nic. API bluetooth oraz aioble nie udostępniają kanałów, sekwencji przeskoków, CRC pakietów ani liczników retransmisji; wszystkim tym zajmuje się wnętrze portu BLE oraz radio. Elementy, które faktycznie się przebijają, to te udostępniane przez negocjację w momencie połączenia – interwał połączenia, MTU, typ adresu.

Previous
11.2. Stos BLE
Next
11.4. Rozgłaszanie i skanowanie

For OpenMV firmware v5.0.0 · based on MicroPython v1.28 · docs built 16 Jun 2026 · Copyright © 2014-2026 by OpenMV, Damien P. George, and others.

Made with Sphinx using the Shibuya theme.