Botão IoT com Raspberry Pi Zero W e IFTTT 19

Você já deve saber que IoT significa Internet das Coisas, onde os objetos, sejam eles eletrodomésticos, máquinas ou sensores geram dados que são enviados e processados na nuvem. Com esses dados podemos tomar decisões de controle, gerar estatísticas e até mesmo interligar serviços da nuvem. Um exemplo bem interessante dessa rede de dispositivos é o Amazon Dash Button.  Basicamente é um botão IoT que, quando apertado, se conecta ao site da Amazon e realiza uma compra online de determinado produto que então é entregue na sua casa. Tudo isso sem a necessidade de ligar o computador, navegar na Web, procurar o produto, digitar o número do cartão de crédito e etc. Cada botão funciona com um determinado produto, por exemplo, sabão em pó. Basta colocar o botão perto da máquina de lavar e apertá-lo quando o sabão em pó estiver acabando. Então a compra e entrega são realizados automaticamente.

Demostração Amazon Dash button

Amazon Dash button IoT

Neste tutorial iremos mostrar como você pode criar seu próprio Botão IoT com uma Raspberry Pi Zero Wireless e poucos componentes adicionais. Mostraremos como integrar o botão a serviços de nuvem usando o IFTTT. No final do tutorial você será capaz de enviar e-mails, SMS e muito mais apenas apertando um botão!   

Construção do botão IoT

O Botão IoT consiste basicamente de um push button e um LED para indicar os estados, ambos conectados a uma Raspberry Pi Zero Wireless. Para montagem você precisará dos seguintes componentes:

A montagem do circuito do Botão IoT é indicada no esquemático abaixo:

Circuito Botão IoT

É possível ir além e customizar essa montagem com alguns componentes adicionais. Aqui na MakerHero nós desenvolvemos um pequeno Hat (shield para Raspberry Pi) já com as conexões necessárias e colocamos tudo dentro de uma caixa plástica ABS. Para fazer o Hat utilizamos uma placa fenolite perfurada dupla face que já tem o tamanho ideal de 3x7cm.

HAT Botão IoT para Raspberry Pi Zero

HAT Botão IoT na caixa

Projeto Botão IoT na caixa

Um pouco sobre a plataforma IFTTT

IFTTT é um acrônimo para “If This, Then That”, que na tradução para o potuguẽs seria, “Se Isso, Aquilo”. Com IFTTT é possível interconectar dois serviços da Web para realizar tarefas determinadas pelo usuário. Veja os exemplos abaixo:

“Se receber um e-mail no Gmail, enviar um SMS com o assunto do e-mail”
“Se postar uma foto no instagram, postar a mesma foto no facebook”
“Se tem previsão de chuva para o dia, enviar uma notificação”
“Se sair de casa, desligar o WiFi do celular”

Ou você pode controlar dispositivos IoT como lâmpadas inteligentes usando algo do tipo:

“Se o sol se por, desligar lâmpadas da casa”
“Se o portão da garagem abrir, ligar lâmpada da garagem”

As interconexões vistas acima são chamadas de “Applets”. Basta acessar http://ifttt.com e criar uma conta para criar seus próprios Applets. Clique em Get started e escolha sua conta do Facebook ou Gmail.

IFTTT - Criando conta

Explore os serviços do IFTTT e tente criar um Applet da seguinte maneira:

“Se receber um e-mail no Gmail, enviar um SMS com o assunto do e-mail”

O serviço Webhooks do IFTTT

O IFTTT tem um serviço chamado Webhooks que nos possibilita trabalhar com protocolo HTTP. Sendo assim poderíamos criar um Applet da seguinte maneira:

“Se houver requisição Web HTTP, faça alguma coisa”

Vamos começar criando um novo Applet. Clique em seu nome de usuário e New Applet.

IFTTT - Novo Applet

Em +this colocaremos um Webhook que recebe uma requisição HTTP e em +that colocaremos envio de SMS.

Clique em +this. Pesquise e selecione o serviço Webhooks. Escolha o evento Receive a Web Request. Configure o nome do evento como button_pressed e então clique em Create Trigger.

IFTTT - Novo Applet Webhooks

Para configurar o restante do Applet clique em +that. Pesquise e selecione o serviço Android SMS. Escolha o evento Send an SMS. Coloque o número para o qual o SMS será enviado e também a mensagem do SMS e clique em Create action.

IFTTT - Novo Applet Android SMS

Se você ainda não possui o aplicativo IFTTT instalado em seu smartphone, pode baixá-lo aqui (versão Android). Ele é necessário para que o envio de SMS funcione. O SMS será enviado do celular onde o aplicativo IFTTT está instalado para o número indicado acima.

Agora nosso Applet está ativado e pronto para receber requisições HTTP. Podemos fazer um teste entrando na documentação do Webhooks. Para isso procure pelo serviço Webhooks no campo de pesquisa e clique no botão Documentation.

IFTTT - Documentação Webhooks

Você será levado a uma página contendo sua chave de segurança(TOKEN), um campo para colocar o nome do evento e um botão para testar o evento. O nome do evento deve ser o mesmo que configuramos anteriormente, button_pressed.

IFTTT - Teste Requisição HTTP Webhooks

É possível também utilizar o Curl pela linha de comando para realizar a requisição HTTP, lembrando de inserir seu TOKEN do IFTTT.

curl -X POST https://maker.ifttt.com/trigger/button_pressed/with/key/SEU_TOKEN_AQUI

Ao clicar no botão teste ou executar o Curl, você deve receber um SMS com a mensagem configurada anteriormente, “Botão pressionado!”.

Programando o Botão IoT

Agora que nosso Applet do IFTTT está funcionando corretamente, é hora de programar o botão IoT para fazer a requisição HTTP automaticamente.

Utilizaremos a linguagem Shell Script que é usada para manipular comandos da linha de comando automaticamente.

Crie um arquivo chamado botao-iot.sh em qualquer pasta do sistema da Raspberry Pi. Dentro dele coloque o seguinte conteúdo, lembrando de colocar seu Token do IFTTT Webhooks:

#!/bin/bash

# Pinagem WiringPi(pinos fisicos LED=7, BOTAO=18)
BOTAO=7
LED=5

# Inicializa os GPIOs
gpio mode $BOTAO up
gpio mode $LED out

while :
do
    # Verifica se o botão foi pressionado
    if [ $(gpio read $BOTAO) -eq 0 ]; then
        curl -X POST https://maker.ifttt.com/trigger/button_pressed/with/key/SEU_TOKEN_IFTTT_AQUI
        for i in `seq 1 10`;
        do
            gpio write $LED 1
            sleep 0.1
            gpio write $LED 0
            sleep 0.1
        done
        sleep 1
        # Espera o usuário liberar o botão antes de terminar
        while [ $(gpio read $BOTAO) -eq 0 ]; do continue; done
    fi
done

O script acima basicamente fica esperando o botão ser pressionado. Quando o botão é pressionado o comando curl é executado realizando a requisição HTTP. O LED também irá piscar. Logo após, um SMS deve ser recebido no celular.

Para executar o script, é necessário torná-lo executável com chmod e iniciá-lo com “./”

chmod +x botao-iot.sh
./botao-iot.sh

Veja abaixo o sistema do Botão IoT em ação.

Projeto Botão IoT em Ação

Agora você pode criar outros Applets como por exemplo, enviar um e-mail ao pressionar o botão, postar um tweet, enviar mensagem no Telegram e etc. São muitas possibilidades!

Gostou do Botão IoT com Raspberry Pi Zero W? Deixe seu comentário logo abaixo. 

Faça seu comentário

Acesse sua conta e participe

19 Comentários

  1. Oi amigo,

    Uma dúvida…

    Eu tenho o seguinte projeto: Estou usando um sensor ultrassônico e o objetivo do sensor é “me dizer” se o carro está tombado ou não… ele funciona da seguinte forma: Se o sensor detectar algo em até 40 cm, significa que o carro está OK. Se caso a distância for maior que 30cm, ele dispara um trigger pelo IFTTT e me manda uma mensagem pelo celular.
    A programação no ESP está OK, e a receita no IFTTT também está ok.
    A minha dúvida é como eu faço para acionar o trigger no ifttt.

    Esse é meu código:

    #include
    #define pino_trigger D1
    #define pino_echo D2

    Ultrasonic ultrasonic(pino_trigger, pino_echo);

    void setup()
    {
    Serial.begin(9600);
    Serial.println(“Lendo dados do sensor…”);
    }

    void loop()
    {

    float cmMsec;
    long microsec = ultrasonic.timing();
    cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
    if (cmMsec <=30)
    {
    Serial.println("CARRO OK");
    }
    else{
    Serial.println("CARRO TOMBOU");
    }
    delay(1000);
    }

    Como eu faria para acionar o trigger no IFTTT? Eu poderia jogar o o link do meu trigger dentro de uma condição do IF?
    Assim com você fez?: curl -X POST https://maker.ifttt.com/trigger/ESP_Ultrasonic/with/key/MEU_TOKEN_IFTTT_AQUI ?

    1. Se você conseguisse me dar uma luz nisso eu agradeceria. Porque eu to batendo a cabeça. Vi alguns tutoriais que dizem para usar um código “base” para chamar o trigger no ifttt, porém não está dando em nada. Percebi que seu código para chamar o trigger foi muito mais simples do que os que eu vi na internet.

  2. Amigo, me ajuda com algo, eu estou colocando um raspberry pi 3 com um monitor lcd 15 em uma caixa pra usar como totem em uma empresa, o objetivo do projeto é quando apertar um único botão o sistema dar player em um vídeo já salvo no cartão SD, sabe me dizer se nessa aplicação acima dá pra fazer??/

    1. Olá, Israel,

      Confira esse post que fala sobre o modo quiosque, usado em sistemas de Totem 🙂
      https://www.makerhero.com/blog/acesso-remoto-raspberry-pi-modo-quiosque-2/

      Abraços!
      Diogo – Equipe MakerHero

  3. Achei uma otima ideia! Fui tentar fazer, consegui com a protoboard, pois segui o esquema direitinho. Mas com a placa de circuito dupla face nao consegui pois nao consegui fazer as ligações direitinho. Como foi feita a ligação do botão?

    1. Olá Arthur,

      É necessário apenas replicar o que foi feito na protoboard.

      Abraço!
      Equipe – MakerHero

  4. Prezados, perdão a insistência em comentários. Estou fazendo um TCC baseado nesse projeto. Se possível gostaria de mais fotos do dispositivo, pois estou com dúvidas quanto a soldagem dos circuitos. Agradeço a atenção.

    E-mail: [email protected]

    1. Olá,

      Infelizmente não temos mais fotos da placa. Mas a solda pode ser feita seguindo o esquema de ligação 😉

      Abraço!
      Rosana – Equipe MakerHero

  5. Olá, vendo o artigo fiquei com dúvida quanto a fonte de energia, foi via usb correto? usaram uma power bank? Seria possível integrar a fonte de energia junto a placa? Como aquelas baterias pequenas?

    1. Olá,

      Foi usada uma fonte de 5V/2A.

      Abraço!
      Rosana – Equipe MakerHero

  6. Parabéns, ótimo artigo, ajudou muito e muito bem detalhado.
    Tenho uma dúvida, por que usar um raspberry e não um Esp8266? Não ficaria mais em conta?

    1. Poderia ser usado um ESP8266 também! Mas com Raspberry Pi você tem mais versatilidade e possibilidades de trabalhar com redes por usar sistema Linux.

      Abraço!

  7. Bom dia, como foi feita a furação da caixa para ligar a fonte de energia?

    1. Olá Bruno!
      Utilizei uma Dremel com broca pequena. Fiz dois furos com uma distância entre eles do tamanho de um conector micro USB. Depois utilizei uma pequena lima pra fazer ajuste fino.

  8. Giovanni

    Um equipamento um pouco mais prático e versátil que eu veria utilidade seria um RPI Zero ligado junto a um painel numérico e um leitor de código de barras. Você teria ele fixado em algum lugar da sua casa e iria fazendo a leitura dos códigos de barra dos produtos que você gostaria de comprar. No fim é só confirmar a compra, assim não precisaria ter um dispositivo por produto. O que acha?

    1. Olá Marcos! Obrigado pela leitura do post!

      Acho uma ótima ideia!

Trackbacks and Pingbacks

  1. […] E como se não bastasse, é compatível com o IFTTT – If This Then That (lit. Se Isso Então Aquilo). Com esse serviço, é possível gerenciar sequências e situações em que você pode acionar ou desligar seu Sonoff. Dessa forma, não é necessário ter tudo manual, certo? Quer saber mais sobre o IFTTT, confira nosso post que faz a utilização desse serviço! […]

  2. […] Para saber mais sobre a plataforma IFTTT acesse o excelente post de Giovanni Bauermeister, Botão IoT com Raspberry Pi Zero W e IFTTT. […]

  3. […] acompanhou em um de nossos tutoriais passados como desenvolver seu próprio Botão IoT com Raspberry Pi Zero W. Um botão que pode ser usado para realizar diversas tarefas de IoT e que se conecta a diversos […]