Envio de correos con ESP8226


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: 

  1.  ESP8266 (puede usar culaquier versión ,por ejemplo ESP8266-07).
  2.  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.
  3. Algunos cables de puente.
  4. Router WIFI .

 

Asimismo también necesitaremos el siguiente Software:

  1. Software de Arduino
  2. Núcleo de Arduino para el chip de WiFi ESP8266
  3. 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.

 

contrasenas

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]";
Finalmente  en las siguientes lineas  puede ver el ejemplo completo:
#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

 

Si tiene un ordenador con Windows ya tiene despertador


En efecto si cuenta con un equipo tiene  windows 10 instalado,  sin necesidad de instalar nada más   ya tiene una combinación de reloj despertador, reloj mundial, temporizador y cronómetro incluida  en el propio sistema operativo .

Con esta  función , se puede establecer alarmas y recordatorios, consultar horarios en otras partes del mundo y cronometrar sus actividades, incluidos los tiempos parciales y las vueltas .Esta funcionalidad  va incluida en Windows 10 y  Windows 10 Mobile   y es compatible con todas las arquitecturas soportadas en windows como son   x86, ARM  y  x64

La nueva herramienta llamada  Alarmas y Reloj  que viene instalada de forma predeterminada en Windows 10 contempla principalmente  tres funciones:alarmas ,reloj mundial , cronometro y temporizador , siendo la primera de ellas la mas interesantes por su clara utilidad.

Para poder usar  cualquiera de las utilidades mencionadas la los mas sencillo es :

  • Iniciar la sesión en Windows 10.
  • Escribir en el espacio de búsqueda del asistente de Cortana (justo a la derecha del botón de inicio ) , en el cuadro  de dialogo la palabra “alarmas“                                     alrmas
  • Con estos pequeños pasos inmediatamente aparecerá la herramienta en los resultados: sólo tenemos que seleccionarla para poder disfrutarla a pantalla completa

Despertador

Esta herramienta obviamente es la utilidad principal de Alarmas y Reloj . Como nota interesante,ademas  las notificaciones  se reciben  cuando se dispare una alarma o un temporizador en su PC, incluso si la aplicación está cerrada o el equipo está bloqueado, eso si ,respetando el volumen que se tenga ajustado (por eso es  interesante asegurarse de mantener el volumen lo suficientemente alto como para oír la alarma o el temporizador).

alarmas

Si su PC pasa a modo de suspensión, es posible que las alarmas y los temporizadores no funcionen pues solo los nuevos equipos portátiles y tabletas que incorporen una función denominada InstantGo pueden reactivarse desde el estado de suspensión para hacer sonar una alarma o un temporizador (pero  no obstante incluso con InstantGo, puede que el dispositivo no se active si no está enchufado).

Si tiene dudas sobre el soporte de su PC  de esta característica, al seleccionar + para configurar una nueva alarma nueva o un nuevo temporizador, si aparece una advertencia de que «las notificaciones solo aparecerán si el equipo está activo», eso significa que el equipo no dispone de InstantGo.

Par ajustar un alarma no puede ser mas sencillo , pues solo basta seleccionar la hora, la repetición en función del día  de  la semana  (es decir para que  suene todos los días o únicamente algunos de ellos) pudiendo personalizar incluso el sonido a reproducir

aalr1

Una vez que haya definido los parámetros de esta alarma sólo tiene que volver a la pantalla anterior y posteriormente, seleccionar al icono de la campanilla que dice “desactivada” para que cambie al modo de “activada”.

La función del temporizador en Windows 10
Esta función también viene a ser la otra función que viene integrada dentro de este sistema operativo englobada dentro de  la utilidad  de  alarmas y relojes  . La función  ejecutada   es la de una cuenta regresiva   que empieza  (pulsando el botón de play)   desde el valor preajustado  ( que por supuesto se puede cambiar pinchando en la cifra) hasta llegar a cero sonando una notificación.

temporizador

Una utilidad interesante es la de verlo en tamaño grande pulsando la doble flecha ( ideal para concursos juegos , etc)

grande

 La función del cronómetro en Windows 10

Sin duda que esta viene a ser la función más fácil para ejecutar, ya que únicamente deberemos presionar al botón de play que tiene un icono muy similar al de “reproducción”.

Por supuesto al igual que ele temporizador se puede pausar volviendo pulsar a play.

crono

Prácticamente no hay nada más que hacer con dicha función, pudiéndose apreciar que el tiempo empieza a correr una vez que se haya presionado dicho botón.

Una utilidad interesante,al igual que el temporizador,  es  verlo en tamaño grande pulsando la doble flecha ( ideal para concursos juegos , etc)

Reloj Internacional

reloj-uinter

Para averiguar la hora  en cualquier ciudad del mundo , solo hay que pulsar en el botón +  y en la caja de dialogo escribir el nombre de la ciudad

reloj-internacional

También existe la opción  de comparar  qué hora seria en las diferentes ciudades que hayamos registrado, pulsando simplemente en el icono de los dos relojes solapados  y desplazándonos por la barra horizontal de la hora UTC

zonas

En definitiva vemos que nos aporta grandes utilidades  esta app incluida  de serie en Windows 10. Resumiendo estas son  las principales funciones incluidas  en la  utilidad Alarmas y Reloj de windows 10:

  • Establecer alarmas y recordatorios, incluidas alarmas recurrentes
  • Posponer  o anular alarmas desde la pantalla de bloqueo
  • Escuchar las alarmas aún cuando el dispositivo esté suspendido o silenciado
  • Personalizar sus alarmas con una gran variedad de sonidos, incluidos los archivos m4a que tenga (en caso se ser unl teléfono
  • Hacer un seguimiento de los horarios actuales, pasados y futuros en el mundo, y comparar los horarios de varias ubicaciones
  • Usar varios temporizadores al mismo tiempo
  • Usar el cronómetro para medir los tiempos de vueltas y parciales

Como vemos  pues  tal y como podrá admirar, la nueva función integrada en Windows 10 para utilizar a su alarmas, temporizador o cronómetro ofrece inmensas posibilidades para quienes deseen utilizar a estos recursos en lugar de usarlos en sus respectivos teléfonos móviles.