Neste tutorial, você vai aprender a montar um alarme com aviso por WhatsApp usando a Raspberry Pi Pico 2 W e um sensor de movimento PIR. Vamos abordar a conexão do sensor e de um botão, o uso do MicroPython para acessar a internet e interagir com APIs, além de configurar o serviço CallMeBot para o envio das notificações.
Objetivos
Seguindo este tutorial você vai aprender a:
- Usar uma API gratuita para envio de mensagens via Whatsapp usando a Raspberry Pi Pico 2 W;
- Conectar um sensor de presença (PIR) à Raspberry Pi Pico 2 W;
- Acessar endereços da web usando o MicroPython;
- Tratar um sensor de presença e um botão com MicroPython.
Alarme com aviso por Whatsapp: materiais necessários
Para este projeto você vai precisar de:
- Placa Raspberry Pi Pico 2 W
- Sensor de Movimento e Presença PIR
- Chave Táctil Push-Button
- Jumpers Macho-Macho
- Jumpers Macho-Fêmea
- Protoboard
- Cabo Micro USB
Alarme com aviso por Whatsapp: circuito
A figura abaixo mostra a montagem:
Sobre o sensor PIR utilizado neste projeto é importante ressaltar os seguintes ajustes:
- Ajuste da sensibilidade, que determina a distância de detecção. Ajuste conforme as suas necessidades.
- Ajuste do tempo que o sinal de saída permanece alto após uma detecção. Para este projeto este ajuste não é crítico.
- Opção de trigger: para este projeto vamos usar a opção retriggering (que é o padrão de fábrica).
Este sensor é alimentado por 5 VDC mas sua saída é de 3,3 VDC, portanto podemos ligá-lo diretamente à Pico.
Cadastro no CallMeBot
O CallMeBot é um serviço gratuito para envio de mensagens pelo Whatsapp. É um serviço para uso pessoal, para envio de mensagens exclusivamente para o seu celular.
Para uso do CallMeBot, siga os passos abaixo no seu celular:
1. Cadastre o número +34 621 08 34 84 nos contatos do seu celular (o nome não é importante, sugiro CallMeBot).
2. Usando o Whatsapp, envie a mensagem “I allow callmebot to send me messages” para este contato.
3. Após algum tempo você receberá uma resposta do tipo “CallMeBot API Activated for 5599999999999. Your APIKEY is: 123123”.
4. Anote o valor informado para a APIKEY, você vai precisar dele (e do número do seu celular) no código Python.
Uma vez feito o cadastro, você pode enviar mensagens ao seu Whatsapp através da API do CallMeBot. Esta API é bastante simples: basta realizar uma operação get no endereço api.cakkmebot.com passando como parâmetros o número do telefone, o texto a enviar e a sua apikey.
Você encontra mais detalhes sobre o CallMeBot em https://www.callmebot.com/blog/free-api-whatsapp-messages/.
Alarme com aviso por Whatsapp: código MicroPython
Para seguir com as instruções abaixo, é necessário ter a MicroPython instalado na Raspberry Pi Pico 2 W. Caso ainda não tenha instalado, verifique o passo a passo no post “Estação meteorológica com Raspberry Pi Pico 2 W”.
Agora, Usando a IDE Thonny, salve na placa um arquivo chamado secrets.py com o seguinte conteudo:
ESSID = ‘nome_da_sua_rede’ PASSWD = ‘senha_da_sua_rede’ CELULAR = ‘numero_do_seu_celular’ APIKEY = ‘apikey_callmebot’
Atenção que o número do celular deve ter o código do país (55) e de área, como na mensagem enviada pelo CallMeBot.
O código principal pode ser salvo como alarme.py ou main.py (se você quiser que ele rode automaticamente quando a placa for alimentada).
from secrets import ESSID, PASSWD, CELULAR, APIKEY from machine import Pin from time import sleep import urequests import network CALL_ME_BOT = 'https://api.callmebot.com/whatsapp.php' # Inicia o LED led = Pin("LED", Pin.OUT) led.off() pisca = False # Inicia os sendores botao = Pin(15, Pin.IN, Pin.PULL_UP) pir = Pin(16, Pin.IN) # Acesso à rede wlan = network.WLAN(network.STA_IF) # Inicia alarme ativo = False # Conecta à rede WiFi def conectaWiFi(): wlan.active(True) wlan.connect(ESSID,PASSWD) espera = 15 # timeout para conexão while espera > 0: if wlan.status() < 0 or wlan.status() >= 3: break espera -= 1 sleep(1) return wlan.status() == 3 # Ativa o alame def ativaAlarme(): global ativo print ('Ativando alarme') sleep(30) # tempo para sair de perto ativo = True led.on() print('Alarme ativo') # Desativa o alame def desativaAlarme(): global ativo ativo = False led.off() print('Alarme inativo') # Pisca o LED para indicar que não conectou def piscaLEDWiFi(): while True: led.on() sleep(1) led.off() sleep(1) # Envia mensagem de disparo ao Whatsapp def avisaDisparo(): msg = 'Disparo%20do%20Alarme' url = f'{CALL_ME_BOT}?phone={CELULAR}&text={msg}&apikey={APIKEY}' print ('Acessando: '+url) try: r = urequests.get(url) status = r.status_code if status == 200: print ('Sucesso') print(r.text) else: print (f'Erro HTTP {status}') print(r.text) except Exception as e: print (f'Erro: {e}') status = -1 finally: r.close() return status == 200 print ('Aguardando conexão à rede WiFi') if not conectaWiFi(): print ('Não conseguiu conectar à rede WiFi') piscaLEDWiFi() print ('Conectado à rede WiFi') ativaAlarme() while True: if pisca: led.value(1 - led.value()) if ativo and (pir.value() == 1): print('Alarme disparado') desativaAlarme() if not avisaDisparo(): pisca = True if not ativo and (botao.value() == 0): print('Apertou o botao') while botao.value() == 0: sleep(0.1) print('Soltou o botao') pisca = False ativaAlarme() sleep(0.3) # define o ritmo da piscada de erro no aviso
Alarme com aviso por Whatsapp: funcionamento
Dispare a execução pressionando F5 no Thonny com o programa principal aberto (ou simplesmente alimente a placa se você salvou com o nome main.py).
O LED na Raspberry Pi Pico 2 W indica quando o alarme está ativado.
Quando o programa começa a executar, ele vai se conectar à rede WiFi. Feita a conexão bem sucedida, é aguardado 30 segundos (para você sair de perto) e o alarme é ativado (o que é indicado pelo LED aceso).
Ao detectar um movimento, é enviada uma mensagem via Whatsapp e o alarme é desativado (o LED apaga). Para ativá-lo novamente, pressione o botão; o alarme será ativado 30 segundos após você soltar o botão.
Em caso de erro de comunicação, o LED ficará piscando.
Se você estiver ligado ao micro, mensagens de acompanhamento são apresentadas na janela “Shell” do Thonny.
Conclusão
Neste tutorial você viu como montar um alarme simples, que detecta a presença de pessoas e avisa através do Whatsapp. Para isto você aprendeu diversas coisas, como o uso de um sensor de presença PIR e o acesso a APIs web simples.
Alterando o código você pode mudar o comportamento do alarme (por exemplo, reativar automaticamente depois de algum tempo). Uma sugestão de aperfeiçoamento é acrescentar mais sensores e uma sirene. Você pode também substituir o aviso via Whatsapp por outras chamadas a APIs.
Gostou deste projeto? Conta para gente nos comentários!
E para não perder nenhum conteúdo como este, não deixe de nos seguir no Instagram.
O post Construa um alarme com aviso por Whatsapp apareceu primeiro em MakerHero.