En este momento estás viendo Javascript programando un Microprocesador – Parte 1

Javascript programando un Microprocesador – Parte 1

El uso de un dispositivo de IoT (Internet de las cosas) se siente fuera del alcance de muchos desarrolladores. Muchos no contamos con las suficientes habilidades e incluso ni hemos aprendimos a soldar,  programar un microcontrolador requiere de diferentes habilidades y conocimientos, pero esos tiempos, son pasados. Hoy, los microcontroladores son lo suficientemente potentes como para ejecutar JavaScript. Y eso nos abre un sinfín de oportunidades en las cuales podemos trabajar y realizar miles de grandes proyectos muy interesantes. Hoy, con pocas líneas de código, podemos hacer maravillas.

En esta serie de publicaciones, estaremos viendo cómo controlar y programar microcontroladores usando lenguajes de alto nivel, enfocándonos en JavaScript debido a su popularidad en la comunidad programadora.

Primero, debemos conocer que es necesario alguna herramienta que de cierta forma me traduzca mis líneas JavaScript a un lenguaje el cual los microcontroladores deben ser capaz de procesar, por ejemplo: ensamblador. Para ellos usaremos Frameworks.

¿Qué es un framework?

Un Framework es un modelo o estructura que facilita el desarrollo de un proyecto y hace posible que su realización sea mucho más rápida y eficaz.

javascript-lowjs

low.js

Existen miles de proyectos de código abierto, low.js es uno de ellos. Es un puerto de ejecución de JavaScript Node.js en el que podrás crear aplicaciones de electrónica nativas de Internet escalables de forma fácil y rápida. Gracias a sus bajos requisitos mínimos es posible usarlo en placas de microcontroladores de bajo consumo basadas en ESP32-WROVER.

Comparación:

Para entender a fondo las ventajas que nos brinda es necesario hacer una comparación con los demás frameworks existentes:

low.js VS ESP-IDF

ESP-IDF es usado para programar a los ESP32 proporcionados por Espressif (Proveedor de los ESP32). Para su uso y programación es necesario tener experiencia y conocimientos en los lenguajes C/C++ además, los componentes internos de los microcontroladores. Para un programador con ciertos conocimientos será un gran campo de trabajo y le permitirá obtener el mayor provecho de los chips ESP32.

Por otra parte, low.js, requiere mucho menos tiempo de programación que ESP-IDF, siendo más fácil y a menudo teniendo menos errores gracias a que obtenemos el mismo resultado en menos líneas de código, siendo este más legible. Sobre todo, teniendo en cuenta que low.js se desarrolla sobre una versión mejorada y modificada de ESP-IDF.

Javascript

low.js VS Arduino

Los programas y aplicaciones escritas para la placa del microcontrolador se denominan bocetos, escritos en C/C++ simplificado usando la API de Arduino. Es usado por gran cantidad de personas y tiene infinitos usos, por lo que para cualquier propósito alguien de seguro se ha dedicado en crear y desarrollar una biblioteca, la cual se puede usar como platilla para un nuevo proyecto lo que nos simplificaría mucho el trabajo.

Pero… Arduino pierde funcionalidad al momento que: deseamos realizar varias funciones en paralelo, especialmente porque no todas las llamadas a la API son sin bloqueo, Arduino en ESP32 soporta redes Wifi, la construcción de servidores con todas las funciones requiere mucho trabajo manual. HTTP, HTTPs o WebSockets son protocolos que se pueden usar con bibliotecas de terceros, pero a menudo no cumplen con los estándares ni tienen todas las funciones.

Estas debilidades, son en sí algunas de las fortalezas de low.js, teniendo sobre todo cierta facilidad para trabajos que requieran su uso.

Javascript

low.js VS Espruino

Espruino, otro framework de JavaScript para microcontroladores (el cual veremos en el siguiente artículo). Se ejecuta en microcontroladores menos potentes que low.js. Esto tiene el coste de no aprovechar las posibilidades de los microcontroladores más potentes como el ESP32.

La API de Espruino es mucho menos poderosa que la API de low.js, ya que Espruino no proporciona la API Node.js, que no encajaría en los microcontroladores más pequeños. Espruino proporciona algunas llamadas a la API que imitan las llamadas a la API de Node.js, por ejemplo fs.writeFile, sin embargo, no funcionan de la misma manera, fs.writeFile por ejemplo, está bloqueando (no parece haber ninguna forma de escribir un archivo de forma asincrónica con Espruino).

El motor JavaScript de Espruino suele ser más lento que low.js debido a que no se compila en código de bytes, sino que se ejecuta en el código fuente.

Javascript

low.js VS MicroPython

MicroPython es un framework de Python para microcontroladores, al igual que low.js es un puerto de Node.js ¡Ambos son muy fáciles de usar!

Nuestros argumentos para low.js frente a MicroPython son los mismos que para Node.js frente a Python: low.js permite al programador utilizar un lenguaje de programación, JavaScript, para todo el proyecto que consta de un software de microcontrolador, un sitio web y un servidor en la nube, la API de low.js es primero asincrónica, por tanto facilita mucho  la ampliación de proyectos.

Pero siempre hay que tener en cuenta que si tus habilidades en Python son  excelentes y superiores que las de JavaScript, MicroPython es el tuyo.

Hardware admitido para low.js

low.js es ejecutable en cualquier módulo ESP32-WROVER.

El neonious:

El neonious es la placa del microcontrolador hecha por los desarrolladores de low.js, neonious. Está optimizado para low.js, con muchas funciones que no son posibles con las placas ESP32-WROVER genéricas:

  • IDE + depurador integrado basado en navegador web bien hecho para la creación rápida de prototipos
  • Gestor gráfico de paquetes para npm, módulos que funcionan desde el primer momento
  • 10/100 MBit Ethernet además de Wifi
  • Diseño de pines limpio con cada pin realmente utilizable, más pines utilizables (27) que el ESP32-WROVER simple
  • Escrituras Flash verdaderamente asíncronas, ya que el sistema de archivos está en un chip Flash adicional (las escrituras Flash ESP32-WROVER siempre pausan el sistema, por diseño)
  • ADC preciso proporcionado por el coprocesador LPC (ESP32 ADC no es lineal)
  • 4 MB de Flash para sistema de archivos / programa de usuario. Con low.js en módulos ESP32-WROVER genéricos, solo 1 MB está disponible para el sistema de archivos / programa de usuario.
  • Actualizaciones inalámbricas de low.js, sin necesidad de conectar la placa a la PC

Planes:

Ya visto sus virtudes, ventajas y desventajas. Aquí les dejamos los planes con los que cuenta tal herramienta.

 

low.js básico

Gratis para uso comercial y de pasatiempos

  • API Node.JS, JavaScript ES 6
  • Aplicaciones compatibles con Internet
  • Programación escalable y asíncrona
  • Módulos npm: acceda a la biblioteca de software más grande del mundo
  • Soporte de firmware personalizado para flasheo masivo de aplicaciones
  • https://www.neonious-iot.com/lowjs/examples/getting-started.html

low.js Professional

$ 15 por placa, licencias por volumen a partir de $ 1

  • IDE integrado basado en web con depurador con todas las funciones para la creación rápida de prototipos
  • Agregue código de bajo nivel C / C ++ con la API nativa low.js
  • Actualización inalámbrica de low.js y firmware personalizado

 

 Ejemplo de código:

A continuación se mostrará un pequeño código en donde haremos parpadear un led usando low.js:

let gpio = require(‘gpio’);

gpio.pins[pinnumber].setType(gpio.OUTPUT);

 

let val = 0, dir = 0;

setInterval(() => {

    val += dir ? 0.03 : -0.03;

    if(val < 0) { val = 0; dir = 1; }

    if(val > 1) { val = 1; dir = 0; }

 

    gpio.pins[pinnumber].setValue(val);

}, 30);

Conclusiones

Sin duda alguna, contamos con una poderosa herramienta la cual podemos tener en cuenta a la hora de realizar un proyecto o incluso, especializarnos en ella. Gracias a su versatilidad y facilidad de código podemos llegar a tener grandes resultados en poco tiempo.

Comenta que te ha parecido esta manera de programar microprocesadores. Nos puedes encontrar en Twitter o LinkedIn para hablar y compartir sobre el tema. Contamos con un Canal de Telegram, al que te invitamos a unirte haciendo clic en el enlace anterior, donde publicamos gran contenido de valor que será de mucha ayuda para ti.

Si estás dando los primeros pasos en este inmenso mundo de la electrónica y la programación a bajo nivel, en nuestro Canal de Youtube contamos con un Curso de Arduino para Principiantes el cual te encantará y te encaminará en tus arranques como programador.

Esta entrada tiene 2 comentarios

  1. MD_Marín

    Excelente artículo, muy revelador y acertado. Es bueno socializar la ciencia para contribuir a la construcción colectiva del conocimiento

    1. Muchas gracias por su comentario, nos alegra que le haya gustado nuestro artículo. Recuerde que puede suscribirse a nuestra Newsletter para recibir alertas de cuando publicamos contenido. Un saludo

Deja una respuesta