En este tutorial, aprendamos cómo enviar correos electrónicos desde el microcontrolador PIC utilizando el famoso módulo WiFi ESP8266. Este tutorial utiliza PIC16F877A IC y el compilador MPLABX y XC8 para la programación.
Al final de este tutorial, podrá enviar correo electrónico desde cualquier ID de correo electrónico normal como Gmail, yahoo, etc. a cualquier otro ID de correo electrónico. Por lo tanto, este tutorial asume que tiene algunos conocimientos básicos sobre los módulos ESP8266-01 y los microcontroladores PIC. Si no, los siguientes tutoriales te ayudarán
- Introducción a ESP8266
- Interfaz ESP8266 con PIC
Así que comencemos…
Preparándose con su ID de correo electrónico:
Una vez que haya decidido desde qué ID de correo desea enviar los correos electrónicos, siga los pasos a continuación
Paso 1: visite https://www.smtp2go.com/ y regístrese como nuevo usuario. Ingrese su nombre, dirección de correo electrónico y contraseña de su ID de correo electrónico desde el que desea enviar el correo.
Este tutorial utiliza la ID de correo: aswinthcd @ gmail.com y la contraseña: circuitdigest.
Paso 2: Haga clic en registrarse y se le enviará un correo de verificación a su ID de correo ingresado. En este caso es aswinthcd @ gmail.com. Abra el correo y haga clic en "ACTIVAR CUENTA"
Paso 3: Es posible que vuelva a solicitar una contraseña, si se le solicita, ingrese la contraseña anterior. En este caso es 'circuitdigest'. Luego, iniciará sesión en el sitio web de SMPT2GO. Eso es, ahora su dirección de correo electrónico está lista para enviar correos usando el Módulo ESP8266.
Paso 4: El último paso es codificar el ID de correo electrónico y la contraseña en formato base 64 utilizando este sitio web https://www.base64encode.org/. Vamos a utilizar esto en nuestro programa PIC.
En este caso, los valores codificados se verán como se muestra en la tabla siguiente.
Parámetro |
Formato normal |
Codificado en base 64 |
Identificación del correo |
aswinthcd @ gmail.com |
YXN3aW50aGNkQGdtYWlsLmNvbQ == |
Contraseña |
circuito de resumen |
Y2lyY3VpdGRpZ2VzdA == |
Preparando su hardware:
El esquema completo del proyecto se muestra a continuación.
La pantalla LCD se utiliza aquí con fines de depuración. No es obligatorio que lo conectes. El programa funcionará bien incluso sin la pantalla LCD. Si desea saber más sobre los esquemas, visite este tutorial. (Interfaz PIC con ESP).
Simplemente puede montar este circuito en una placa y luego continuar con la programación.
Programando su PIC para enviar correo electrónico:
Para enviar un correo electrónico desde el ESP8266, se debe enviar una secuencia de comandos AT al módulo ESP. Se deben seguir los siguientes pasos para enviar un correo electrónico desde ESP8266.
- Configure el módulo en modo AP + STA (punto de acceso y estación)
- Conéctese a un punto de acceso para obtener conexión a Internet
- Habilitar múltiples conexiones
- Inicie un servidor en cualquier puerto específico
- Establezca una conexión TCP con el sitio web SMPT2GO
- Navegue a la sección de inicio de sesión del sitio web
- Ingrese el ID de correo electrónico y la contraseña en formato base64
- Ingresar desde ID de correo
- Ingrese a ID de correo
- Ingrese el Asunto del correo
- Ingrese el cuerpo del correo
- Indicar el final del correo
- Enviar el correo
- Salir de la conexión TCP
Es un proceso un poco largo y tedioso, pero no se preocupe. He simplificado el proceso creando un archivo de encabezado y puede usarlo directamente simplemente llamando a algunas funciones (explicadas a continuación), lo que hace que esta tarea sea muy fácil. El código completo junto con el archivo de encabezado se puede descargar desde aquí.
Nota: Si está utilizando el código en un nuevo proyecto, asegúrese de descargar el archivo de encabezado y agregarlo a su proyecto.
He explicado algunas partes importantes del código a continuación, las otras partes se explican por sí mismas. Pero si tiene alguna duda, no dude en utilizar la sección de comentarios.
/ * Verifique si la comunicación ESP_PIC es exitosa * / do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP no encontrado"); } while (! esp8266_isStarted ()); // esperar hasta que el ESP envíe "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP está conectado"); __delay_ms (1500); Lcd_Clear (); / * Sí Comunicación ESP exitosa -Proceda * /
Esta parte del código se usa para verificar si existe una comunicación adecuada establecida entre el PIC y el ESP8266. Solo si ambos pudieran enviar y recibir datos a través de USART, el programa pasará al siguiente paso.
esp8266_mode (3);
Esta función establecerá el ESP8266 en modo 3. Lo que significa que el módulo ahora puede actuar como un punto de acceso y también como un servidor.
esp8266_connect ("casa BPAS", "cracksun");
Esta función se utiliza para conectar su módulo ESP8266 a su enrutador Wifi. En este caso, “BPAS home” es el nombre de mi señal Wifi y “cracksun” es mi contraseña. Tienes que usar tus propios detalles de señal Wifi.
_esp8266_enale_MUX (); // Habilita múltiples conexiones _esp8266_create_server (); // Crea un servidor en el puerto 80
Estas dos funciones se utilizan para habilitar múltiples conexiones y crear un servidor en el puerto 80.
_esp8266_connect_SMPT2GO ();
Ahora, usando esta función podemos establecer una conexión TCP con SMPT2GO. Una vez que se establece la conexión, esta función también se mueve a la página de inicio de sesión del sitio web.
_esp8266_login_mail ("YXN3aW50aGNkQGdtYWlsLmNvbQ ==", "Y2lyY3VpdGRpZ2VzdA ==");
Utilice esta función para ingresar su ID de correo electrónico y contraseña en formato base 64. Como puede ver, estos valores codificados son los mismos que se muestran en la tabla anterior. Sus valores codificados variarán según su ID de correo electrónico y contraseña.
_esp8266_mail_sendID ("aswinthcd @ gmail.com");
Esta función se utiliza para definir el nombre del ID del remitente. En este tutorial, estoy enviando el correo usando mi ID de Gmail aswinthcd @ gmail.com, por lo tanto, lo he pasado como parámetro.
_esp8266_mail_recID ("mailtoaswinth @ gmail.com");
Esta función se utiliza para definir el nombre del ID del receptor. Me gustaría enviar mis correos a otra cuenta de Gmail mía, por lo tanto, he pasado el parámetro como mailtoasiwnth @ gmail.com. Puede usar su ID de correo deseado
_esp8266_start_mail ();
Esta función le indica al servidor SMPT2GO que vamos a introducir el asunto y el cuerpo del correo y lo prepara para el mismo.
_esp8266_mail_subject ("Correo de ESP8266");
Puede utilizar esta función para definir el asunto del correo. Como ejemplo, he utilizado "Correo de ESP8266" como asunto del correo.
_esp8266_mail_body ("Prueba satisfactoria -CircuitDigest");
Después de ingresar el asunto, puede ingresar el cuerpo del correo usando esta función. Como ejemplo, he configurado "Testing Success –CircuitDigest" como el cuerpo de mi correo.
_esp8266_End_mail ();
Ahora que hemos ingresado el asunto y el cuerpo del correo, tenemos que indicarle al servidor SMPT2GO que hemos terminado de agregar detalles al correo. Esto se puede hacer usando la función
_esp8266_End_mail ();
_esp8266_disconnect_SMPT2GO ();
Finalmente después de enviar el correo, tenemos que terminar la conexión TCP con el servidor SMPT2GO. Esto se hace usando la función anterior.
Trabajando:
Una vez que haya terminado con su hardware y programa. Simplemente descargue el código en su PIC MCU. Luego encienda su circuito. Si todo sale como se esperaba, su LCD debería mostrar el estado del proceso y finalmente terminar diciendo "Correo enviado" como se muestra en el video a continuación. Su hardware podría verse así.
Una vez que la pantalla LCD muestra que se envió el correo, revise su Bandeja de entrada y la carpeta Spam para ver el correo enviado. Debería haber recibido el correo como se muestra a continuación.
Eso es todo, ahora puede hacer sus propios proyectos IOT leyendo los datos de un sensor y enviándolos a su ID de correo. Cree un sistema de alerta de seguridad para su hogar o automóviles activando una alerta por correo.
Si tienes alguna duda o te quedas atascado en el medio, usa la sección de comentarios y estaré encantado de ayudarte.