El Módulo ESP8266 WiFi es un SOC autónomo con pila de protocolos TCP / IP integrada que puede dar acceso a cualquier micro-controlador a su red WiFi. Este modulo no se limita a poder dar conectividad WIFI a un Arduino ,pues el ESP8266 es capaz de alojar una aplicación que incluso puede enviar notificaciones de correo
Cada módulo ESP8266 viene preprogramado con un firmware de conjunto de comandos AT, lo que significa que simplemente puede conectarlo a su dispositivo Arduino y obtener casi la capacidad Wi-Fi que ofrece Wi-Shield.
Aunque dar conectividad esta muy bien, lo relevante es que este módulo cuenta con capacidad de almacenamiento y procesamiento a bordo lo suficientemente potente para permitir integrarse con los sensores y otros dispositivos específicos a través de sus GPIO con un desarrollo mínimo inicial y una carga mínima durante el tiempo de ejecución.
Vamos a ver pues cómo es posible enviar correos electrónicos desde cualquier módulo de wifi de ESP8266 usando el servidor de Gmail.
El circuito se basa en base de Arduino para el chip de WiFi ESP8266 pero haciendo que un microcontrolador sea independiente de él (sin necesidad de comandos y dispositivos maestros) de modo que se pueden conectar sensores directamente a este y obtener notificaciones por correo electrónico ante cambios o cuando lo estimemos conveniente) .
Antes de comenzar necesitaremos los siguintes componentes:
- ESP8266 (puede usar culaquier versión ,por ejemplo ESP8266-07).
- USB UART Board(por ejemplo FT232RL FTDI Serials Adapter Module. No es necesario este adaptador si la tarjeta ESP8266 ya tiene puerto usb pues es este puerto el que necesitamos para programar el puerto.
- Algunos cables de puente.
- Router WIFI .
Asimismo también necesitaremos el siguiente Software:
- Software de Arduino
- Núcleo de Arduino para el chip de WiFi ESP8266
- Sketch con código de proyecto y de la prueba (ESP8266_Gmail_Sender.zip)
ESP8266_Gmail_Sender.zip.
Paso 1: Configuración de cuentas de Gmail
Vamos a utilizar SMTP para enviar mensajes por lo que mediante la autenticación de SMTP deberemos proporcionar la cuenta de correo electrónico y la contraseña actualizada
Como por defecto Google utiliza métodos de verificación más complejos , necesitamos cambiar esta configuración, si es que vamos a usar una cuenta de gmail para enviar las notificaciones.
En caso pues de usar gmail para enviar notificaciones, tendremos que ir a la configuración de la cuenta de Google y activar «Permitir aplicaciones menos seguras:SI» en la parte inferior de la página, lo cual significa que las aplicaciones sólo necesitan su email y contraseña cuando inicie sesión en su cuenta de gmail.
Obviamente si le preocupa la seguridad, use al menos otra cuenta diferente de su cuenta habitual.
Paso 2: Código de ejemplo
El autor escribió un pequeño ejemplo que envía un mensaje de prueba para comprobar si todo funciona ( ESP8266_Gmail_Sender.zip.) por los que cuando todo el software descargado e instalado descomprima el fichero ,busque y abra ESP8266_Gmail_Sender.ino y se debería abrir el IDE de arduino
A continuación algunos detalles de dicho código:
- Debe establecer su nombre de punto de acceso Wi-Fi (SSID) y su contraseña. Debe ser como esta:
const char* ssid = "MyWiFi"; const char* password = "12345678";
- En el hallazgo de la función setup() tenemos el condicional que envia el correo al destinatario especificado (< [email protected]> ) ,quecomo es lógico deberá modificar .Como vemos el primer parámetro de la función de Enviar es email destinatario, segundo texto del mensaje.
if(gsender->Subject(subject)->Send("[email protected]", "Setup test"))
La función asunto es opcional :se pueden enviar los mensajes sin asunto o con este
gsender->Send(to, message);
- Ahora Abra el fichero Gsender.h Necesitamos Base64 para codificar la dirección de correo electrónico y contraseña de la cuenta de gmail que se utilizará para enviar mensajes de correo electrónico. Usted puede utilizar base64encode.org para la codificación, el resultado debe ser algo como:
const char* EMAILBASE64_LOGIN = "Y29zbWkxMTExMUBnbWFpbC5jb20="; const char* EMAILBASE64_PASSWORD = "TGFzZGFzZDEyMzI=";
- Campo de ajuste define la cuenta de correo que quiere que aparezca como remitente
const char* FROM = "[email protected]";
#include <ESP8266WiFi.h> #include "Gsender.h" #pragma region Globals const char* ssid = ""; // WIFI network name const char* password = ""; // WIFI network password uint8_t connection_state = 0; // Connected to WIFI or not uint16_t reconnect_interval = 10000; // If not connected wait time to try again #pragma endregion Globals uint8_t WiFiConnect(const char* nSSID = nullptr, const char* nPassword = nullptr) { static uint16_t attempt = 0; Serial.print("Connecting to "); if(nSSID) { WiFi.begin(nSSID, nPassword); Serial.println(nSSID); } else { WiFi.begin(ssid, password); Serial.println(ssid); } uint8_t i = 0; while(WiFi.status()!= WL_CONNECTED && i++ < 50) { delay(200); Serial.print("."); } ++attempt; Serial.println(""); if(i == 51) { Serial.print("Connection: TIMEOUT on attempt: "); Serial.println(attempt); if(attempt % 2 == 0) Serial.println("Check if access point available or SSID and Password\r\n"); return false; } Serial.println("Connection: ESTABLISHED"); Serial.print("Got IP address: "); Serial.println(WiFi.localIP()); return true; } void Awaits() { uint32_t ts = millis(); while(!connection_state) { delay(50); if(millis() > (ts + reconnect_interval) && !connection_state){ connection_state = WiFiConnect(); ts = millis(); } } } void setup() { Serial.begin(115200); connection_state = WiFiConnect(); if(!connection_state) // if not connected to WIFI Awaits(); // constantly trying to connect Gsender *gsender = Gsender::Instance(); // Getting pointer to class instance String subject = "Subject is optional!"; if(gsender->Subject(subject)->Send("[email protected]", "Setup test")) { Serial.println("Message send."); } else { Serial.print("Error sending message: "); Serial.println(gsender->getError()); } } void loop(){}
Paso 3: Carga de código y pruebas
Una vez personalizado el código anterior debemos Guardar los cambios.
Para enviar el código a su placa no olvide establecer su placa exacta en el menú de herramientas del iDE de Arduino
Una vez subido el sketch a la placa de ESP8266 ,abra el monitor serie y desde ahí podrá ver los mensajes de registro similares a la pantalla anterior.
Si ha llegado hasta aquí ya tiene la base : solo tiene que conectar el sensor que necesite( por ejemplo uno magnético) a la placa y modificar el código anterior para que este responda ante un determinado estado del sensor (por ejemplo puerta abierta) enviando el correo electrónico correspondiente
Fuente aqui
Debe estar conectado para enviar un comentario.