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

 

Relé WiFi con ESP8266


En el post de hoy vamos  a ver lo sencillo y económico que resulta fabricar un tele-control por wifi para controlar dos cargas AC  usando como referencia la placa de bajo coste ESP8266

El Módulo ESP8266 WiFi es un SOC autónomo con pila de protocolos TCP / IP integrada que puede dar acceso a cualquier microcontrolador a su red WiFi. El ESP8266 es capaz de alojar una aplicación o descargar todas las funciones de red Wi-Fi desde otro procesador de aplicaciones.

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.

Este módulo cuenta con una 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.

Su alto grado de integración en el chip permite un mínimo de circuitos externos, incluyendo el módulo de front-end, estando diseñado para ocupar un área mínima de PCB.

Asimsimo el ESP8266 admite APSD para aplicaciones VoIP y interfaces de coexistencia Bluetooth, contiene un RF autocalibrado que le permite trabajar en todas las condiciones de funcionamiento y no requiere piezas externas de RF.

Nota: Existen una nueva versión del módulo ESP8266 WiFi que ha aumentado el tamaño del disco flash de 512k a 1 MB.

Caracteristicas:

  • 802.11 b / g / n
  • Wi-Fi Direct (P2P), soft-AP
  • Pila de protocolos TCP / IP integrada
  • Interruptor TR integrado, balun, LNA, amplificador de potencia y red de conexión
    PLLs integrados, reguladores, DCXO y unidades de administración de energía
  • + 19.5dBm de potencia de salida en modo 802.11b
  • Corriente de fuga de <10uA
  • 1MB de memoria flash
  • CPU de 32 bits de baja potencia integrada podría utilizarse como procesador de aplicaciones
  • SDIO 1.1 / 2.0, SPI, UART
  • STBC, 1 × 1 MIMO, 2 x 1 MIMO
  • A-MPDU & A-MSDU agregación & 0.4ms intervalo de guardia
  • Despierta y transmite paquetes en <2ms
  • Consumo de energía en espera de < 1.0mW (DTIM3)

Como nota importante,el módulo ESP8266 no es capaz de cambiar la lógica de 5-3V y requerirá un convertidor de nivel lógico externo si necesita conectar sensores o actuadores que utilizen logica TTL.

Si alguna vez ha intentado conectar un dispositivo de 3,3 V a un sistema de 5 V, es un  desafío  por lo que lo mejor es usar un  convertidor de nivel lógico bidireccional.Estos suelen ser pequeños dispositivos que descienden de forma segura las señales de 5V a 3.3V y suben de 3.3V a 5V al mismo tiempo. Estos convertidores de nivel también funcionan con dispositivos de 2.8V y 1.8V y son  muy fácil de usar: estas placad debe ser alimentada por las dos fuentes de tensión (alta y baja tensión) que su sistema está utilizando. Alta tensión (5V por ejemplo) al pin ‘HV’, baja tensión (3.3V por ejemplo) a ‘LV’, y tierra del sistema al pin ‘GND’.

 Materiales y herramientas

Para hacer este relé wifi necesitara:

  • Un Esp8266 ,el cual  se puede programar como un arduino y un adapatador
  • 2 relés 220vac control por 12v
  • 2 transistores TIP122
  • 6 diodos IN4007
  • unas resistencias (2x1k, 2x10k, 330, 220)
  • un transformador de 12v
  • un lm317
  • condensadores 50v 1000uf y 10uf
  • pcb de prototipos,algunos tornillos,enchufe AC , cable ,etc

Para las herramientas necesitará un soldador, un taladro, un 3d impresora (opcional) y papel de lija.

 La placa de relé

Aunque se pueden adquirir ya montados  placas con reles y el driver  por un precio bastante económico,  es también bastante sencillo construirlo usando dos reles de 12v , dos transistores  mosfet TIP122, dos diodos de proteccion  y dos resistencias de base de 1K

 Todo el conjunto se puede montar en una simple placa de prototipos pues como vemos el montaje es bastante sencillo:


La electrónica de este proyecto  pues o se compone de dos placas:

  • La placa de relé con 2 relés y 2 transistores, la cual puede ser adquirida aparte  o bien  montarla uno mismo
  • La placa de esp8266 con el módulo y toda la parte parte de alimentacion (transformador, puente rectificador y el lm317 para el 3c3 regular)

Un ejemplo de  montaje  es  colocar todos los componentes en el pcb de prototipo y luego cortar  la placa  el tamaño adecuado con una sierra. Todos los componentes se sueldan y después se ponen los  puentes con cable . Atención con el diámetro del cable cuando se conecta el relé pues,debe usar un cable de mas seccion  por el  tema de la carga AC

 La placa principal

El tablero principal consta de 3 partes:

  • La fuente  de 12v que inlcuye un puente rectificador de Graetz (bien ta montado o  con cuatro diodos) y un condensador electrolitico.
  • La fuente  de 3v3 regulados con el lm317 y las dos resistencias  que suministran un voltaje constante para la esp8266.
  • El  propio  modulo  esp8266  con las dos resistencias de protección

Para realizar la segunda placa , repita el mismo proceso de la primera. Cuando termine, compruebe el voltaje en el pin de alimentación del módulo.
Cuando están hechas las 2 placas, conecten con cable  ambo  módulos.

 Hacer la caja

 Se puede hacer  una caja con sketchup y una impresora 3d  .Si usted tiene acceso a una impresora 3d, descargar el archivo stl e imprimirlo (relleno de 20% y 0, 3 capas). Lijar la caja y los agujeros limpios.

Si no, puede hacer una caja de un Tupperware o cualquier caja de plástico.

Ahora usted puede terminar todo. Coloque primero la electrónica y el transformador en la caja y pegar. Tomar 3 tapones (uno en y 2 hacia fuera), el extremo de la tira . Conecte cada cable con el tornillo terminales siguiendo el esquema.

No se olvide de conectar el transformador.

Después de enchufe en el módulo, cierre el cuadro con  4 tornillos..!y eso es todo! ahora puede controlar cualquier dispositivo con su smartphone o PC.

Programa para la Esp8266

A continuación se describe el codigo de ejemplo para gestionar el ESP8266



// crear una instancia Arest
aREST_UI rest = aREST_UI();

// parametros WiFi
const char* ssid = «wifi nom»;
const char* password = «mot de passe»;

// puertos  TCP
LISTEN_PORT 80

// crear una instancia de servidor
WiFiServer server(LISTEN_PORT);
void setup(void)
{
Serial.begin(115200);

// crear UI
rest.title(«Relay «);
rest.button(2);
rest.button(0);

//dar nombre y la identificación del módulo
rest.set_id(«1»);
rest.set_name(«esp8266»);

// conectarse a wifi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(«.»);
}
Serial.println(«»);
Serial.println(«WiFi conectado»);

// inializando el servidor
server.begin();
Serial.println(«Servidor arrancado»);

// imprime  direccion  IP
Serial.println(WiFi.localIP());

}

void loop() {

WiFiClient client = server.available();
if (!client) {
return;
}
while(!client.available()){
delay(1);
}
rest.handle(client);

}

Basicamente se conecta a la red Wifi que se decida , se crea una instancia Arest que atiende el puerto 80 y en funcion del pulsador  que se pulse se actua  sobre  la placa

!No se olvide de cambiar el nombre de wifi y la contraseña en este código!

Una vez tenemos el código ,el último paso es programar el esp8266 como un Arduino.

Seguir este tutorial si no ahora como hacerlo: https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/using-arduino-ide para lo cual hay que descargar el programa (wifirealy.ino ) y cargarlo  en el módulo esp8266 usando por ejemplo el  siguinte montaje

Para probar el montaje ,introduzca la dirección IP del módulo en cualquier navegador y verá 2 interruptores virtuales de encendido/apagado. Esto cambiara  el control de los pines gpio 2 conectados a los transistores que a su vez excitaran los reles correspondientes controlando las cargas que se tengan conectadas a estos .

 ¿Le parece útil este proyecto?