Hackear un sensor PIR


Es relativamente utilizar  sensores PIR Panasonic de ultra baja potencia, componte  que es usado  en la mayoría de los sensores de proximidad.

Estos sensores están disponibles en varias variantes (series WL y VZ, rango de 5-12m, corriente inactiva de 1-6uA) siendo la corriente de detección activa de este sensor de ~ 30uA (durante el movimiento), y el  consumo de  corriente cuando esta inactiva de  sólo  2uA.

Cuando se ensambla junto a otros componentes en un sensor de proximidad , que es lo habitual  , la corriente inactiva total del  conjunto  será de alrededor de 10uA, por lo que como vemos el consumo es bastante ajustado.

Como  el voltaje de entrada de los PIR de Panasonic es de 2.3-4V , en algunas  placas   cuentan con el siguiente puente de soldadura para cambiar su VCC de la fuente de la batería a la fuente de 3.3V 

El sensor de movimiento PIR predeterminado en  los famosos  módulos  HC-SR501  es precisamente  el mismo sensor de Panasonic , usando alrededor de 60uA en inactivo, y la corriente de detección activa es ~ 200uA.

 

 

El sensor PIR del HC-SR501 tiene un rango de voltaje de alimentación de aproximadamente 3.9V a 24V lo cual lo hace ideal para usarlo por ejemplo con un Arduino como vemos  en el siguiente esquema.

 

Este rango  tan amplo de alimentación es genial, pero cuando estamos operando con una batería LiPo que se agota desde 4.2V cuando está completamente cargada pero todavía durará mucho tiempo sin modificaciones en el sensor PIR. Cuando el voltaje de la batería cae por debajo de 3.8-2.9V, el sensor PIR se disparará continuamente,pero como no queremos eso  necesitamos que el sensor PIR funcione hasta los 3.3V que marcarán el estado de la batería descargada.

En  estas   placas  , es patente  que el sensor PIR tiene un diodo y un regulador:

      • El diodo tiene un enorme voltaje directo de 0.6V, por lo que como mínimo deberá quitar este diodo y sustituirlo por un puente. También puede cruzarlo soldando un cable a los 2 terminales del diodo o con un poco de estaño intentar tocar ambos terminales  (como en la imagen de mas abajo).
      • El regulador tiene otra caída de voltaje de 0.1-0.25V, por lo que para alimentar el circuito con  el rango de entrada de voltaje más bajo absoluto para el PIR, también se puede quitar el regulador  ya que el regulador es lineal, por lo que será muy poco eficiente cuanto mayor sea el voltaje de entrada.

El diodo (y el regulador) deberían salir fácilmente si calienta repetidamente los terminales . La vía  mas simple de  hace esta pequeña modifiación  es reemplazar  estos componentes ( excepto la masa del regulador ) por simples  puentes de soldadura como se muestra a continuación.

Es evidente  que el quitar estos componentes al circuito conlleva dos peligros evidentes:

    • Podemos quemar el circuito si invertimos la polaridad al no contar con el diodo de protección
    • Si eliminamos el regulador también hay riesgo de quemadura del sensor  sobre todo si sobre-alimentamos el circuito

A pesar no obstante de estos riesgos es evidente  que el circuito podrá ser alimentado por menor tensión (3.3V) consumiendo ademas menos corriente , lo cual es muy importante cuando alimentamos estos sensores con fuentes recargables

 

Consejo para una fácil desoldadura:

Estos componentes son SMD y podrían ser un poco difíciles de desoldar si nunca antes lo ha hecho. Afortunadamente, hay un truco bastante fácil: derrita un montón de soldadura en la punta del soldador; esto aumentará la masa térmica de la punta. Para el diodo, caliente un lado y luego muévalo rápidamente hacia el otro, luego de un lado a otro hasta que el diodo se desprenda. Si este es un diodo realmente pequeño (algunos PIR tienen diodos pequeños y algunos más grandes), entonces puede simplemente conectar / cortar los terminales del diodo con un pequeño cable de puente sin tener que desoldarlo.

Si desea hacer que el PIR tenga una potencia aún más baja, debe quitar el regulador y conectar el regulador VIN a VOUT. Con un montón de soldadura derretida en su punta de hierro, toque los 3 cables del regulador y debería salir inmediatamente, luego deje caer la soldadura derretida en el centro y las almohadillas derechas donde estaba el regulador (como se ve en la foto de arriba).

 

Repetimos   que deberia tener en cuenta que  una vez  realice estas modificaciones, el PIR se podrá alimentar  hasta 5 V y deberá conectarse correctamente  pues ya no hay protección de diodo inverso

Reproductor multimedia para coche con interfaz táctil


Cada  vez son más los aficionados  que se deciden a poner su inventiva  e ingenio en pro de un problema   concreto  y le buscan  una solución  que comparten con  todo el mundo.

En la preparación para ir en un viaje extendido por carretera se pueden tener dos requisitos principales:

  • Una gran oferta de música para el viaje
  • Una lectura de velocidad en vivo respaldada por GPS para que pueda determinar de forma fiable la velocidad de los coches debido a los neumáticos más grandes que ponen el velocímetro del tablero en alrededor de un 10%.

Este  proyecto  inicialmente se basó en  una Raspberry Pi 2 (ahora actualizado a la Raspberry Pi 3 ) basado en el ordenador de coche que ejecuta Raspbian

 

En esta ocasión la necesidad era (  y es)   complementar el sistema multimedia de un coche  de unos ciertos años   con un interfaz táctil de gran pantalla    y de  paso que puede ofrecer  más información util para el conductor  , tarea  que ha implementado  con una Raspberry Pi 3, construyendo   un ordenador de coche basado en Raspberry Pi  con almacenamiento de 1 TB  que  proporciona música, un punto de acceso WiFi en  el coche y muestra la información de velocidad actual  además la ubicación respaldada por un receptor de  GPS  

El proyecto se  llama Nomadic Pi   y se basa en el API de mapas Here.com utilizandose  para recuperar el límite de velocidad y la información meteorológica. En cuanto al hw su creador  en lugar de dictar una configuración exacta de hardware nos enseña  el hw  que ha usado :

  • Raspberry Pi 3
  • Tarjeta SanDisc 32GB Clase 10 SD
  • Pantalla oficial De 7 pulgadas Raspberry Pi Touch
  • Concentrador USB de 4 puertos alimentado
  • Sombrero GPS Adafruit Ultimate
  • SMA hembra a RP-SMA convertidor adaptador hembra (utilizado para conectar el sombrero GPS a una antena GPS externa)
  • Rp-SMA a uFL/u.FL/IPX/IPEX RF Adapter Cable (utilizado para conectar el sombrero GPS a una antena GPS externa)
  • Antena GPS – Antena Activa Externa – Cable de 3-5V 28dB 5 Metros
  • Unidad portátil Samsung de 1 TB de 2,5 pulgadas
  • Cable USB a SATA
  • ZTE MF832 4G dongle
  • Convertidor de voltaje de 12v a 5v 3A
  •  Tiras de metal y soportes angulares de la ferretería
  • Pintura en aerosol negra
  • Pernos de cabeza Phillips pequeños con tuercas hexagonales

 

Hardware 

Después de disponer de r todo el hardware para construir el ordenador de su coche es un reto ponerlo todo junto en un formato que no se dañará en un coche en movimiento. La pantalla táctil oficial de Raspberry Pi tiene agujeros perforados en la parte posterior de la carcasa de la pantalla. Así que hacen un gran punto de partida para mantener todo unido.  Los que están cerca del centro permiten que la Raspberry Pi acabe con la pantalla en sí. A continuación, hay agujeros roscados más cerca de las esquinas que decidí adjuntar un marco de tipo y construir hacia atrás.

Sólo un  consejo : si decide seguir el mismo camino y atornillar su marco en la parte posterior de la pantalla. ¡Apriete los tornillos muy suavemente! Si aprieta demasiado la pantalla comenzará a empujar hacia fuera el lado opuesto. Así que sólo vaya muy despacio y tenga cuidado!

Luego en lugar para montar la carcasa sólo tiene que decidir lo que va a decidir lo que va a utilizar para albergarlo. En cualquier ferretería encontrara algunas tiras metálicas delgadas y soportes angulares con agujeros pretaladrados. Así que  puede  crear un marco utilizándolos, ya que se pueden atornillar fácilmente juntos. Este enfoque es barato, robusto y proporciona una gran cantidad de puntos de montaje prácticos para sostener periféricos (hub USB, dongles externos, etc.) en su lugar.

Las carcasas Double Din disponibles en el mercado están disponibles para montar dispositivos en el tablero. Pero es probablemente más fácil construir el marco alrededor de la raspeberry Pi y luego atornillar el marco a la carcasa para mantener las cosas en su lugar.

Alimentación

Además de albergar la Raspberry Pi  tenemos que suministrar  energía a todo el hw   para lo cual tomaremos  la potencia de 12 voltios DC del sistema eléctrico de su coche y reduciremos el voltaje. dado que la Rasbberry PI se alimenta a 5V DCm requeriremos una fuente de alimentación de 5 voltios.

Afortunadamente, los convertidores de voltaje CC de 12 a 5 voltios se pueden encontrar fácilmente en muchos Amazon :solo necesita prestarle atención a la clasificación de amperaje  suministrado pues  necesitará un convertidor  DC/DC que pueda entregar 3 amperios o más.

Regulador convertidor CPT-UL-1 DC/DC 12 V a 5 V 3 A 15 W de potencia de pantalla LED para coche

Un convertidor de voltaje de 3 amperios dará un consumo de potencia máximo de 15 vatios ( 5v x 3 amperios á 15vatios). Para la configuración de hardware apuntada se estima  un consumo máximo de energía de 10,44 vatios, lo cual  da una  potencia  adicional de 4 vatios disponibles, pero si usted planea conectar una gran cantidad de dispositivos hambrientos de energía fuera del Pi sólo tenga en cuenta que la energía necesaria podría convertirse en un problema.

 

 GPS

La antena GPS externa no es un requisito, ya que la mayoría de los dispositivos GPS (sombreros o memorias USB) tendrán una antena pasiva incorporada. Una cosa a tener en cuenta es la ubicación de instalación prevista del ordenador en el coche, sin embargo. Si el Pi va a ser montado en el salpicadero  el dispositivo GPS estará rodeado en todos los lados por el acero que va a obstaculizar su ordenador conseguir una fijación GPS  por lo que lo mas sensato es usar una  antena GPS externa (tenga en cuenta que el uso de una antena GPS activa aumentará ligeramente el consumo de energía general del sistema ) .

 

Este es finalmente el aspecto que presenta el montaje  completo en el salpicadero

 

 

 

Software

 

El  autor de este proyecto nos proporciona una imagen de Raspbian preparada con todo el sw ya instalado que ha llamado Nomad  Pi  y que  ha subido a Google Drive para su descarga. en este link: Nómada Pi v1.1   ( son unos 2.3GB)

Una vez completada la descarga,descomprima el archivo de imagen y escriba en la tarjeta SD con el comando dd o pruebe Win32 Image writer si está utilizando un sistema Windows.

El objetivo principal de esta versión  11  era permitir el uso del sistema fuera de las restricciones de la interfaz principal de Nomadic Pi.

Algunos de los cambios más importantes en la versión v1.1 incluyen:

  • La capacidad de salir del modo de pantalla completa del navegador. Esto hace uso de la funcionalidad experimental táctil “salir de pantalla completa” en Chromium 61.
  • Permitir el uso para acceder a otras aplicaciones en el sistema o navegar por Internet en el Pi nómada como un ordenador de sobremesa estándar.
  • La adición de software de navegación GPS Navit para proporcionar funcionalidad de navegación giro a giro.
  • La posibilidad de entrar en el modo de “pantalla completa” en el navegador a través de la pantalla táctil cuando se desee utilizando un elemento de menú en el menú de la aplicación Nómada Pi.

La interfaz en sí está construida con el marco Ionic basado en AngularJS y se ejecuta dentro del navegador Chromium en modo quiosco.

 

 

Sw navegación

El ordenador del coche Nomadic Pi hace uso de algunas fuentes de datos externas para enriquecer la experiencia en carretera.Estos son:

  • Here.com – Información de límite de velocidad específica de ubicación y datos meteorológicos
  • LocationIQ – Información de direcciones legibles de los datos de latitud y longitud

 Estos servicios como puede intuir  requieren que el Pi nómada tenga una conexión a Internet activa, razón por la que precisamente en este montaje  se usa un dongle ZTE MF832  , aunque   en realidad   podría conectarse a un red MIFI  por ejemplo compartiendo la conectividad de nuestro smartphone

Para obtener claves de API necesarias, vaya al portal para desarrolladores here.com y regístrese para recibir una clave de API y un identificador de aplicación. La cuenta es gratuita y el acceso a sus servicios de datos es gratuito para menos de 15000 solicitudes al mes (que permite una solicitud cada 2,9 minutos).

Una vez que lo haya hecho, here.com id de aplicación y clave de API. Edite la configuración de la aplicación Nomadic Pi. Esto se puede encontrar en:

  • /home/pi/Software/car-computer/config/config.ini

Introduzca sus datos en la sección etiquetada [here-api]. Guarde los cambios y, a continuación, reinicie el Pi nómada para que los cambios surtan efecto.

Para usar el servicio de geocodificación inversa locationIQ, primero registre una cuenta para recibir un token de desarrollador. El token permite hasta 10.000 llamadas a la API al día de forma gratuita.

Después de recibir el token de desarrollador. Añádalo a la configuración de la aplicación Nomadic Pi bajo el encabezado [location-iq].

 

Cómo conectarnos  a  Noma pi

Si se usa un dongle  4g podemos compartir la conexión  vía Wifi. Para ello ,el acceso WIFI ,lo  conseguiremos una vez que el sistema haya terminado de arrancar. La forma más fácil de configurar el sistema es conectarse a través del punto de acceso WIFI.

SSID: Nomadic-PI
WPA Contraseña: pinomadica

Para cambiar la configuración de WIFI desde el valor predeterminado. Inicie sesión en Pi sobre SSH elevar a privilegios raíz. A continuación, edite el archivo de configuración hostapd.conf en el directorio /etc/hostapd.

En cuanto al acceso SSH, una vez conectado al ordenador del coche a través de WIFI,p uede iniciar sesión en Nomadic Pi en 192.168.2.1 con las siguientes credenciales:

Nombre de usuario: pi
Contraseña: pinomadico

Después de iniciar sesión como usuario pi, puede usar sudo para elevar a privilegios raíz.

SSH terminal session on the Nomadic Pi car computer

En este momento si su ordenador de coche tiene una conexión a Internet a través de Ethernet o un dongle 4G. Sería una buena idea actualizar los paquetes instalados en el sistema a la última y mejor:

apt-get actualización
apt-get actualización

Adición de música

De forma predeterminada, MPD está configurado para buscar música en /media/usbstick. Si desea que la música se reviva en otro lugar del sistema de archivos, tendrá que cambiar el directorio de música en los archivos de configuración MPD.

Lo más probable es que almacene la música en un dispositivo de almacenamiento separado que la tarjeta SD que contiene el sistema operativo. Si este es el caso, necesitará agregar una línea a su archivo /etc/fstab. Así que el dispositivo está montado en el arranque del sistema y el demonio MPD puede ver su colección de música.

Al igual que los propios archivos de música, las listas de reproducción se almacenan en los archivos /var/lib/mpd/playlists como archivos .m3u. La configuración MPD tendrá que cambiar si desea almacenarlos en una ubicación diferente.

 

 

Conclusión

Estamos  ante un interesante  proyecto que hace   una vez más uso  de la Raspberry Pi  como hw  casi único para toda la funcionalidad demandada. Los archivos multimedia se almacenan en un disco duro de 2,5 pulgadas y 1 TB con el demonio MPD que controla la reproducción de música. El dispositivo GPS permite una lectura en vivo de la velocidad y la ubicación actuales de los coches. Incluso en la página de inicio tendremos  advertencias de velocidad al exceder el límite de velocidad.

Quizás  se podría poner una única  pega  en cuanto a funcionalidad  pues  el autor se ha limitado al entretenimiento  o  al velocímetro  descuidando   otros aspectos que definitivamente  se pueden obtener en  una Raspberry PI  ( por ejemplo añadiendo sensores de aparcamiento, cámaras frontal  y trasera con reconocimiento de imágenes ,procesamiento de alarmas  con el GPIO , etc  )  que seguro la distanciarian de  una tableta corriendo Google Play Auto ( que es básicamente la funcionalidad actual)

 

Current music play queue.

 

 

El proyecto ahora tiene su propio sitio en https://www.nomadicpi.com donde se puede encontrar información sobre la construcción de su propio Pi nómada. Junto con una imagen preconstruida para descargar para su Raspberry Pi 3

La interfaz de usuario del proyecto todavía está en desarrollo activo con nuevas características que se agregan de forma regular. Con la base de código disponible libremente en github para su descarga bajo una licencia GPL V3.

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/