Páginas

Mostrando las entradas con la etiqueta ESP8266. Mostrar todas las entradas
Mostrando las entradas con la etiqueta ESP8266. Mostrar todas las entradas

sábado, 12 de noviembre de 2016

Tutorial ESP8266 Control Servo Node-RED MQTT (Mosquitto) IoT #2



En esta oportunidad se ha realizado la integracion de ESP8266 y la plataforma Node-RED integrando un actuador en este caso un servo controlado por PWM con giro de 0  a 180 grados.
Desde un HMI o SCADA Web creador en Node-Red-Dashboard utilizando como base el Protocolo MQTT y la libreria  pubsubclient convirtiendo el ESP8266 en Cliente MQTT.



Nota: Para realizar correctamente este tutorial debe realizar los siguientes tutoriales.
Tutoriales Anteriores Recomendados
Requerido Programar ESP8266 con Arduino IDE
Tutorial 1: Instalacion de lubuntu ubuntu
Tutorial 2: Instalacion de Node Red
Tutorial 3: Instalacion Dashboard Node Red 
Tutorial 4: Instalacion nodo Modbus TCP en Node red 
Tutorial 5: Instalacion de Mosquitto Broker MQTT en Lubuntu
Tutorial 6: Prueba  ESP8266 y Node-RED MQTT  (Mosquitto)  # 1


Arduino IDE 
Se ha configurado el modulo ESP8266 como cliente MQTT, como suscriptor del topico "servo", el ESP8266 recibira un valor de 0 a 100% y lo convertira de 0 a 180 grados para el control del servo via PWM por el GPIO 02. 


Mosquitto MQTT Broker
Previamente se ha instalado en un equipo con lubuntu (Ubuntu) Linux, el servidor Broker MQTT el cual realiza la gestion de mensajes en la red, se ha utilizado Mosquitto en este caso.  

Node-Red
Se ha creado una secuencia de nodos para envio de datos desde el Dashboard.

Node-RED-Dashboard

Vista Tablet






Materiales 
1 ESP8266 01
1 Regulador LDV33CV  5 a 3.3V
1 Chip FTDI Serial
1 Servo  Mystery control por PWM

Conexiones



Descargas:
Codigo Arduino IDE Github ESP8266 MQTT
Github Libreria pubsubclient
Codigo importacion Node red

Refencias
Requerido Programar ESP8266 con Arduino IDE
Tutorial 1: Instalacion de lubuntu ubuntu
Tutorial 2: Instalacion de Node Red
Tutorial 3: Instalacion Dashboard Node Red 
Tutorial 4: Instalacion nodo Modbus TCP en Node red 
Tutorial 5: Instalacion de Mosquitto Broker MQTT en Lubuntu
Tutorial 6: Prueba  ESP8266 y Node-RED MQTT  (Mosquitto)  # 1
node-red-dashboard
Nodered.org
github.com/node-red
Nodejs.org

Mas Información:

Canal Youtube



miércoles, 9 de noviembre de 2016

Tutorial ESP8266 Control GPIO Node-RED MQTT (Mosquitto) IoT # 1


Para la integración del modulo ESP8266 con la plataforma IoT node-red se ha utilizado el protocolo MQTT, existen librerias para esp8266 como cliente MQTT en este caso he decidido utilizar la libreria pubsubclient.

Este ejemplo permitira recibir que Node red reciba datos desde el ESP8266 y permitira controlar un diodo led conectado al GPIO 02 desde un dashboard creado en Node Red Dashboard.



Agregar a Arduino IDE la libreria pubsubclient utilizando el buscador de librerias o descargando manualmente la libreria y guardandola en su carpeta respectiva para librerias.

Nota: Para realizar correctamente este tutorial debe realizar los siguientes tutoriales.
Tutoriales Anteriores Recomendados
icstation.com
Tutorial 1: Instalacion de lubuntu ubuntu
Tutorial 2: Instalacion de Node Red
Tutorial 3: Instalacion Dashboard Node Red 
Tutorial 4: Instalacion nodo Modbus TCP en Node red 
Tutorial 5: Instalacion de Mosquitto Broker MQTT en Lubuntu
Tutorial 6: Programar ESP8266 con Arduino IDE

Codigo Arduino IDE
el codigo de arduino IDE realiza varios pasos pero definire los principales, conexion con Broker MQTT, funcion de publicar (enviar mensajes ) aun topico especifico y funcion de suscribir (recibir mensajes) aun topico especifico.
Nota: En la parte inferior del post Codigo arduino IDE completo

1.Parametros de Red
Configurar  parametros de red SSID y PASSWORD, se requiere tener previamente instalado un servidor MQTT Broker el cual cumple la funcion de servidor, en este caso yo utilizo Mosquitto MQTT.
const char* ssid = "##############";
const char* password = "###############";
const char* mqtt_server = "192.168.0.19";

2. Función publish ("topic", mensaje) 
 client.publish("event", "hello world");

3.  Función subscribe ("topic")
la funcion  subscribe realiza unllamado a la  funcion callback para la recepcion de datos
  client.subscribe("event");

4. Funcion callback
A esta funcion ingresan 3 parametros propios de la libreria pubsubclient.h  topic, payload (carga) y tamaño, realiza la impresion del topic y el mensaje, para el encendido del diodo led realiza un barrido de payload en una posicion especifica para determinar el estado 1 o 0.

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();

  // Switch on the LED if an 1 was received as first character
  if ((char)payload[0] == '0') {
     Serial.println("LOW");
    digitalWrite(2, LOW);   // Turn the LED on (Note that LOW is the voltage level
    // but actually the LED is on; this is because
    // it is acive low on the ESP-01)
  } 

 if ((char)payload[0] == '1') {
    Serial.println("HIGH");
    digitalWrite(2, HIGH);  // Turn the LED off by making the voltage HIGH
  }

}


Node red
1 Nodo de Recepcion de mensajes cliente MQTT  (subscribe) desde ESP8266 atravez del topic "event" y depuracion en nodo debug.
2 Creacion de 2 botones  "On" "Off" para envio de valores a nodo MQTT (publish) hacia ESP8266 topic "event"
3 Nodo text de salida de texto para visualizar estado de diodo led.
Nota: En la parte inferior del post codigo de Importación de Nodos en Github




Diseño Dashboard Node red
Organizacion de Widgets en pestañas y Grupos



Visualizacion Dashboard Node red



Conexion ESP8266 








Donde Comprar ?

Descargas:
Codigo Arduino IDE Github ESP8266 MQTT
Github Libreria pubsubclient
Codigo importacion Node red

Refencias
icstation.com
Tutorial 1: Instalacion de lubuntu ubuntu
Tutorial 2: Instalacion de Node Red
Tutorial 3: Instalacion Dashboard Node Red 
Tutorial 4: Instalacion nodo Modbus TCP en Node red 
Tutorial 5: Instalacion de Mosquitto Broker MQTT en Lubuntu
Tutorial 6: Programar ESP8266 con Arduino IDE
node-red-dashboard
Nodered.org
github.com/node-red
Nodejs.org

Mas Información:

Canal Youtube

martes, 20 de septiembre de 2016

Actualizacion ESP8266 Industrial Modbus TCP IP V2.0



Se han realizado numerosas aplicaciones en el ESP8266, he tomado como meta integrar este modulo a uno de los protocolos industriales mas utilizados Modbus TCP IP, seria bueno tener un nodo o sensor que envie datos o a un controlador, OPC, PAC, PLC, HMI o SCADA.

Hace mucho tiempo encontre un grupo de personas en forums.adafruit que ya tenian un avance y se han implementado los ejemplo y mejoras sugeridas gracias a ibbba por el aporte.
El codigo de programacion para el ESP8266 en este caso se implemento en Arduino IDE versiones superiores a 1.6.4.  Estos 2 tutoriales indicaran la conexión y programación basica de los modulos ESP8266 01 y 03.
TUTORIAL

TUTORIAL
Pruebas Anteriores libreria  ModbusTCPSlave
ESP8266 - 01 Esclavo Modbus TCP IP (Ethernet) para Aplicaciones Industriales 

CONCLUSIONES 
En las pruebas anteriores con la libreria Original  ModbusTCPSlave, presentaba 2 inconvenientes de aplicación:
 Ejecucion de Codigo
Funcionaba correctamente la comunicacion modbus tcp, pero no ejecuta el codigo en la rutina void loop, como solucion temporal se modifica la libreria para el ESP8266 detenga la conexión y reconecte nuevamente, el problema que presenta este metodo es tiempo de reconexion puede hacer que el maestro aunque acepte los datos indique error en la recepción de datos.
Puerto Serial
Originalmente el puerto serial del ESP8266 era utilizado como puerto de depuración en hexadecimal, he realizado modificaciones en la librería para que el Serial pueda ser utilizado de manera libre.  

VIDEO Actualizacion ESP8266  Industrial Modbus TCP IP   V2.0

MEJORAS REALIZADAS
-Con las nuevas modificaciones se ha omitido la desconexion permitiendo un flujo constante de comunicación si detener obligatoriamente la conexión entre el ESP8266 y el maestro modbus tcp.
Ticker
-Se ha implementado la libreria Ticker creada y documentada por igrr, es un objeto que va a llamar a una función dada con un cierto período. Cada Ticker llama a una función. Puede tener tantos como desee tickers, siendo la única limitación de memoria.
Nota importante: al crear tickers tener en cuenta no crear ningun delay, afectaria tanto la comunicación del protocolo modbus, como la ejecución de dicha función.


PRUEBAS REALIZADAS
Se realizara la conexión entre el ESP8266 y un simulador Modbus tcp Configurado como Maestro.
-Inicialmente se crea el Ticker Parada.

DESCRIPCION DE CODIGO
se crea la funcion llamada valor y se definen 2 Holding Registers:
Mb.MBHoldingRegister[0] =  Holding Registers 1
Mb.MBHoldingRegister[1] =  Holding Registers 2

Mb.MBHoldingRegister[0] enviara un valor random(0,51) hacia el  Maestro Modbus y validar la actualizacion del valor.

Mb.MBHoldingRegister[1] se utilizara para la lectura de un valor enviados desde el Maestro modbus y desde el terminal serial se validara la actualizacion.

Se ejecutara la rutina modbus Mb.Run();  y se ejecutara el Ticker  Parada.attach_ms(25,valor); cada 25ms realizando lo creado en la funcion valor.

void loop()
{
Mb.Run();
delay(10);
////Ticker Function
Parada.attach_ms(25,valor);
}

Tomando este ejemplo como base, se podrían realizar funciones para manejo de I/O analogas y digitales, calculos y demas, solo teniendo en cuenta no implementar ningun delay.

POSIBLES APLICACIONES INDUSTRIALES
Integraciones con software Industrial OPTO22
TUTORIAL




Donde Comprar ?

Descargas Github
Codigo y librerias  ESP8266_Industrial_ModbusTCP_V2

Referencias 
Arduino + ESP8266 + Software Opto22 ejemplo Scada Industrial
Arduino Mega 2560 Display Oled I2C Modbus Maestro RTU Conexion Scada Industrial

Mas Información:

Canal Youtube
PDAControl






jueves, 11 de agosto de 2016

Blink ESP8266 03 ESP 03 en Arduino IDE




Probando el ESP8266 03, se han notado diferencias con su version ESP 01.
Por defecto trae comandos AT, utilizando el ejemplo blink y modificando para activar el GPIO 02 como salida.




Conexion para Programar ESP
Se debe colocar el GPIO 0 a GND para colocar en modo bootloader el modulo, su programacion es igual al ESP 01, solo que este no tiene RST y se debe tener el GPIO 15 a GND 




Conexion de GPIO 02 
Materiales


Video de Prueba


Referencias 
icstation.com
Nuevo ESP8266 03 ( ESP 03 )

Mas Información:

Canal Youtube
PDAControl


viernes, 29 de julio de 2016

Nuevo ESP8266 03 ( ESP 03 )



ESP8266 03
He realizado gran cantidad de pruebas con el ESP8266 01 (ESP 01), considero que tiene un sin fin de aplicaciones, pero he decidido realizar pruebas con otro modulo de la misma familia, en este caso ESP8266 03 (ESP03), Diria que su gran ventaja seria que posee 7 GPIO (I/O).




Caracteristicas

1. Soporta 802.11 B/G/N
2. Comunicación rango de hasta 100 yardas en función del entorno.
3. Funcionamiento estándar 3.3VDC con 5V compatible con E / S.
4. Norma 3 hilos (TXD / RXD / GND) de comunicación en serie (ralentí alto) en 115200/8 / N / 1.
5. Norma 0.1 "(2.54 mm) la mitad a través del agujero.
6. Firmware actualizable.
7. Tres modo de funcionamiento: El cliente / punto de acceso / el cliente y el punto de acceso.
8. Apoyo a todos los principales sistemas de seguridad: OPEN / WEP / WPA_PSK / WPA2_PSK / WPA_WPA2_PSK.
9. Soporte TCP y comunicación UDP.
10. Trabajo como servidor TCP / UPD admite hasta cinco (5) conexiones.
11. Trabajo como estación puede conectar hasta 5 servidores TCP / UPD.
12. Comandos AT simple para todas las operaciones.
13. Dimensiones en mm 17.3 × 12.1.
14. 7 Gpio (I/O)



Materiales
ESP8266 03 (ESP03)

Referencias 
icstation.com

Mas Información:

Canal Youtube
PDAControl




jueves, 21 de julio de 2016

Enviar Correo Electronico con ESP8266 (Google Docs) Google Script App +Google Spreadsheets + Gmail



Reutilizando la conexión establecida con google script app y google spreadsheets, se han realizado pruebas de envió de correo electrónicos  aprovechando los servicios de google.


 En este caso el ESP8266 envia una serie de parametros hacia google Script Direccion Email, Asunto, Mensaje atravez del url,
 el funcionamiento es un tanto sencillo y considero que simplemente es una opcion para enviar alguna eventualidad desde su cuenta de gmail sin demasiada complicación.
Sencillamente se realiza una conexion segura con Google script y se envia un Post con los parametros requeridos

 Existe otra manera de envia correos electronicos y En fututos tutoriales enviaremos correos via SMTP nativo desde ESP8266.
Tomado de Wikipedia.

Nota Importante :
Para entender detalladamente el modo de funcionamiento de la conexion entre esp8266 y Google Script App primero ver los siguientes Posts ,dado que utiliza la la Libreria HTTPSRedirect  creada por Sujay Phadke (electronicsguy), gracias por su aporte a la comunidad  ESP,

 1. Como programar ESP8266 con Arduino IDE desde Cero

2. Conexion ESP8266 directa a Google Spreadsheets (Google Docs)


Nota Informativa :
Se debe tener en cuenta que estos servicios de gmail deben tener un limite diario, tanto de correo electronico como ejecución de Script, esta nota es netamente informativa.

Dashboard Informativo para cuentas de Google.
https://www.google.com/settings/dashboard?hl=es-419
http://www.google.com/appsstatus#hl=es&v=status

Codigo Arduino IDE
-Descarga de codigo abajo



Codigo Google Script App
Realiza lectura de parametros desde ESP8266 y realiza el envio del correo electronico.
-Descarga de codigo abajo


Google SpreadSheets
 Plantilla de Verificaion, Google script lee las celdas A2,B2,C2,D2 Hay deben llegar los parametros desde ESP8266.



Terminal serial ESP8266
Inicialmente el modulo realiza conexion a la red, realiza verificación de certificado, Envia POST con datos.
Se ha creado un contador para evitar el se envien correos de manera descontrolada, cuando el contador sea igual a 10 puede realizar el envio.


Correo desde Receptor
Actualmente solo he realizado pruebas hacia correos gmail, pero debe funcionar hacia cualquier servidor de correos 





Video de Prueba Completa







Mas Pruebas
Test Prueba 01-  ESP8266 + DS18B20 Onewire + Google Speadsheets (Google Docs)


Connection PLC fpx Panasonic and Google spreadsheets (Google docs) 


Control outputs  ESP8266  with Google spreadsheets (Google docs) Direct



Descargas

Relacionados

Mas Información:

Canal Youtube
PDAControl