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!
