Controlando placas de IoT desde javascript


Node.js framework  fue  creado por Bocoup para controlar placas de desarrollo en una configuración de host-cliente   aunque   realmente su uso mayoritario sea como plataforma web   siendo    Johnny-Five la plataforma open  source de Robótica e IoT de JavaScript 

En realidad existen diferentes  plataformas donde se puede ejecutar el programa Johnny-Five :

  • En un entorno Linux a bordo: beagleBone Black,Chip,Intel Galileo gen 1,Intel Galileo Gen 2,Intel Edison Arduino,Intel Edison Mini, SparkFun Edison GPIO Block,SparkFun Arduino Block, Intel Joule 570x (Carrier Board),Linino One,pcDuino3 Dev Board,Raspberry Pi 3 Model B, Raspberry Pi 2 Model B. Raspberry Pi Zero,Raspberry Pi Model A Plus,Raspberry Pi Model B Plus, Raspberry Pi Model B Rev 1, Raspberry Pi Model B Rev 2, Tessel 2
  • En una máquina host conectada (a través de Serial USB o Ethernet) a un cliente.: Arduino Uno,SparkFun RedBoard, On a host machine communicating over Bluetooth to the client. Arduino Uno,Arduino Leonardo, Arduino Mega, Arduino Fio,Arduino Micro,Arduino Mini,arduino Nano,Arduino pro Mini,Boatduino,chipKit uno32,Spider robot Controller,DfRobot Romeo,Teensy 3,
  • En una máquina host que se comunica por wifi al cliente: Electric Imp April, pinoccio Scout, Particle Core ( Spark Core) ,Particle Photon, Sparkfun Photon RedBoard
  • En una máquina host que se comunica a través de Bluetooth al cliente :Blend Micro v1.0,LightBlue bean,

Johnny-Five como vemos hacer un énfasis especial en la robótica, pero tambien puede hacer muchas cosas diferentes con el software.De hecho ha existido durante hacer  más tiempo que la mayoría de los marcos de JavaScript para hardware . Ademas iene una API clara  y «fresca» ,ambas cosas ideales para los principiantes de hardware.

Lanzado porBocoup en 2012, Johnny-Five esta mantenido por una comunidad de desarrolladores de software apasionados e ingenieros de hardware. De hecho más de 75 desarrolladores han hecho contribuciones para construir un ecosistema robusto, extensible y muy versatil.

 

Hola Mundo! 

A los microcontroladores y las plataformas SoC nos gusta decir «Hola mundo» con un simple LED parpadeante, así  que veamos en primer lugar un ejemplo como lo hariamos  usando el Ide clásico  de Arduino

Como vemos en la imagen ,conectaremos un led entre el pin 13  y masa , respetando la polaridad (el ánodo al pin13 y el cátodo o pin corto a masa )

Para  hacer destellear el citado led,  estos son los pasos básicos  que tenemos que seguir en nuestro sketch  programandolo desde el IDE de Arduino:

  1. Configurar el pin 13 (con LED incorporado) como una SALIDA
  2. Establecer el pin 13 ALTO para encender el LED
  3. Esperamos 500 ms (medio segundo)
  4. Establecer el pin 13 BAJO para apagar el LED

Y este es el código completo para ejecutar desde el Ide de Arduino:

void setup() {
pinMode(13, OUTPUT);    
}
void loop() {
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);  
delay(500);
}

Y ahora vamos a ver el mismo ejemplo , pero ejecutandolo en Javascript por medio de node-js,

Desgraciadamente  si usamos un Arduino o alguno de sus variantes (Arduino Uno,SparkFun RedBoard, On a host machine communicating over Bluetooth to the client. Arduino Uno,Arduino Leonardo, Arduino Mega, Arduino Fio,Arduino Micro,Arduino Mini,arduino Nano,Arduino pro Mini,Boatduino,chipKit uno32,Spider robot Controller,DfRobot Romeo,Teensy 3,)   necesitaremos que el programa JavaScript se ejecute en una máquina host que ejecute Node.js. de modo que el programa transmitirá instrucciones básicas de E / S a la placa a través de una interfaz  serie USB , que actuara como un cliente ligero .

El método host-cliente implica la comunicación a través de una API común entre el host y el cliente. El marco Node.js usado con Arduino y placas similares , Johnny-Five, se comunica (de forma predeterminada) con las placas  utilizando un protocolo llamado Firmata, protocolo que permite que los hosts (computadoras) y los clientes (microcontroladores) intercambien mensajes de ida y vuelta en un formato basado en mensajes MIDI. El protocolo Firmata especifica cómo deben ser esos mensajes de comando y datos. La implementación de Firmata de Arduino proporciona el firmware real que puede poner en su tablero para hacer que «hable» Firmata. Toma la forma de un boceto de Arduino que sube al tablero.

Firmata es lo suficientemente popular como para que los bocetos de Firmata que necesita vengan empaquetados con el IDE de Arduino asi que bastara con subir este a Arduino una única vez  ya que  el código javascript  correra en el host usando node.js.

Puede seguir estos pasos para cargar el interfaz correcto de Firmata en su Arduino  para que se pueda utilizar como cliente en una configuración de host-cliente:

Resumidamente estos son los pasos previos para ejecutar el   mismo  ejemplo del led parpadeante  que hemos visto pero   en  javascript en una placa Arduino;

  • En primer lugar  conectar  su Arduino  mediante USB a  su ordenador
  • Lanzar el IDE de Arduino.
  • Asegurarse que esta configurada la version de su placa,  así como el puerto COM  virtual al que esta conectado
  • Acceda al menú Archivo> Ejemplos> Firmata
  • Seleccione StandardFirmataPlus de la lista y despliegue este sw sobre su Arduino

  • Ahora Instale Node.js   en su pc . Funciona  con ultima version 11.3.0  de  64 bit que incluye  npm 6.4 (no olvidar de chequear que se instalen  otros componentes )Este es el link de descarga https://nodejs.org/en/download/ 
  • En la instalación de Node.js, repetimo  no debemos olvidar de chequear que se instalen  otros componentes  pues  con ellos se   instalara automáticamente
    • Python 2.7.3 (http://www.python.org/getit/releases/2.7.3/)
    • Visual Studio Express 2010 de 32 bits (con  las dependencias de C ++)
    • El comando npm
    • Alternativamente si dispusiésemos de npm podríamos instalar ambos entornos  con  npm --add-python-to-path install --global --production windows-build-tools
  • Este pasos anterior ( instalacion de componentes ) es  innecesario  si chequeamos en la instalación  de node.js  pues se instalaran  esos componentes  automáticamente
  • Ahora instalar node-gyp  medianete  el comando  npm install -g node-gyp (esto instalará node-gyp globalmente)                          
  • Ya puede  crear su primer proyecto Johnny-Five, por lo que en primer lugar cree un directorio para él e instale el paquete framework npm, como se muestra en la siguiente lista:
    • < mkdir hello-world
    • < cd hello-world
    • < npm install johnny-five
  • Ejecute  el comando «npm install johnny-five» desde la carpeta del proyecto
  • Ya por fin podemos crear el fichero javascript  con su editor de texto  que contendrá el código en javascript  . 

Realmente estos son los pasos  que tenemos que seguir:

  1. Requerir el paquete johnny-five
  2. Inicializar un nuevo objeto Board que represente a su placa .
  3. Esperar a que el tablero dispare el evento listo
  4. Crear una instancia de un objeto LED en el pin 13 (el pin LED incorporado de Uno)
  5.  Hacer que el LED parpadee cada 500 ms

Este es el código en js :


const five = require(‘johnny-five’);
const board = new five.Board();
board.on(‘ready’, () => {
 const led = new five.Led(13);
   led.blink(500);
});


Guarde el archivo como hello-world.js  y  conecte su Arduino  a un puerto USB en su ordenador  si aún no está conectado.

En una terminal  de windows  vaya al directorio del proyecto y ejecute este comando:

<node hello-world.js


Verá una salida como la siguiente en su terminal ejecutando hello-world.js en una terminal

 

 

Si el LED incorporado parpadea ,!enhorabuena !  !acaba de controlar una placa Arduino con JavaScript!  ¿a que es realmente sencillo?.

Aunque en el caso de la familia Arduino tiene la innegable penalización de necesitar un host para operar , la ventajas de este  modelo son evidentes pues no tenemos que estar constantemente compilando  y  subiendo el sketch con el ide de Arduino ya que el programa corre en host . Ademas  podemos usar un simple editor de texto para cambiar el código en javascript fácilmente

Asimismo el lenguaje javascript ha ido evolucionando hasta un ritmo que no podemos imaginar   incluyendo muchas características que no son soportadas de forma directa desde Arduino

Por ultimo mencionar la autentica potabilidad del código , pues el código que hemos visto en el ejemplo podremos usarlos  en múltiples plataformas  tan diferentes como Raspberry pi, Intel Edison , etc usando siempre el mismo código fuente aun siendo soportado por placas muy diferentes ¿ a que es interesante?

 

 

Placas soportadas

Johnny-Five ha sido probado con una variedad de tableros compatibles con Arduino . 

Para los proyectos que no están basados ​​en Arduino, los complementos de IO específicos de la plataforma están disponibles. Los complementos IO permiten que el código Johnny-Five se comunique con cualquier hardware en cualquier idioma que la plataforma hable.

Como comentábamos   existen diferentes  formas de   ejecutar  el programa Johnny-Five  segun la placa:

  • En un entorno Linux a bordo: beagleBone Black,Chip,Intel Galileo gen 1,Intel Galileo Gen 2,Intel Edison Arduino,Intel Edison Mini, SparkFun Edison GPIO Block,SparkFun Arduino Block, Intel Joule 570x (Carrier Board),Linino One,pcDuino3 Dev Board,Raspberry Pi 3 Model B, Raspberry Pi 2 Model B. Raspberry Pi Zero,Raspberry Pi Model A Plus,Raspberry Pi Model B Plus, Raspberry Pi Model B Rev 1, Raspberry Pi Model B Rev 2, Tessel 2) ,   Es  facil adivinar qeu este es el mabiente ideal   pues dentro de la placa se oprtan tanto el host como el cliente  por lo qeu no ncesitamos conectarnos con otro dispositivo
  • En una máquina host conectada (a través de Serial USB o Ethernet) a un cliente.: Arduino Uno,SparkFun RedBoard, On a host machine communicating over Bluetooth to the client. Arduino Uno,Arduino Leonardo, Arduino Mega, Arduino Fio,Arduino Micro,Arduino Mini,arduino Nano,Arduino pro Mini,Boatduino,chipKit uno32,Spider robot Controller,DfRobot Romeo,Teensy 3,
  • En una máquina host que se comunica por wifi al cliente.: Electric Imp April, pinoccio Scout, Particle Core ( Spark Core) ,Particle Photon, Sparkfun Photon RedBoard
  • En una máquina host que se comunica a través de Bluetooth al cliente :Blend Micro v1.0,LightBlue bean,

Veamos  ahora cada  caso en concreto;

Arduino Uno 

Ambiente 

  • Firmware / Runtime: : StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
  • Admite las extensiones STEPPER_* cuando se usa con AdvancedFirmata o ConfigurableFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

SparkFun RedBoard 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
  • Admite las extensiones STEPPER_* cuando se usa con AdvancedFirmata o ConfigurableFirmata .

ping

Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

 

Arduino leonardo 

Ambiente 

  • Firmware / Runtime:  StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
  • Admite las extensiones STEPPER_* cuando se usa con AdvancedFirmata o ConfigurableFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

Arduino Mega 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
  • Admite las extensiones STEPPER_* cuando se usa con AdvancedFirmata o ConfigurableFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
ping

Arduino Fio 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
  • Admite las extensiones STEPPER_* cuando se usa con AdvancedFirmata o ConfigurableFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

Arduino Micro 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
One wire no
Paso a paso no
Serial / UART
Dac no
Ping

Arduino Mini 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
One wire no
Paso a paso no
Serial / UART
Dac no
Ping

Arduino Nano 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus (additional instructions)
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
Ping

Arduino Pro Mini 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
One wire no
Paso a paso no
Serial / UART
Dac no
ping

BotBoarduino 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere amarre.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
  • Admite las extensiones STEPPER_* cuando se usa con AdvancedFirmata o ConfigurableFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
ping

chipkit uno32 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere tethering.

Plataforma específica 

  • Eche un vistazo a chipkit.net!
  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
  • Admite las STEPPER_* cuando se utilizan con AdvancedFirmata o ConfigurableFirmat .
  • Los pines digitales 26-41 y los pines analógicos A6-A11 actualmente no son compatibles con StandardFirmataPlus, a la espera de una actualización de la definición de pines en Boards.h
  • Esta bifurcación tiene los cambios relevantes y debe cargarse en el tablero a través del IDE proporcionado por chipKit
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
One wire
Paso a paso
Serial / UART
Dac no
ping

Spider Robot Controller 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere  tetehering.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
  • Admite las extensiones STEPPER_* cuando se usa con AdvancedFirmata o ConfigurableFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
ping

DFRobot Romeo 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere amarre.

Plataforma específica 

  • Admite la extensión PING_READ , cuando se usa con PingFirmata .
  • Admite las extensiones STEPPER_* cuando se usa con AdvancedFirmata o ConfigurableFirmata .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART
Dac no
Ping

Teensy 3 

Ambiente 

  • Firmware / Runtime: StandardFirmataPlus ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a la placa a través de una serie USB , que actúa como un cliente ligero .Requiere amarre.
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART no
Dac no
ping

BeagleBone Black 

Ambiente 

  • Complemento IO: BeagleBone-IO ( instrucciones adicionales )
  • Firmware / Runtime: Debian ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

CHIP 

Ambiente 

  • Plug-in IO: Chip-IO ( instrucciones adicionales )
  • Firmware / Runtime: Debian ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo no
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Ping no

Blend Micro v1.0 

Ambiente 

  • Complemento IO: BlendMicro-IO ( instrucciones adicionales )
  • Firmware / Runtime: BLEFirmata
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a través de Bluetooth a la placa, que actúa como un cliente ligero .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Ping no

 Electric Imp  April 

Ambiente 

  • Plug-in IO: Imp-IO ( instrucciones adicionales )
  • Firmware / Runtime: Tyrion ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a través de WiFi a la placa, que actúa como un cliente ligero .

Plataforma específica 

  • Requiere una conexión WiFi conectada a Internet y está sujeto a la limitación de la tasa de solicitud por parte del servidor de Electric Imp API.
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C no
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Intel Galileo Gen 1 

Ambiente 

  • Plug-in IO: Galileo-IO ( instrucciones adicionales )
  • Firmware / Runtime: IoT DevKit ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.

Plataforma específica 

  • Las compilaciones que no son IoTKit ya no son compatibles.
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Intel Galileo Gen 2 

Ambiente 

  • Plug-in IO: Galileo-IO ( instrucciones adicionales )
  • Firmware / Runtime: IoT DevKit ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Silbido no

Intel Edison Arduino 

Ambiente 

  • Complemento IO: Edison-IO ( instrucciones adicionales )
  • Firmware / Runtime: IoT DevKit ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.

Plataforma específica 

  • El hardware es capaz de soportar solo 4 salidas PWM. Como resultado, los enlaces nativos no admiten PWM en los pines 10 y 11.
  • Aunque Galileo-io / Edison-io / Joule-io todavía no admite comunicaciones en serie, puede enlazar a / dev / ttyFMD1 en la placa Edison Arduino usando el módulo serialport .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Silbido no

Intel Edison Mini 

Ambiente 

  • Complemento IO: Edison-IO ( instrucciones adicionales )
  • Firmware / Runtime: IoT DevKit ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
Silbido no

SparkFun Edison GPIO Block 

Ambiente 

  • Complemento IO: Edison-IO ( instrucciones adicionales )
  • Firmware / Runtime: IoT DevKit ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

SparkFun Arduino Block

Ambiente 

  • Complemento IO: Edison-IO ( instrucciones adicionales )
  • Firmware / Runtime: IoT DevKit ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.

Plataforma específica 

  • Este bloque no utiliza enlaces mraa nativos. Por favor, vea el Bloque Arduino de SparkFun Edison , en el repositorio de Galileo-IO , para obtener ayuda para comenzar.
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable
Paso a paso
Serial / UART no
Dac no
ping no

Intel Joule 570x (Carrier Board) 

Ambiente 

  • Complemento IO: Joule-IO ( instrucciones adicionales )
  • Firmware / Runtime: Referencia Linux * OS para IoT ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

LightBlue Bean

Ambiente 

  • Plug-in IO: Bean-IO ( instrucciones adicionales )
  • Firmware / Runtime: StandardFirmata ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a través de Bluetooth a la placa, que actúa como un cliente ligero .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Linino uno 

Ambiente 

  • Plug-in IO: Nino-IO ( instrucciones adicionales )
  • Firmware / Runtime: Linino ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

pcDuino3 Dev Board 

Ambiente 

  • Plug-in IO: pcDuino-IO ( instrucciones adicionales )
  • Firmware / Runtime: pcDuino ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo no
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Pinoccio Scout 

Ambiente 

  • Plug-in IO: Pinoccio-IO ( instrucciones adicionales )
  • Firmware / Runtime: pinocc.io ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a través de WiFi a la placa, que actúa como un cliente ligero .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C no
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping no

Raspberry Pi 3 Modelo B 

Ambiente 

  • Plug-in IO: Raspi-IO ( instrucciones adicionales )
  • Firmware / Runtime: Raspbian ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
ping no

Raspberry Pi 2 Modelo B 

Ambiente 

  • Plug-in IO: Raspi-IO ( instrucciones adicionales )
  • Firmware / Runtime: Raspbian ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
Silbido no

Raspberry Pi Zero 

Ambiente 

  • Plug-in IO: Raspi-IO ( instrucciones adicionales )
  • Firmware / Runtime: Raspbian ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
ping no

Raspberry Pi Model A Plus 

Ambiente 

  • Plug-in IO: Raspi-IO ( instrucciones adicionales )
  • Firmware / Runtime: Raspbian ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
ping no

Frambuesa Pi Modelo B Plus 

Ambiente 

  • Plug-in IO: Raspi-IO ( instrucciones adicionales )
  • Firmware / Runtime: Raspbian ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
Silbido no

Raspberry Pi Modelo B Rev 1 

Ambiente 

  • Plug-in IO: Raspi-IO ( instrucciones adicionales )
  • Firmware / Runtime: Raspbian ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
Ping no

Raspberry Pi Modelo B Rev 2 

Ambiente 

  • Plug-in IO: Raspi-IO ( instrucciones adicionales )
  • Firmware / Runtime: Raspbian ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.

Plataforma específica 

  • analogRead componentes analogRead pueden analogRead a través de instancias de Expander . Ver Expander API para ejemplos.
Lectura analógica no
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac no
ping no


Particle Core (Spark Core)

Ambiente 

  • Plug-in IO: Spark-IO ( instrucciones adicionales )
  • Firmware / Runtime: VoodooSpark ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a través de WiFi a la placa, que actúa como un cliente ligero .

Plataforma específica 

  • Los temporizadores se comparten en grupos: Temporizador 2: A0 , A1 , Temporizador 3: A4 , A5 , A6 , A7 , Temporizador 4: D0 , D1
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping


Particle Photon

Ambiente 

  • Plug-in IO: Spark-IO ( instrucciones adicionales )
  • Firmware / Runtime: VoodooSpark ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a través de WiFi a la placa, que actúa como un cliente ligero .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
ping no
Silbido

Sparkfun Photon RedBoard 

Ambiente 

  • Plug-in IO: Spark-IO ( instrucciones adicionales )
  • Firmware / Runtime: VoodooSpark ( instrucciones adicionales )
  • El programa JavaScript se ejecuta en una máquina host que ejecuta Node.js. El programa transmite instrucciones básicas de E / S a través de WiFi a la placa, que actúa como un cliente ligero .
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART no
Dac no
ping

Tessel 2 

Ambiente 

  • Plug-in IO: Tessel-IO ( instrucciones adicionales )
  • Firmware / Runtime: Tessel 2 Firmware en OpenWRT ( instrucciones adicionales )
  • El programa JavaScript se ejecuta directamente a bordo, en un entorno Linux que ejecuta Node.js.

Plataforma específica 

  • El soporte de servo se proporciona a través de componentes I2C (por ejemplo, PCA9685 )
  • DAC está limitado a Puerto B, Pin 7
Lectura analógica
Lectura digital
Escritura digital
PWM
Servo
I2C
Un cable no
Paso a paso no
Serial / UART
Dac
ping no

Mas información en  http://johnny-five.io/platform-support/

Cómo encender las luces Hue desde Google Home sin comprar uno de los altavoces de Google


En efecto  los asistentes de voz han llegado para quedarse de modo que lo que hoy son capaces de hacer  probablemente sera superado muy rápidamente   con creces en un futuro muy cercano con nuevas posibilidades. Precisamente uno de los campos mas interesantes   dentro de  las posibilidades  que ofrece la IA   es el control  de  nuestros dispositivos   domésticos,  destacando con  voz propia el control de la iluminación eléctrica,  sencillamente porque aparte  de que esta estandarizado los tipos de luminarias,  el control  de estas es mucho mas sencillo  que el de cualquier  electrodoméstico en el que podamos pensar  (si bien  esto esta cambiando con equipos  eléctricos  cada vez mas conectados como lavadoras , equipos de aire acondicionado , calefacción , etc).

Dentro de la domótica orientada a la iluminación, destaca con voz propia el sistema Hue de Philips , pues en efecto mucho antes de que Lifx, IKEA, Sengled y el like llegaran a la escena, la compañía, que por cierto cambió su nombre de Philips Lighting a Signifity, ya estaba ofreciendo una serie de bombillas conectadas que podrían controlarse desde una aplicación en su teléfono inteligente (de hecho la primera bombilla que se encendió  fue en octubre de 2012).

A  pesar de  que esos antiguos rivales hoy en día ya ofrecen una  buena calidad, son fáciles de usar y   son alternativas genuinas, Hue sigue siendo el rey del peso pesado indiscutible en una división en constante expansión ,siendo por tanto para muchas personas,Philips Hue  el primer nombre en que piensan  al equipar sus casas inteligentes.

Sin embargo, una casa inteligente no  es tan simple como comprar  el  famoso   Philips Hue Hub   y  enroscar bombillas compatibles con el sistema  Hue , y de hecho no es necesariamente la cosa más fácil de lograr, pues existe una gran variedad de luminarias  Philips Hue para elegir, así como una plétora de accesorios y extras,   así como una gama aparentemente interminable de características y especificaciones-que puede ser muy  desalentadores para empezar,   pues ademas,  si queremos llegar aun mas lejos,  deberíamos  sincronizar  estos con  ecosistemas como Nest, Alexa, HomeKit ,  Google Assistant o últimamente Movistar Home con su famosa implementación de IA  con  «Aura».

 

Configurar Philips Hue

Esencialmente, una configuración de Philips Hue (como en la mayoría de los otros sistemas de iluminación inteligentes) utiliza señales inalámbricas  Wi-Fi y ZigBee permitiendo  conectar hasta 50 dispositivos de iluminación inteligente  mediante una aplicación o un control remoto físico

Resumidamente   para conectar de luces inteligentes  basadas en el sitema Hue de Philips ,  solo necesitamos  conectar el Hub  a la red eléctrica  y a una toma ethernet, conectar  bombillas compatibles   y configurar todo el ecosistemas desde la app Hue  y usted será capaz de controlar su brillo, colores, el tiempo que permanecen encendidas o apagadas o   la forma en que reaccionan a otra tecnología inteligente.

De hecho, gracias a los gustos de Amazon Alexa y Google Assistant, y recientemente Movistar Home ,  es posible que incluso ya  no necesite usar  la aplicación Hue  en absoluto( excepto para la primera configuracion), pues la iluminación de su casa se controlará solo con la  voz., pero en todos los casos, no obstante ,para hacer  este control posible,  vamos a  necesitar un elemento    que haga de puente  entre la red  wifi  y red  Zigbee : el  Philips Hue Hub .

En efecto Philips Hue Hub integra el coordinador y el router Zigbee en un único dispositivo , permitiendo conectar hasta 50 bombillas Hue además de 10 accesorios para poder ampliarlo. Además  no solo este Hub admite bombillas Philips Hue  sino  otras marcas mas económicas  como Inn, Osram y hasta incluso las bombillas de Ikea

El puente de Philips Hue es pues la herramienta que permite la conexión y manejo de bombillas LED  compatibles con Zigbee  al ser  compatible con ZigBee 3,0, pero también al ser compatible con el protocolo estándar ZigBee Light Link   permite  que conectemos   bombillas que no tienen que ser necesariamente  Philips Hue  como tal, pues  hay  otros  productos y dispositivos compatibles con ZigBee Light Link que  funcionan con el puente Hue. De hecho , tal  y como ya comentamos en un post anterior , podemos usar otras  marcas como por ejemplo las  bombillas inteligentes de IKEA   o  otras  bombillas de la talla de GE y Osram

Una vez conectado el Hub  a la red eléctrica  y a una toma ethernet el Philips Hue Hub , necesitaremos instalar  la app  “Philips Hue ” disponible en Google  Play para  configurar tanto el Hub como las luminarias . Una vez  realizada esta configuración de una única vez   podremos programar y personalizar la iluminación de una  casa  permitiendo organizar fácilmente la iluminación por habitaciones,encender o apagar todas las luces de las habitaciones o cambiar el color o el brillo en todas las bombillas según su estado de ánimo o actividad  con independencia de la cantidad de la cantidad de  bombilla que hayamos instalado.

Configurar un puente Philips Hue

  • Enchufe el puente de Hue en una toma de corriente y conéctelo a su router a través del cable Ethernet.
  • Proceda una vez que las cuatro luces del puente se iluminen.
  • Vaya a Configuración > puentes de Hue > Añadir puente de Hue en la aplicación Philips Hue.
  • Siga las instrucciones de configuración.

Cconfigurar una bombilla Philips Hue

  • Primero, asegúrese de que el puente Philips Hue esté configurado.
  • Vaya a Configuración > configuración de luz > Añadir luz.
  • Pulse ‘ Buscar ‘ o agregue manualmente el número de serie que aparece en la bombilla.
  • Siga las instrucciones de configuración, desde cuyo punto puede nombrar su luz y ponerla en habitaciones.

Lo normal es que instalemos   las bombillas desde la aplicación “Philips Hue ” disponible en Google  Play  y controlemos  todas las luminarias   tanto  desde la propia aplicación  o desde un accesorio Hue, pero además ,   recientemente  se  ha implementado el control de esta mediante  la  inteligencia artificial de Movistar  (Aura)   en el famoso Movistar  Home , dispositivo que actualmente no solo permite el control de  las  luminarias conectadas al  Philips Hue Hub mediante  ordenes vocales  del tipo «ok Aura enciende las luces» o «Ok Aura apaga las luces» (así como elegir el color o la intensidad de la iluminación de forma táctil en la pantalla de tu Movistar Home), ademas    permite  tener el control  de las llamadas ( crucial para el caso de emergencias)   , buscar contenidos de Imagenio y proyectarlos en la TV, gestionar la conectividad con la voz , y un largo etcétera .

 

Movistar Home

Si tiene instaladas  las luces inteligentes (Phillips Hue) y cuenta con en el famoso Movistar  Home , en efecto podrá controlar el apagado y encendido de las luces del salón a través del comando de voz, “OK Aura, enciende las luces” u “OK Aura, apaga las luces”, así como elegir el color o la intensidad de la iluminación de forma táctil en la pantalla de su Movistar Home y todo ello  con tres sencillos pasos desde el propio Home:
  1.  Pulsando el botón del Hub de Hue , nos iremos en el Movistar Home  a Ajustes->Conectividad->Luces
  2.  Ahora una vez detectado el hub   debería aparecer  en este apartado en la pantalla de MH
  3. Lo siguiente es buscar las luces , así que nos volveremos  en el MH a Ajustes->Conectividad->Luces   y seleccionaremos las luces sobre las que actuar
 

 

Vinculación  de   Philips Hue a Google Home

Ademas  de la posibilidades comentadas  de control de la aplicación  , desde periféricos Hue o incluso desde MOVISTAR  HOME , es posible controlar las luces  con la voz desde cualquier smartphone o tableta de forma sencilla  haciendo prácticamente innecesario el desembolso  de un altavoz inteligente de Google   de paso nos ahorraremos un dinero que según  las especificaciones podría llegar hasta los 150€

Para  controlar las luces Hue desde la  app de  Google Home en primer lugar tendremos que asegurarnos que esta activada la conexión con el exterior de las luxes , por los que nos iremos en la app de Philips  Hue  a Ajustes->Controles–>Controla desde fuera de.., 

Si  no tenia activo esta opción , la app le llevara automáticamente a  la pagina de philips donde necesitara crear una cuenta para acceder al servicio ,  así como conceder los permisos necesarios para  el control externo de su sistema de iluminación , Una vez validado y terminado el proceso debería de ver   vera que esta opción  aparece como conectado

 

Configuración Google Home 

Ahora tenemos todo preparado para instalar  la aplicación Google Home ( por cierto tambien disponible para  Iphone)  , con la que  podremos configurar, gestionar y controlar un Google Home y Chromecast pero también directamente el sistema Hue de Philips  ( , además de miles de productos para casas conectadas, como luces, cámaras, termostatos y otros dispositivos, con esta a única aplicación).

Aparte de poder controlarlo por la voz ,esta aplicación tiene accesos directos para realizar las acciones más habituales, como poner música o atenuar las luces para ver una película ( todo ello se o controla  con un solo toque, para disfrutar de lo bueno sin tener que esperar).

 

Bien   lo primero  tenemos nuestro sistema configurado  desde la app de Hue , y tenemos habilitado el control desde fuera, pues lo siguiente sera instalar  la aplicación Google Home (la cual  por cierto también disponible para  Iphone)

 

Lo primero que tiene que hacer es una vez instalada es abrir la aplicación de Google Home.

En la primera instalación  nos preguntara si concedemos permisos de nuestra   ubicación  ,la cual podria ser útil para automatización del hogar

En cuanto hay concluido esta primera configuración, enseguida nos preguntara si deseamos buscar dispositivos compatibles de forma nativa  

Si no tiene un chromecast o un  Google Home no detectara nada , por lo que  enseguida vera la configuración de tu casa. Es en esta pantalla ( menú principal) donde deberá  pulsar en el botón Añadir(+)  que se en la parte superior de la pantalla, en la configuración de su casa

Ahora  una vez entre en las opciones de Añadir y gestionar, en el apartado Añadir a la casa  pulsaremos en Configurar Dispositivo que verá en primer lugar, y que sirve para vincular todo tipo de dispositivos compatibles con Google Assistant.

Una vez en esta pantalla de Configuración , pulse sobre la opción Configurar dispositivo vera dos opciones para vincular dos tipos de dispositivos: una  para dispositivos oficiales hechos para Google ( no es la nuestra ) y otra  opción de «Funciona con Google»   para dispositivos de terceros.

 

 

Seleccionando la opción de «funciona con Google» ,en  esta opción  aparece un sinfín de marcas y modelos  por lo que lo mas sencillo es buscarlo como «ph» pulsando en la lupa de la parte superior

.

 

Una vez haya iniciado sesión, en la web se le informará de que Google está solicitando el acceso para supervisar sus bombillas, y le preguntarán si estás de acuerdo. De estar de acuerdo   puede pulsar en el botón para aceptarlo, y ya deberían aparecer toas  las luminarias que puede utilizar  desde esta  app  con la voz 

 

 

Por ejemplo puede probar a decirle «Ok Google, enciende las luces», o «apaga las luces» o si lo desea pulsar directamente en los accesos directos  para apagar , encender o disminuir a aumentar la intensidad de forma selectiva alguna ( o todas )  las luminarias compatibles con el sistema Hue que tenga instaladas

 

 

Para terminar también puede utilizar comandos de voz mas complejos  como «pon las luces de color morado» o «baja la intensidad de las luces» o incluso dar ordenes de voz para que encienda o apague las luces a una hora  o  durante un determinado periodo ,con una cierta secuencia,etc  ..como ve las posibilidades son bastantes extensas  para poderlas en numerar desde aquí .

¿Amigo lector le parece interesante este sistema?