Use o Blynk com Raspberry Pi e Python
Aqui no Arduino e Cia já vimos como usar o Blynk com Arduino e também com ESP32, e ele se mostrou uma eficiente ferramenta para controlar o seu projeto à distância. Hoje vamos mostrar como isso também pode ser feito com outra famosa placa, usando o Blynk com Raspberry Pi.
O uso do Blynk permite que você não só controle o seu projeto remotamente como também receba dados, podendo ser usado em conjunto por exemplo com um sistema de alarme e monitoramento. Vamos ver então como enviar e receber dados da Raspberry Pi usando o Blynk.
Circuito de exemplo do Blynk com Raspberry Pi
Para implementar os programas e exemplos deste post eu recomendo que você já esteja com a sua placa Raspberry Pi configurada e o Raspbian (sistema operacional) rodando normalmente. Se tiver dúvidas em como configurar a sua placa, dê uma olhada neste post que vai mostrar como instalar o Raspbian no cartão SD.
No nosso exemplo, vamos conectar dois leds na GPIO da placa Raspberry Pi 3 B+ e controlar esses leds por meio de botões no app do smartphone. Teremos também no app um mostrador que será atualizado a cada 30 segundos com o valor da temperatura da CPU da placa.
O circuito abaixo usa apenas dois leds e dois resistores (usei resistores de 330 ohms) para limitar a corrente. O led vermelho será conectado no pino 8 (GPIO14) e o led verde no pino 12 (GPIO18), conforme o esquema abaixo:
Com o circuito montado, vamos agora configurar o app e cuidar da programação em python.
Configurando o app Blynk no smartphone
Se você ainda não usou o Blynk dê uma olhada no post Use o Blynk para controlar o Arduino via bluetooth. Lá eu explico mais sobre como funciona o app, como realizar a instalação e também as configurações iniciais.
Para criação do projeto, selecione New Project na tela inicial. Na tela seguinte, defina um nome para o projeto, selecione a placa Raspberry Pi 3 B e a conexão Wifi:
Clique em CREATE e você receberá um aviso informando que um token foi enviado para o seu email. Nós vamos utilizar esse token posteriormente no nosso programa em Python.
Na tela seguinte (layout), clique no sinal de + para adicionar dois botões na tela:
Para mover um botão na tela ou redimensioná-lo, mantenha o botão pressionado e arraste de acordo com a sua preferência. Clique no primeiro botão e na tela Button Settings selecione o pino virtual V1 conforme a imagem abaixo. Volte para a tela anterior e faça o mesmo procedimento para o segundo botão, escolhendo o pino virtual V2:
Na tela de layout, selecione mais uma vez o botão com o sinal de + e adicione agora o componente Gauge, configurando para ele o pino virtual V3 e atualização a cada 30 segundos:
Terminada a configuração do app, clique no botão de “play” na parte superior direita da tela de layout. Com isso, o nosso programa já estará rodando e apenas aguardando a configuração do token dentro do Raspberry para realizar a conexão.
Instalação biblioteca BlynkLib e programa Python
Antes de instalar as bibliotecas necessárias, vamos realizar aquele bom e velho upgrade no Raspbian. Para isso utilize os comandos abaixo:
sudo apt-get update sudo apt-get upgrade
A atualização deve demorar alguns (bons) minutos, e em seguida utilize os comandos a seguir para instalar a biblioteca BlynkLib e também a gpiozero, que será utilizada para mostrar a temperatura da CPU:
sudo pip install blynk-library-python sudo pip install gpiozero
Finalizada a instalação, abra um editor de textos na Raspberry Pi (como o nano, por exemplo) e coloque dentro dele este programa em Python, salvando o arquivo com a extensão py. No nosso caso, o nome do programa ficou como blynkrasp.py.
Não esqueça de colocar na linha 15 do programa o token que você recebeu por email. É esse token que vai permitir a conexão com o app no smartphone.
#Programa: Blynk com Raspberry Pi #Autor: Arduino e Cia import BlynkLib import RPi.GPIO as GPIO from gpiozero import CPUTemperature GPIO.setmode(GPIO.BCM) # Define as GPIOs 14 e 18 como saida GPIO.setup(14, GPIO.OUT) GPIO.setup(18, GPIO.OUT) # Inicializa Blynk blynk = BlynkLib.Blynk('seu token aqui') # Registra os pinos virtuais @blynk.VIRTUAL_WRITE(1) def my_write_handler(value): print('Valor de V1: {}'.format(value[0])) #Acende ou apaga o led vermelho, dependendo #do valor recebido if value[0] >= "1": GPIO.output(14, 1) else: GPIO.output(14, 0) @blynk.VIRTUAL_WRITE(2) def my_write_handler(value): print('Valor de V2: {}'.format(value[0])) #Acende ou apaga o led verde, dependendo #do valor recebido if value[0] >= "1": GPIO.output(18, 1) else: GPIO.output(18, 0) @blynk.VIRTUAL_READ(3) def my_read_handler(): #Envia o valor da temperatura da CPU cpu = CPUTemperature() print(cpu.temperature) blynk.virtual_write(3, cpu.temperature) while True: blynk.run()
Execute o programa usando o comando
sudo python blynkrasp.py
O programa vai utilizar as portas virtuais 1, 2 e 3 para comunicação com o app Blynk no smartphone. As portas virtuais 1 e 2 vão receber os dados do app, acionando as GPIOs 14 (pino 6) e 18 (pino 12) da Raspberry Pi, respectivamente. Já a porta virtual 3 irá enviar para o app, quando solicitado, a temperatura da CPU da Raspberry Pi, lida do sensor embutido na placa
Lembrando que da mesma forma que acionamos dois leds podemos usar o mesmo princípio para conectar por exemplo relés na GPIO, tendo assim um eficiente sistema de automação residencial de baixo custo.
Gostou? Então confira outros posts com Blynk aqui no blog!
Espetacular! Instalação/configuração fácil, projeto rodando tanto dentro do WIFI quanto pela web e em menos de 15 minutos! Estou maluco de ansiedade esperando minha RPi Zero chegar.
Muito obrigado pela matéria, galera da Arduino e CIA!!!
Fala Wanderson!
Haha! a Pi Zero é muito legal.. em breve vou abordar alguns projetos com ela.
Abraço!
Adilson
fiz o passo a passo sem problemas, executei o programa na placa sem problemas (aparece no terminal Blynk for python v 0,2,0 – linux), mas no app aparece que a placa não está on-line… o que poderia ser?
Oi Fausto,
Pode ser algo no token. Você recebeu o token por email?
Abraço!
Adilson
Fala pessoal, podem me ajudar com o script?
Tenho um PI Zero W rodando o Blynk Server, e um PI 3 B que desejo conectar ao server.
Eu baixei o apk no Smartphone, fiz o login no servidor local e recebi o token mas, ao executar o script no PI3 ele informa que o token está invalido.
Eu acredito que seja por que o script tenta se conectar com o servidor Web do Blynk e não meu servidor local.
Sabem como posso apontar meu servidor local no script py?
Oi Celso,
Eu ainda não usei o Blynk dessa maneira (versão server), mas achei um artigo que pode te ajudar: https://community.blynk.cc/t/manual-set-auth-token-on-the-local-server/33637/6
Abraço!
Adilson
como controlar mais leds com o mesmo programa do tutorial?