OpenMV MicroPython OpenMV MicroPython OpenMV MicroPython
  • Início
  • Tutorial
  • Bibliotecas
  • Placas
  • Shields
  • Sensores
  • Idioma
  • CPython
  • Internos
  • Changelog
  • Licença
/
  • English
  • العربية
  • 简体中文
  • 繁體中文
  • Hrvatski
  • Čeština
  • Nederlands
  • Suomi
  • Français
  • Deutsch
  • עברית
  • Magyar
  • Bahasa Indonesia
  • Italiano
  • 日本語
  • 한국어
  • Polski
  • Português (Brasil)
  • Português (Portugal)
  • Română
  • Русский
  • Español
  • Svenska
  • ไทย
  • Türkçe
  • Українська
  • Tiếng Việt
  • Discussão
  • Tutorial
    • 1. Início rápido
    • 2. Visão geral do Python
    • 3. Controlo de Hardware
    • 4. Sensores de Visão
    • 5. Processamento de Imagem
    • 6. NumPy
    • 7. Aprendizagem Automática
    • 8. Asyncio
    • 9. Redes
    • 10. Servidores Web
    • 11. Bluetooth
      • 11.1. Porquê Bluetooth
      • 11.2. A pilha BLE
      • 11.3. O rádio e a camada de ligação
      • 11.4. Publicidade e pesquisa
      • 11.5. Ligações
      • 11.6. Serviços e características
      • 11.7. Operações GATT
      • 11.8. O módulo aioble
      • 11.9. Agir como periférico
      • 11.10. Agir como central
      • 11.11. Canais L2CAP
      • 11.12. Funções simultâneas e múltiplas ligações
      • 11.13. Emparelhamento e vinculação
      • 11.14. Conclusão
    • 12. Protocolo do 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 ligação
  • 11.3.3. O que a câmara e um par partilham
  • 11.3.4. O que o Python vê de tudo isto
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 ligação
Ver Fonte Abrir no ChatGPT Abrir no Claude Abrir no Perplexity

11.3. O rádio e a camada de ligação¶

As duas camadas inferiores da pilha BLE são quase inteiramente automáticas do ponto de vista do Python — o silício de rádio e as camadas em que o MicroPython é executado tratam de tudo, desde a escolha de um canal até à retransmissão de um pacote perdido. Três das escolhas que fazem ainda transparecem para a API orientada ao utilizador: potência, alcance e débito.

11.3.1. O rádio¶

O BLE utiliza a mesma banda Industrial-Científica-Médica (ISM) de 2,4 GHz que o Wi-Fi, os fornos micro-ondas e a maioria dos outros dispositivos sem fios de curto alcance. A banda está dividida em 40 canais com 2 MHz de largura.

  • Três dos 40 canais estão reservados para publicidade — transmissões curtas que anunciam a presença de um dispositivo a quem estiver a ouvir. Estão espaçados pela banda para que um ouvinte possa percorrê-los os três rapidamente e para que a interferência em qualquer um deles tenha pouca probabilidade de retirar o dispositivo do ar completamente.

  • Trinta e sete são canais de dados. Assim que dois dispositivos se ligam, trocam pacotes nestes canais, saltando entre eles numa sequência pseudo-aleatória acordada pelas duas partes no momento da ligação. O adaptive frequency hopping permite que qualquer dos lados marque um canal como mau (forte interferência Wi-Fi, micro-ondas, rede BLE vizinha) para que a sequência o ignore.

A horizontal frequency axis from 2400 MHz to 2480 MHz with 40 narrow channel slots drawn on it. Three of the slots, at the bottom edge, middle, and upper edge of the band, are highlighted as "advertising channels". The remaining 37 are labelled "data channels".

Os 40 canais BLE na banda de 2,4 GHz. Três destinam-se à publicidade, os restantes transportam tráfego numa ligação aberta.¶

O rádio transmite pacotes breves — no máximo alguns milissegundos — e fica em modo de suspensão no intervalo. Essa suspensão é o que torna a tecnologia de baixo consumo. Um periférico BLE típico passa bem menos de um por cento do seu tempo a transmitir efetivamente; o resto é o rádio desligado entre eventos agendados.

11.3.2. A camada de ligação¶

A camada de ligação é a menor unidade do BLE que comunica com a sua contraparte noutro dispositivo. Trata de quatro tarefas.

  • Enquadramento de pacotes. Cada pacote transporta um cabeçalho curto (endereço de acesso ao canal, comprimento do pacote, bits de controlo), um payload e um CRC. O recetor verifica o CRC e descarta tudo o que estiver corrompido.

  • Endereçamento. Cada 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 atribuído pelo fabricante, rastreável para sempre. Alguns são aleatórios — gerados no dispositivo, rotacionados periodicamente e opcionalmente encriptados para que um intruso não consiga ligar duas transmissões ao mesmo hardware físico. Os endereços voltam a aparecer em Publicidade e pesquisa.

  • Agendamento de ligações. Assim que dois dispositivos se ligam, a camada de ligação agenda eventos de rádio periódicos na sequência de salto — separados por um intervalo de ligação fixo — e compacta todos os dados enfileirados da camada GATT acima em cada um. Ambos os lados voltam ao modo de suspensão entre eventos. O intervalo de ligação é um parâmetro que a aplicação pode solicitar (ver Ligações).

  • Fiabilidade. Cada pacote numa ligação é confirmado pelo outro lado. A camada de ligação retransmite tudo o que não obteve resposta, de modo que as camadas acima vejam um fluxo de bytes ordenado e sem perdas. Ao contrário do UDP – envia um pacote e torce para o melhor no lado da rede, o BLE não tem um modo não fiável separado em utilização normal — cada pacote numa ligação aberta é reenviado até chegar ou até a ligação ser declarada perdida.

A camada de ligação é também onde a encriptação é executada assim que um par de dispositivos concordou com uma chave durante o emparelhamento (ver Emparelhamento e vinculação). Cada pacote numa ligação encriptada é desencriptado no recetor antes de as camadas acima o verem.

11.3.3. O que a câmara e um par partilham¶

Os rádios em ambas as extremidades acordam no momento da ligação num conjunto de parâmetros que regem a conversa:

  • O intervalo de ligação — com que frequência os dois lados acordam para trocar pacotes, entre 7,5 ms e 4 s.

  • A latência do periférico — quantos intervalos consecutivos o periférico pode saltar se não tiver nada a dizer, para poupar energia.

  • O timeout de supervisão — quanto tempo cada lado espera antes de declarar a ligação perdida quando o outro fica silencioso.

  • O MTU — o maior pacote único que qualquer dos lados entregará ao GATT (predefinição de 23 bytes, pode ser negociado para cima).

O rádio e a camada de ligação em conjunto são responsáveis por entregar pacotes fiáveis e ordenados de um dispositivo para outro, mantendo ambos os rádios desligados o máximo de tempo possível. Cada camada acima pode comportar-se como se existisse um canal de bytes limpo e privado entre os dois extremos.

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

Quase nada. As APIs bluetooth e aioble não expõem canais, sequências de salto, CRCs de pacotes ou temporizadores de retransmissão; estes são todos tratados dentro do port BLE e do rádio. As partes que transparecem são as que a negociação no momento da ligação expõe — intervalo de ligação, MTU, tipo de endereço.

Anterior
11.2. A pilha BLE
Próximo
11.4. Publicidade e pesquisa

Para o firmware OpenMV v5.0.0 · baseado em MicroPython v1.28 · documentação compilada em 18 de junho de 2026 · Copyright © 2014-2026 por OpenMV, Damien P. George e outros.

Criado com Sphinx usando o tema Shibuya.