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.