ESP8266 (Parte 1) : Programación en Lua y Arduino

NodeMCU_DEVKIT_1.0

 

Desde que llegara al mercado el módulo ESP8266, muchos desarrolladores han visto su potencial para crear nuevas aplicaciones sobre él gracias a su bajo coste pero gran funcionalidad, y seguramente todos ellos se hayan hecho la misma pregunta al principio, ¿cómo lo programo? Con estos dos artículos quiero contar las diferentes formas que he encontrado para programarlo, y así cada uno pueda usar la que más se ajuste a sus necesidades.

Antes de comenzar con la programación me gustaría comenzar por una breve explicación de la plataforma. Yo he trabajado con la placa de desarrollo NodeMCU, cuya única diferencia con respecto al módulo ESP8266 es que tenemos acceso a todos los pines del módulo y además cuenta con un microUSB para cargarle los programas. El ESP8266 lo fabrica la empresa Espressif y es un System-on-Chip (SoC) que integra el microcontrolador Tensilica L106 de 32bit. En la tabla siguiente podemos ver las especificaciones completas:

Procesador Tensilica L106 32bit RISC
Frecuencia 80 MHz OverClock 160 MHz
Memoria Flash 4 MB Memoria RAM 128 KB
Periféricos
GPIO 13 SPI 2
I2C 1 ADC 10 bit
PWM 4  UART  1
WiFi
Norma 802.11b/g/n Frecuencia 2,4 GHz

 

Todos estos datos se pueden consultar en la página oficial de Espressif:

https://espressif.com/en/products/hardware/esp8266ex/overview

 

En esta primera parte voy a explicar cómo programar el NodeMCU de las dos maneras más sencillas y más extendidas, usando el lenguaje de programación Lua y usando el framework de Arduino.

NodeMCU Firmware

nodemcu-style5-150px.png_150x150

Se trata de un firmware basado en el lenguaje de programación Lua. Ha sido implementado por los mismos desarrolladores que han creado la plataforma de desarrollo. Este firmware se encuentra escrito en C pero con instrucciones para que se usen con Lua, que es un lenguaje interpretado, como Python, por lo que es menos eficiente. La forma de programación es muy sencilla, por lo que es perfecto para proyectos poco complejos y ŕapidos, que no necesiten optimización.

Para usar este método, lo primero que tenemos que hacer es ir a la página de la documentación, al apartado de “Building the firmware” y crear nuestro firmware que cargaremos en la placa. El método más cómodo es usar su servicio basado en la nube, ya que indicamos qué módulos necesitamos, y nos envían por email el binario ya compilado que tenemos que flashear en la placa.

Después hay que flashear el firmware. Para ello el método que a mi siempre me ha funcionado es usar “esptool.py”. Leyendo el apartado “Flashing the firmware” encontramos cómo usar este programa sumamente útil. A la hora de cargar el firmware, es necesario ejecutar el script en modo superusuario para permitir acceder al puerto al que tengamos conectado el NodeMCU.

Por último, solo nos queda subir los scripts de Lua que hemos creado. Para ello la mejor herramienta es ESPlorer. La documentación para esta herramienta la encontramos en su página web: https://esp8266.ru/esplorer/ . Este programa cuenta con una zona donde escribir el código y otra que se conecta por puerto serie a la placa donde ver lo que imprimimos por pantalla desde el NodeMCU. Otras herramientas las podemos encontrar en el apartado “Uploading code”.

escritorio-esplorer

Yo personalmente descarté este método después de estar usándolo porque no tenía un control total de la memoria, sino que solo había un recolector de basura al que tú le indicabas cuando tenía que buscar memoria que liberar. Mi problema principal fue que el flujo de datos de entrada era más rápido que el tiempo que tardaba el NodeMCU en mandarlos por SPI, y se me llenaba la memoría.

La documentación de este firmware se encuentra en las siguientes páginas:

 

Arduino IDE

1200px-Arduino_Logo.svg

Una de las grandes razones por las que esta plataforma se ha hecho tan famosa, a parte del precio, es por ser conocida como “el Arduino barato con Wifi”, gracias a que los desarrolladores implementaron la compatibilidad para desarrollar programas en ella de la misma manera que con las placas de Arduino.

La ventaja de usar este método es que es muy sencillo y rápido de realizar, además cuentas con las numerosas librerías que se han desarrollado para Arduino y de una gran comunidad que puede ayudarte.

La desventaja es que tienes menos control de las capas más bajas del hardware y además cuentas con las limitaciones del IDE de Arduino.

Para desarrollar usando este método, hay que agregar la placa en el IDE como se hace habitualmente: Herramientas>Placa>Gestor de Tarjetas e instalamos el paquete “esp8266 by ESP8266 Community”. Una vez instalados los drivers, simplemente se programa, compila y suben los programas tal y como se hacen con el resto de placas de Arduino.

En el siguiente enlace dejo un tutorial en castellano que explica cómo utilizar este método, incluyendo algunos ejemplos:

https://programarfacil.com/esp8266/como-programar-nodemcu-ide-arduino/

 

En la siguiente entrada hablaré de métodos de programación usando C, donde se consigue un control mayor de todo lo que realiza el módulo.

TFG: Diseño e implementación de una red de nodos inalámbricos para comunicaciones multipunto de contenido multimedia

dav

 

En estos últimos años las redes inalámbricas de nodos de bajos recursos han incrementado notablemente su presencia, y debido al auge de tendencias como el “Internet de las Cosas”, se espera que cada vez más estos nodos se encuentren presentes en nuestro día a día. La flexibilidad y bajo coste de su despliegue, frente a redes de nodos cableados, hacen que sean la primera opción al implementar un sistema.

 

Estas redes normalmente no son exigentes con las tasas binarias de transmisión, y es por ello, que transmitir contenido multimedia a través de una red inalámbrica con recursos limitados suponga un mayor reto. Debido al deseo de crear grandes redes capaces de intercambiar datos, no sólo se buscan comunicaciones inalámbricas entre nodos, sino que además es deseable que estas sean multipunto.

 

El objetivo de este Trabajo de Fin de Grado es diseñar e implementar un sistema sencillo, independiente y de bajo coste con el que se puedan intercambiar de forma inalámbrica contenido multimedia, de manera que se consiga un sistema de comunicación multipunto con mínimos recursos.

Thesis: Design techniques for Wireless Neural Networks.

68717113-3915-4cf8-8900-8354645836c7

Author:

Gisela Mur Arroyo

Advisor:

Alvaro Araujo Pinto

Synopsis:

Based on Wireless Sensor Networks (WSN),, the Wireless Neural Networks (WNN) appears with the objective to obtain, transmits and generates neural signals as the human body does. In contrast to the WSN, the WNN operates in a very critical boundary conditions. Because of been on the human body, it have to pay special attention to the energy absorption or the thermal damage that can be generate because the constant contact between the sensor and the skin. Therefore, the radiated power is limited in this type of networks.

Therefore, the main objective of this thesis is to obtain a design techniques for the generation of a wireless neural networks that allows to obtain and transmits wirelessly neural signals originated by the nervous system and generate them in another part of the human body.

spike

 

The neuron generates an action potential or “spike” each time it propagates information. So, this thesis aim to  detect a spike in a neuron and transmits it to another node the existence of this action potential. Once the receptor receives the existence of the spike, it generates an electrical stimulation in another part of the human body.

 

 

TFG: Análisis y diseño de un estimulador transcutáneo de pulsos eléctricos.

tens_feat

El dolor es algo que nos acompaña en nuestro día a día y puede deberse a causas muy diversas como golpes, malas posturas, lesiones… Normalmente se combate mediante fármacos o tratamiento fisioterapéutico, pero gracias al desarrollo del campo de la medicina y la electrónica surgen nuevas alternativas, como es el caso del TENS (Transcutaneous Electrical Nerve Stimulator), un generador de pulsos eléctricos que, mediante unos electrodos situados sobre la piel, envía unos estímulos no dolorosos que inhiben los estímulos dolorosos que se quieren eliminar.

backache

 

El objetivo de este Trabajo Fin de Grado consiste en desarrollar un TENS funcional mediante un microprocesador y un posterior circuito de amplificación, siendo posible seleccionar la frecuencia, intensidad, ancho de pulso y forma de onda del estímulo no doloroso.

Fin de PFC: Estudio de posibles diseños de sistemas de navegación para casos de ceguera o deficiencia visual grave

Bastón Blanco

 

Tras una tediosa etapa de recopilación y organización de información, se pone fin a este proyecto fin de carrera. Su objetivo, continuando en la linea del pasado artículo, consiste en estudiar si los últimos avances tecnológicos permitirían que todo aquel que sufre de poca o ninguna visión pueda disfrutar de una mayor autonomía al desplazarse por la ciudad o en interiores.

El documento impreso incluye en primer lugar un estudio del perfil de usuario, tratando cuestiones como cuál es el número de usuarios potenciales, qué necesitan, cuáles son sus circunstancias (empleo, educación, nivel de ingresos, etc.) o cómo se manejan con las nuevas tecnologías. En dicho estudio y a lo largo del documento se recomienda aprovechar la creciente tendencia a utilizar teléfonos inteligentes en el diseño de futuros dispositivos; proyectos clásicos como The vOICe cuentan con su propia aplicación móvil gratuita.

En segundo lugar, se ahonda en la trayectoria I+D+i de los sistemas de navegación para personas con discapacidad visual. No han sido pocas las soluciones propuestas hasta la fecha, empezando por los trabajos de Paul Bach-y-Rita, C. C. Collins et alii en el ámbito de la sustitución sensorial; las propuestas simultáneas de Collins y Jack M. Loomis acerca de recurrir al GPS para guiar a invidentes; incluso la progresiva introducción de elementos propios de la realidad aumentada, hasta sistemas más recientes que trabajan con visión artificial (Seeing AI), redes de balizas BLE (Bluetooth Low Energy, ver WayFindr), etc.

Una vez alcanzado el punto de desarrollo actual, se evalúan una lista de campos tecnológicos con amplia financiación como posibles elementos críticos en el desarrollo de futuros sistemas; a saber: realidad virtual y aumentada, wearables, conducción autónoma, drones, y otros tantos relacionados con el nuevo paradigma de las telecomunicaciones (5G, IoT, WSN, … ).

Pasados estos puntos, se propone una nueva arquitectura de sistema fundamentada en la visión artificial y las nuevas infraestructuras de telecomunicaciones, guiados por los proyectos previos, aceptación de los dispositivos desarrollados, y las necesidades y características de los futuros usuarios.

Uno de los elementos clave en dicha arquitectura consiste en la interfaz de usuario, ya que aun disponiendo de toda la información útil sobre el entorno, discernir qué necesita conocer el usuario y cómo comunicárselo de forma óptima constituye uno de los principales problemas de este tipo de sistemas.

Realidad aumentada - sonido 5

La solución propuesta es vieja, pero en un nuevo contexto técnico: la realidad aumentada. A día de hoy se podrían aprovechar tecnologías de este campo, con Tango (Google) o Microsoft Hololens como ejemplos característicos, para introducir en el entorno elementos virtuales perceptibles por el oído (imagen arriba) o por el tacto que describan el entorno al usuario de forma intuitiva.

Sin embargo, las interfaces hápticas (tacto) actuales son muy pobres como para implementar soluciones de este tipo. Es por ello que se ha diseñado una plataforma de pruebas para la estimulación nerviosa transcutánea sobre la placa de desarrollo F28377S Launchpad de Texas Instrument (imagen abajo), y una interfaz con la plataforma Matlab, de cara a continuar en otra de las viejas soluciones: la interfaz electrotáctil.

Un ejemplo de dispositivo comercial que emplea esta tecnología es el BrainPort v100, fruto (en parte) de los trabajos de Paul Bach-y-Rita et alii; pero extender el campo de acción de la interfaz electrotáctil a zonas del cuerpo más allá de la lengua conlleva complicaciones aún sin resolver.

El objetivo del dispositivo desarrollado es, por tanto, trabajar con técnicas recientes orientadas a resolver este problema, y estudiar si es posible implementar una interfaz electrotáctil que “envuelva” al usuario. Se prevé que este tipo de interfaz permitiría simular percepciones útiles para guiar al usuario de forma eficiente, tales como el contacto con objetos virtuales (ejemplo en la figura de abajo, derecha).

Congreso EWSN 2017 en Upsala

IMG-20170220-WA0003

Del 20 al 22 de febrero tuvo lugar en Upsala (Suecia) la International Conference on Embedded Wireless Systems and Networks (EWSN 2017), uno de los eventos europeos de mayor relevancia en redes de sensores. Este año, la conferencia estaba especialmente enfocada a la fiabilidad de este tipo de redes y sistemas, organizándose incluso una competición en torno a esta temática. Además, hubo dos workshops de temática más específica, NextMote: Next Generation Platforms for the Cyber-Physical Internet y MadCom: New Wireless Communication Paradigms for the Internet of ThingsPor último, se realizó también una sesión de posters y demos en la que se presentaron trabajos e ideas interesantes.

Como representación del B105 asistieron a esta conferencia los miembros Alvaro Araujo y Ramiro Utrilla, presentando este último en el Workshop NextMote su trabajo A hybrid approach to enhance cognitive wireless sensor networks with energy-efficient software-defined radio capabilities“, enmarcado dentro de su tesis y cuyos co-autores han sido Alba Rozas, Javier Blesa y Alvaro Araujo. La asistencia a este evento ha sido una gran oportunidad para conocer trabajos de muchas universidades del mundo, así como para recibir realimentación sobre la investigación que realizamos en el grupo.

Merece la pena destacar que el año que viene esta conferencia tendrá lugar en la Universidad Carlos III de Madrid, lo que será una gran oportunidad para fomentar la participación de más estudiantes y miembros del B105.

Por último, además de la experiencia de asistir a un evento de estas características, el viaje nos permitió visitar a antiguos miembros del B105 y disfrutar de unos días en un país magnífico como es Suecia, que nos sorprendió con una calurosa bienvenida en el aeropuerto.

DISEÑO PARA LA MEJORA Y EXPANSIÓN DE UNA PASARELA DE COMUNICACIONES ENTRE UNA RED DE SENSORES INALÁMBRICA Y UN TELÉFONO MÓVIL INTELIGENTE

esquemaRedGeneral

En este proyecto se trabajará sobre el concepto de las redes inalámbricas de sensores, cuyo uso se encuentra muy extendido en la sociedad. Estos sistemas interactúan con el entorno  en el que se encuentran recopilando diferentes parámetros del mismo como puedan ser humedad, temperatura o velocidad del viento. También pueden desempeñar diferentes aplicaciones como el control del estado de la infraestructura de un edificio.

Estos nodos se comunican unos con otros a través de la tecnología de radiofrecuencia, lo cual supone una complicación para poder proveer a un operario del sistema de una interfaz clara que le permita acceder a toda esta información recabada del entorno y realizar diferentes gestiones sobre el estado de la infraestructura de la red.

Ante esta necesidad, observamos que un smartphone puede ser una herramienta con mucho potencial de cara a proveernos de una interfaz gráfica e intuitiva para establecer intercambios de información con la red.

Todo este escenario se resolvió con un proyecto anterior en el cual se diseñó un dispositivo para actuar como nodo pasarela de comunicaciones (PGN) entre la red de nodos y un teléfono móvil inteligente haciendo las funciones de interfaz gráfica de cara a un usuario final.

Sin embargo, en este proyecto existían una serie de limitaciones en cuanto a la funcionalidad del sistema global, y es que el rol asignado al nodo PGN dentro de la red no permitía ni el despliegue de la infraestructura ni la posterior puesta en marcha del sistema sin la presencia física de dicho elemento. Por otro lado,  el protocolo de comunicaciones implementado no nos permitía acceder a toda la información sobre la red que nos gustaría de cara a establecer una comunicación lo más eficiente posible.

Por lo tanto, se ha diseñado un nuevo rol para la pasarela de comunicaciones dentro de la infraestructura de red que permita aumentar la funcionalidad y flexibilidad de la misma, y se ha diseñado un nuevo protocolo de red que nos permita establecer una comunicación más efectiva entre todos los elementos del  sistema. A continuación se puede observar el nuevo diseño del entramado de mensajes así como un ejemplo ilustrativo de una petición, respecto al valor medido de temperatura y su correspondiente respuesta, sobre un dispositivo concreto del sistema:

Imagen1

Petición y respuesta para comando get_temperature

En este proyecto se ha conseguido corregir estas limitaciones ampliando la funcionalidad del sistema global. Se han realizado las siguientes tareas:

  • Se ha diseñado e implementado el firmware necesario para gestionar el correcto funcionamiento de cada uno de los dispositivos del sistema. Para ello se ha trabajado sobre la capa de aplicación del protocolo de red.
  • Desarrollo e implementación de un nuevo entramado para las peticiones y respuestas de la red y diseño de una gama más amplia de mensajes.
  • Integración de aplicación Android en el sistema para mejor interacción entre WSN y usuario.
  • Herramientas utilizadas: IAR (C), Android Studio (Java).

Artículo aceptado en la EWSN 2017

stock-photo-103272129

Los días 20, 21 y 22 de febrero de 2017 se celebrará en Upsala (Suecia) la Conferencia Internacional Embedded Wireless Systems and Networks (EWSN 2017).  En ella, el miembro del B105 Ramiro Utrilla presentará su artículo “A hybrid approach to enhance cognitive wireless sensor networks with energy-efficient software-defined radio capabilities“. En concreto, este trabajo, enmarcado dentro de su tesis y cuyos co-autores han sido Alba Rozas, Javier Blesa y Alvaro Araujo, ha sido aceptado en el Workshop Next Generation Platforms for the Cyber-Physical Internet (NextMote).

En primer lugar, el artículo propone una metodología híbrida de operación para redes inalámbricas de sensores cognitivas (CWSN) que consiste en que los nodos de dicha red exploten la tecnología de radio definida por software (SDR) para llevar a cabo aquellas acciones que estrictamente requieren su alta flexibilidad, empleando transceptores tradicionales de función específica, que demandan menos recursos del nodo, para las tareas restantes. A continuación, se presenta la arquitectura y los principales componentes electrónicos de una plataforma capaz de operar según esta metodología. Esta solución constituye una reducción significativa del consumo de energía en comparación con los sistemas SDR de bajo consumo existentes, manteniendo al mismo tiempo la funcionalidad necesaria para la investigación en CWSNs.

Esperamos que nuestro trabajo sea de interés para la comunidad y que la asistencia al congreso sea una gran experiencia de la que traernos nuevas ideas y contactos de interés para el grupo.

¡Estamos de aniversario!

img-20151104-wa0007

Quizá este post debería haberse publicado hace un año… pero ya sabéis… las prisas, los trámites, las 7 pruebas de Asterix…

El caso es que hace un año (día arriba día abajo) estábamos de enhorabuena, contentos, orgullosos y nerviosos (unos más que otros) porque llegaba el día de…

¡DEFENDER LA TESIS!

El día 10 de noviembre le tocó el turno a Elena, con su tesis “Cognitive strategies for reducing energy consumption in Wireless Sensor Networks” dirigida por Alvaro Araujo.

img-20151110-wa0001
Al día siguiente, Javi defendía su tesis “Cognitive strategies for security in Wireless Sensor Networks” dirigida también por Alvaro Araujo.

img-20151111-wa0017

Todo fue muy bien y desde hace un año tenemos dos minidocs!!

Muchas gracias a todos por el apoyo durante el desarrollo de la tesis.

B105 rules!

DESARROLLO DE UN ENTORNO CON CONTROL DE TEMPERATURA ORIENTADO A SIMULACIONES DE REDES DE SENSORES INALÁMBRICAS

contenedorcompleto

 

Siempre que se realiza el diseño de un sistema electrónico se debe tener en cuenta en qué condiciones estará funcionando. No siempre es posible realizar todas las pruebas de funcionamiento sobre el terreno y por ello es necesario disponer de entornos de laboratorio en los que poder hacerlas previamente. Con la idea de cubrir esta necesidad ha surgido este proyecto, en el que se ha desarrollado un sistema sobre el cual poder realizar dichas pruebas de funcionamiento controlando la temperatura.

El funcionamiento del sistema es sencillo, el usuario debe conectarse a la Raspberry Pi 2, que se utiliza como sistema de control. Una vez conectado deberá ejecutar el software desarrollado y el propio sistema le pedirá uno por uno los valores necesarios para definir el perfil de temperatura del experimento. Al finalizar el experimento el sistema ofrece un archivo en el que se han almacenado las lecturas segundo a segundo realizadas por los sensores internos.

La caja se ha realizado de madera por ser un material resistente a focos de temperatura altos y poderse manejar fácilmente a la hora de realizar un montaje casero. El sensado de la temperatura se realiza mediante termopares tipo K a los que se ha añadido un convertidor ADC específico para este tipo de dispositivos. El calor se genera mediante tubos de infrarrojos similares a los que podemos encontrar en las estufas eléctricas de casa o en lámparas para mantener la comida caliente. Además el sistema cuenta con un conjunto de ventiladores y ventanas que pueden abrirse de manera controlada para expulsar el calor del interior del sistema.