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
  • Handledning
    • 1. Snabbstart
    • 2. Python-översikt
    • 3. Hårdvarustyrning
    • 4. Bildsensorer
    • 5. Bildbehandling
    • 6. NumPy
    • 7. Maskininlärning
    • 8. Asyncio
    • 9. Nätverk
    • 10. Webbservrar
    • 11. Bluetooth
      • 11.1. Varför Bluetooth
      • 11.2. BLE-stacken
      • 11.3. Radion och länklagret
      • 11.4. Annonsering och skanning
      • 11.5. Anslutningar
      • 11.6. Tjänster och karakteristika
      • 11.7. GATT-operationer
      • 11.8. Modulen aioble
      • 11.9. Att agera som kringutrustning
      • 11.10. Att agera som en central
      • 11.11. L2CAP-kanaler
      • 11.12. Samtidiga roller och flera anslutningar
      • 11.13. Parkoppling och bindning
      • 11.14. Sammanfattning
    • 12. Värdprotokoll
    • 13. Verktyg
    • 14. Produktion
  • Bibliotek
  • Kort
  • Sköldar
  • Sensorer
  • Språk
  • CPython
  • Interna delar
  • Ändringslogg
  • Licens

On this page

  • 11.3.1. Radion
  • 11.3.2. Länklagret
  • 11.3.3. Vad kameran och en motpart delar
  • 11.3.4. Vad Python ser av allt detta
micropython-doc 0 0
Edit this page
  1. OpenMV MicroPython /
  2. Handledning för OpenMV Cam /
  3. 11. Bluetooth /
  4. 11.3. Radion och länklagret
View Source Open in ChatGPT Open in Claude Open in Perplexity

11.3. Radion och länklagret¶

De två nedersta lagren i BLE-stacken är ur Pythons perspektiv nästan helt automatiska – radiokislet och de lager som MicroPython kör ovanpå det hanterar allt från att välja en kanal till att återsända ett förlorat paket. Tre av de val de gör syns ändå igenom i det användarvända API:et: effekt, räckvidd och genomströmning.

11.3.1. Radion¶

BLE använder samma 2,4 GHz Industrial-Scientific-Medical-band (ISM) som Wi-Fi, mikrovågsugnar och de flesta andra trådlösa tekniker med kort räckvidd. Bandet är uppdelat i 40 kanaler om 2 MHz vardera.

  • Tre av de 40 kanalerna är reserverade för annonsering – korta sändningar som tillkännager en enhets närvaro för alla som lyssnar. De är utspridda över bandet så att en lyssnare snabbt kan svepa över alla tre och så att störningar på någon av dem sannolikt inte slår ut enheten helt.

  • Trettiosju är datakanaler. När två enheter väl ansluter utbyter de paket på dessa, och hoppar mellan dem i en pseudoslumpmässig sekvens som de två sidorna kommer överens om vid anslutningstillfället. Adaptivt frekvenshopp låter endera sidan markera en kanal som dålig (kraftiga Wi-Fi-störningar, mikrovågsugn, närliggande BLE-nätverk) så att sekvensen hoppar över den.

En horisontell frekvensaxel från 2400 MHz till 2480 MHz med 40 smala kanalfack uppritade på den. Tre av facken, vid bandets nedre kant, mitt och övre kant, är markerade som "advertising channels". De återstående 37 är märkta "data channels".

De 40 BLE-kanalerna på 2,4 GHz-bandet. Tre är för annonsering, resten bär trafik på en öppen anslutning.¶

Radion sänder korta paket – som mest ett par millisekunder långa – och sover däremellan. Den sömnen är vad som gör tekniken energisnål. En typisk BLE-perifer enhet tillbringar långt under en procent av sin tid med att faktiskt sända; resten är radion avstängd mellan schemalagda händelser.

11.3.2. Länklagret¶

Länklagret är den minsta enheten i BLE som pratar med sin motsvarighet på en annan enhet. Det sköter fyra uppgifter.

  • Paketramning. Varje paket bär ett kort huvud (kanalåtkomstadress, paketlängd, kontrollbitar), en nyttolast och en CRC. Mottagaren kontrollerar CRC:n och förkastar allt som är korrupt.

  • Adressering. Varje BLE-enhet har en 48-bitars enhetsadress som identifierar den på radion. Vissa är publika – en hårdvaruidentifierare som tillverkaren har tilldelat, spårbar för alltid. Vissa är slumpmässiga – genererade på enheten, roterade periodvis och valfritt krypterade så att en avlyssnare inte kan koppla två sändningar till samma fysiska hårdvara. Adresser dyker upp igen i Annonsering och skanning.

  • Anslutningsschemaläggning. När två enheter väl ansluter schemalägger länklagret periodiska radiohändelser på hoppsekvensen – med ett fast anslutningsintervall mellan – och packar in vilken data som än står i kö från GATT-lagret ovanför i varje sådan. Båda sidor går tillbaka till att sova mellan händelserna. Anslutningsintervallet är ett reglage som applikationen kan begära (se Anslutningar).

  • Tillförlitlighet. Varje paket på en anslutning kvitteras av den andra sidan. Länklagret återsänder allt som inte fick något svar, så att lagren ovanför ser en ordnad, förlustfri byteström. Till skillnad från UDP – skicka ett paket, hoppas på det bästa på nätverkssidan har BLE inte ett separat opålitligt läge i normal användning – varje paket på en öppen anslutning försöks om tills det kommer fram eller länken förklaras förlorad.

Länklagret är också där kryptering körs när ett par enheter väl har kommit överens om en nyckel under parning (se Parkoppling och bindning). Varje paket på en krypterad länk dekrypteras hos mottagaren innan lagren ovanför någonsin ser det.

11.3.3. Vad kameran och en motpart delar¶

Radiona i båda ändar kommer överens vid anslutningstillfället om en handfull parametrar som styr konversationen:

  • Anslutningsintervallet – hur ofta de två sidorna vaknar för att utbyta paket, någonstans från 7,5 ms till 4 s.

  • Perifer latens – hur många på varandra följande intervall den perifera enheten får hoppa över om den inte har något att säga, för att spara energi.

  • Övervakningstimeouten – hur länge endera sidan väntar innan den förklarar länken förlorad när den andra blir tyst.

  • MTU:n – det största enskilda paket endera sidan kommer att leverera till GATT (standardvärde 23 byte, kan förhandlas upp).

Radion och länklagret är tillsammans ansvariga för att få tillförlitliga, ordnade paket från en enhet till en annan samtidigt som båda radiona hålls avstängda så mycket som möjligt. Varje lager ovanför är fritt att bete sig som om det fanns en ren, privat bytekanal mellan de två ändpunkterna.

11.3.4. Vad Python ser av allt detta¶

Nästan ingenting. API:erna bluetooth och aioble exponerar inte kanaler, hoppsekvenser, paket-CRC:er eller återsändningstimers; allt det hanteras inuti BLE-porten och radion. De delar som syns igenom är de som anslutningstidens förhandling exponerar – anslutningsintervall, MTU, adresstyp.

Previous
11.2. BLE-stacken
Next
11.4. Annonsering och skanning

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.