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
  • Diskussion
  • Tutorial
    • 1. Schnellstart
    • 2. Python-Überblick
    • 3. Hardwaresteuerung
    • 4. Vision-Sensoren
    • 5. Bildverarbeitung
    • 6. NumPy
    • 7. Maschinelles Lernen
    • 8. Asyncio
    • 9. Netzwerke
    • 10. Webserver
    • 11. Bluetooth
      • 11.1. Warum Bluetooth
      • 11.2. Der BLE-Stack
      • 11.3. Das Funkmodul und die Link-Schicht
      • 11.4. Advertising und Scanning
      • 11.5. Verbindungen
      • 11.6. Services und Characteristics
      • 11.7. GATT-Operationen
      • 11.8. Das aioble-Modul
      • 11.9. Als Peripheriegerät agieren
      • 11.10. Als Central agieren
      • 11.11. L2CAP-Kanäle
      • 11.12. Gleichzeitige Rollen und mehrere Verbindungen
      • 11.13. Pairing und Bonding
      • 11.14. Zusammenfassung
    • 12. Host-Protokoll
    • 13. Tools
    • 14. Produktion
  • Bibliotheken
  • Boards
  • Shields
  • Sensoren
  • Sprache
  • CPython
  • Interna
  • Changelog
  • Lizenz

Auf dieser Seite

  • 11.3.1. Das Funkmodul
  • 11.3.2. Die Link-Schicht
  • 11.3.3. Was die Kamera und ein Gegenüber teilen
  • 11.3.4. Was Python von all dem sieht
micropython-doc 0 0
Diese Seite bearbeiten
  1. OpenMV MicroPython /
  2. OpenMV Cam Tutorial /
  3. 11. Bluetooth /
  4. 11.3. Das Funkmodul und die Link-Schicht
Quelltext anzeigen In ChatGPT öffnen In Claude öffnen In Perplexity öffnen

11.3. Das Funkmodul und die Link-Schicht¶

Die untersten beiden Schichten des BLE-Stacks sind aus Sicht von Python nahezu vollständig automatisch – das Funk-Silizium und die Schichten, die MicroPython darüber betreibt, kümmern sich um alles, von der Wahl eines Kanals bis zum erneuten Senden eines verlorenen Pakets. Drei der Entscheidungen, die sie treffen, schimmern dennoch in die benutzerseitige API durch: Leistung, Reichweite und Durchsatz.

11.3.1. Das Funkmodul¶

BLE nutzt dasselbe 2,4-GHz-ISM-Band (Industrial-Scientific-Medical) wie Wi-Fi, Mikrowellenöfen und die meisten anderen Kurzstrecken-Funktechniken. Das Band ist in 40 Kanäle von je 2 MHz Breite aufgeteilt.

  • Drei der 40 Kanäle sind für Werbung reserviert – kurze Aussendungen, die die Anwesenheit eines Geräts an jeden Zuhörer ankündigen. Sie sind über das Band verteilt, sodass ein Zuhörer alle drei schnell durchsuchen kann und sodass eine Störung auf einem einzelnen Kanal das Gerät wahrscheinlich nicht völlig vom Netz nimmt.

  • Siebenunddreißig sind Daten-Kanäle. Sobald zwei Geräte verbunden sind, tauschen sie Pakete über diese aus und springen dabei zwischen ihnen nach einer pseudozufälligen Sequenz, die beide Seiten zum Verbindungszeitpunkt vereinbaren. Adaptive Frequenzsprung erlaubt jeder Seite, einen Kanal als schlecht zu markieren (starke Wi-Fi-Störung, Mikrowelle, benachbartes BLE-Netzwerk), sodass die Sequenz ihn überspringt.

Eine horizontale Frequenzachse von 2400 MHz bis 2480 MHz mit 40 schmalen Kanalslots, die darauf gezeichnet sind. Drei der Slots, am unteren Rand, in der Mitte und am oberen Rand des Bandes, sind als "advertising channels" hervorgehoben. Die verbleibenden 37 sind mit "data channels" beschriftet.

Die 40 BLE-Kanäle im 2,4-GHz-Band. Drei sind für Werbung, der Rest trägt den Verkehr über eine offene Verbindung.¶

Das Funkmodul sendet kurze Pakete – höchstens ein paar Millisekunden lang – und schläft dazwischen. Dieser Schlaf ist es, der die Technologie energiesparend macht. Ein typisches BLE-Peripheral verbringt deutlich unter einem Prozent seiner Zeit mit tatsächlichem Senden; der Rest ist das Funkmodul, das zwischen geplanten Ereignissen abgeschaltet ist.

11.3.2. Die Link-Schicht¶

Die Link-Schicht ist die kleinste Einheit von BLE, die mit ihrem Gegenstück auf einem anderen Gerät kommuniziert. Sie erledigt vier Aufgaben.

  • Paketrahmung. Jedes Paket trägt einen kurzen Header (Channel Access Address, Paketlänge, Steuerbits), eine Nutzlast und eine CRC. Der Empfänger prüft die CRC und verwirft alles Beschädigte.

  • Adressierung. Jedes BLE-Gerät hat eine 48-Bit-Geräteadresse, die es im Funk identifiziert. Einige sind öffentlich – eine Hardware-Kennung, die der Hersteller zugewiesen hat, für immer nachverfolgbar. Einige sind zufällig – auf dem Gerät erzeugt, regelmäßig rotiert und optional verschlüsselt, sodass ein Lauscher zwei Übertragungen nicht derselben physischen Hardware zuordnen kann. Adressen kommen erneut in Advertising und Scanning vor.

  • Verbindungsplanung. Sobald zwei Geräte verbunden sind, plant die Link-Schicht periodische Funkereignisse auf der Sprungsequenz – ein festes Connection Interval auseinander – und packt alle aus der darüber liegenden GATT-Schicht in der Warteschlange befindlichen Daten in jedes Ereignis. Beide Seiten gehen zwischen den Ereignissen wieder schlafen. Das Connection Interval ist ein Regler, den die Anwendung anfordern kann (siehe Verbindungen).

  • Zuverlässigkeit. Jedes Paket auf einer Verbindung wird von der anderen Seite quittiert. Die Link-Schicht sendet alles erneut, was keine Antwort erhalten hat, sodass die darüber liegenden Schichten einen geordneten, verlustfreien Bytestrom sehen. Anders als UDP – sende ein Paket, hoffe auf das Beste auf der Networking-Seite hat BLE im Normalbetrieb keinen separaten unzuverlässigen Modus – jedes Paket auf einer offenen Verbindung wird wiederholt, bis es ankommt oder die Verbindung als verloren erklärt wird.

Die Link-Schicht ist auch dort, wo Verschlüsselung läuft, sobald sich ein Gerätepaar während des Pairings auf einen Schlüssel geeinigt hat (siehe Pairing und Bonding). Jedes Paket auf einer verschlüsselten Verbindung wird beim Empfänger entschlüsselt, bevor die darüber liegenden Schichten es überhaupt sehen.

11.3.3. Was die Kamera und ein Gegenüber teilen¶

Die Funkmodule an beiden Enden einigen sich zum Verbindungszeitpunkt auf eine Handvoll Parameter, die das Gespräch steuern:

  • Das Connection Interval – wie oft die beiden Seiten aufwachen, um Pakete auszutauschen, irgendwo zwischen 7,5 ms und 4 s.

  • Die Peripheral Latency – wie viele aufeinanderfolgende Intervalle das Peripheral überspringen darf, wenn es nichts zu sagen hat, um Strom zu sparen.

  • Der Supervision Timeout – wie lange jede Seite wartet, bevor sie die Verbindung als verloren erklärt, wenn die andere verstummt.

  • Die MTU – das größte einzelne Paket, das jede Seite an GATT liefert (Standard ist 23 Bytes, kann nach oben verhandelt werden).

Das Funkmodul und die Link-Schicht zusammen sind dafür verantwortlich, zuverlässige, geordnete Pakete von einem Gerät zum anderen zu bringen und dabei beide Funkmodule so viel wie möglich abzuschalten. Jede darüber liegende Schicht kann sich so verhalten, als existiere ein sauberer, privater Byte-Kanal zwischen den beiden Endpunkten.

11.3.4. Was Python von all dem sieht¶

Fast nichts. Die APIs bluetooth und aioble stellen weder Kanäle noch Sprungsequenzen, Paket-CRCs oder Retransmissions-Timer bereit; all das wird innerhalb des BLE-Ports und des Funkmoduls behandelt. Die Teile, die durchscheinen, sind diejenigen, die die Aushandlung zum Verbindungszeitpunkt freilegt – Connection Interval, MTU, Adresstyp.

Zurück
11.2. Der BLE-Stack
Weiter
11.4. Advertising und Scanning

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.