Quantcast
Channel: MakerHero
Viewing all articles
Browse latest Browse all 427

Construa um alarme com aviso por Whatsapp

$
0
0

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.

 alarme com aviso por WhatsApp usando a Raspberry Pi Pico 2 W

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:

Alarme com aviso por Whatsapp: circuito

A figura abaixo mostra a montagem:

Circuito eletrônico

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).

Cadastro no 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.

Cadastro no CallMeBot

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.

Cadastro no CallMeBot

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.


Viewing all articles
Browse latest Browse all 427

Latest Images

Trending Articles