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
  • Tutorial
    • 1. Pornire rapidă
    • 2. Prezentare generală Python
    • 3. Controlul hardware-ului
    • 4. Senzori de viziune
    • 5. Procesarea imaginilor
    • 6. NumPy
    • 7. Învățarea automată
    • 8. Asyncio
    • 9. Rețelistică
    • 10. Servere web
    • 11. Bluetooth
      • 11.1. De ce Bluetooth
      • 11.2. Stiva BLE
      • 11.3. Radioul și stratul de legătură
      • 11.4. Difuzare și scanare
      • 11.5. Conexiuni
      • 11.6. Servicii și caracteristici
      • 11.7. Operații GATT
      • 11.8. Modulul aioble
      • 11.9. Funcționarea ca periferic
      • 11.10. Acționând ca central
      • 11.11. Canale L2CAP
      • 11.12. Roluri concurente și conexiuni multiple
      • 11.13. Asocierea și legarea (pairing și bonding)
      • 11.14. Recapitulare
    • 12. Protocolul de gazdă
    • 13. Instrumente
    • 14. Producție
  • Biblioteci
  • Plăci
  • Shield-uri
  • Senzori
  • Limbaj
  • CPython
  • Componente interne
  • Istoric modificări
  • Licență

On this page

  • 11.3.1. Radioul
  • 11.3.2. Stratul de legătură
  • 11.3.3. Ce împart camera și un omolog
  • 11.3.4. Ce vede Python din toate acestea
micropython-doc 0 0
Edit this page
  1. OpenMV MicroPython /
  2. Tutorial OpenMV Cam /
  3. 11. Bluetooth /
  4. 11.3. Radioul și stratul de legătură
View Source Open in ChatGPT Open in Claude Open in Perplexity

11.3. Radioul și stratul de legătură¶

Cele două straturi inferioare ale stivei BLE sunt aproape în întregime automate din perspectiva Python – siliciul radio și straturile pe care MicroPython rulează deasupra lui se ocupă de tot, de la alegerea unui canal până la retransmiterea unui pachet pierdut. Trei dintre alegerile pe care le fac se reflectă totuși în API-ul vizibil utilizatorului: puterea, raza de acțiune și debitul.

11.3.1. Radioul¶

BLE folosește aceeași bandă de 2,4 GHz Industrial-Scientific-Medical (ISM) ca Wi-Fi-ul, cuptoarele cu microunde și majoritatea celorlalte tehnologii wireless de rază scurtă. Banda este împărțită în 40 de canale late de 2 MHz.

  • Trei dintre cele 40 de canale sunt rezervate pentru anunțuri – difuzări scurte care anunță prezența unui dispozitiv oricui ascultă. Sunt distanțate de-a lungul benzii, astfel încât un ascultător să poată baleia rapid toate cele trei și astfel încât interferența pe oricare dintre ele să nu scoată dispozitivul complet din eter.

  • Treizeci și șapte sunt canale de date. Odată ce două dispozitive se conectează, ele schimbă pachete pe acestea, sărind între ele după o secvență pseudo-aleatorie pe care cele două părți o convin la momentul conexiunii. Saltul adaptiv de frecvență permite oricărei părți să marcheze un canal ca fiind defectuos (interferență Wi-Fi puternică, cuptor cu microunde, rețea BLE vecină), astfel încât secvența să-l ocolească.

O axă orizontală de frecvență de la 2400 MHz la 2480 MHz cu 40 de sloturi înguste de canal desenate pe ea. Trei dintre sloturi, la marginea inferioară, la mijloc și la marginea superioară a benzii, sunt evidențiate drept "advertising channels". Cele rămase 37 sunt etichetate "data channels".

Cele 40 de canale BLE pe banda de 2,4 GHz. Trei sunt pentru anunțuri, restul transportă trafic pe o conexiune deschisă.¶

Radioul transmite pachete scurte – cel mult de câteva milisecunde – și doarme între ele. Acel somn este ceea ce face tehnologia să fie cu consum redus. Un peripheral BLE tipic petrece mult sub un procent din timpul său efectiv transmițând; restul este radioul oprit între evenimentele programate.

11.3.2. Stratul de legătură¶

Stratul de legătură este cea mai mică unitate a BLE care comunică cu omologul său de pe alt dispozitiv. Acesta gestionează patru sarcini.

  • Încadrarea pachetelor. Fiecare pachet poartă un antet scurt (adresa de acces la canal, lungimea pachetului, biți de control), o încărcătură utilă și un CRC. Receptorul verifică CRC-ul și elimină orice este corupt.

  • Adresarea. Fiecare dispozitiv BLE are o adresă de dispozitiv de 48 de biți care îl identifică pe radio. Unele sunt publice – un identificator hardware pe care producătorul l-a atribuit, trasabil pentru totdeauna. Unele sunt aleatorii – generate pe dispozitiv, rotite periodic și opțional criptate astfel încât un interceptor să nu poată lega două transmisii de același hardware fizic. Adresele revin din nou în Difuzare și scanare.

  • Programarea conexiunii. Odată ce două dispozitive se conectează, stratul de legătură programează evenimente radio periodice pe secvența de salt – la distanță de un interval de conexiune fix – și împachetează în fiecare dintre ele orice date sunt puse în coadă de stratul GATT de deasupra. Ambele părți revin la somn între evenimente. Intervalul de conexiune este un parametru pe care aplicația îl poate solicita (vezi Conexiuni).

  • Fiabilitatea. Fiecare pachet pe o conexiune este confirmat de cealaltă parte. Stratul de legătură retransmite orice nu a primit un răspuns, astfel încât straturile de deasupra văd un flux de octeți ordonat și fără pierderi. Spre deosebire de UDP – trimite un pachet și speră la ce e mai bun de pe partea de rețelistică, BLE nu are un mod nefiabil separat în utilizarea normală – fiecare pachet de pe o conexiune deschisă este reîncercat până ajunge sau până când legătura este declarată pierdută.

Stratul de legătură este de asemenea locul în care rulează criptarea, odată ce o pereche de dispozitive a convenit asupra unei chei în timpul împerecherii (vezi Asocierea și legarea (pairing și bonding)). Fiecare pachet de pe o legătură criptată este decriptat la receptor înainte ca straturile de deasupra să-l vadă vreodată.

11.3.3. Ce împart camera și un omolog¶

Radiourile de la ambele capete convin la momentul conexiunii asupra unei mâini de parametri care guvernează conversația:

  • Intervalul de conexiune – cât de des se trezesc cele două părți pentru a schimba pachete, oriunde între 7,5 ms și 4 s.

  • Latența peripheral-ului – câte intervale consecutive poate sări peripheral-ul dacă nu are nimic de spus, pentru a economisi energie.

  • Timpul de supraveghere – cât așteaptă oricare parte înainte de a declara legătura pierdută atunci când cealaltă tace.

  • MTU-ul – cel mai mare pachet unic pe care oricare parte îl va livra către GATT (implicit 23 de octeți, poate fi negociat în sus).

Radioul și stratul de legătură împreună sunt responsabile de transportul fiabil și ordonat al pachetelor de la un dispozitiv la altul, păstrând în același timp ambele radiouri oprite cât mai mult posibil. Fiecare strat de deasupra este liber să se comporte ca și cum între cele două puncte terminale ar exista un canal de octeți curat și privat.

11.3.4. Ce vede Python din toate acestea¶

Aproape nimic. API-urile bluetooth și aioble nu expun canale, secvențe de salt, CRC-uri de pachete sau temporizatoare de retransmitere; toate acestea sunt gestionate în interiorul portului BLE și al radioului. Piesele care se reflectă sunt cele pe care le expune negocierea de la momentul conexiunii – intervalul de conexiune, MTU-ul, tipul de adresă.

Previous
11.2. Stiva BLE
Next
11.4. Difuzare și scanare

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.