SlideShare uma empresa Scribd logo
1 de 14
1
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:
2
Índice
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...........................................................................................Error! Bookmark not defined.
3
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)
4
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.
5
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)
6
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.
7
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);
8
// 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.nn";
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, "");
}
9
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
10
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.
11
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.
12
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)
13
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.
14
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

Mais conteúdo relacionado

Semelhante a .......Ficha5 Nº.docx

Manual Placa Ethernet Impacta 16 Intelbras - LojaTotalseg.com.br
Manual Placa Ethernet Impacta 16 Intelbras - LojaTotalseg.com.brManual Placa Ethernet Impacta 16 Intelbras - LojaTotalseg.com.br
Manual Placa Ethernet Impacta 16 Intelbras - LojaTotalseg.com.brLojaTotalseg
 
Controle lpt em_c_sharp
Controle lpt em_c_sharpControle lpt em_c_sharp
Controle lpt em_c_sharpTiago
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptxfmtpereira
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
38698469 slides-arduino
38698469 slides-arduino38698469 slides-arduino
38698469 slides-arduinoRui Alves
 
Robô seguidor de linha
Robô seguidor de linhaRobô seguidor de linha
Robô seguidor de linhaIsvaldo Souza
 
001 A 010 Material Auxiliar Para Curso AvançAdo Ii Msp430
001 A 010   Material Auxiliar Para Curso AvançAdo Ii Msp430001 A 010   Material Auxiliar Para Curso AvançAdo Ii Msp430
001 A 010 Material Auxiliar Para Curso AvançAdo Ii Msp430Texas Instruments
 
Apostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDFApostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDFengelrfs
 
Arduino sist u_controlados_intro_eletrica_2019_keynote_novo
Arduino sist u_controlados_intro_eletrica_2019_keynote_novoArduino sist u_controlados_intro_eletrica_2019_keynote_novo
Arduino sist u_controlados_intro_eletrica_2019_keynote_novoFernando Passold
 
Manual do usuário do sistema de lousa a
Manual do usuário do sistema de lousa  aManual do usuário do sistema de lousa  a
Manual do usuário do sistema de lousa aFernanda Oliveira
 
Material Auxiliar Para Curso BáSico Msp430 55 A 98
Material Auxiliar Para Curso BáSico Msp430   55 A 98Material Auxiliar Para Curso BáSico Msp430   55 A 98
Material Auxiliar Para Curso BáSico Msp430 55 A 98Texas Instruments
 
Aprendendo a programar em arduino
Aprendendo a programar em arduinoAprendendo a programar em arduino
Aprendendo a programar em arduinoinfo_cimol
 
Manual do usuário do sistema de Lousa Interativa Portátil uBoard
Manual do usuário do sistema de Lousa Interativa Portátil uBoardManual do usuário do sistema de Lousa Interativa Portátil uBoard
Manual do usuário do sistema de Lousa Interativa Portátil uBoardGeorge Gomes
 
Manual do usuario lousa digital
Manual do usuario lousa digitalManual do usuario lousa digital
Manual do usuario lousa digitalprofnazira
 
Manual do usuario lousa digital
Manual do usuario lousa digitalManual do usuario lousa digital
Manual do usuario lousa digitalNazira Marques
 

Semelhante a .......Ficha5 Nº.docx (20)

Manual Placa Ethernet Impacta 16 Intelbras - LojaTotalseg.com.br
Manual Placa Ethernet Impacta 16 Intelbras - LojaTotalseg.com.brManual Placa Ethernet Impacta 16 Intelbras - LojaTotalseg.com.br
Manual Placa Ethernet Impacta 16 Intelbras - LojaTotalseg.com.br
 
Controle lpt em_c_sharp
Controle lpt em_c_sharpControle lpt em_c_sharp
Controle lpt em_c_sharp
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptx
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
38698469 slides-arduino
38698469 slides-arduino38698469 slides-arduino
38698469 slides-arduino
 
Robô seguidor de linha
Robô seguidor de linhaRobô seguidor de linha
Robô seguidor de linha
 
001 A 010 Material Auxiliar Para Curso AvançAdo Ii Msp430
001 A 010   Material Auxiliar Para Curso AvançAdo Ii Msp430001 A 010   Material Auxiliar Para Curso AvançAdo Ii Msp430
001 A 010 Material Auxiliar Para Curso AvançAdo Ii Msp430
 
Apostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDFApostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDF
 
Configurando+uma+rede
Configurando+uma+redeConfigurando+uma+rede
Configurando+uma+rede
 
Arduino sist u_controlados_intro_eletrica_2019_keynote_novo
Arduino sist u_controlados_intro_eletrica_2019_keynote_novoArduino sist u_controlados_intro_eletrica_2019_keynote_novo
Arduino sist u_controlados_intro_eletrica_2019_keynote_novo
 
CISCOPacketTracer.pdf
CISCOPacketTracer.pdfCISCOPacketTracer.pdf
CISCOPacketTracer.pdf
 
CISCOPacketTracer (1).pdf
CISCOPacketTracer (1).pdfCISCOPacketTracer (1).pdf
CISCOPacketTracer (1).pdf
 
Manual do usuário do sistema de lousa a
Manual do usuário do sistema de lousa  aManual do usuário do sistema de lousa  a
Manual do usuário do sistema de lousa a
 
Material Auxiliar Para Curso BáSico Msp430 55 A 98
Material Auxiliar Para Curso BáSico Msp430   55 A 98Material Auxiliar Para Curso BáSico Msp430   55 A 98
Material Auxiliar Para Curso BáSico Msp430 55 A 98
 
Aprendendo a programar em arduino
Aprendendo a programar em arduinoAprendendo a programar em arduino
Aprendendo a programar em arduino
 
Arduino como programar
Arduino como programarArduino como programar
Arduino como programar
 
Mikrotic
MikroticMikrotic
Mikrotic
 
Manual do usuário do sistema de Lousa Interativa Portátil uBoard
Manual do usuário do sistema de Lousa Interativa Portátil uBoardManual do usuário do sistema de Lousa Interativa Portátil uBoard
Manual do usuário do sistema de Lousa Interativa Portátil uBoard
 
Manual do usuario lousa digital
Manual do usuario lousa digitalManual do usuario lousa digital
Manual do usuario lousa digital
 
Manual do usuario lousa digital
Manual do usuario lousa digitalManual do usuario lousa digital
Manual do usuario lousa digital
 

Último

PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdf
PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdfPROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdf
PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdfdanielemarques481
 
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptxVagner Soares da Costa
 
Tipos de Cargas - Conhecendo suas Características e Classificações.pdf
Tipos de Cargas - Conhecendo suas Características e Classificações.pdfTipos de Cargas - Conhecendo suas Características e Classificações.pdf
Tipos de Cargas - Conhecendo suas Características e Classificações.pdfMarcos Boaventura
 
Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3filiperigueira1
 
Apresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMApresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMdiminutcasamentos
 
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptxVagner Soares da Costa
 
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxTRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxFlvioDadinhoNNhamizi
 

Último (7)

PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdf
PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdfPROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdf
PROJETO DE INSTALAÇÕES ELÉTRICAS – REVIT MEP -.pdf
 
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
 
Tipos de Cargas - Conhecendo suas Características e Classificações.pdf
Tipos de Cargas - Conhecendo suas Características e Classificações.pdfTipos de Cargas - Conhecendo suas Características e Classificações.pdf
Tipos de Cargas - Conhecendo suas Características e Classificações.pdf
 
Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3
 
Apresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMApresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPM
 
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
 
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxTRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
 

.......Ficha5 Nº.docx

  • 1. 1 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:
  • 2. 2 Índice 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...........................................................................................Error! Bookmark not defined.
  • 3. 3 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)
  • 4. 4 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.
  • 5. 5 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)
  • 6. 6 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.
  • 7. 7 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);
  • 8. 8 // 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.nn"; 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, ""); }
  • 9. 9 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
  • 10. 10 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.
  • 11. 11 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.
  • 12. 12 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)
  • 13. 13 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.
  • 14. 14 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