Você está na página 1de 14

Trabalho Prático N.

º 5
CTeSP Energias Renováveis e Infraestruturas Elétricas e de Telecomunicação
UC: Tecnologias da Informação e Comunicação
1º Ano - 2º Semestre – 2021/2022

TEMA: ESP32 controlo de saídas com Telegram

Participante:

1
Índic
e
Parte 1: Descrição do trabalho............................................................................................................. 3
1.1 Explicar o objetivo do trabalho........................................................................................................3
1.2 Explicar os componentes usados...................................................................................................3
1.3 Explicar a função Telegram neste projeto.......................................................................................4
Parte 2: Criar um Bot de Telegram.......................................................................................................4
2.1 Explicar a criação de um Bot Telegram (Mostrar evidência)...........................................................4
Parte 3: Upload do código do ESP32...................................................................................................5
3.1 Copiar e compilar o código IDE......................................................................................................5
3.2 Credenciais de rede (SSID e senha)...............................................................................................6
3.3 Adicionar Bibliotecas necessárias...................................................................................................7
Parte 4 – Controlar as saídas usando o Telegram – ESP32.................................................................7
4.1 Comentar o resultado (Mostrar evidência)......................................................................................7
Conclusão........................................................................................................................................... 14
Referências......................................................................................................................................... 15

2
Descrição do trabalho
1.1 Objetivo do trabalho
 Controlar GPIOs ESP32 usando o Telegram.
 Enviar uma mensagem ao seu Telegram Bot para definir a saída (Led) em ALTO ou BAIXO.
Usando o ambiente de programação Arduino IDE.
 É necessário criar um Bot do Telegram para a placa ESP32. Iniciar uma conversa com o Bot.
Ao enviar a mensagem /led_on para o Bot, a placa ESP recebe a mensagem e liga o GPIO 2,
então o Led liga.
 Da mesma forma, quando é enviada a mensagem /led_off então é desativado o GPIO 2 e o
Led desliga.
 Também pode ser enviada a mensagem /state para solicitar o estado atual do GPIO. Quando
o ESP recebe essa mensagem, o bot responde com o estado atual do GPIO.
 Por sua vez, ao enviar a mensagem /start é recebida uma mensagem de boas-vindas com os
comandos para controlar a placa ESP32.

1.2 Componentes usados


 ESP32.

ESP32
O ESP32 é uma série de microcontroladores de baixo custo e baixo consumo de energia. Também é
um sistema-em-um-chip com microcontrolador integrado, Wi-Fi e Bluetooth. A série ESP32 emprega
um microprocessador Tensilica Xtensa LX6 com duas variações dual-core e single-core e inclui uma
antena integrada RF tipo balun, amplificador de potência, recetor de baixo ruído amplificado, filtros,
gerenciamento de energia dos módulos. ESP32 foi criado e desenvolvido por Espressif Sistemas,
uma empresa Chinesa com sede em Xangai e é fabricado pela TSMC usando seu processo de
fabricação de 40 nm. Ele é um sucessor do microcontrolador ESP8266.

Figura 1: ESP32. (Fonte: botnroll)

3
1.3 Função do Telegram neste projeto
O Telegram é um serviço de mensagens instantâneas e voz sobre IP baseado em nuvem. Podemos
instalá-lo facilmente no telemóvel (Android e iPhone) ou computador (PC, Mac e Linux). É gratuito e
sem anúncios. O Telegram permite que se crie bots com os quais podemos interagir. O ESP32 irá
interagir com o bot do Telegram para receber e manipular as mensagens e enviar respostas. Neste
tutorial vamos aprender como usar o Telegram para enviar mensagens para o bot para controlar as
saídas do ESP de qualquer lugar (só é preciso do Telegram e o acesso à internet).

Parte 2: Um Bot de Telegram criado


2.1 Passos a seguir para criar um Bot Telegram e as evidência
Abrir o Telegram e siga as próximas etapas para criar um Telegram Bot. Primeiro, procure por
“botfather” e clique no BotFather como mostra em baixo. Ou abra este link t.me/botfather em um
telemóvel.

Figura 2: BotFather. (Fonte: propriedade)

A janela a seguir deve ser aberta e será solicitado a clicar no botão Iniciar.

Figura 3: Entrar no BotFather.

4
Digite /newbot  e siga as instruções para criar o bot. Dê-lhe um nome e um nome de usuário.

Figura 4: BotFather /newbot.

Figura 5: Criação do nome do usuário. (Fonte: propriedade)

Se o bot for criado com sucesso, receberá uma mensagem com um link para acessar o bot e
o  token do bot. Salve o token do bot porque vamos precisar dele para que o ESP32 possa interagir
com o bot.

Figura 6: BOTtoken. (Fonte: propriedade)

5
Figura 7: IDBOT. (Fonte: propriedade)
N figura 7 podemos verificar que qualquer pessoa que conheça o nome de usuário do seu bot pode
interagir com ele. Para garantir que ignoramos mensagens que não são da nossa conta do Telegram
(ou de qualquer usuário autorizado), podemos obter o seu ID de usuário do Telegram. Então, quando
o bot do telegram recebe uma mensagem, o ESP pode verificar se o ID do remetente corresponde ao
seu ID de usuário e lidar com a mensagem ou ignorá-la.
Na conta do Telegram, procure por “IDBot” ou abra este link t.me/myidbot em um telemóvel.

Figura 8: ID. (Fonte: propriedade)

Iniciando uma conversa com esse bot e digite  /getid . receberemos uma resposta de volta com o ID
de usuário. Salvamos esse ID de usuário, pois precisaremos dele posteriormente neste tutorial.

6
Parte 3: Upload do código do ESP32
3.1 Copiar e compilar o código IDE
//********************************************************************
// FICHA-5
// ESP32 Web Server – Telegram
// Controlo do LED incorporado no ESP32
//******************************************************************

#ifdef ESP32
#include <WiFi.h> //Ligar ESP32 a uma rede sem fio
#else
#include <ESP8266WiFi.h> //Tambem pode ser usado no ESP8266
#endif
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h> //Biblioteca TelegramBot
#include <ArduinoJson.h>

//-------------------------------------------------------------------------
//Definir a rede sem fios
const char* ssid = "ERIT";
const char* password = "0123456789";

// Initialize Telegram BOT


//#define BOTtoken "5188254657:AAGw412YXDVsv9YqrM6GI1zVWP2tvHuWJvE" // your Bot Token
(Get from Botfather)

// Use @myidbot to find out the chat ID of an individual or a group


// Also note that you need to click "start" on a bot before it can
// message you
//#define CHAT_ID "5226646158"

#ifdef ESP8266
X509List cert(TELEGRAM_CERTIFICATE_ROOT);
#endif

WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);

7
// Checks for new messages every 1 second.
int botRequestDelay = 1000;
unsigned long lastTimeBotRan;

const int ledPin = 2;


bool ledState = LOW;

// Handle what happens when you receive new messages


void handleNewMessages(int numNewMessages) {
Serial.println("handleNewMessages");
Serial.println(String(numNewMessages));

for (int i=0; i<numNewMessages; i++) {


// Chat id of the requester
String chat_id = String(bot.messages[i].chat_id);
if (chat_id != CHAT_ID){
Serial.println(chat_id); // para saber o chat id do telegram
bot.sendMessage(chat_id, "Unauthorized user", "");
continue;
}

// Print the received message


String text = bot.messages[i].text;
Serial.println(text);

String from_name = bot.messages[i].from_name;

if (text == "/start") {
String welcome = "Welcome, " + from_name + ".\n";
welcome += "Use the following commands to control your outputs.\n\n";
welcome += "/led_on to turn GPIO ON \n";
welcome += "/led_off to turn GPIO OFF \n";
welcome += "/state to request current GPIO state \n";
welcome += "/temperatura to request internal temperature of esp32 \n";
bot.sendMessage(chat_id, welcome, "");
}

8
if (text == "/led_on") {
bot.sendMessage(chat_id, "LED state set to ON", "");
ledState = HIGH;
digitalWrite(ledPin, ledState);
}

if (text == "/led_off") {
bot.sendMessage(chat_id, "LED state set to OFF", "");
ledState = LOW;
digitalWrite(ledPin, ledState);
}

if (text == "/state") {
if (digitalRead(ledPin)){
bot.sendMessage(chat_id, "LED is ON", "");
}
else{
bot.sendMessage(chat_id, "LED is OFF", "");
}
}
}
}

void setup() {
Serial.begin(115200);

#ifdef ESP8266
configTime(0, 0, "pool.ntp.org"); // get UTC time via NTP
client.setTrustAnchors(&cert); // Add root certificate for api.telegram.org
#endif

pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, ledState);

// Connect to Wi-Fi
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
#ifdef ESP32

9
client.setCACert(TELEGRAM_CERTIFICATE_ROOT); // Add root certificate for api.telegram.org
#endif
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
// Print ESP32 Local IP Address
Serial.println(WiFi.localIP());
}

void loop() {
if (millis() > lastTimeBotRan + botRequestDelay) {
int numNewMessages = bot.getUpdates(bot.last_message_received + 1);

while(numNewMessages) {
Serial.println("got response");
handleNewMessages(numNewMessages);
numNewMessages = bot.getUpdates(bot.last_message_received + 1);
}
lastTimeBotRan = millis();
}

3.2 Credenciais de rede (SSID e senha)

Figura 9: Credenciais de rede

3.3 Adicionar Bibliotecas necessárias


As duas bibliotecas necessárias no Arduíno IDE.

10
Figura 10: Bibliotecas a utilizar. (Fonte: propriedade)

Parte 4 – Controlar as saídas usando o Telegram – ESP32


4.1 Comentário do resultado e as evidência
Faça o upload do código para sua placa ESP32. Não se esqueça de ir em Ferramentas > Quadro e
selecionar o quadro que você está a usar. Vá para Ferramentas > Porta e selecione a porta COM à
qual a sua placa está conectada.
Depois de carregar o código, pressione o botão EN/RST on-board do ESP32 para que ele comece a
executar o código. Em seguida, pode abrir o Serial Monitor para verificar o que está a acontecer em
segundo plano.
Acesse a sua conta do Telegram e abra uma conversa com seu bot. Envie os seguintes comandos e
veja o bot a responder:
 /start mostra a mensagem de boas-vindas com os comandos válidos.
 /led_on acende o LED.
 /led_off desliga o LED.
 /state solicita o estado atual do LED.

Figura 11: Bot do usuário. (Fonte: propriedade)

O LED /led_on deve ligar e /led_off deve desligar de acordo com o que for pedido.

11
Figura 12: acionamento da LED.

No Serial Monitor podemos ver que o ESP está a receber as mensagens.

Figura 13: Serial Monitor a dar informação do LED do ESP32. (Fonte: propriedade)

12
Conclusão
Neste trabalho prático a experiência foi bem-sucedida, porque consegui acender o LED do ESP32,
mas também tive alguns problemas técnicos em inserir a placa ESP32 no Arduíno UNO para
acender o LED do ESP.
Aprende a configura o Arduíno para os diferentes efeitos o que na qual expandi-o meu conhecimento
no contexto do Arduíno associado ao ESP32.

13
Referencias:
 randomnerdtutorials.com -
https://randomnerdtutorials.com/telegram-control-esp32-esp8266-nodemcu-outputs/ acedido a 7 de
abril de 2022

 mundodaeletrica.com -
https://www.mundodaeletrica.com.br/o-que-e-um-led/ acedido 7 de abril de 2022

 https://i0.wp.com/randomnerdtutorials.com/wp-content/uploads/2020/07/ESP32-ESP8266-
NodeMCU-Telegram-Control-Outputs-Overview.png?
resize=828%2C561&quality=100&strip=all&ssl=1

14

Você também pode gostar