Monitor do Portão de Garagem (com o Blynk App!)

Esqueceu o portão da garagem aberto? Não fique encanado. Seja avisado e monitore-o em tempo real com o Blynk e Thingspeak.

 

O Projeto

 

A ideia de um projeto nasce de uma necessidade real, normalmente. Satisfeita a necessidade, a ideia deste artigo nasceu de “Ops, acho pode ser útil a mais gente”. Com isso em mente, relatamos aqui um projeto simples de um monitor de portões eletrônicos de garagem.

 

Já saiu de casa algumas vez e não lembra se fechou o portão? Ou será que alguém possa tê-lo esquecido aberto? Eu, Tiago, já passei por isso algumas vezes e – acredite – é bem comum esquecermos o portão aberto, principalmente quando moramos com muitas pessoas.

 

Algum tempo atrás eu e o Ronaldo Nunez escrevemos um artigo para apresentar o Blynk aqui mesmo no Embarcados , recomendamos que leiam a introdução ao Blynk para melhor se familiarizar com este projeto. Aliás, eu e o Ronaldo Nunez estaremos na Campus Party Brasil 2019 apresentando um workshop sobre o Blynk: dia 16/fev às 15h .

 

Agora, apresentamos aqui uma aplicação que utiliza o Blynk - além de outras coisinhas – para monitorar o portão elétrico de uma residência. Este projeto foi fortemente inspirado no projeto Garage Door Status Monitor with Alert to SMS / Text. Vamos lá!

 

 

O Conceito

 

A ideia do projeto é muito simples: boa parte dos portões eletrônicos possuem um relé para indicar se o portão está aberto ou fechado na central de controle do motor do portão. A partir da leitura deste relé, o monitor do portão de garagem vai relatar continuamente o estado do portão via WiFi para o Blynk – onde será possível visualizar o estado atual do portão pelo App personalizado que criaremos – e também enviar um e-mail para notificar que o portão está/ficou aberto por alguns minutos, nos alertando para fechá-lo. Quando fechado, também será enviada uma notificação por e-mail. Finalmente (e por que não?), iremos também enviar esta leitura do estado atual do portão para o Thingspeak, onde poderemos monitorar o estado do portão por um gráfico disponível na internet. A Figura 1 a seguir exibe a ideia geral do projeto.

 

Figura 1 - Conceito Geral do Monitor do Portão de Garagem

 

 

O Hardware

 

Para este projeto utilizaremos a Launchpad CC3200, da Texas Instruments. O Hardware foi escolhido por ser “o que tínhamos em mãos”. No entanto, o código pode ser compilado diretamente para dispositivos baseados no ESP8266 e facilmente adaptado para outras placas (ESP32, Arduino, Raspberry Pi). Esta é uma das grandes vantagens do Blynk: ele suporta mais de 400 placas de desenvolvimento!

 

Figura 2 - Launchpad do CC3200

 

Leitura do Estado do Portão

 

A leitura do estado do portão será feita através de um pino do CC3200 configurado como entrada. O mesmo pode ser feito com qualquer outro hardware - Arduino, ESP32, ESP8266 – bastando nos atentarmos à lógica de leitura. O relé do portão eletrônico de garagem atua, normalmente, como uma chave simples (SPST). Ou seja, quando o portão está aberto (ou fechado, dependendo da lógica do portão) o relé fecha o contato de uma extremidade do relé à outra.

 

Assim, é necessário definir um estado inicial para quando o portão estiver fechado – por exemplo, um nível lógico zero – e outro estado quando o relé estiver fechado. Precisaremos, então, de um resistor de pull-down (ou pull-up) para manter o estado do pino em baixo (ou alto) quando o portão estiver fechado (ou aberto), conectando uma extremidade do relé ao pino de leitura e a outra no VCC (ou GND) da placa. Pareceu confuso? Vou explicar melhor com um exemplo. Esta lógica deverá ser ajustada também no software para que seja possível identificar quando o portão está aberto ou fechado.

 

 

Exemplo de Controlador do Portão com o CC3200

 

O controlador do portão de casa que utilizaremos neste exemplo é o modelo GATTER 3000 da Peccinin. Normalmente, os controladores possuem uma função chamada “Luz de Cortesia”, que é na verdade uma chave simples de um relé. Procure pelo manual do fabricante de seu portão eletrônico. Em nosso exemplo, temos identificado no manual:

 

Figura 3 - Sessão do Manual do Portão Eletrônico Gatter 3000

 

A Figura 3 indica a posição dos terminais do relé nos bornes de controle. Medindo-se a continuidade com um multímetro, pode-se verificar que os contatos NA e C são fechados quando o portão é aberto.

 

Voltando-se agora para o hardware da Launchpad CC3200, identificamos que a GPIO22 está ligada a um resistor de pull-down (R128 na Figura 4 a seguir). Este pino é ligado também ao botão táctil SW2 da Launchpad. De modo a aproveitar o hardware já disponível, utilizaremos o mesmo pino para ligá-lo ao relé do controlador do portão. Para tal, o relé atua de forma semelhante à chave tátil: ou seja, uma extremidade do terminal do relé (C, por exemplo) é conectada ao VCC da Launchpad CC3200, enquanto que a outra extremidade (NA) é conectada à GPIO22.

 

Assim, considerando o controlador do portão eletrônico GATTER 3000 e o hardware CC3200, a placa fica continuamente no nível lógico 0 enquanto o portão estiver fechado (e, consequentemente, os contatos do relé abertos) através do resistor de pull-down. Por outro lado, quando o portão é aberto o relé fecha o contato entre seus terminais, conectando o pino GPIO22 ao VCC e, portanto, impondo nível lógico 1 para esta situação. Portanto, é através da interpretação destes níveis que nosso programa consegue identificar se o portão está aberto ou fechado e enviar notificações aos usuários.

 

Figura 4 - Switches no Hardware da Launchpad CC3200

 

 

Alimentação e Instalação

 

As placas de desenvolvimento normalmente possuem a opção de serem alimentadas com 5V, uma vez que são alimentadas pelo USB do computador. Não é diferente com a Launchpad CC3200: ela pode ser alimentada pelo USB (5V), embora o VCC que indicamos na placa seja 3,3V: normalmente as placas de desenvolvimento (Arduino/Raspberry Pi/ESP8266/ESP32) recebem 5V e contam com um regulador de tensão para alimentar o microcontrolador. Desta forma, para este projeto foi utilizada uma fonte de 5V para alimentar o monitor do portão de garagem: um carregador de celular antigo serve bem à função!

 

Todo o sistema pôde ser instalado junto ao controlador do portão. É comum haver espaço sobressalente dentro da proteção plástica e, assim, é possível afixar o hardware e a fonte de alimentação diretamente no controlador: certifique-se que há uma alimentação AC (da rede de energia) e que o Wi-Fi de sua residência esteja disponível no local de instalação e mãos à obra! (Calma, não ainda: precisamos gravar o software antes...)

 

 

O Software Embarcado

 

Como dissemos anteriormente, o projeto do monitor de portão de garagem foi inspirado em um projeto postado no Hackster.io. No entanto, o projeto original não refletia nossas necessidades: precisávamos de um sistema que pudesse armazenar um histórico dos dados do portão e também nos avisar prontamente assim que o portão ficasse aberto durante um tempo (“será que alguém esqueceu de fechá-lo?”). Morando-se com algumas pessoas, precisaríamos ainda que estas notificações fossem enviadas a todos (“alguém corre lá para fechá-lo!”).

 

Antes de mais blá blá blá, aqui está o software (https://github.com/tmedicci/garage-door-monitor). Clone o repositório em sua máquina, altere-o conforme indicado aqui (logo a seguir) ou no README do repositório e faça o upload em sua placa 😉

 

Diagrama de Funcionamento do Programa

 

O funcionamento do programa está brevemente explicado no fluxograma da Figura 5 a seguir. O código em si está bem documentado e, qualquer dúvida, só usar os comentários, logo ali no final do artigo. Responderemos com prazer 😉

 

Figura 5 - Fluxograma do Software do Monitor de Portão de Garagem

 

É necessário, agora, fazer alguns ajustes para que o software funcione corretamente. Vejamos:

  • É possível ajustar os timers no código para que seja considerado que o portão foi esquecido aberto (e, então, enviar o e-mail de notificação):

  • É possível definir de quanto em quanto tempo o alerta vai ser enviado enquanto o portão estiver aberto:

  • E, finalmente, definir quanto tempo esperar para enviar o primeiro alerta de que o portão está aberto:

 

 

Configure as Credenciais para sua Rede Wi-Fi

 

É necessário configurar as credenciais de acesso à sua rede Wi-Fi. Os dados são reportados ao Blynk e ao Thingspeak por esta conexão. Preencha a porção do código a seguir com os dados de sua rede:

 

 

 

Blynk App

 

Utilizaremos o Blynk neste projeto como uma biblioteca do Arduino. A Launchpad do CC3200 é programada com a IDE Energia, que pode ser entendida como um port do Arduino para dispositivos da Texas Instruments. Em nosso projeto, especificamente, utilizaremos o Blynk por dois motivos:

  • Utilizaremos o Widget de E-mail para que possamos enviar um e-mail de notificação;
  • Utilizaremos a cloud do Blynk para reportar o estado do portão e exibi-lo no Blynk App.

 

Utilizar o Blynk facilita bastante a interface com a “nuvem”, porém temos de nos atentar que precisamos alterar um pouco o conceito de programação Arduino: não é possível, por exemplo, rodar todas as rotinas do nosso programa dentro da função void loop {}, uma vez que isto atrapalharia a comunicação com o servidor do Blynk. Para contornar esta característica, utilizaremos os Timers do Blynk.

 

 

Crie sua Aplicação no Blynk App

 

É necessário criar um projeto no Blynk App para que o sistema envie seu Auth Token (para o e-mail cadastrado no Blynk App). É através desse token que o app é capaz de controlar seu hardware e também enviar um e-mail para notificar que o portão está aberto. Se tiver dúvidas neste sentido, não deixe de consultar o artigo de introdução ao Blynk que eu e o Ronaldo Nunez escrevemos. Insira seu Auth Token a seguir:

 

 

Ainda em relação ao Blynk, cabe mencionarmos que o estado do portão é reportado pelo pino virtual V0:

 

 

Pinos virtuais são canais de dados genéricos que podem ser enviados ao Blynk. Em nossa aplicação será utilizado, por exemplo, para mandar um dado do tipo boolean, indicando se o portão está aberto (1) ou fechado (0).

 

 

Widgets

 

Utilizaremos em nosso projeto dois widgets do Blynk: o widget de e-mail () e o widget Superchart, utilizado para visualizar dados históricos.

  • E-mail: basta adicionar o widget de e-mail ao projeto. As propriedades do widget não precisam ser alteradas: são irrelevantes, uma vez que definiremos o e-mail no próprio código.

Ao longo do código, substitua "[email protected]", por seu e-mail:

 

  • Superchart: como este widget é um visualizador de dados históricos, ou seja, dos dados do estado do portão que enviamos ao Blynk, é necessário que façamos alguns ajustes para exibi-los corretamente:
    • Adicionaremos um DATASTREAM denominado Status, conforme a Figura 6 a seguir. Clique em Add Datastream.

 

Figura 6 - Adicionando um Datastream

 

    • Este canal de dados será do tipo BINARY, conforme indicado no campo DESIGN da Figura 7. Finalmente, será selecionado o pino virtual V0 como input de dados de 0 (FALSE) a 1 (TRUE), sendo que FALSE indica o portão fechado e TRUE, aberto.

 

Figura 7 - Configurando o Datastream: Estilo, Input de Dados e Labels.

 

Voltando à tela do app com os widgets inclusos, teremos a seguinte visualização do projeto no Blynk. Basta agora selecionar o ícone de “play”, no canto superior direito, para que as funções no Blynk sejam ativadas.

 

Figura 8 - Visualização do Projeto no Blynk

Thingspeak

 

Por que não também reportar o estado do portão no Thingspeak, mostrando um histórico online (público ou privado, como você preferir) de quando o portão esteve aberto ou fechado? Para isso criaremos um canal no Thingspeak e enviaremos o estado do portão através da comunicação MQTT.

 

O Thingspeak é uma plataforma online para exibição de dados históricos (e outras features que não iremos explorar neste projeto). É possível criar visualizações públicas (acessíveis a qualquer pessoa que tenha o link) ou privadas (acessíveis a usuários selecionados). Enviaremos o estado do portão a cada 15s para o Thingspeak. As figuras a seguir exibem configurações básicas do Thingspeak para que seja configurado o envio dos dados em nosso programa.

 

Será necessário preencher os seguintes campos com dados específicos de sua conta no Thingspeak no código:

 

 

A seguir, exibiremos onde estas informações podem ser obtidas na plataforma do Thingspeak. Após criar sua conta e seu canal no Thingspeak, teremos as seguintes opções: a Figura 9 a seguir exibe o formato de um gráfico que vai ser preenchido com o estado do portão:

 

Figura 9 - Visualização do Estado do Portão no Thingspeak

 

Clicando-se no ícone da caneta na frente do campo Field Chart (no gráfico), é possível ajustar as configurações de exibição do mesmo, conforme Figura 10 a seguir:

 

Figura 10 - Opções do Field Chart para Exibição dos Dados.

 

Após ajustar o as opções do gráfico, volte à tela anterior. Movendo-se para a aba Channel Settings, encontraremos as configurações deste canal (o que pode ser entendido como o projeto que estamos desenvolvendo no Thingspeak). Habilitaremos um único campo, o Campo 1 – para onde o estado do portão será reportado. A Figura 11 exibe estas configurações.

 

Figura 11 - Configurações do Canal

 

A escolha do campo habilitado é de fundamental importância, pois é o “endereço de dados” para o qual enviaremos o estado do portão ao publicar por MQTT.

 

Precisamos ainda verificar o parâmetro Write API Key (ou Chave de Escrita), que permite publicar dados no Thingspeak. Para tal, mova-se para a aba “Chaves”, conforme Figura 12 a seguir:

 

Figura 12 - Exibição da Chave para Escrita no Canal

 

Por fim, ainda precisaremos da chave para acessar o MQTT. Navegue para Account > My Profile. A Figura 13 exibe a tela com o parâmetro MQTT API Key.

 

Figura 13 - Informações da Conta no Thingspeak

 

Ufa! É isso!

 

Entendido sobre o hardware que usamos ou podemos usar, sobre as funções dos pinos de leitura, sobre o software e as interfaces com o Blynk e o Thingspeak, é hora de compilar e fazer o upload do seu código da forma que está habituado, através das IDEs Arduino ou Energia (para o CC3200).

 

Recomendo que teste o sistema em bancada antes de instalá-lo junto à central do portão. É possível simular o funcionamento do relé do portão com uma chave táctil e monitorar a serial de debug para verificar o funcionamento do programa.

 

Uma vez conectado à internet, é possível verificar que o sistema está online diretamente pelo Blynk, conforme imagem a seguir:

 

Figura 14 - Confirmação que o Monitor está Online no Blynk

 

Esperamos pelos comentários de vocês! Contribuições no software, sugestões para o artigo e dúvidas são bem-vindas!

 

Ainda assim achou que precisa entender melhor o Blynk? Eu e o Ronaldo Nunez estaremos na Campus Party Brasil 2019 apresentando um workshop sobre o Blynk: “Criando um Aplicativo para Controlar seu Hardware Remotamente”, dia 16/fev às 15h. Confirme sua presença em (https://campuse.ro/events/campus-party-brasil-2019/workshop/criando-um-aplicativo-para-controlar-seu-hardware-remotamente-cpbr12/), traga sua placa de desenvolvimento e vamos aprender juntos!


Let’s Hack the World!

 

Referências

 

Documentação do Blynk 

Imagens de autoria própria.

 

Saiba mais

Introdução ao Blynk App

Beaglebone Black - IoT com ThingSpeak

PIC na IoT com ESP8266 e ThingSpeak

 

 

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Tiago Medicci Serrano
Apaixonado por tecnologia! Plaquinhas, embarcados, clouds, IoT, comunidades e ensino: tudo isso faz parte do meu dia-a-dia, do trabalho às horas de lazer. Atualmente desenvolvo soluções inteligentes para o setor elétrico, SmartGrid e IoT na Time Energy, em Campinas.

3
Deixe um comentário

avatar
 
2 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
André GiovanniTiago Medicci SerranoAndré Lucas Silva Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
André Giovanni
Visitante
André Giovanni

Parabéns pelo artigo. Eu tô na praia e meu vizinho avisou que meu portão ficou aberto. Voltando, já vou fazer meu ESP8266 trabalhar com essa sua idéia pra monitorar e até controlar o portão.

André Lucas Silva
Visitante
André Lucas Silva

Artigo muito interessante, parabéns!