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 

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 

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 

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 

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 

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 

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 

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 

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 

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 

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 

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 

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 

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 

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 

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 

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 

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 

Plataforma específica 

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 

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 

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 

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 

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 

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 

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 

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 

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 

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 

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 

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 

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 

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 

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 

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 

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/

IoT con LattePanda


Muy resumidamente LattePanda es un un mini ordenador completo con Arduino integrado   que ejecuta la versión completa de Windows 10. Incluye todo lo que un PC normal tiene  pudiendo hacer cualquier cosa que hace un PC normal. Es ademas compatible con casi todos los aparatos que conoce como  impresoras, joysticks, cámaras y más. Todos los periféricos que funcionan en su PC funcionaran en LattePanda.

Ademas LattePanda viene pre-instalado con una edición completa  pre-activada de Windows 10.


Utilizando las API existentes, puede desarrollar sus propios proyectos de software y hardware en LattePanda como lo haría en un PC normal usando  C #, JavaScript, Ruby y así sucesivamente de modo que no necesita su ordenador portátil  para construir una aplicación con el

Pero no sólo puede ser utilizado como un ordenador normal de bajo costo con  Windows pues LattePanda también está diseñado con un compatible co-procesador Arduino, lo que significa que se puede utilizar para controlar y detectar el mundo físico, al igual que una placa Arduino!

Si usted es un desarrollador de Windows, un desarrollador de la IO, un fanático de hardware de bricolaje, diseñador interactivo, robótica genio o un fabricante, LattePanda puede ayudar a su proceso creativo con los proyectos informáticos físicos!

LattePanda puede ejecutar la versión completa de Windows 10 y Ubuntu.

ESPECIFICACIÓNES

  • Procesador: 1,8 GHz Intel Cherry Trail Z8300 Quad Core
  • Funcionamiento del sistema: Pre-instalado preactivado completa edición de Windows 10 (versión Inicio)
  • Ram: 2 / 4GB DDR3L
  • Capacidad de almacenamiento: 32 / 64GB
  • USB: 1 x USB 3.0, USB 2.0 x 2
  • HDMI de salida de vídeo y el puerto Ethernet
  • 3,5 mm de salida de audio jack
  • Ranura para tarjeta Micro SD
  • Toque y Conector de pantalla
  • Plug and Play Conectores de sensor
  • WiFi y Bluetooth 4.0
  • Coprocesador: ATmega32u4
  • GPIO: 2 GPIO de chips Intel, 20 GPIO para Arduino
  • Potencia: 5v / 2A
  • Dimensiones: 3.46 “x2.76”
  • Peso: 100 g

 Pines

Debajo de cuadros es un diagrama básico que muestra todos los pines del bus de expansión:

LattePanda pines

 

Distribución de los pines en el área U1 se asignan a la base de X-Z8300. Por el momento, no hay información disponible.

Distribución de los pines en el área de U2 se asignan al núcleo ATmega32u4.Cada uno de los 20 pines digitales (A0 – A5, D0 – D13) en la zona de U2 se puede utilizar como una entrada o salida, cada uno operando a 5 voltios. Cada salida puede fijar o recibir 40 mA y cada uno tiene una resistencia de pull-up (desconectada por defecto) de 20-50k ohmios.

Precaución: Superior a 40 mA en cualquier pin de E / S puede causar daños permanentes en el ATmega32u4.

Algunos pines tienen funciones especializadas:

Entradas analógicas: A0 – A5, A6 – A11 (en D4, D6, D8, D9, D10, D12 y). El LattePanda tiene 12 entradas analógicas, etiquetados A0 a A11, todos los cuales también pueden ser utilizados como I / O digital. Cada pin tiene una resolución de 10 bits (es decir, 1024 valores diferentes). Por defecto se miden desde el suelo a 5 voltios.

De serie: D0 (RX) y D1 (TX). Se utiliza para recibir (RX) y transmitir datos en serie (TX) TTL.

Las interrupciones externas: D3 (interrumpir 0), D2 (interrumpir 1), D0 (interrumpir 2), D1 (interrumpir 3) y D7 (interrumpir 4). Estos pines pueden ser configurados para desencadenar una interrupción en un valor bajo, un flanco ascendente o descendente, o un cambio en el valor.

PWM: D3, D5, D6, D9, D10, y D13 proporcionan salida PWM de 8 bits.

SPI: D16 (MOSI), D14 (MISO), D15 (SCK).

LED: D13 Hay un LED integrado impulsado por pin digital 13. Cuando el valor del pin es alto o bajo

TWI: D2 (SDA), D3 (SCL).

Otros pines de la placa:

Reset: Lleva a este BAJA línea para reiniciar el microcontrolador. Normalmente se utiliza para añadir un botón de reinicio para escudos que bloquean la una en la mesa.

¿Cuál es el propósito de este proyecto?

En este ejemplo  vamos a aprender, cómo nos comunicamos entre Arduino (chip de Arduino interna en LattePanda) y Microsoft Visual Studio y envían los datos desde el Arduino para utilizar una aplicación de Windows. Aquí vamos a medir la temperatura y humedad ambiental y enviar los datos del sensor de DHT Thingspeak.

Cómo acceder a la disposición de patillas de Visual Studio

LattePanda.Firmata es una biblioteca de código abierto Firmata proporcionada por LattePanda, que es adecuado para aplicaciones de Windows desarrollado en Visual Studio. Esta clase le permite controlar Arduino GPIO desde aplicaciones de Windows, con funciones que incluyen:

  • La lectura y escritura a los pines digitales
  • La lectura de las entradas analógicas
  • El control de servomotores
  • El envío de datos a los dispositivos y los dispositivos de recepción de formularios de datos a través del bus I2C

Para este proyecto, he hecho algunos cambios en la biblioteca Firmata de datos del sensor DHT leer o cualquier otro sensor.

3 pasos para su proyecto Arduino remoto

  • Descarga e instalación de Visual Studio 2015
  • Configurar el Arduino (Es pre-instalado, a menos que cambiara el programa de Arduino)
  • Crear un proyecto o utilizar el proyecto de ejemplo

Descarga e instalación de Visual Studio 2015

En el primer paso, es necesario instalar Visual Studio en LattePanda. No se instala por defecto.

  • Activar el modo de programador en su sistema operativo, para este fin, vaya a Configuración> Actualización y seguridad> en la sección para desarrolladores> Selección de Modo desarrollador

Estableció el Arduino

  • Descargar este archivo y abra el archivo en Arduino. (Este archivo reemplaza con StandardFirmata . Algunos cambios se han hecho en este archivo)
  • Seleccione Arduino Leonardo del Board sección. A continuación, seleccione el puerto COM correcto, cargar el último boceto.

Cableado

El objetivo de este proyecto es leer los datos de temperatura y humedad por el sensor DHT11 conectado a LattePanda(se puede utilizar en lugar de DHT21 o DHT22).

El sensor  se  debe conectar como en la imagen  siguiente ,es decir el pin de la izquierda (Data) al terminal D7 de LattePanda, el terminal central del sensor al pin +5V de LattePanda  y por ultimo el terminal de la derecha al ping de GND de LattePanda.

 

 

Leer Temperatura y Humedad

Descargar este archivo y abra el archivo con Microsoft Visual Studio.Registrarse en Thingspeak y crear un nuevo canal con dos campos. ( Field 1de la temperatura y Field 2 de la humedad). Después Save Channel , en la API Keys pestaña, copia Key valor y pegar en Program.cs archivo en lugar deTHINGSPEAK_KEY_HERE .

Guardar el archivo y haga clic Start botón. La salida será como se muestra a continuación:

Al final, los datos se pueden ver en el  servidor deThingspeak  apareceran  como se muestra a continuación:

Recursos

Fuente   aqui

Construccion de un pancreas artificial


Tres años de investigación y desarrollo, algo más de 200 € en material  y dispuesto a usar  su desarrollo en el mismo el mexicano Gustavo Muñoz  finalmente ha  montado un páncreas artificial que le ayuda a sobrellevar la diabetes. Es un caso similar  Dana Lewis ( del  que hablamos en este blog)   y que también tiene diabetes tipo 1 ( donde  el páncreas no produce suficiente insulina – la hormona que hacen que la glucosa disponible para que las células del cuerpo para utilizar como combustible – o, a veces, el páncreas no funciona en absoluto).

Este ingeniero  de forma similar  a Dana ha experimentado con su propio cuerpo para superar los límites de su enfermedad desarrollando también su propio proyecto de páncreas artificial.

El problema de todo este tipo de dispositivos es que hay tras cualquier solución de este tipo siempre inevitablemente ,si hay un factor de éxito y medio funciona , siempre hay un intento de capitalizar la inversión en tiempo de modo que muy pocos comparten el código en repositorios públicos , pues no todo el mundo tiene el espíritu altruista y las ganas de hacerlo incluso sabiendo que así podría ayudar a muchas más personas que comparten esas misma enfermedad ,pero Gustavo  Muñoz es otro tipo de persona y sin duda parece decidido a cambiar las reglas

 

Gustavo  Muñoz  de forma similar a Dana , comenzó con un sistema de alarmas para despertarse  de noche en caso de no poder escuchar la señal de al CGM (Monitorización Continua de Glucosa), un aparato que se implanta bajo la piel y avisa al portador de los cambios en sus niveles de azúcar.  A veces no escuchaba la alarma lo cual lo hizo reflexionar  hasta  decidir crear su propio sistema usando su propio cuerpo a modo de laboratorio para construir su propia solución.

El páncreas es responsable, entre otras funciones de producir y segregar hormonas importantes como la insulina (disminuye los niveles de glucosa sanguínea) y el glucagón (eleva los niveles de glucosa en la sangre),así que su falta o mal funcionamiento puede poner en peligro nuestras vidas excepto que puedas conectarte a un páncreas artificial.

Para funcionar, un páncreas artificial necesita tres dispositivos:

  • Un sensor que se implanta bajo la piel y mide los niveles de glucosa
  • Un dispositivo que inyecta insulina a través de un catéter
  • Un controlador que aun  no se encuentra en el mercado que detecte la glucemia e indique a la bomba de insulina qué hacer.

 

Buscando en la web se encontró  con el excelente  trabajo de Benjamin West, un programador que también padece diabetes tipo 1.

West había realizado experimentos con su bomba de insulina durante dos años y, al terminar, publicó su trabajo de forma altruista  y desinteresada en GitHub aqui,para que cualquiera pueda construir su propio sistema github

Como vemos West escribió un paquete Python proporcionando un conjunto de herramientas para trabajar con datos utilizados y creados por un ” moderno”, alrededor del año 2010 , el régimen de la terapia con insulina .

Ofrece una herramienta basada en la línea de comandos de texto , y una biblioteca de Python para auditar los datos terapéuticos a partir de una variedad de dispositivos médicos utilizados como pueden ser:.

  • Bombas de insulina serie Medtronic Minimed utilizando el a usbstick
  • Medidores de glucosa  LifeScan
    • OneTouch series
    • Mini / Perfil
  • Dexcom , OneTouch Ping, Bayer , OmniPod . Sin ningún orden en particular.
  • Bayer , próximamente

Los comandos utilizando PYTHONPATHe están en el directorio raíz del repositorio y se supone que ha instalado en su sistema insulaudit ( incluyendo el desarrollo de la versión ) .Utilizan una  función de escaneo de puertos para probar si somos capaces de hablar con una bomba (es sólo intercambiar unos pocos bytes , nada más ::)

# fails
PYTHONPATH=src/ python -m insulaudit.main -v clmm   hello
insulaudit -v clmm hello

La especificación de un puerto parece funcionar . Si no lo hace , vuelva a intentar un par de veces . ::

# using the subcommand stuff:::
PYTHONPATH=src/ python -m insulaudit.main -v clmm --port /dev/ttyUSB0  hello
insulaudit -v clmm --port /dev/ttyUSB0 hello

# run the protocol exercise directly
PYTHONPATH=src/ python src/insulaudit/devices/clmm/proto.py /dev/ttyUSB0
python -m insulaudit.devices.clmm.proto.py /dev/ttyUSB0

# read-pump-model.log - protocol exercise to read pump
model number.  Log of it running successfully 5 times
before it starts failing.  stderr and timestamps were
not capture. :-(

Sobre  el marco básico  la compatibilidad con el protocolo debe ser estabilizada  teniendo la las herramientas   para obtener las siguientes utilidades:

  • convertir hola a algún tipo de exploración
  • introducir nuevos flujos de dispositivos
  • introducir perfiles de dispositivo / fluye consola
  • registros de récord
  • revisar los registros
  • registros de auditoría
  • registros de fusiones
  • buscar
  • reformatear.

El mexicano adaptó  todo este  trabajo a  sus propias herramientas para extraer datos y enviar ciertos comandos a la bomba de insulina. Aún así, tenía que seguir controlando el tratamiento de manera constante, y por eso se animó a implementar ciertas mejoras del paquete de Ben decidiendo desarrollar un sistema que le permitiera configurarlo y olvidarme de él”,un proyecto al que llamó Simpancreas.

 

Tras meses de investigación y pruebas, Gustavo por fin programó una placa de Raspberry como Dana o Benjamin ,pero más tarde la sustituyó por una placa  Intel Edition, más pequeña , acompañado de una batería y una antena

Dado el grave riesgo par la salud que puede producir un  tratamiento inadecuado para reducir los riesgos, Gustavo extrae información y la analiza en gráficos que le permiten tener todo bajo control.

sinpancreas

 

Aunque esta muy cerca de ser autónomo este ingeniero advierte del riesgo que podría suponer para una persona sin sus conocimientos tratar de hacer lo mismo,razón  por la que la  FDA , piden a los desarrolladores que no publiquen todo el código de su trabajo ni unas instrucciones específicas para llevarlo a cabo. Aunque Gustavo colabora con varias organizaciones, solo publica fragmentos de su trabajo y se asegura de que las personas inexpertas no los puedan utilizar sin ayuda.

OpenAPS (en español, Sistema de Páncreas Artificial de Fuente Abierta) es una plataforma que ofrece ayuda, documentación y consejos para garantizar la seguridad de aquellas personas dispuestas a fabricar su propio páncreas artificial.

Por su parte, Gustavo es cofundador junto con Kenneth Stack de Perceptus, una organización que forma a los pacientes a través de gráficos, y ha documentado todo su proceso a través de un blog.

Fuente aqui