Espurino: JavaScript para microcontroladores

microcontrolador Atmel, Espurino

Es probable que hayas escuchado alguna vez Espurino, como se ha bautizado este proyecto con nombre de político y militar de la República Romana. O tal vez hayas llegado hasta este artículo buscando más información porque ya lo conoces y quieres comenzar a usarlo.

Sea como sea, intentaré darte las claves de lo que es Espurino y lo que podría hacer por ti para tus futuros proyectos, además de algunas recomendaciones para aprender a programarlo de forma sencilla.

Hace un tiempo te comentamos acerca de Anaconda, otro interesante proyecto para los amantes de Python que querían programar placas Arduino con este lenguaje de programación que se ha vuelto tan popular. Algo parecido a lo que hace MicroPython, pero esta vez, con Espurino, te trae otra nueva oportunidad usando otro lenguaje diferente…

¿Qué es Espurino?

Espurino

Espurino es un proyecto de código abierto para crear un intérprete del lenguaje de programación JavaScript para microcontroladores. Es decir, este completo IDE ha sido diseñado para poder programar dispositivos con un microcontrolador programable que tengan pequeñas memorias RAM, como algunos que solo cuentan con 8kB y muy usados en multitud de aparatos embebidos.

El proyecto Espurino fue creado por Gordon Williams en 2012, como un intento de permitir el desarrollo de microcontroladores en múltiples plataformas. Inicialmente no era de código abierto, simplemente se ofrecía la descarga del firmware gratuita para MCUs STM32.

En 2013 el proyecto daría un paso muy importante, convirtiéndose en código abierto después de una campaña muy exitosa de financiación en la plataforma de crowdfunding Kickstarter. Esta campaña iba más allá del entorno de desarrollo inicial, buscando fondos para fabricar también placas que pudieran soportar este software.

El firmware de Espurino está ahora bajo licencia Mozilla Public License 2.0, mientras que los códigos de ejemplo lo están bajo MIT License, la documentación bajo Creative Commons Attribution-ShareAlike 3.0 y los archivos de diseño de hardware bajo esta última también.

Así nación también la placa oficial Espurino, que vendría seguida de numerosos lanzamientos de otras versiones como ha sucedido con otros proyectos similares como Arduino. Además, estas placas también presentaban compatibilidad para escudos compatibles con Arduino, lo que las dota de unas capacidades realmente interesantes para makers y DIY.

Actualmente el proyecto tiene cierta popularidad, contando con una importante comunidad de desarrollo y multitud de tutoriales y ayuda que podrás encontrar en Internet. Por tanto, si te gusta JS y programar microcontroladores, nunca lo has tenido tan fácil…

Código fuente del proyecto – GitHub

Sitio web oficial – Espurino

Firmware – Descargar (para las diferentes placas)

¿JavaScript? ¿Microcontrolador?

Si has comenzado en este mundillo, quizás te estés preguntando qué son esos términos o qué te pueden aportar para tus proyectos. Si nos lees con frecuencia ya sabrás qué es un microcontrolador, y seguro que también conoces JavaScript o JS.

Un microcontrolador, también llamado MCU (Micro Controller Unit), es un chip programable capaz de ejecutar ciertas órdenes desde una memoria. Esto puede coincidir también con la definición de una CPU, pero en el caso de un MCU, suelen ser menos avanzados y potentes, dirigidos a ciertas tareas específicas, como dispositivos embebidos.

Además, a diferencia de una CPU, el microcontrolador es un circuito integrado que incluye en su interior la propia CPU, además de otros bloques funcionales como pueden ser la memoria y el sistema de E/S. Es decir, básicamente es una computadora completa en un solo chip…

Por tanto, dispondrás de un dispositivo barato y sencillo que podrás programar para que sus entradas y salidas actúen como te apetezca y generar así acciones. Puedes hacer que reciba información de sensores o actuadores externos, y que en función de eso envíe ciertas señales por sus salidas a otros componentes electrónicos conectados.

En cuanto a JavaScript, se trata de un lenguaje interpretado. Es decir, a diferencia de los compilados que tras la compilación generan un binario que puede ejecutarse por una CPU, en el caso de los scripts interpretados se necesitará un software intermediario llamado intérprete que interpretará las órdenes del código para «decirle» a la CPU lo que tiene que hacer.

JS ha cobrado una gran importancia en la actualidad por las múltiples aplicaciones que tiene, especialmente en web apps. De hecho, fue desarrollado inicialmente por Brendan Eich de Netscape (entonces se llamó Mocha, luego renombrado LiveScript y finalmente como JavaScript).

Esa popularidad ha hecho que haya gran cantidad de programadores y usuarios interesados en JavaScript, y proyectos como Espurino pueden acercar a todos ellos a programar microcontroladores con él.

Por cierto, para comenzar con Espurino IDE, no tendrás que instalar nada en tu sistema operativo, es un entorno basado en web que podrás usar desde aquí mismo en tu navegador web favorito.

Aunque se pueden usar diversos navegadores web, para flashear el firmware de estas placas se recomienda usar Chrome y un complemento llamado Espurino Web IDE que se recomienda desde la web oficial y que puedes obtener para tu Chrome en este enlace.

¿Cómo aprender JavaScript?

Si aún no sabes programar en JavaScript debes sabe que, como ocurre en cualquier otro lenguaje, existen libros para aprendizaje, cursos, videotutoriales, y una enorme cantidad de recursos para aprender pagando y gratuitamente. Pero hay otro recurso del que quizás se habla menos y que resulta especialmente interesante por hacer de la gamificación el procedimiento de aprendizaje de JS.

Me estoy refiriendo a los videojuegos que te ayudan a aprender a programar con ciertos lenguajes de programación, entre ellos JS. Con estos juegos, en vez de usar el teclado o ratón para dirigir al personaje o interactuar con el entorno virtual, lo que tendrás es un intérprete de este lenguaje en un lateral de la pantalla y donde comenzarás a introducir código (comenzando por los más simples hasta los más avanzados).

De esa forma, controlarás el juego usando lenguaje de programación, por lo que durante tus partidas irás aprendiendo casi sin darte cuenta y conforme avanzas en las misiones tus conocimientos irán creciendo.

Si te interesa esta forma de aprendizaje para comenzar con Espurino, aquí te dejo algunos recurso para aprender JavaScript mediante juegos:

Placas Espurino oficiales

Espurino placas

Tras el primer desarrollo de la placa original de Espurino vinieron más proyectos disponibles para usar con el IDE y JS. Si quieres conocer más sobre ellos aquí te dejo una introducción de cada uno:

  • Espurino (original): es la placa original, la primera en ser diseñada bajo este proyecto. Sus características son:
    • MCU STM32F103RCT6 de 32-bit a 72Mhz ARM Cortex-M3
    • 256 Kb de memoria flash, 28Kb de RAM
    • microUSB, conector para SD, y conector de batería externa JST PHR-2
    • LEDs rojo, azul y verde
    • Pads que permiten la conexión de módulos Bluetooth HC-05
    • 44 GPIO con 26 PWM, 16 ADC, 3 UARTS, 2 SPI, 2 I2C y 2 DACs.
    • Dimensiones: 54x41mm
  • Espurino Pico: es una pequeña placa con un microcontrolador para comenzar a correr tus proyectos JavaScript y controlar cosas en cuestión de segundos. Se programa mediante su interfaz USB para cargar el script que escribas sobre el IDE de Espurino. Además, tiene un precio económico y la puedes encontrar con pines y sin pines soldados en sus cabezales. Más detalles:
      • 22 GPIO (9 analógicos de entrada, 21 PWM, 2 serial, 3 SPI y 3 I2C).
      • Conector USB-A en placa.
      • 2 LEDs y 1 botón en la PCB.
      • MCU STM32F401CDU6 de 32-bit a 84Mhz ARM Cortex-M4
      • Memoria: 384 Kb de flash y 96Kb de RAM
      • Dimensiones de 33x15mm
  • Espurino WiFi: es una placa prácticamente gemela a la anterior, solo que se le han agregado algunas mejoras. Por ejemplo, su tamaño es de 30x23mm, creciendo para dejar hueco a un chip ESP8266 WiFi. Además, se ha cambiado el USB por microUSB, se ha reducido el número de GPIO a 21 (8 analógicos, 20 PWM, 1 serial, 3 SPI y 3 I2C). Por otro lado, el microcontrolador también se ha potenciado, ahora es un STM32F411CEU6 de 32-bit a 100Mhz ARM Cortex-M4 con 512kb de memoria flash y 128 kb de RAM.
  • Espurino Puck.js: básicamente es un botón inteligente Bluetooth que puedes programar gracias a su microcontrolador interno y al intérprete (preinstalado) con JS. Además, tiene un SoC nRF52832 ARM Cortex-M4 a 64Mhz con 64kB de RAM y 512Kb de flash, GPIO, NFC tag, magnetómetro MAG3110, transmisor IR, termómetro incorporado, así como luz y sensores del nivel de su batería.
  • Espurino Pixl.js: es un dispositivo similar al anterior, pero en vez de un botón es una pantalla inteligente Bluetooth LE programable. Su pantalla tiene unas dimensiones de 128×64 monocroma, mientras que el resto de características son similares al Puck.js.
  • MDBT42Q: es el mismo módulo que tiene Pixl.js y Puck.js, pero con una antena cerámica. El resto de características técnicas coinciden con los dos anteriores, pero sin pantalla ni botón en este caso…
  • Bangle.js: es el producto más novedoso. Se trata de un wearable, un smart watch o reloj inteligente. Podrás instalar apps y desarrollar nuevas funciones usando JavaScript o un lenguaje de programación gráfica (Blockly). Solo necesitarás un navegador web para poder escribir tus códigos y cargarlos en el reloj… Además, es resistente al agua, tiene Bluetooth, GPS, acelerómetro, magnetómetro (para cuantificar la fuerza y dirección de señales magnéticas), etc.

Si necesitas comprar alguna de estas placas Espurino puedes encontrarlas en la tienda de la web oficial de este proyecto. También lo puedes encontrar a través de una serie de distribuidores oficiales que tiene el proyecto asignados, como algunas famosas tientas como Adafruit, etc.


El contenido del artículo se adhiere a nuestros principios de ética editorial. Para notificar un error pincha aquí.

Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.