Painel de avisos acionado por Bot Telegram

Painel de avisos usando 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:

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!

2.7/5 - (6 votos)

Related posts

Como usar o leitor RFID com ESP8266

by Arduino e Cia
4 anos ago

ESP-NOW: Comunicação direta entre módulos ESP8266 e ESP32

by Arduino e Cia
3 anos ago

Sensor de temperatura DS18B20 com ESP8266

by Arduino e Cia
5 anos ago
Sair da versão mobile