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!