Automação básica com bluetooth BLE na Raspberry Pi 3

A Raspberry Pi é, indiscutivelmente, uma das plataformas de desenvolvimento mais utilizadas no mundo. O motivo é que, além de sua comunidade muito ativa, a Raspberry Pi conta com muitos recursos de hardware, o que viabiliza uma grande gama de projetos. Um dos recursos mais interessantes dela é o fato de ter Bluetooth (BLE, no caso) já “nativa”. Aproveitando este recurso, este post mostrará como usar um scan bluetooth para fazer uma automação básica e simples usando bluetooth BLE na Raspberry Pi 3.

Material necessário

Para reproduzir este projeto, você precisará de:

Overview do projeto Bluetooth BLE na Raspberry Pi

O projeto de Automação básica com Bluetooth BLE na Raspberry Pi aqui abordado fará o seguinte: periodicamente, um scan do Bluetooth (BLE) será feito. Dele, serão obtidos os nomes dos dispositivos e endereços MAC de todos os dispositivos detectáveis / visíveis. Com base nos dispositivos descobertos, cada um passará por uma rotina de acionamentos, a qual tomará algumas ações dependendo de quem for detectado.

Bluetooth BLE na Raspberry Pi

No caso, as ações serão acionar canais de um módulo de 2 relés, o que poderá facilmente ser convertido em acionamento de quaisquer dispositivos com alimentação AC, como lâmpadas, por exemplo.

Instalação de bibliotecas necessárias

Antes de prosseguirmos, é necessário instalar o pybluez,  para assim conseguirmos interagir com o Bluetooth da Raspbery PI 3 através da linguagem de programação Python. Para isso, execute os seguintes comandos no terminal da Raspberry PI 3:

Descobrindo os endereços MAC de seus dispositivos

Antes de partir para o projeto em si, precisaremos descobrir os endereços MAC dos dispositivos que você possui. Em resumo, o endereço MAC de um Bluetooth é um identificador único, permitindo diferenciar um dispositivo Bluetooth dentre todos os existentes. Portanto, identificar um dispositivo no projeto pelo seu endereço MAC é uma estratégia perfeita para acionamentos personalizados por dispositivo.

Para descobrir os endereços MAC dos seus dispositivos, foi elaborado o programa abaixo, feito em Python.

Copie o código-fonte e salve-o como ScanBLE.py. Para utilizá-lo, siga as orientações:

  1. Ligue os dispositivos Bluetooth que deseja utilizar no projeto. Atente para deixá-los visíveis, caso contrário eles poderão não ser detectados.
  2. Ligue o Bluetooth da Raspberry PI (através da interface gráfica da Raspbian).
  3. Devido ao fato dos dados do Bluetooth na Raspberry PI 3B serem acessíveis somente a quem é super-usuário, execute o programa como sudo. Observe a chamada de execução abaixo:
  4. Os resultados podem demorar algumas dezenas de segundos para aparecer (pois, no programa, cada scan foi programado para durar 20 segundos). Eles aparecerão no formato “Endereço – nome do dispositivo”, conforme imagem a seguir. Anote os endereços e nomes de dispositivos descobertos.

Scan BLE

Circuito esquemático do projeto

O circuito esquemático do projeto pode ser visto abaixo.

Código-fonte do projeto

Abaixo segue o código-fonte do projeto.

Copie o código e salve-o como “AutomacaoBLE.py”.

Observações:

  1. Coloque o endereço MAC de dois dispositivos nas variáveis MACPermitido1 e MACPermitido2, no formato indicado no código-fonte.
  2. Execute o programa como sudo. Observe a chamada de execução abaixo:

Feito isso, basta chegar nas proximidades da Raspberry PI 3 para que um ou mais relés sejam acionados ou se afastar (ou desligar o Bluetooth do dispositivo) para que um ou mais relés sejam desligado. Enfim, hora da diversão!

Gostou? Deixe seu comentário logo abaixo. Em caso de dúvidas, caso queira trocar uma ideia, ou até mesmo dividir seu projeto, acesse nosso Fórum!

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

3 Comentários

  1. Boa tarde Pedro
    Estou tentando fazer alguma coisa relativo a isto mesmo, estou usando 1 beacon para tentar conseguir medir proximidade entre o beacon e o raspberrypi.
    Já fez alguma coisa parecida com isto?
    Obrigado
    Luciano

    Luciano Henrique Albano
    1. Luciano, boa tarde.

      Infelizmente, nunca fiz algo parecido com o que você deseja.
      Mas, dando um palpite, o princípio do que você deseja me parece ser o seguinte: obter a distância em função do RSSI medido no seu receptor (grosso modo, intensidade do sinal Bluetooth).

      Atenciosamente,
      Pedro Bertoleti

Trackbacks and Pingbacks