Criar uma campainha de porta Wi-Fi com um Raspberry Pi Pico W

Raspberry Pi Pico W projecta campainha WiFi e notificação

Aqui está um tutorial simples, mas prático, que o ajuda a compreender como acionar um e-mail para enviar (ou uma notificação para aparecer no seu telefone) quando um botão ligado ao Raspberry Pi Pico W é premido. Assim, pode usar o seu Pico W como uma campainha Wi-Fi!

Através deste projeto, aprenderá a fazer pedidos HTTP para se ligar aos pontos finais do IFTTT.

Vídeo

Peças necessárias

Raspberry Pi Pico W com cabeçalhos

Ligar o Raspberry Pi

botão raspberry pi pico w

Para ligar o Raspberry Pi Pico W ao botão:

  • Ligar um lado do botão a um GPIO14
  • Ligar o outro lado de um botão a um pino de 3,3 V

Note-se que há botões com quatro pinos e botões com dois pinos.

Se tiver um botão de quatro pinos, pode ligar os fios de ligação em ponte na diagonal para garantir que ficam em lados opostos.

Se tiver um pino de dois pinos, basta ligar os pinos opostos.

Configurar o IFTTT para enviar um e-mail

Notificação IFTTT

IFTTT significa IF Tdele, Tgalinha Tchapéu.

Em vez de escrever o seu próprio código, utilizaremos o IFTTT para tornar tudo mais fácil.

Clique aqui para ir para IFTTT.com e registar-se numa conta.

Depois de se registar, clique em "Criar"

Na parte "Se isto", clique em "Adicionar" para configurar um evento. Isto define as condições necessárias para acionar a parte "Then That", que consiste em enviar uma notificação.

No ecrã seguinte, "Escolher um serviço", escreva "Webhooks" e clique nele.

Em seguida, clique em "Receber um pedido Web".

Digite o nome do evento pico_w_request e desloque-se para baixo e "Criar acionador".

Voltará ao ecrã "Se isto, então aquilo". É altura de definir a parte "Then That", por isso clique nela.

Procure o Gmail e clique nele. Em seguida, clique em "Enviar um e-mail a si próprio"

Escolha o seu e-mail.

Depois, escreva um assunto. Nós escrevemos "Alguém tocou à campainha!".

No corpo do texto, duplicámos mais ou menos a mensagem do assunto, exceto que colocámos

{{OccurredAt}} para mostrar a que horas isto foi acionado.

Clique "Criar ação". No ecrã seguinte, clique em "Continuar".

Em seguida, introduza um nome para o Applet. Nós utilizámos "Pico W to Gmail".

Fixe! É altura de clicar em "Concluir".

Configurar o IFTTT para enviar uma notificação para a aplicação do telemóvel

Também pode fazer com que o IFTTT envie uma notificação para a aplicação sempre que alguém tocar à campainha.

O processo é muito semelhante ao processo de notificação por correio eletrónico.

Na parte "If This", escolha "Webhooks" como serviço e selecione "Receive a web request". Introduza um nome para o evento. Utilizámos "door_bell_rang".

Quanto à parte "Depois disso", é aqui que difere.

Em vez disso, escolhe um serviço de "Notificações" e, em seguida, "Enviar uma notificação a partir da aplicação IFTTT".

Quando os campos "If This" e "Then That" estiverem preenchidos, clique em "continue". Introduza um título para a Applet e clique em Concluir.

Encontrar as suas credenciais IFTTT

Agora que tem o applet If-Then configurado, pode proceder à procura das suas credenciais para que o Pico W possa ligar-se ao IFTTT.

Para o efeito:

  • Clique na sua fotografia de perfil no canto superior direito
  • Clique em "Os meus serviços"
  • Clique em Webhooks
  • Clique no botão Documentação.

Verá algumas informações nesta página, incluindo a sua chave secreta.

Ligar o Raspberry Pi Pico W ao IFTTT

Todos o nosso código está agora no nosso repositório Github, que pode encontrar aqui.

Descarregue o código e descompacte-o. Copie o código para o Raspberry Pi Pico W.

É necessário modificar secrets.py.

Substituir ssid com o SSID da sua rede WiFi e, em seguida, coloque a palavra-passe no pw domínio.

Utilize a chave que obteve na secção anterior e cole-a no ficheiro ifttt_keyvalor.

Código da campainha

O código da campainha baseia-se nos tutoriais anteriores. Em resumo, eis o que o código faz:

  • Importação dos pacotes necessários
  • Configura o WiFi e liga-se à rede

Aqui está o código específico da campainha:

door_bell = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)

last_state = False
current_state = False

while True:
    current_state = door_bell.value()
    if last_state == False and current_state == True:
        # Make a GET request to trigger webhook on IFTTT
        # ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
        ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
        request = requests.get(ifttt_url)
        print(request.content)
        request.close()
        time.sleep(2)
    last_state = current_state

Se bem se lembra, ligámos o botão ao GPIO14. Por isso, queremos criar um objeto que leia o valor desse GPIO.

door_bell = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)

Pretendemos que o IFTTT envie uma notificação apenas se o estado mudar de Falso para Verdadeiro. Também queremos evitar que o IFTTT envie várias notificações se o botão tiver sido premido uma vez.

Daí, estas salvaguardas:

last_state = False
current_state = False

while True:
    current_state = door_bell.value()
    if last_state == False and current_state == True:
        # Make a GET request to trigger webhook on IFTTT
        # ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']
        ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']
        request = requests.get(ifttt_url)
        print(request.content)
        request.close()
        time.sleep(2)
    last_state = current_state

O problema é que, quando premimos o botão, podemos mantê-lo premido durante algum tempo sem darmos por isso. Pode parecer um toque para si, mas para o Pico W, podem ser cinco. Por isso, queremos evitar receber cinco notificações.

É aqui que o último_estado e estado_actual variáveis entram.

Quando se prime o botão, estado_actual torna-se Verdadeiro.

Esta ação desencadeia o código que estabelece a ligação com o IFTTT.

Uma vez feito isso, há uma pausa de dois segundos graças a time.sleep(2).

Então, último_estado torna-se Verdadeiro porque assume o valor de estado_actual.

Isto impede, portanto, que quaisquer outros toques gravados accionem mais notificações, uma vez que ambas as variáveis estão agora Verdadeiropor causa desta linha:

  if last_state == False and current_state == True:

Assim que as prensas extra tiverem passado, último_estado retorna a False e, portanto, está pronto para receber um Verdadeiro para ativar novamente a ligação ao IFTTT.

Escolha o seu método de notificação

Agora, é aqui que escolhe o seu caminho.

Se tiver criado uma notificação de envio de correio eletrónico, pode descomentar esta linha:

 # ifttt_url = 'https://maker.ifttt.com/trigger/pico_w_request/with/key/'+secrets['ifttt'_key']

Isto pressupõe que deu ao seu evento o nome "pico_w_request". Caso contrário, altere essa parte do URL para o nome que lhe deu.

Se pretender uma notificação de aplicação, terá de utilizar a linha seguinte:

 ifttt_url = 'https://maker.ifttt.com/trigger/door_bell_rang/with/key/'+secrets['ifttt_key']

O que fazer a partir daqui?

Com este simples projeto, pode ir longe.

Um botão pode ser utilizado para acionar muitas coisas quando se está familiarizado com a interação com APIs.

Por exemplo, é possível programar o botão para aceder à API do Spotify para parar a música ou para saltar uma faixa.

Quer ficar a par das notícias e de outros projectos do Pico? Clique aqui:

Como configuraria esta campainha Wi-Fi Pico de acordo com as suas necessidades?

4 comentários

  1. Tom em Agosto 12, 2022 às 3:06 am

    Saudações

    Queria experimentar alguns dos vossos projectos RPI Pico W, ou seja, o IFTTT send mail e o projeto webpage. Deparei-me com um problema, quando executei o exemplo IFTTT, o programa micropython estava à procura de um módulo 'sockets'. Não consegui encontrar um módulo de sockets para permitir que o programa funcionasse corretamente. Podem aconselhar-me sobre a forma correta de resolver o problema?

  2. [...] 参考にしたサイト:Tutorial da campainha Wi-Fi Raspberry Pi Pico W (solicitações HTTP e IFTTT) [...]

  3. [...] Este projeto não é muito diferente do nosso Tutorial Pico W Doorbell que partilhámos em julho do ano passado. [...]

  4. [...] Quer tornar a sua casa mais inteligente? Um Raspberry Pi pode servir como dispositivo central e periférico na automatização de tudo. Por exemplo, pode transformá-lo numa câmara de vigilância ou num sistema de segurança, pode utilizá-lo como assistente de voz, pode criar um espelho inteligente com ele ou pode utilizá-lo para iluminação inteligente. Pode até utilizá-lo para regar plantas, monitorizar os pássaros no seu quintal ou para uma campainha inteligente! [...]

Deixe um comentário