domingo, 11 de diciembre de 2016

Control REST del Witty ESP8266

Ya hemos visto como podemos convertir al Witty en un dispositivo IOT utilizando plataformas como Blynk. Pero hay otras maneras de comunicarnos con los microcontroladores ESP8266 que nos permitirán controlarlos desde aplicaciones de escritorio, apps móviles o incluso desde otro ESP8266. Es posible ejecutar en ellos un servidor web que nos permita, utilizando REST por ejemplo, interactuar con el dispositivo. Esta puede ser la solución ideal para controlarlos desde una red local aprovechando que ese interfaz es muy fácil de utilizar desde cualquier lenguaje de programación.
Vamos a ver cómo podríamos controlar el RGB y leer los datos recogidos por la fotoresistencia del Witty.

Primeramente comprobar que tenemos instaladas estas librerías desde el gestor de librerías del IDE Arduino:




Accede al código fuente del programa en gitHub y flashealo en tu Witty. Deberás adaptar las siguientes líneas a a las características de tu red local:


// Static IP
IPAddress ip(192, 168, 1, 99);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);

Y configurar correctamente el SSID y la contraseña de la Wifi:

WiFi.begin("MYSSID", "MYPASSWORD");





Para probarlo instala el complemento RESTClient para Firefox.


Con el firmware que has flasheado el Witty expone dos entidades a través de las cuales podemos interactuar con el hardware: Led, que nos permitirá modificar los tres valores del led RGB y photo a través de la cual podremos consultar los valores de luminosidad que capta la fotoresistencia.

Por ejemplo, introduce estos valores en el cliente REST de Firefox. pulsa el botón SEND y el led tomará el color naranja:


Para leer la fotoresistencia sólo tenemos que acceder a la url:

Como se puede ver este tipo de interfaces es muy potente y fácil de programar. De una manera sencilla podemos exponer un api que nos permita lanzar procesos en el microcontrolador, leer sensores y activar actuadores. Es ideal para Domótica donde varios de estos pequeños dispositivos pueden estar repartidos por toda la casa y controlados desde un ordenador central.

domingo, 4 de diciembre de 2016

Hola Mundo con OpenSDK para Witty ESP8266

Como hemos visto en anteriores entradas, Arduino IDE no es el único entorno que existe para programar el ESP8266. Tenemos varias alternativas. Hoy vamos a ver cómo podemos programar nuestro microcontrolador utilizando el OpenSDK. Este SDK es una toolchain que une las librerías opensource de Espressif Systems, fabricante del microcontrolador y otra serie de librerías de terceros también opensource.
Las ventajas que tenemos al utilizar este SDK frente al de Arduino es un mayor control del procesador. Accederemos a todas las funcionalidad que nos da el fabricante del procesador Xtensa y prodremos sacarle más partido. La contraprestación que debemos pagar a cambio es que debemos tener mayor conocimiento del lenguaje C y que nuestros programas no serán tan fáciles de leer y entender como los que podríamos hacer con el C de Arduino.
Para probar este entorno utilizaremos a nuestro viejo conocido Witty y el IDE Code:Blocks todo ello utilizando linux.


Instalación del entorno de desarrollo.

Vamos a ver como sería la instalación y configuración del SDK y el IDE Code::blocks en Ubuntu.

Instala git si no lo tienes instalado.

sudo apt-get install git

Clona el repositorio.

git clone --recursive https://github.com/pfalcon/esp-open-sdk.git

Construye el SDK. Tardará un buen rato en descargar los ficheros de espressif y generar todos los ficheros necesarios.

make STANDALONE=y

Instala la última versión de codeblocks.

sudo add-apt-repository ppa:damien-moore/codeblocks-stable
sudo apt-get update
sudo apt-get install codeblocks codeblocks-contrib

Instalamos ahora el wizard para ESP8266. Primero colócate en la carpeta wizard de tu usuario y realiza un clonado del repositorio.

cd ~/.local/share/codeblocks/templates/wizard/
git clone https://github.com/dziadu/codeblocks-esp8266-wizard esp8266

Ahora copia el fichero config.script en la carpeta wizard.

cp /usr/share/codeblocks/templates/wizard/config.script ~/.local/share/codeblocks/templates/wizard/

Añade la siguiente línea al fichero config.script.


RegisterWizard(wizProject,     _T("esp8266"),      _T("ESP8266 Project"),       _T("Embedded Systems"));

Ya tienes tu entorno preparado para desarrollar.

El "Hola Mundo".

Ahora vas a crear el código necesario para hacer parapadear el led interno del ESP8266. Primeramente ejecuta el programa Code::blocks.


 Selecciona New Project.


Selecciona ESP8266 Project.


 Pulsa Next.


Informa el campo de texto con la carpeta a los binarios del SDK, en mi caso es:

~/git/esp-open-sdk/xtensa-lx106-elf/bin


Pulsa Next.


Informa el campo de texto con la carpeta HOME del SDK. En mi caso es:
~/git/esp-open-sdk/sdk


En esta pantalla marca "Use Blinky example" y pulsa el botón Next.


Por último pon nombre al título y al proyecto y pulsa el botón "Finish".


Debe aparecer una estructura de ficheros creada a partir del workspace, si la despliegas verás el fichero con el ejemplo del led parpadeante. Para compilarlo y generar el firmware pulsa en el botón de play. Debe indicar que todo ha ido bien mostrando el siguiente mensaje en la ventana de log.


Ahora flashearemos el firmware. Busca la carpeta firmware dentro del proyecto y abre un terminal en esa carpeta. Con el Witty ya conectado al Pc ejecuta estas dos sentencias consecutivamente:


esptool.py --port /dev/ttyUSB0  write_flash -fm  dio 0x00000 0x00000.bin
esptool.py --port /dev/ttyUSB0  write_flash -fm  dio 0x10000 0x10000.bin

Si todo ha ido bien verás parpadear el led azul interno del ESP8266.