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
  • Discussão
  • Tutorial
    • 1. Início rápido
    • 2. Visão geral do Python
    • 3. Controle de Hardware
    • 4. Sensores de Visão
    • 5. Processamento de Imagem
    • 6. NumPy
    • 7. Aprendizado de Máquina
    • 8. Asyncio
    • 9. Redes
    • 10. Servidores Web
    • 11. Bluetooth
      • 11.1. Por que Bluetooth
      • 11.2. A pilha BLE
      • 11.3. O rádio e a camada de enlace
      • 11.4. Anúncio e varredura
      • 11.5. Conexões
      • 11.6. Serviços e características
      • 11.7. Operações GATT
      • 11.8. O módulo aioble
      • 11.9. Atuando como um periférico
      • 11.10. Atuando como central
      • 11.11. Canais L2CAP
      • 11.12. Funções simultâneas e múltiplas conexões
      • 11.13. Pareamento e vinculação
      • 11.14. Conclusão
    • 12. Protocolo de Host
    • 13. Ferramentas
    • 14. Produção
  • Bibliotecas
  • Placas
  • Shields
  • Sensores
  • Linguagem
  • CPython
  • Internos
  • Changelog
  • Licença

Nesta página

  • 11.3.1. O rádio
  • 11.3.2. A camada de enlace
  • 11.3.3. O que a câmera e um par compartilham
  • 11.3.4. O que o Python vê de tudo isso
micropython-doc 0 0
Editar esta página
  1. OpenMV MicroPython /
  2. Tutorial da OpenMV Cam /
  3. 11. Bluetooth /
  4. 11.3. O rádio e a camada de enlace
Ver código-fonte Abrir no ChatGPT Abrir no Claude Abrir no Perplexity

11.3. O rádio e a camada de enlace¶

As duas camadas inferiores da pilha BLE são quase inteiramente automáticas do ponto de vista do Python – o silício do rádio e as camadas sobre as quais o MicroPython é executado cuidam de tudo, desde escolher um canal até retransmitir um pacote perdido. Três das escolhas que elas fazem ainda transparecem na API voltada ao usuário: potência, alcance e throughput.

11.3.1. O rádio¶

O BLE usa a mesma banda Industrial-Científica-Médica (ISM) de 2,4 GHz que o Wi-Fi, os fornos de micro-ondas e a maioria das outras tecnologias sem fio de curto alcance. A banda é dividida em 40 canais de 2 MHz de largura.

  • Três dos 40 canais são reservados para anúncio – transmissões curtas que anunciam a presença de um dispositivo a quem estiver ouvindo. Eles são espaçados ao longo da banda para que um ouvinte possa varrer os três rapidamente e para que a interferência em qualquer um deles dificilmente tire o dispositivo do ar por completo.

  • Trinta e sete são canais de dados. Depois que dois dispositivos se conectam, eles trocam pacotes nesses canais, saltando entre eles em uma sequência pseudoaleatória que os dois lados acordam no momento da conexão. O salto de frequência adaptativo permite que qualquer um dos lados marque um canal como ruim (forte interferência de Wi-Fi, micro-ondas, rede BLE vizinha) para que a sequência o ignore.

Um eixo de frequência horizontal de 2400 MHz a 2480 MHz com 40 slots estreitos de canal desenhados nele. Três dos slots, na borda inferior, no meio e na borda superior da banda, estão destacados como "advertising channels". Os 37 restantes estão rotulados como "data channels".

Os 40 canais BLE na banda de 2,4 GHz. Três são para anúncio, o restante carrega tráfego em uma conexão aberta.¶

O rádio transmite pacotes breves – de no máximo alguns milissegundos de duração – e dorme entre eles. Esse sono é o que torna a tecnologia de baixa energia. Um peripheral BLE típico passa bem menos de um por cento do tempo realmente transmitindo; o resto é o rádio desligado entre eventos agendados.

11.3.2. A camada de enlace¶

A camada de enlace é a menor unidade do BLE que conversa com sua contraparte em outro dispositivo. Ela cuida de quatro tarefas.

  • Enquadramento de pacotes. Cada pacote carrega um cabeçalho curto (endereço de acesso ao canal, comprimento do pacote, bits de controle), um payload e um CRC. O receptor verifica o CRC e descarta qualquer coisa corrompida.

  • Endereçamento. Todo dispositivo BLE tem um endereço de dispositivo de 48 bits que o identifica no rádio. Alguns são públicos – um identificador de hardware que o fabricante atribuiu, rastreável para sempre. Alguns são aleatórios – gerados no dispositivo, rotacionados periodicamente e, opcionalmente, criptografados para que um bisbilhoteiro não consiga vincular duas transmissões ao mesmo hardware físico. Os endereços aparecem novamente em Anúncio e varredura.

  • Agendamento de conexão. Depois que dois dispositivos se conectam, a camada de enlace agenda eventos de rádio periódicos na sequência de saltos – separados por um intervalo de conexão fixo – e empacota em cada evento os dados que estiverem enfileirados na camada GATT acima. Ambos os lados voltam a dormir entre os eventos. O intervalo de conexão é um ajuste que a aplicação pode solicitar (veja Conexões).

  • Confiabilidade. Cada pacote em uma conexão é confirmado pelo outro lado. A camada de enlace retransmite qualquer coisa que não receba resposta, de modo que as camadas acima veem um fluxo de bytes ordenado e sem perdas. Ao contrário do UDP – envie um pacote e torça pelo melhor no lado das redes, o BLE não tem um modo não confiável separado no uso normal – cada pacote em uma conexão aberta é tentado novamente até chegar ou até que o enlace seja declarado perdido.

A camada de enlace também é onde a criptografia roda depois que um par de dispositivos acorda uma chave durante o emparelhamento (veja Pareamento e vinculação). Cada pacote em um enlace criptografado é descriptografado no receptor antes que as camadas acima sequer o vejam.

11.3.3. O que a câmera e um par compartilham¶

Os rádios em ambas as extremidades acordam, no momento da conexão, um punhado de parâmetros que governam a conversa:

  • O intervalo de conexão – com que frequência os dois lados acordam para trocar pacotes, podendo variar de 7,5 ms a 4 s.

  • A latência do peripheral – quantos intervalos consecutivos o peripheral pode pular se não tiver nada a dizer, para economizar energia.

  • O tempo limite de supervisão – por quanto tempo cada lado espera antes de declarar o enlace perdido quando o outro fica em silêncio.

  • A MTU – o maior pacote único que cada lado entregará ao GATT (o padrão é 23 bytes, podendo ser negociado para mais).

O rádio e a camada de enlace, juntos, são responsáveis por levar pacotes confiáveis e ordenados de um dispositivo a outro, mantendo ambos os rádios desligados o máximo de tempo possível. Toda camada acima é livre para se comportar como se existisse um canal de bytes limpo e privado entre os dois pontos de extremidade.

11.3.4. O que o Python vê de tudo isso¶

Quase nada. As APIs bluetooth e aioble não expõem canais, sequências de saltos, CRCs de pacote ou temporizadores de retransmissão; tudo isso é tratado dentro do port BLE e do rádio. As partes que de fato transparecem são aquelas que a negociação no momento da conexão expõe – intervalo de conexão, MTU, tipo de endereço.

Anterior
11.2. A pilha BLE
Próximo
11.4. Anúncio e varredura

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.