InicioTarjetas de DesarrolloArduinoAutomatiza tu Mundo: Tutorial de Arduino NANO ESP32 y Notificaciones por Telegram

Automatiza tu Mundo: Tutorial de Arduino NANO ESP32 y Notificaciones por Telegram

En esta práctica, utilizaremos Arduino Nano ESP32 para crear un sistema de control de temperatura básico utilizando un sensor DHT11 para medir la temperatura ambiente y un relé para controlar una carga, como un ventilador o un calentador, con el objetivo de mantener la temperatura dentro de un rango deseado. Además, configuraremos un aviso por Telegram para notificar al usuario cuando la temperatura exceda ciertos límites.

Introducción

Arduino Nano ESP32 es una potente placa de desarrollo que combina la funcionalidad del clásico Arduino Nano con las capacidades avanzadas del ESP32. La Arduino Nano ESP32 es especialmente adecuada para aplicaciones de Internet de las cosas (IoT), cuenta con módulo Wi-Fi/Bluetooth, 14 pines de entrada y salida , 8 analógicos y 5 PWM. Ideal para proyectos de automatización, dispositivos conectados y sistemas de monitoreo remoto.

Materiales

  • Arduino Nano ESP32
  • Alambre para Protoboard 1 Metro
  • Sensor De Temperatura y Humedad DHT11 Módulo KY-015
  • Módulo KY-019 Sensor Relevador 5V
  • Cables Dupont Largos 20cm HH MH MM

Desarrollo

El objetivo de la práctica es controlar y monitorear la temperatura de un entorno específico y recibir alertas a través de Telegram. Para desarrollar la práctica del sistema de control se deben seguir las siguientes etapas:

Etapa 1: Configuración del Hardware

  • Conectar por medio de cables dupont el  Sensor de Temperatura(DHT11) y el módulo relevador al Arduino nano ESP32

Etapa 2: Programación del Microcontrolador

  • Escribir el código para leer los datos del sensor de temperatura.
  • Implementar la lógica de control (ejemplo: si la temperatura es mayor que X grados activarla carga).
  • Usar una biblioteca para manejar la conexión a internet (WiFi.h para ESP32).

Etapa 3: Integración con Telegram

  • Crear un bot de Telegram utilizando BotFather y obtener el token de API.
  • Obtener ID único en telegram.

Diagrama de conexiones 

Para controlar una carga(ventilador, cama caliente o humificador) usando un módulo relay y un sensor DHT11 con un Arduino Nano ESP32, necesitas conectar adecuadamente los componentes y programar para leer los datos del sensor y activar o desactivar el relay en función de estos datos. Aquí tienes el diagrama de las conexiones.

Requerimientos previos

Para mandar y recibir mensaje por medio de Telegram utilizaremos la librería “UniversalTelegramBot” , que podremos instalar desde nuestro Arduino IDE buscando “bot telegram”

Sketch > Incluir Biblioteca > Gestionar Bibliotecas….

Utilizaremos un bot en Telegram, esto puede ser una manera eficiente de automatizar tareas, proporcionar información, o interactuar con usuarios de manera dinámica. Para poder enviar o recibir mensajes por Telegram es necesario obtener:

  • Token del bot en telegram
  • ID único del usuario de telegram

Creación  del Bot

  • Accede a BotFather:
    • Abre Telegram y busca el usuario @BotFather.
    • BotFather es el bot oficial para crear y gestionar bots en Telegram.
  • Crear un nuevo bot:
    • Escribe /start para comenzar la conversación con BotFather.
    • Escribe /newbot para crear un nuevo bot.
    • Sigue las instrucciones que BotFather te indicará.
    • Asigna un nombre a tu bot.
    • Elige un nombre de usuario para tu bot que termine en “bot” (ejemplo, MiPrimerBot o MiPrimer_Bot).
  • Obtener el Token:
    • Una vez creado, BotFather te proporcionará un token único que te permitirá controlar el bot mediante la API de Telegram.

Iniciar nuestro Bot

Una vez creado nuestro bot, oprimimos “Iniciar” para poder activarlo para recibir o enviar mensajes.

Obtener el ID

  • Accede a IDBot:
    • Abre Telegram y busca el usuario @IDBot
    • IDBot es el que te proporciona el ID único en Telegram.
  • Obtener el ID:
    • Escribe /start u oprima iniciar para comenzar la conversación con IDbot.
    • Una vez iniciada la conversación con el IDBot te proporcionará un ID único.
    • Este ID es crucial ya que te permitirá controlar tu bot mediante la API de Telegram.

Código

Este código en Arduino está diseñado para monitorear la temperatura ambiente utilizando un sensor DHT11 y enviar notificaciones a un usuario a través de Telegram cuando la temperatura se encuentra fuera de un rango especificado.

#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <ArduinoJson.h>
#include "DHT.h"
// Reemplazar con los datos de tu red wifi
const char* ssid = "Tu red ";
const char* password = "La contraseña de tu red ";
//Token de Telegram BOT se obtenienen desde Botfather en telegram
#define token_Bot "XXXXXXXX:XXXXXXXXXXXXXXXXXX"
// El ID se obtiene de (IDBot) en telegram no olvidar hacer click en iniciar
#define ID_Chat "XXXXXXXXXX"
WiFiClientSecure client;
UniversalTelegramBot bot(token_Bot, client);
#define DHTPIN 8    // Pin de conexión DHT11
#define DHTTYPE DHT11   
DHT dht(DHTPIN, DHTTYPE);
String mensaje = "";
int Lim_S=32;
int Lim_I=20;

void setup() {
  Serial.begin(115200);
   pinMode(4, OUTPUT);
  // Intenta conectarse a la red Wifi:
  Serial.print("Conectando a la red wifi... ");
  Serial.println(ssid);
  
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  client.setCACert(TELEGRAM_CERTIFICATE_ROOT); 
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println("");
  Serial.println("Conectado a la red wifi!!!");
  Serial.print("Dirección ip: ");
  Serial.println(WiFi.localIP());//Imprimimos la direción ip local
  bot.sendMessage(ID_Chat, "Sistema preparado!!!", "");//Enviamos un mensaje a telegram para informar que el sistema está listo
Serial.println(F("DHTxx test!"));

dht.begin();

}
/////loop//////
void loop() 
{
 
  
  float t = dht.readTemperature();
  
  Serial.println("La temperatura es : "+ String(t));
  if (t<= Lim_S && t>= Lim_I)
    {
      digitalWrite(4, LOW); 
       Serial.print(" Esta apagado el puerto 7 ");
    }
  else
    {
      mensaje = "Alerta!! Temperatura fuera de rango!! T : " + String(t) +"  °C. Se prendio la carga ";//Concatenamos ambas cadenas
      bot.sendMessage(ID_Chat, mensaje, "");//Enviamos el mensaje a Telegram
      digitalWrite(4, HIGH); 

   }
   delay(1000);

}

LINK de VIDEO TIK TOK

Conclusión

En esta práctica, hemos creado un sistema de control de temperatura básico utilizando un Arduino Nano ESP32, un sensor DHT11 y un relé. Además, hemos configurado notificaciones por Telegram para alertar al usuario cuando la temperatura exceda ciertos límites. Este proyecto puede ser ampliado y mejorado para adaptarse a diferentes aplicaciones y necesidades específicas como las de IOT facilitando la comunicación entre los dispositivos y el usuario de forma inalámbrica.

TUTORIALES RELACIONADOS