11.1. Por que Bluetooth

A conexão em rede coloca a câmera em uma rede Wi-Fi ou Ethernet, permitindo que ela se comunique com qualquer dispositivo acessível a partir dali. Um laptop no fim do corredor, um servidor em outro continente, um celular usando dados móveis. Esse alcance tem pré-requisitos. Uma rede precisa existir. Algum ponto de acesso precisa estar dentro do alcance, algumas credenciais precisam estar disponíveis, algum roteador precisa estar disposto a atribuir um endereço à câmera. A câmera também precisa manter o rádio (ou a porta Ethernet) funcionando o suficiente para manter o link ativo.

O Bluetooth atende ao caso oposto – curto alcance, sem infraestrutura, baixo consumo. A câmera e um celular na mesma sala trocam dados por um link de rádio direto, sem nada entre eles. Sem ponto de acesso, sem roteador, sem necessidade de que nenhum dos lados esteja em qualquer rede. O rádio permanece quase sempre desligado entre breves rajadas de atividade, de modo que uma bateria que mal sobreviveria a um dia em Wi-Fi pode durar meses.

11.1.1. Quando o Bluetooth é a ferramenta certa

Os casos comuns em uma câmera:

  • Um celular ou tablet emparelha com a câmera. Um usuário próximo abre um aplicativo no celular e configura a câmera, lê seu status ou baixa resultados – sem antes colocar ambos os dispositivos na mesma rede Wi-Fi. A maioria dos celulares fala Bluetooth Low Energy nativamente, então a experiência do usuário é “abrir o aplicativo, pressionar conectar”, e não “primeiro entre nesta rede”.

  • Um wearable ou sensor reporta à câmera. Uma cinta de frequência cardíaca, um termômetro, um beacon, uma chave de contato – todos são dispositivos alimentados por bateria projetados em torno do Bluetooth Low Energy. A câmera se conecta como cliente, lê seus valores e incorpora os dados ao que mais estiver fazendo.

  • A câmera publica um pequeno feed de status. Nível de bateria, último objeto detectado, taxa de quadros – alguns números expostos para qualquer dispositivo próximo que queira lê-los. O emparelhamento é opcional; para dados não sensíveis, a câmera pode anunciar os valores diretamente, sem necessidade de qualquer conexão.

  • Duas câmeras (ou uma câmera e um microcontrolador) compartilham dados sem uma rede. Ambas as pontas se conhecem; ambas estão no mesmo prédio; não há motivo para os bytes subirem até a nuvem e descerem de volta para cruzar a sala.

11.1.2. Quando a conexão em rede é a ferramenta certa

As compensações do Bluetooth são inadequadas para vários casos comuns:

  • Contrapartes fora de alcance. O Bluetooth Low Energy alcança alguns metros na prática, e dezenas de metros em espaço livre na melhor das hipóteses. Qualquer coisa do outro lado de um prédio, do outro lado da cidade ou através da internet precisa de Wi-Fi ou Ethernet.

  • Links de alta largura de banda. O Bluetooth Low Energy entrega de dezenas a algumas centenas de kilobits por segundo na prática. Transmitir quadros ou qualquer vídeo significativo precisa de Wi-Fi.

  • Comunicação em grupo muitos-para-muitos sobre infraestrutura compartilhada. Uma sala cheia de dispositivos que conversam todos com um servidor, ou uma malha de câmeras compartilhando resultados – esse padrão é exatamente para o que uma rede IP foi feita.

11.1.3. Low Energy, não o clássico

“Bluetooth”, no uso casual, abrange duas pilhas de rádio distintas. O Bluetooth clássico é o dos fones de ouvido sem fio, do áudio automotivo e dos links de teclado / mouse: um rádio de qualidade de voz e áudio, uma pilha comparativamente complexa e um consumo de energia perceptível. O Bluetooth Low Energy (BLE) é um protocolo separado e mais novo que compartilha a marca e a banda de 2,4 GHz, mas muito pouco além disso. Ele é construído em torno de rajadas de rádio curtas e pouco frequentes para manter a energia média mínima, e em torno de um modelo de dados chave/valor em vez de áudio em streaming.

O MicroPython na câmera suporta apenas o BLE. O Bluetooth clássico não faz parte da API de forma alguma. “Bluetooth” daqui em diante significa BLE.

11.1.4. O que muda em relação ao modelo de rede

O BLE tem a mesma pilha de cinco camadas que a rede tinha, mas as camadas superiores se comportam de forma diferente:

  • Não há a abstração de “abrir um socket e enviar bytes”. O BLE é construído em torno de um pequeno banco de dados chave/valor que um lado hospeda e o outro lado lê, escreve ou assina. A câmera publica valores nomeados (um nível de bateria, uma temperatura, um registrador de comando); o par lê ou observa esses valores.

  • Não há endereçamento por nome. Os dispositivos se identificam anunciando uma breve transmissão que descreve quem são; os pares varrem (scan) essas transmissões e escolhem uma para se conectar.

  • O rádio fica quase sempre ocioso. Ambas as pontas combinam, no momento da conexão, com que frequência acordar e conversar. No intervalo, ambas voltam a dormir.

Essas três diferenças são o que afasta o restante da API do BLE do modelo de socket.