En este tutorial aprenderemos cómo enviar correos electrónicos con el ESP32 usando un servidor SMTP de gmail. Veremos cómo enviar un correo electrónico simple con texto sin formato, y todo se programará con el ide de Arduino.
Empecemos!!!
SMTP es un Protocolo simple de transferencia de correo y es un estándar de Internet para la transmisión de correo electrónico. Para enviar correos electrónicos usaremos el ESP32, y lo conectaremos a un servidor SMTP como el de GMAIL.
Para enviar correos electrónicos con el ESP32 , vamos a usar la biblioteca ESP32 Mail Client. La cual podemos descargar desde el mismo IDE de Arduino.
Para la instalación de la misma demoss ir a “Programa”->”Incluir Librería”–>”Administrar Bibliotecas”–>”Gestor de Librerías”–>y escribismo “ESP32 Mail Client” y a continuación la instalamos.
No debemos olvidar de habilitar la opción “Permitir aplicaciones menos seguras” en la configuración de Gmail en la parte de seguridad. Entrar a la siguiente URL https://myaccount.google.com/u/1/security. Hacemos click en “Activar acceso(no se recomienda)”.
Colocamos “Permitir aplicaciones menos seguras: en SI”, lo cual no es muy aconsejable desde el punto de vista de la seguridad, por que recomiendo crear una cuenta de correo, exclusivamente para estas pruebas.
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas
Configuración del servidor SMTP de Gmail
Estos son los detalles del servidor SMTP, para gmail:
- Servidor SMTP: smtp.gmail.com
- Nombre de usuario SMTP: tu_direccion_de_correo@gmail.com
- Contraseña SMTP: tu clave de Gmail
- Puerto SMTP (SSL): 465
Código Fuente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
#include "ESP32_MailClient.h" //Cambiar por los datos de tu red wifi const char* ssid = "tu_red_wifi"; const char* password = "tu_clave_wifi"; // Para enviar correos electrónicos usando Gmail, use el puerto 465 (SSL) y el servidor SMTP smtp.gmail.com //Hay que habilitar la opción de aplicación menos segura https://myaccount.google.com/u/1/security // El objeto SMTPData contiene configuración y datos para enviar SMTPData datosSMTP; int boton=0; int cuenta=0; void(* Resetea) (void) = 0;//Función de reseteo por software del esp32 void setup() { Serial.begin(115200);//Velocidad del puerto serial pinMode(2, OUTPUT);//Led onboard pinMode(23, OUTPUT);//Led en pin 23 pinMode(12, INPUT);//Pulsador Serial.println(); Serial.print("Conentando"); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { //30 intentos antes de conexión antes de reiniciar el esp32 cuenta=cuenta+1; Serial.print("Intento: "); Serial.println(cuenta); if(cuenta==30){ Serial.println("Reinciando x software al esp32!!!"); Resetea();//Llama a la función de reinicio } delay(200); } Serial.println(); Serial.println("Red Wifi conectada!!!"); Serial.println(); digitalWrite(2, HIGH);//Enciende un led cuando el módulo esp32 se conecta a la red wifi } void loop() { boton=digitalRead(12); if(boton==0){ Serial.print("Iniciando correo!!!"); delay(200); correo(); } //Serial.print("Estado: "); //Serial.println(boton); //delay(200); } void correo(){ digitalWrite(23, HIGH); //Configuración del servidor de correo electrónico SMTP, host, puerto, cuenta y contraseña datosSMTP.setLogin("smtp.gmail.com", 465, "tu_cuenta_de_correo@gmail.com", "tu_clave_de_correo"); // Establecer el nombre del remitente y el correo electrónico datosSMTP.setSender("ESP32S", "tu_cuenta_de_correo@gmail.com"); // Establezca la prioridad o importancia del correo electrónico High, Normal, Low o 1 a 5 (1 es el más alto) datosSMTP.setPriority("High"); // Establecer el asunto datosSMTP.setSubject("Probando envio de correo con ESP32"); // Establece el mensaje de correo electrónico en formato de texto (sin formato) datosSMTP.setMessage("Hola soy el esp32s! y me estoy comunicando contigo", false); // Agregar destinatarios, se puede agregar más de un destinatario datosSMTP.addRecipient("direccion_de_destino@correo_cualquiera.com"); //Comience a enviar correo electrónico. if (!MailClient.sendMail(datosSMTP)) Serial.println("Error enviando el correo, " + MailClient.smtpErrorReason()); //Borrar todos los datos del objeto datosSMTP para liberar memoria datosSMTP.empty(); delay(10000); digitalWrite(23, LOW); } |
Materiales
- Un Módulo ESP32
- Un Resisitor de 1Kohm
- Un Diodo Led
- Un Módulo KY-004
Módulo pulsador KY-004
El módulo pulsador Arduino KY-004 es un botón que emitirá una señal cuando se lo presione.
Especificaciones
Circuito
Caracteristicas del módulo ESP32-T
Conectividad
El módulo ESP32 dispone de todas las variantes del WiFi:
- 802.11 b/g/n/e/i/n
- Wi-Fi Direct (P2P), P2P Discovery, P2P Group Owner mode and P2P Power Management
Esta versión nueva incluye la conectividad mediante Bluethoot de bajo consumo
- Bluetooth v4.2 BR/EDR and BLE
- BLE Beacon
Además, puede comunicarse mediante los protocoles SPI, I2C, UART, MAC Ethernet, Host SD
Prestaciones del microcontrolador
La CPU está formado por un SoC modelo Tensilica LX6 con las siguientes características y memoria
- Doble núcleo de 32 bits con velocidad de 160MHz
- Memoria ROM de 448 kBytes
- Memoria SRAM de 520kBytes
Dispne de 48 Pines
- 18 ADC de 12 bits
- 2 DAC de 8 bits
- 10 pines sensores de contacto
- 16 PWM
- 20 Entradas/salidas digitales
Alimentación y modos de consumo
Para un correcto funcionamiento del ESP32 es necesario subministrar un voltaje de entre 2,8V y 3,6V. La energía que consume depende del modo de funcionamiento. Contiene un modo, el Ultra Low Power Solution (ULP), en que se continúan realizando tareas básicas (ADC, RTC…) en el modo Sleep.
ESP8266 versus ESP32
Pin Out
Pensamientos finales
Si bien en este ejemplo vemos como enviar un correo simplemente apretando un botón, nada nos impide poder reemplazarlo por algún tipo de sensor digital, analógico o que use algún protocolo de comunicaciones especial, por supuesto se deberán hacer las modificaciones pertinentes al código fuente y al circuito que sean necesarias para poder implementarlos, Inclusive, se puede agregar más de un sensor para enviar todo tipo de alerta, desde un exceso de temperatura, la detección de un incendio y también un sistema de alarma con algún sensor PIR y magnético, pero eso será tema para otra discusión quizás más adelante.
SUSCRIBETE A NUESTROS BOLETINES, RECIBE EN TU CORREO LAS NOTICIAS MÁS DESTACADAS, SÓLO INGRESANDO TU CORREO ELECTRÓNICO
[wysija_form id=”1″]
VIDEO RECOMENDADO