ESP32-C6 na Prática: Usando o Telegram para controlar GPIOs

Este post faz parte da série ESP32-C6 na Prática

Introdução

Neste artigo, mostraremos como controlar as GPIOs da placa de desenvolvimento ESP32-C6 DevKitC-1 utilizando o Telegram.

Nosso projeto terá como objetivo controlar um LED, mas o mesmo conceito pode ser aplicado para controlar qualquer outra porta I/O. Basta enviar uma mensagem para seu bot do Telegram informando o valor desejado.

Para conhecer mais a placa de desenvolvimento consulte nosso artigo Introdução à Placa ESP32-C6-DevKitC-1: Ideal para IoT

O que é o Telegram

O Telegram é um mensageiro instantâneo baseado em nuvem, com suporte a chamadas de voz via IP. Ele está disponível para Android, iOS, Windows, macOS e Linux. É gratuito, sem anúncios, e permite a criação de bots, com os quais podemos interagir.

Para saber mais sobre o Telegram, consulte https://telegram.org

Criando um Bot no Telegram

  1. Instale o aplicativo Telegram no seu smartphone.
  2. Procure por “BotFather” ou acesse t.me/botfather.
  3. Inicie uma conversa com o BotFather e clique no botão Start.
  4. Digite o comando /newbot e siga as instruções:
    1. Dê um nome para o seu bot.
    2. Escolha um nome de usuário único, terminando com bot

Se o seu bot for criado com sucesso, você receberá um link para acessar o bot e o token de autenticação do bot.

Figura 1: Configuração Bot no Telegram

Obtendo seu ID de usuário do Telegram

Qualquer pessoa que conhecer o nome do seu bot poderá interagir com ele. Para limitar o acesso apenas ao seu usuário (ou a usuários autorizados), você pode verificar o ID de quem envia mensagens ao bot.

Para descobrir seu Telegram User ID:

  1. Procure por “myidbot” ou acesse t.me/myidbot.
  2. Selecione o IDBot e envie o comando /getid
  3. O bot responderá com seu ID de usuário
Figura 2: Obter ID de usuário no Telegram

Materiais Necessários

Para desenvolver nossa aplicação os materiais utilizados foram:

  •  Placa ESP23-C6 DevKitC-1
  • Cabo USB-C
  •  LED
  • Resistor 330 ohms
  • Jumpers
  • Arduino IDE

Para configurar o ambiente e instalar o suporte a ESP32-C6 veja o artigo ESP32-C6 na Prática: Seu Primeiro “Hello World”

Circuito

Figura 3: Circuito desenvolvido

Instalação de Bibliotecas

Abra a Arduino IDE e siga os passos abaixo:

  1. Vá em Sketch > Incluir Biblioteca > Gerenciar Bibliotecas.
  2. Busque por UniversalTelegramBot by Brian Lough
  3. Instale a biblioteca mais recente e sua dependência ArduinoJson by Benoit Blanchon.

Código

No código a ser apresentado, será necessário que você preencha as credenciais do seu WiFi, Token do seu bot do Telegram e seu ID de usuário do Telegram.

Atenção: Caso ocorra alguma falha, tente utilizar as credenciais do hotspot do seu celular.

Definimos os comandos disponíveis do bot no código como sendo, /start, /led_on, /led_off e /state

#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>


#define BOTtoken "*******:*******************"  // Seu Telegram Bot Token (Obtenha do BotFather)
#define CHAT_ID "********"                      // Use @myidbot para obter o ID do chat


const uint8_t LED_PIN = 18;


// Configuração WiFi
const char* ssid = "******";
const char* password = "******";


WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);


const int botRequestDelay = 1000;  // Intervalo entre requisições ao bot de 1 segundo
unsigned long lastTimeBot;         // Armazena o último tempo em que o bot foi executado


void setup() {
  Serial.begin(115200);
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  client.setCACert(TELEGRAM_CERTIFICATE_ROOT);  // Certificado raiz para api.telegram.org
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi..");
  }
  Serial.println(WiFi.localIP());
}


void loop() {
  if (millis() > lastTimeBot + botRequestDelay) {
    int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
    while (numNewMessages) {
      handleNewMessages(numNewMessages);
      numNewMessages = bot.getUpdates(bot.last_message_received + 1);
    }
    lastTimeBot = millis();
  }
}


void handleNewMessages(int numNewMessages) {
  Serial.println(String(numNewMessages));
  for (int i = 0; i < numNewMessages; i++) {
    String chat_id = String(bot.messages[i].chat_id);
    if (chat_id != CHAT_ID) {
      bot.sendMessage(chat_id, "Usuário não autorizado", "");
      continue;
    }
    String text = bot.messages[i].text;
    Serial.println("Mensagem recebida: " + text);
    if (text == "/start") {
      String welcome = "Bem-vindo, " + String(bot.messages[i].from_name) + ".\n";
      welcome += "Use os seguintes comandos para controlar suas saídas.\n\n";
      welcome += "/led_on para ligar o GPIO \n";
      welcome += "/led_off para desligar o GPIO \n";
      welcome += "/state para solicitar o estado atual do GPIO \n";
      bot.sendMessage(chat_id, welcome, "");
    } else if (text == "/led_on") {
      digitalWrite(LED_PIN, HIGH);
      bot.sendMessage(chat_id, "LED ON", "");
    } else if (text == "/led_off") {
      digitalWrite(LED_PIN, LOW);
      bot.sendMessage(chat_id, "LED OFF", "");
    } else if (text == "/state") {
      if (digitalRead(LED_PIN)) {
        bot.sendMessage(chat_id, "LED ON", "");
      } else {
        bot.sendMessage(chat_id, "LED OFF", "");
      }
    } else {
      bot.sendMessage(chat_id, "Comando inválido. Use /start para ajuda.", "");
    }
  }
}

Resultados

Figura 4: Resultados obtidos

Conclusão

Neste artigo, mostramos como controlar GPIOs da placa ESP32-C6 DevKitC-1 por meio de mensagens enviadas via Telegram Bot. Essa abordagem permite interagir remotamente com o hardware usando uma interface simples e acessível: o aplicativo de mensagens Telegram.

Convidamos você a explorar outras aplicações integrando Telegram e ESP32, como: Monitoramento remoto de sensores, envio de alertas automáticos, integração com automações domésticas 

Sinta-se à vontade para compartilhar seus resultados com a comunidade, seja por artigos, vídeos ou repositórios abertos. Sua experiência pode inspirar e auxiliar muitos outros desenvolvedores.

Referências

ESP32-C6 na Prática

ESP32-C6 na Prática: WiFi Manager ESP32-C6 na Prática: Provisionamento de Wi-Fi via Bluetooth Low Energy
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
0 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Home » Internet Das Coisas » ESP32-C6 na Prática: Usando o Telegram para controlar GPIOs

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: