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

 

Nueva vida para su viejo disco duro por 5€


Es habitual cambiar el viejo duro de un ordenador  portatil por uno del tipo SSD pues  gastan muchísima menos energía , no hacen ruido y sobre todo  mejoran el rendimiento del equipo de forma espectacular   ya que la velocidad de acceso a este es increíblemente mas rápida que un disco tradicional.

Puede que el viejo disco que haya quitado a su ordenador este en un cajón porque probablemente habrá pensado que no merece la pena ponerle una caja, pero con la bajada de precios de hw  por sólo 5€ en Amazon  es posible comprar una caja de aluminio de calidad

También podría ser que haya  jubilado un antiguo portátil por avería  (y, no pueda arrancarlo,) así que una buenísima opción es optar por una caja para conectar el disco duro a su nuevo portátil como si de un pincho USB se tratara !y así de simple funcionara y  no necesitará nada más para recuperar su datos  y darle un nuevo uso!.

 

La caja para disco duro de la que hablamos es  del fabricante TooQ  y es el  modelo 2510B siendo especifica para discos  de 2.5″ SATA   ( y el líder de ventas en Amazon)y   como es habitual en este tipo de cajas no necesita alimentación adicional

Esta caja es compatible  con usb 2.0 ( de ahí su precio ) pero desde  luego  para datos o backup es mas que suficiente o incluso para reproducir contenido multimedia.

Incluso sirve para   conectarlo a su televisión para utilizarlo como grabador( si esta dispone de esa posibilidad) . En este caso es totalmente compatible y graba perfectamente con una velocidad alta de transmisión.

La  caja esta  totalmente adaptada al disco duro,  llevando un cable usb, dos tornillitos de sujeción,manual de instalación  y un pequeño destornillador para apretarlos.

En realidad la instalación es bastante sencilla, una vez que desembale el paquete, sólo tiene  que seguir los 5 siguientes  sencillos  pasos:

1º-Tiene que quitar la tapa de plástico  del lado del conector que viene sin atornillar

img_20161018_201716

2-Ahora enfrente la pequeña plaquita del controlador  de la caja  con su disco SATA  procurando que coincidan ambos conectores

img_20161018_201745

3º-Conecte el disco a la placa del adaptador

img_20161018_201802

4º Ahora meta con cuidado el conjunto atornillando con los dos tornillitos que incluye en una bolsita de plástico   usando  el destornillador philips que trae el propio  kit

img_20161018_201833

5º-Conecte ahora el cable usb mediante el único extremo libre usb que lleva el cable y el extremo que lleva dos conectores a un conector del ordenador

img_20161018_202040

 

A continuación os mostramos alguna  de las  características de esta caja:

Altura: 1,2 cm
Altura de la unidad de almacenamiento: 9,5 mm
Altura del paquete: 4 cm
Ancho: 7,1 cm
Ancho del paquete: 13 cm
Cables incluidos: USB
Capacidad máxima: 0,75 TB
Color del producto: Negro
Conectar y usar (Plug and Play): Si
Conexión USB: Si
Género del conector USB: Femenino
Hot-swap: Si
Indicadores LED: Si
Interfaces de disco de almacenamiento soportados: SATA, Serial ATA II, Serial ATA III
Manual de usuario: Si
Materiales: Aluminio
Número de unidades de almacenamiento compatibles: 1
Peso: 80g
Peso del paquete: 234g
Profundidad: 13,8 cm
Profundidad del paquete: 17,4 cm
Sistemas de archivos soportados: ext2, FAT32, HFS, NTFS
Sistemas operativos compatibles:  Windows 2000/XP/VISTA/Win7 , MAC OS 9.X +  , Linux, Ubuntu
Tamaño de la unidad de almacenamiento: 6,35 cm (2.5″)
Tipos de unidades de almacenamiento admitidas: Unidad de disco duro
Tornillos incluidos: Si
Velocidad de transferencia de datos: 480 Mbit/s
Versión USB: 2.0

 

Sin duda es una buena opción para dar una  nueva vida a un disco que tenga sin uso .Personalmente lo he probado  y ha cumplido mis expectativas en cuanto a relación calidad/precio

¿Y usted tiene algun disco de 2 1/2″  en desuso y no sabe que hacer con el? Pues por sólo 5€  ya sabe que puede volverle a dar un oportunidad …