Johnny-Five es un framework de JavaScript diseñado para la creación de aplicaciones en sistemas embebidos y robótica.
Es decir, que podemos interactuar de forma sencilla con una placa de desarrollo como un ESP32, utilizando JavaScript.
Características clave
- JavaScript: Permite a los desarrolladores que ya están familiarizados con JavaScript trabajar con hardware sin tener que aprender un nuevo lenguaje.
- Comunidad activa: Johnny-Five cuenta con una amplia comunidad y una gran cantidad de ejemplos.
- Multiples hardware: Puede ser utilizado en diferentes plataformas de hardware
- Integración con Node.js: Lo que permite construir aplicaciones web y de IoT.
Johnny Five no sirve para programar tu dispositivo en JavaScript. Johnny Five proporciona una API fácil de usar para interactuar con hardware.
El programa se ejecuta en Node.JS y se comunica con el hardware (a través de firmdata). La ventaja es que es sencillo integrarlo en proyectos web y de IoT.
Instalación de Johnny-Five
Para comenzar a usar Johnny-Five con el ESP32, necesitamos configurar nuestro entorno de desarrollo.
Instala Node.js: Si no lo tienes instalado, descárgalo e instálalo siguiendo las instrucciones para tu sistema operativo.
Configura tu Proyecto
- Crea una nueva carpeta para tu proyecto y navega a ella en la terminal.
- Inicializa un nuevo proyecto de Node.js con el siguiente comando:
npm init -y
Instala Johnny-Five: Ejecuta el siguiente comando para instalar Johnny-Five
npm install johnny-five
Ejemplo de carga
Para verificar que la instalación es correcta, carguemos un ejemplo simple que hará parpadear un LED conectado al ESP32.
Carga el Firmata en el ESP32
Johnny-Five se comunica con el hardware a través del protocolo Firmata, por lo que es necesario subir el firmware al ESP32.
Aquí tenéis un librería de Firmata para el ESP32
Código en Node.js
Crea un archivo index.js
en la carpeta de tu proyecto y añade el siguiente código:
const { Board, Led } = require("johnny-five");
const board = new Board();
board.on("ready", () => {
const led = new Led(13); // Pin 13 para el LED
led.blink(500); // Parpadea cada 500 ms
});
Ejecuta el código
En la terminal, ejecuta el siguiente comando:
node index.js
Si todo está configurado correctamente, el LED debería comenzar a parpadear.
Ejemplos de uso de Johnny-Five
Una vez que tienes Johnny-Five instalado y funcionando, puedes comenzar a interactuar con diferentes componentes de hardware.
Interacción con GPIO
La manipulación de pines GPIO (General Purpose Input/Output) es lo primero que tendremos que hacer en casi cualquier proyecto.
const { Board, Led } = require("johnny-five");
const board = new Board();
board.on("ready", () => {
const led = new Led(13); // Configura el pin 13 como salida
// Encender el LED
led.on();
// Apagar el LED después de 2 segundos
board.wait(2000, () => {
led.off();
});
});
Lectura de sensores
Johnny-Five también facilita la lectura de valores de sensores. Supongamos que conectamos un sensor de temperatura.
const { Board, Sensor } = require("johnny-five");
const board = new Board();
board.on("ready", () => {
const temperatureSensor = new Sensor("A0"); // Sensor en el pin A0
temperatureSensor.on("data", () => {
console.log(`Temperatura: ${this.value}`); // Imprime el valor leído
});
});