IoT, Internet of Things. Telemetría y control remoto de sistemas Bolt 18F2550 y ESP8266 operando como servidor TCP-IP de internet.Desarrollo del proyecto: Moisés Meléndez Reyes
Video demostrativo:
1. Antecedentes: A partir de 2014, se comenzó a utilizar el término 'Internet of Things', abreviado IoT, el cual refiere la posibilidad de comunicar por internet redes completas de dispositivos de uso cotidiano y casero, como son los enseres domésticos. Ésto a su vez permite la supervisión remota y el funcionamiento automatizado de casas habitación en lo que se conoce en inglés como 'Home Automation'. De acuerdo a lo descrito en el párrafo anterior, y debido a su gran demanda comercial, han surgido dispositivos con conectividad WiFi de bajo costo, los cuales pueden conectarse a sistemas microcontroladores, posibilitando así su enlace a internet, típicamente a través de routers de fibra óptica. Tal es el caso del módulo ESP8266 que es una plataforma de conectividad WiFi y TCP-IP, el cual permite convertir a un sistema microcontrolador en un servidor de internet (web server), como el mostrado en la figura 1, capáz de enlazarse remotamente con dispositivos fijos ó móviles en cualquier parte del mundo.
Figura 1: Diagrama de bloques de la supervisión y control remotos del sistema Bolt 18F2550, utilizando un teléfono móvil y a través de internet.
Las ventajas que se obtienen al implementar un sistema como el referido son las siguientes: - Acceso remoto con status en línea del enlace cliente - servidor TCP-IP. En este esquema, el cliente puede ser una computadora PC conectada por WiFi, ó bien un móvil con acceso a internet a través de WiFi ó directamente a través de su red de datos. El servidor TCP-IP es el sistema microcontrolador conectado a un router por vía WiFi. Una vez establecida la comunicación, en forma transparente al usuario, éste puede manejarla como si se tratase de un enlace punto a punto por cable serial, con tiempos de respuesta de apenas algunos segundos. - Bajo costo de trasmisión de datos. Dado que los operadores de telefonía móvil cobran el servicio de la red de datos por uso del ancho de banda, y tomando en cuenta que el intercambio de información entre ambos puntos consume muy poca información, el costo es muy bajo comparado por ejemplo con un sistema que utilice el envío de mensajes SMS para la comunicación entre el puesto central de control (la computadora PC) y la terminal remota (el sistema microcontrolador). - Alcance ilimitado: considerando que se utiliza infraestructura con cobertura global como son las redes de datos móviles e internet, es posible realizar la telemetría y el control remotos del sistema microcontrolador desde prácticamente cualquier sitio del planeta. - Software de aplicación cliente TCP-IP disponible en forma gratuita. Existen varios programas que pueden bajarse de internet, para permitir la operación de una máquina PC Windows como cliente TCP-IP. Como ejemplos están el software multifuncional Hercules. Adicionalmente, para dispositivos móviles, se puede utilizar el software gratuito Android llamado 'Cliente TCP-IP', de Google Play. - Puede utilizarse el servicio de DNS dinámico, el cual permite asignar un hostname fijo (por ejemplo puntoflotante.ddns.net) a la IP dinámica del router al cual se encuentra enlazado el microcontrolador por vía WiFi, y la cual normalmente se modifica contínuamente. De esta forma, el hostname destino que debe ser configurado en el dispositivo Cliente TCP-IP, no se modifica a lo largo del tiempo.
2. Descripción general: Con base en las figuras 1, 2 y 3, se implementó un dispositivo servidor de internet (web server) conectando el sistema Bolt 18F2550 con el módulo ESP8266 por medio de enlace serial RS232. Mediante comandos AT enviados desde el Bolt, se configura el procesador ESP8266 para funcionar como un servidor TCP-IP. Se desarrolló el firmware que permite primeramente al sistema Bolt-ESP8266 enlazarse con un router Infinitum de fibra óptica, siendo reconocido por éste como un dispositivo en la red local, asignándole una dirección IP. En la segunda fase del proyecto, se desarrolló el programa que permite al dispositivo microcontrolador Bolt-ESP8266 comportarse como un servidor TCP-IP, pudiendo ser consultado por vía internet, ya sea desde teléfonos móviles ó computadoras personales. El display LCD del dispositivo se utiliza para mostrar mensajes de diagnóstico durante la trasmisión y recepción de datos. Para las pruebas de enlace con el teléfono móvil, se utilizó un software Android de Google Play llamado 'Cliente TCP-IP'. En el caso de enlace con una computadora personal se utilizó el software Windows denominado 'Hercules', eligiendo la opción de Cliente TCP-IP. Ambos programas pueden bajarse en forma gratuita desde los sitios correspondientes en internet. Para el programa de prueba realizado, el usuario puede remotamente enviar 3 comandos al servidor TCP-IP, tecleándolos directamente en su móvil: - enciende relevador. Al recibir este comando el Bolt activa su relevador y envía un mensaje de confirmación. - apaga relevador. Al recibir este comando, la tarjeta Bolt apaga su relevador y envía un mensaje de confirmación. - lee temperatura. Al recibir este comando el Bolt envía la temperatura leída del sensor DS18B20, en grados centígrados.
3. Servicio DDNS: En el proyecto, se usó el servicio de DNS dinámico, el cual permite asignar un hostname fijo (por ejemplo puntoflotante.ddns.net) a la IP dinámica del router, la cual normalmente se modifica contínuamente. De esta forma, el dispositivo Cliente TCP-IP (el cual debe utilizar dicho nombre al enviar comandos), no requiere de ninguna modificación a lo largo del tiempo. La guía utilizada para dar de alta el servicio en el DDNS es ésta: NoIP-DDNS-Create-Hostname-User-Guide.pdf
Figura 2: Servidor de internet mediante el sistema Bolt 18F2550 y el módulo ESP8266 con puerto serial.
4. Implementación del servidor de internet Bolt-ESP8266: De acuerdo a la figura 2, haciendo uso del módulo ESP8266 con puerto serial RS232 conectado al microcontrolador Bolt 18F2550, se obtiene un versátil dispositivo que llamamos Bolt-ESP8266 con conectividad WiFi TCP-IP, con capacidad de su conexión a internet a través de un router como el mostrado en la figura 3. La preparación del servidor Bolt-ESP8266 debe hacerse en 2 pasos. Paso 1: Este paso debe realizarse 1 sola vez, y únicamente cuando utilice un circuito ESP8266 nuevo en su servidor Bolt-ESP8266, dado que el circuito ESP8266 requiere almacenar en su memoria no volátil, los datos del router (nombre de la red y password) Baje el archivo .zip del link de abajo y extraiga los archivos. Abra el proyecto de MPLAB (archivo .mcp) WiFi-CONEXION-TCP-IP-BOLT-ESP8266-AT.zip
#define RED "\"INFINITUM9999\""
<<<< modifique auí el nombre de la red Modifique en el archivo fuente las 2 líneas mostradas arriba: el nombre de la red y la clave de la red, contraseña ó password de acuerdo a los parámetros de su router (en el caso de Infinitum, ambos datos aparecen escritos en el propio router). Compile el programa. Cargue en el sistema Bolt-ESP8266 el archivo ejecutable. Ejecute el programa posicionando el sistema Bolt-ESP8266 cercano al router (ver figura 3), a no más de 3 metros, y observe en el display LCD el proceso de inicialización. Si el ciclo de inicialización fue exitoso, el final del programa usted observará en el LCD el nombre de la red, por ejemplo: "INFINITUMB401". Compruebe que el dispositivo haya sido detectado y dado de alta por el router. Paso 2: Una vez completado el paso anterior, debe ahora cargar el firmware de la aplicación, el cual se muestra abajo. Una vez que haya extraído los archivos, abra el proyecto de MPLAB (archivo .mcp) SERVIDOR-TCP-IP-BOLT-ESP8266-AT.zip #define SERVER_PORT "2024" <<<<< modifique aquí el número del puerto Modifique en el archivo fuente, en la línea mostrada arriba, el número de puerto, el cual debe coincidir con la configuración de su router (ver punto 5). Compile el programa y cargue el archivo ejecutable en el Bolt. Al ejecutar el programa, una vez que el sistema está listo para comunicarse con el Cliente TCP-IP mostrará el mensaje 'Servidor Online!' en el display LCD.
5. Configuración del router para dar de alta los servidores de internet Bolt-ESP8266: Para el presente proyecto, se utilizó un módem router Telmex Alcatel Lucent Infinitum modelo 1-240W-A, de fibra óptica, y el cual tiene asignada la siguiente dirección para su configuración: http://192.168.1.254/ La guía usada para configurar el módem router infinitum es la siguiente: Configuración router infinitum para servidores Bolt-ESP8266
Figura 3: Servidor de internet Bolt-ESP8266 en comunicación con el router Infinitum .
6. Prueba de envío de comando remotos desde el móvil, a través de la red de datos ó de Wifi. Esta prueba puede realizarse desde cualquier localidad en donde exista el servicio de internet. Siga los pasos mostrados en las imágenes para establecer el enlace remoto desde su móvil con el servidor microcontrolador Bolt-ESP8266 y envíe los comandos mostrador para realizar pruebas. En esta prueba se usaron simultáneamente 2 servidores Bolt-ESP8266, conectados por Wifi al mismo router (ver paso 5).
Configurar
sistemas microcontroladores servidores TCP-IP en router de internet
Kit de desarrollo Bolt-ESP8266 servidor WiFi TCP-IP
|