6 proyectos con ESP8266 orientados a la tecnología del IoT
Una de las tendencias más relevantes del movimiento Maker es el IoT. Y dentro de esta tecnología cabe destacar un componente que está haciendo furor entre los amantes de los objetos conectados. El ESP8266 es el microcontrolador más utilizado para conectar cosas. En este artículo te voy a mostrar proyectos con ESP8266 que puedes encontrar en el mercado.
No es algo nuevo dentro de este blog. Ya hemos dedicado varios capítulos del podcast al IoT. También al ESP8266 y tenemos una guía del módulo ESP01 donde puedes ver cómo lo puedes configurar y utilizar para crear tus proyectos con ESP8266.
Cada vez se habla más de los objetos conectados y dentro de poco será una realidad en nuestros hogares, ciudades y pueblos. En este artículo veremos cuales son las tendencias actuales en cuanto a proyectos con ESP8266.
Indice de contenidos
Características principales del ESP8266
Ya te he hablado en diferentes artículos y capítulos del podcast de este microcontrolador. Sin entrar en demasiados detalles, este dispositivo es un microcontrolador con WiFi con las siguientes características:
- Microcontrolador Cadence Tensilica Xtensa LX106 a 80 ó 160 MHz
- Hasta 4 MB de memoria flash externa al microcontrolador
- 80 kB de memoria RAM
- 10 puertos de entrada salida digital
- Compatibilidad con diferentes protocolos de comunicación (I2C, SPI, I2S, 1-Wire, UART)
- Interfaz de red WiFi B, G y N con encriptación WEP ó WPA/WPA2 y protocolos TCP/IPv4
Puedes consultar todas las funciones en la hoja de características.
Descarga la guía del ESP-01
Tutorial paso a paso para configurar este módulo
El ESP-01 es el módulo más famoso y económico que lleva integrado un ESP8266. Descarga la guía completa paso a paso en PDF.
La capacidad de conectarse a una red, su pequeño tamaño y su precio tan asequible, han hecho que este dispositivo sea muy conocido en el mundo Maker. La posibilidad de conectar el mundo físico de los sensores con el mundo de Internet y de «la nube» abre un gran abanico de posibilidades a la hora de crear proyectos con ESP8266 para el IoT.
El ESP8266EX se suele utilizar en una placa que incluye casi todo lo necesario. Las placas más básicas ESP-01, ESP-03, ESP12, etc necesitan de un adaptador de USB a interfaz serie TTL. Pero las nuevas placas NodeMCU, Adafruit Huzzah, Witty Cloud, SparkFun ESP8266 Thing ó las WeMos D1 Mini y Pro sí incluyen todo lo necesario para comenzar a desarrollar sobre ellas.
A pesar de que éstas últimas pueden ser algo más costosas es muy recomendable utilizarlas para la realización de prototipos.
Qué tipo de proyectos con ESP8266 se pueden constuir
Antes de escribir sobre temas más técnicos quiero presentar algunos ejemplos de proyectos con ESP8266 que me han sorprendido por una u otra razón. Es interesante entender el objetivo que podemos conseguir con este microcontrolador.
Las aplicaciones de un microcontrolador como éste, con conectividad a Internet, son infinitas. Haciendo una rápida investigación en un buscador podemos encontrar multitud de proyectos.
Control de relés
Cualquier aparato eléctrico es susceptible de ser controlado remotamente. La forma más básica de control es un simple encendido y apagado del mismo mediante un interruptor en forma de relé.
Aunque no puede conectarse directamente a los puertos de salida del ESP8266, la corriente que pueden generar estos puertos es de 12mA como máximo. Se puede utilizar un transistor para controlar el paso de alimentación a un circuito.
Un proyecto muy sencillo, basado en este concepto, es el control remoto de una lámpara a través de una red WiFi, conectada o no a Internet.
Uso de sensores
La idea de poner los datos de sensores disponibles de forma remota en Internet o utilizarlos para controlar sistemas es la base del Internet de las Cosas (IoT). Existen sensores de todo típo que se pueden conectar a placas ESP8266. Tenemos sensores de temperatura, presión atmosférica, humedad, luz, concentración de gases, etc.
Los datos que generan dichos sensores pueden utilizarse en sistemas lógicos para tomar decisiones automáticas. El ESP8266 tiene un puerto de entrada analógico, aunque éste tiene ciertas restricciones de las que hablaré en otro capítulo. Lo más sencillo es utilizar sensores con interfaz I2C ó 1-Wire.
Envío de datos a Internet
Lo que nos viene a la mente nada más conocer este tipo de dispositivos es la posibilidad de enviar cualquier dato que estos tengan disponible a Internet, ya sea a una web o a un servicio en la nube que registre dichos datos, como por ejemplo ThingSpeak, aunque hay otros muchos con características parecidas.
Las plataformas del IoT están en auge en la actualidad y, prácticamente, todos los meses sale alguna nueva. También se pueden conseguir integraciones muy interesantes en servicios de redes sociales como Twitter, Gmail, Telegram, o enviar notificaciones a teléfonos inteligentes o tabletas.
Recepción de información desde Internet
Si hay alguna cosa en Internet, eso es información. Hoy en día pueden encontrarse en la Red datos de todo tipo, desde datos meteorológicos hasta resultados deportivos, pasando por las cotizaciones en bolsa, entre muchísimos otros.
Con el ESP8266 todos estos datos están al alcance de unas líneas de código para poder usarlos en nuestros proyectos. El sitio web www.programmableweb.com contiene un índice de servicios web con API pública disponibles en Internet.
Domótica y control industrial
Uniendo todo lo anterior: control de relés, sensores, envío y recepción de información en red, llegamos necesariamente a lo que muchos estábamos pensando desde el principio. La domótica es un campo en el que dispositivos como el ESP8266 facilitan el acceso a los aficionados y a las empresas que inician su andadura.
Aunque tiene unos requerimientos diferentes, mucho más exigentes, de fiabilidad y disponibilidad, el concepto de control industrial tiene las mismas bases y filosofía que el control domótico. Proyectos de monitorización ambiental, control de seguridad o actuadores de elementos físicos pueden encuadrarse tanto en el campo de la domótica como en el del control industrial.
Hay otros muchos campos en los que se pueden aprovechar las capacidades de estos dispositivos. Seguro que alguno de los que leéis esto estáis pensando en los wearables o en los sensores corporales para telemedicina.
Listado de proyectos con ESP8266
A continuación veremos unos ejemplos de proyectos con ESP8266 reales que me he ido encontrando en el tiempo que llevo trabajando con él.
#1 HomesSmart
A este proyecto le tengo cierto cariño. Es el primero que me encontré, allá por 2014, buscando información sobre cómo programar esta pequeña placa, justo después de haberme comprado dos ESP-01. Este proyecto hizo que me diera cuenta que estas dos plaquitas podían hacer mucho más que escuchar comandos AT.
El proyecto con ESP8266 HomesSmart, comenzó como un módulo para sensores para sistemas domóticos y de monitorización meteorológica, integrables en el sistema domótico MajorDomo. Permitía conectar varios sensores a un ESP-01. Estos sensores eran los típicos de temperatura, presión, humedad, etc.
No es un proyecto de código abierto y además de una versión gratuita tiene una versión de pago que añade muchas más funcionalidades. Su creador cobra una pequeña cantidad (bastante justa a decir verdad) por cada dispositivo instalado con la versión completa del mismo. El precio es de $2 por cada ESP8266 en el que se instale su firmware.
En sus inicios estaba alojado es una página en ruso (gracias Google por la traducción). Preparando este artículo he podido ver que el proyecto sigue en marcha y están migrando a un nuevo dominio: wifi-iot.com.
Tienen una sección Wiki en la que puedes comprobar que la lista de sensores soportados y de integraciones en diferentes servicios ha crecido considerablemente.
Si quieres una forma rápida de integrar sensores basados en ESP8266, sin programar, en un sistema domótico, este sitio te puede ayudar.
#2 ColorChord coloreando la música
ColorChord es un algoritmo que Charles Lohr diseñó hace algunos años. Charles, @cnlohr en Twitter, es un mago de los microcontroladores y de la electrónica. Te recomiendo su blogy su canal de Youtube. Los proyectos con ESP8266 que él realiza tienen ese algo más que hacen que rocen lo artístico.
ColorChord asigna colores a notas musicales, de manera que a una misma nota, esté en la escala que esté, se le asigna siempre el mismo color. A pesar de ser un algoritmo con bastante carga de cálculo, gracias a una gran optimización, ha conseguido implementarlo en microcontroladores.
El pasado julio publicó un artículo en uno de los sitios de IEEE en el que explicaba cómo había conseguido implementar en un ESP8266, usando su entrada analógica para muestrear el sonido a 16 kHz, algo que estoy seguro no debió ser nada fácil de conseguir.
Los datos que obtiene del audio los convierte en colores de una tira de LED Neopixel utilizando su algoritmo. Como dice Charles, el control de estos LED requiere mover datos de forma muy rápida y precisa, algo que consiguió utilizando el canal DMA que integra nuestro pequeño microcontrolador.
Esto no queda simplemente ahí sino que fue capaz de integrar un servidor web en el ESP8266, lo que le permite observar en tiempo real lo que ocurre dentro del algoritmo ColorChord.
#3 Implementación de comunicación USB mediante software
Este es otro de los fantásticos proyectos de Charles Lohr. Entre las muchas características del ESP8266 no está la de soportar comunicación USB. Charles se propuso implementar la comunicación USB sólo mediante software.
Algo que ha conseguido en tan solo un mes, a pesar de que para ello tuvo que aprender los detalles del protocolo USB y cómo programar el ESP8266 utilizando instrucciones en código ensamblador.
Según la información que podéis encontrar en su repositorio en GitHub, ha conseguido comprimir esto en tan solo 1422 bytes de flash y ocupando unos 500 bytes de RAM. Impresionante.
Si bien este proyecto es menos visual que el anterior, permite desarrollar multitud de dispositivos.
Por ahora «solamente» ha conseguido un puerto USB con velocidad de 1.5 Mbps, por lo que no esperes, de momento, hacer tu propio pendrive utilizando el ESP8266. Sin embargo, hay muchos dispositivos con este interfaz que no requieren una gran capacidad de transferencia de datos.
Como prueba de concepto, Charles, desarrolló un emulador de ratón y teclado que se controla desde una página web alojada en la memoria flash del propio microcontrolador. Este emulador, programado sobre un ESP8285 montado sobre una placa diseñada a medida para el proyecto, ocupa poco más que el propio conector USB.
El siguiente paso en el que está trabajando en migrar el código a una librería para que se pueda utilizar desde el entorno de Arduino. Es lo que han bautizado como arduinización.
#4 Servidor NTP sin conexión a Internet
Cuando el ESP8266 está conectado a Internet, es muy cómodo y sencillo utilizar el protocolo NTP para sincronizar la hora interna. Yo mismo he programado una librería para realizar esta función. Lo puedes encontrar en GitHub.
Cuando no existe la posibilidad de conectarse a Internet, es necesario utilizar otras fuentes como GPS, relojes de tiempo real (RTC) o receptores de señales de radio DCF77.
Pero imagínate que tenemos un sistema compuesto por una red de microcontroladores que, por la razón que sea, no quieres o no puedes conectar a Internet. Si quieres sincronizar la hora entre todos ellos tienes que buscar la manera de que obtengan la información horaria de algún modo.
Este proyecto con ESP8266 permite que obtenga la hora real mediante un receptor GPS, por ejemplo, y otros dispositivos se conecten a él para sincronizarse utilizando el protocolo estándar NTP.
#5 Sistema de posicionamiento en interiores SubPos
Una carencia del sistema GPS a la que estamos acostumbrados es la de no funcionar en interiores o, si lo hace, es cerca de ventanas y con una mala precisión. Por ello han surgido varios intentos de soluciones de posicionamiento en interiores. Uno de estos sistemas es SubPos, cuya pretensión es establecerse como un estándar.
Por ahora están lejos de ese objetivo, pero su facilidad de implementación y su robustez hacen que tenga muchos números para convertirse en uno de los actores en ese mercado.
SubPos utiliza la señal WiFi para transmitir la posición. Sin embargo, no es necesario que el dispositivo esté conectado a ninguna red, ni siquiera a Internet. Solamente basta con escuchar las redes WiFi que hay alrededor.
SubPos codifica en los mensajes de anuncio de presencia (tramas beacon) de puntos de acceso WiFi su propia posición, que debe configurarse de forma manual. Estos dispositivos, llamados nodos SubPos, se comportan como balizas que transmiten continuamente su posición. Al no necesitar ninguna comunicación entre nodos o de estos con Internet, el sistema no requiere ninguna infraestructura.
Una de estas balizas o nodos SubPos, no es más que un ESP8266 con un firmware que puedes descargar de GitHub. Se configura como punto de acceso y permite la configuración de su propia ubicación de forma muy sencilla.
El equipo que se conecta al sistema SubPos tampoco requiere de nada especial. Solamente es necesario un software que interprete los anuncios de posición de las balizas y mida el nivel de potencia con el que se reciben.
Descarga la guía del ESP-01
Tutorial paso a paso para configurar este módulo
El ESP-01 es el módulo más famoso y económico que lleva integrado un ESP8266. Descarga la guía completa paso a paso en PDF.
Con esos datos y mediante un algoritmo de triangulación o, más correctamente, de trilateración se consigue un cálculo de la posición en 2 ó 3 dimensiones de forma prácticamente inmediata. No es necesario por tanto transmitir ningún dato para obtener la posición; es un sistema totalmente pasivo.
El resultado es que podemos instalar un sistema de posicionamiento en interiores con una inversión muy reducida. Cada baliza o nodo no debería tener un costo superior a los 10€, y es necesario un mínimo de 4 de estos nodos por cada sala del edificio o recinto en el que queramos montar este sistema.
Está disponible un firmware para el ESP8266 que se comporta como receptor del sistema SubPos y proporciona una salida NMEA en su puerto serie. También tienen una aplicación de demostración para dispositivos Android.
#6 ITEAD® Sonoff
Por último os voy a hablar de un proyecto comercial que integra el ESP8266. Se trata del interruptor WiFi Sonoff de la empresa ITEAD. Éste es un interruptor cuyo firmware se conecta a un servicio en la nube y que permite controlarlo mediante una aplicación de Android o IOS.
Es posible no solamente encender o apagar tanto de forma local como remota, sino que también podemos programar acciones muy fácilmente. Lo que más me gusta de estos interruptores es que como están diseñados alrededor del ESP8266, podemos cambiar su firmware y adaptarlo a nuestras necesidades.
Con una simple búsqueda en Internet podéis encontrar artículos sobre cómo modificar estos interruptores.
Proyectos con ESP8266, conclusión
Habéis visto proyectos con ESP8266 muy interesantes que muestran lo que este microcontrolador puede hacer. Algunos de ellos son realmente ingeniosos. Este microcontrolador está causando auténtico furor entre los Makers y puede ser un antes y un después en la tecnología del IoT.
Su bajo precio lo hacen un artículo muy interesante. Gracias a la comunidad que hay detrás desarrollando software y plataformas para proyectos con ESP8266, en la actualidad resulta realmente sencillo programar y desarrollar sistemas con este dispositivo.
Te animo a que también crees los tuyos. Si tienes algo interesante que contar, escríbenos y lo compartiremos con el resto de la comunidad.
0 comentarios:
Publicar un comentario