Painel de avisos acionado por Bot Telegram
No post de hoje vamos juntar dois projetos que fizemos anteriormente e criar um painel de avisos acionado por Bot Telegram, ou seja, você vai mandar uma mensagem pelo aplicativo e essa mensagem será exibida em um display Max7219 de 4 dígitos.
Como controlador desse painel, vamos usar o módulo ESP8266 NodeMCU, um interessante módulo Wifi que já foi tema de muitos posts aqui no blog.
Pré-requisitos para o projeto de painel de avisos com Bot Telegram
Neste projeto vamos usar os dois posts que comentei anteriormente:
- Bot Telegram com ESP8266 NodeMCU: Neste post eu mostro como acionar as portas do ESP8266 usando um Bot Telegram, ligando e desligando leds
- Módulo MAX7219 com ESP8266 NodeMCU: Neste post mostro como conectar e configurar um módulo display 8×8 no ESP e enviar mensagens simples.
Assim, vamos juntar esses dois posts e criar um painel de avisos interativo. Sugiro que você visite os links acima para obter mais detalhes sobre o uso do Bot Telegram com ESP e conexão do módulo de display, ok?
Circuito ESP8266 NodeMCU e módulo Max7219
Relembrando as conexões, temos abaixo o esquema de ligação do NodeMCU no módulo display Max7219 matrix de leds 8×8 4 dígitos, que usa a interface SPI para comunicação.
Conectamos os pinos D4 (GPIO2) no pino CS do módulo, o D5 (GPIO14) no CLK e o D7 (GPIO13) será conectado no DIN. Os outros dois pinos são de alimentação (Vcc e GND), usando os 3.3V da própria placa.
Configurando o NodeMCU na IDE Arduino
Para utilizar o ESP8266 NodeMCU com a IDE Arduino, entre no menu Arquivo e em seguida em Preferências. No campo URLs Adicionais para Gerenciadores de Placas coloque o endereço abaixo:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Clique em OK e acesse o menu Ferramentas -> Placa -> Gerenciador de Placas. Na tela do gerenciador, procure por ESP8266 e selecione o esp8266 by ESP8266 Community, clicando em seguida em Instalar:
Para usar o NodeMCU, acesse o menu Ferramentas -> Placa e selecione NodeMCU 1.0. Não esqueça de selecionar a porta serial correta utilizada pela sua placa.
Instalação das bibliotecas
O nosso programa vai usar 4 bibliotecas, então fique atento ao processo de instalação pois se os passos não forem seguidos corretamente você terá problemas na execução ou compilação do programa.
Para o Bot Telegram são necessárias duas bibliotecas, a ArduinoJson e a CTBot, que vamos instalar a partir da IDE do Arduino. Começamos por esta última, selecionando o menu Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas e procurando por CTBot, clicando em seguida em Instalar:
A CTBot exige uma versão específica da ArduinoJson, que é a versão 5.13.5. Procure por arduinojson, selecione a biblioteca conforme a imagem abaixo e também a versão correta, clicando em seguida em Instalar:
As bibliotecas para o display infelizmente não podem ser instaladas pela IDE do Arduino, exigindo instalação manual. As bibliotecas são a Altairis ESP8266 FC16 (download) e a outra a LedControlSpiESP8266 (download). Faça o download das duas bibliotecas, descompacte e coloque-as na pasta LIBRARIES da sua IDE Arduino.
Programa Painel de Avisos com Bot Telegram
Com todas as bibliotecas instaladas, carregue o programa abaixo no NodeMCU, alterando primeiro os dados básicos de conexão na rede wifi (linhas 10 e 11) e também o token que você gerou usando o BotFather do Telegram (linha 12).
Na linha 28 você configura o intervalo de tempo em que o programa fará a conexão com o Telegram, verificando se chegaram novas mensagens. Se isso ocorrer, a mensagem do display é atualizada (linha 79).
//Programa: Painel de avisos com Bot Telegram //Autor: Arduino e Cia #include <FC16.h> #include "CTBot.h" CTBot myBot; //Definicoes da rede wifi e conexao String ssid = "SUA REDE WIFI"; //Nome da sua rede wifi String pass = "SUA SENHA DA REDE WIFI"; //Senha da sua rede wifi String token = "TOKEN QUE VOCE GEROU USANDO O BOTFATHER"; //Token bot Telegram //Conexao do pino CS const int csPin = D4; //Numero de displays que estamos usando const int numDisp = 4; //Tempo do scroll em milisegundos const int scrollDelay = 100; char mensagem[20]; //Armazena o valor (tempo) da ultima vez da verificacao de novas mensagens unsigned long previousMillis = 0; //Intervalo de tempo entre checagem de mensagens (em milisegundos) const long intervalo = 30000; FC16 display = FC16(csPin, numDisp); void setup() { Serial.begin(115200); Serial.println("Inicializando bot Telegram..."); //Conexao na rede wifi myBot.wifiConnect(ssid, pass); //Define o token myBot.setTelegramToken(token); //Verifica a conexao if (myBot.testConnection()) Serial.println("nConexao Ok!"); else Serial.println("nFalha na conexao!"); //Inicializa o display display.begin(); //Intensidade / Brilho display.setIntensity(8); //Apaga o display display.clearDisplay(); //Texto inicial exibido no display display.setText("Coffee!"); } void loop() { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= intervalo) { //Armazena o valor da ultima vez que foi feita a checagem previousMillis = currentMillis; //Variavel que armazena a mensagem recebida TBMessage msg; //Verifica se chegou alguma mensagem if (myBot.getNewMessage(msg)) { msg.text.toCharArray(mensagem, 20); //Mostra no Serial Monitor a mensagem recebida Serial.print("Mensagem recebida: "); Serial.println(msg.text); //Atualiza o display com a nova mensagem display.setText(mensagem); } } //Chama a rotina de scroll display.update(); //Aguarda o tempo definido delay(scrollDelay); }
Por uma limitação da biblioteca, que usa alguns comandos “delay”, você irá notar que na checagem das mensagens o display fica parado por 2 ou 3 segundos aguardando a conexão. Por isso a principio deixei um intervalo de 30 segundos entre uma checagem e outra.
Agora é só entrar no Telegram, acessar a conta que você criou usando o BotFather e enviar a mensagem de sua preferência, que em poucos instantes começará a ser exibida no display.
Gostou? Confira outros posts usando ESP8266 aqui mesmo no Arduino e Cia!
[…] Confira também o post Painel de Avisos acionado por Bot Telegram, onde uso o mesmo princípio para mostrar as mensagens em um painel matriz de leds […]
[…] Use este mesmo projeto para montar um Painel de Avisos acionado por Bot Telegram, um outro post aqui mesmo do Arduino e […]
Teria como disponibilizar o arquivo para imprimir a caixa em impressora 3D?
Oi Flavio,
Claro, você pode encontrar neste link: https://arduinoecia.com.br/downloads/bot-telegram-esp8266.rar
Abraço!
Adilson
Pessoal tudo bem?
Em relação ao projeto acima aparentemente fiz as conexões corretas, porém, dá falha na conexão. Vocês poderiam me dar uma dica para corrigir isso?
Oi Wilson,
Consegue checar se o ESP está se conectando corretamente na rede wifi?
Abraço!
Adilson
Deu certo amigos. Eram as conexões do esp. Valeu.
opa teria como usar o mesmo projeto e em vez dessa simples teça de led usar um Display LCD 20×4 I2C Backlight ??
estava querendo fazer esse projeto para dar de presente só q usando uma tela lcd de 20×4 ou uma maior, no site já teria as aulas de como adaptar para a tela lcd ? ( sou totalmente novato no assunto seria meu primeiro projeto de eletrônica)
Oi Guilherme,
Boa sugestão. Vou providenciar.
Abraço!
Adilson