Manejo de un robot con node.js


Node.js es un entorno en tiempo de ejecución multiplataforma de código abierto  para  servidor , aunque como vamos a ver,  se puede usar para otros propósitos . Fue creado con el enfoque de ser útil en la creación de programas de red altamente escalables, como por ejemplo, servidores web. 

Es un lenguaje de programación ECMAScript, asíncrono, con I/O de datos en una arquitectura orientada a eventos y basado en el motor V8 de Goog asi que desde este punto de vista Node.js es similar en su propósito a Twisted o Tornado de Python, Perl Object Environment de Perl, libevent o libev de C, EventMachine de Ruby, vibe.d de D y JEE de Java existe Apache MINA, Netty, Akka, Vert.x, Grizzly o Xsocket.

Como nota  muy diferenciadora,al contrario que la mayoría del código JavaScript, no se ejecuta en un navegador, sino en el servidor.

Asimismo Node.js implementa algunas especificaciones de CommonJS   e  incluye un entorno REPL para depuración interactiva

Tal es la potencia de  Node.js  que ya existen plataformas basadas en este entorno para intereactuar con placas como Arduino ,Linino. Intel Edison, Raspberry pi,etc  en aplicaciones de Robotica o plataformas de IoT

Johnny – Five    es una Plataforma JavaScript Robótica  e  IO  lanzada por bocoup en 2012  y mantenida por una comunidad de desarrolladores de software apasionados e ingenieros de hardware (más de 75 desarrolladores han hecho contribuciones a la construcción de éste).

onny

Como  ejemplo de «Hola Mundo»  con un LED parpadeante sencilla , el  siguiente ejemplo para Arduino nos muestra lo sencillo que es hacerlo en el entorno de Johnny Five :

 

var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
  var led = new five.Led(13);
  led.blink(500);
});

 

  • Ejecute el  códido Run: npm install johnny-five

 

Como ejemplo mas avanzado en el repositorio de github  (https://github.com/stylixboom/lr_motor ) Siriwat Kasamwattanarote   nos ensela  como podemos  controlar  un coche de juguete  directamente a través de SSH  (mediante  el terminal)  usando  Node.js.

Desde SSH no  se aceptan 2 teclas de flecha al mismo tiempo, es por eso que la forma en que gira a la izquierda / derecha no es tan suave (al cambiar las dos teclas en consecuencia) pero el funcionamiento es muy fluido

Los requerimientos son los siguientes:

 

Este proyecto es pues aprender a controlar dos motores ( izquierda – derecha) mediante el uso de la Raspberry Pi . El código proporcionado  está escrito en Node.js , y requiere un paquete de ‘ Pigpio ‘ para  acceder al puerto GPIO en la Raspberry Pi . ‘ Pulsación ‘ es escuchar a la entrada de teclado de la tecla de flecha ( arriba-abajo – izquierda – derecha) .

Este experimento apoya dos controladores de motor diferentes :

  • Toshiba – TB6612FNG Texas Instruments
  •  L293D

Notas:

-TB6612FNG es más eficiente , pero más caro (unos  10 $ ) , y se necesita soldadura .

 

TB6612FNG
Ref: http://www.robotshop.com/media/files/PDF/Datasheet%20713.pdf
Truth table
Input                           Output
IN1     IN2     PWM     STBY    OUT1    OUT2    Mode
H       H       H/L     H       L       L       Short brake
L       H       H       H       L       H       CCW
L       H       L       H       L       L       Short brake
H       L       H       H       H       L       CW
H       L       L       H       L       L       Short brake
L       L       H       H       OFF(High ohm)   Stop
H/L     H/L     H/L     L       OFF(High ohm)   Standby

-L293D es mucho más barato ( $ 0,6 ) y más fácil de utilizar con una placa.

L293D
Ref: http://www.robotplatform.com/howto/L293/motor_driver_1.html
Truth table
Input                   Function
PWM     IN1     IN2    
H       H       L       Reverse
H       L       H       Forward
H       H       H       Stop
H       L       L       Stop
L       X       X       Stop

En caso de usar la primera opción , este es el esquema seguido:
  Una vez montado el circuito y ya vez tenga el código descargado (https://github.com/stylixboom/lr_motor) ,simplemente para ejecutarlo use :  $ sudo node app_t.js

Finalmente en el vídeo que os dejo a continuación podemos ver el conjunto del  robot utilizando una Raspberry Pi combinando NodeJS y el controlador de motores. .

Simple modificación de un mando dual para automatización del hogar


En el post de hoy vamos a ver como con una  simple  modificación del circuito comercial (concrétamente el kit jm80) de un receptor de un mando dual podemos convertir el circuito de radio control de un sistema eléctrico del hogar ( persiana eléctrica,puerta eléctrica, etc)  en un elemento  que nos abra la puerta a la automatización del hogar gracias  a que nos va a ser posible el control por tres vías posibles:

  • A distancia por el mando
  • Por control manual   por si perdemos el  mando o deseamos inhibir este
  • Por control mediante  un circuito auxiliar (Arduino).

 

conjunto.PNG

El circuito que vamos a usar es un económico kit  de 12€ que se puede comprar en Amazon aqui  .Sus características mas importantes son las siguientes:

  • 433 MHz, 2 Relay, alrededor de 150 metros
  • Incluye palanca/momentáneo/Latching chip
  • Min Voltaje/Corriente de conmutación: 5VDC 100 mA.
  • Max conmutación Voltaje: 110 VDC 240 VAC. Max Corriente de conmutación: 15 A.
  • Potencia de conmutación nominal: 1,875 va 360 W para cada relé
  • Canal: 2 canales
  • Voltaje de funcionamiento: DC 12 V
  • Corriente estática: < = 7ma electrónico contacto
  • Capacidad: 7 A 240 V AC, 10 A 24 V DC
  • distancia de transmisión: 150 – 200 metros (sin obstáculos)
  • codificación tipo: soldado modificar DIP chip de cambio de modo de control
  • Frecuencia de operación: 433 MHz
  • Modos de control: Elija con cierre o non-latching por el cambio un chip DIP carga nominal: 2000 W
  • Dimensión (LWH) (mm): 55 x 40 mm

 

Un  característica interesante para el caso de que montemos varias unidades es que es posible configurar receptor  y transmisores para otras combinaciones modificando los puentes de la combinación de acceso (por fiabilidad han sustituido el conmutador por puentes)

 

placas.PNG

Este kit incluye ingeniosamente tres chips que insertando alguno de estos  en el zócalo DIL del CI  del receptor permiten operar el receptor en tres  modos muy diferentes:

  • Tipo  Latch : al pulsar un botón,el relé interesado se conecta  hasta que pulse el otro. Muy parecido a los botones de velocidad de los ventiladores  que conectan otro bobinado ( y desconectan el anterior ) al activarlo
  • Tipo de non-latch (momentáneo): al pulsar un botón el relé interesado se conecta hasta que  usted lo libera. Al igual que el botón de claxon, si usted pulsa el claxon suena hasta que lo libera ;
  • Tipo de auto-latch (botón): al pulsar un botón el relé interesado se conecta  hasta que usted pulsar una vez más para desconectarlo.Este modo esta claramente ideado por ejemplo para abrir o cerrar la persiana eléctrica completamente sin necesidad de tener que estar pulsando el botón .También es útil para activar  o desactivar a distancia cualquier dispositivo como por ejemplo una TV, un equipo hifi,etc   funcionando en resumen como  la clave de potencia de mando a distancia de TV: al pulsar  TV, se enciende pero si se pulsa  de nuevo, TV se  apaga. Es esta configuración la que viene predefinida en el kit ,por lo que si necesita modificar el tipo de operación en non-latch o latch tendrá que cambiar el chip  que acompaña el kit

placareles1.png

Centrándonos en el receptor que  como vemos opera a 12 V DC, este cuenta con dos reles de  7A (220V).Cada relé cuenta con  un contacto común  y dos contactos móviles : uno abierto (correspondiente a la operación ) y  otro  cerrado (correspondiente al reposo).

En el siguiente esquema podemos ver claramente su significado:

esquema reles.PNG

Aunque el contacto en reposo(CB)   puede servir para muchas aplicaciones, para el  uso «normal » se  utilizaran los contactos de trabajo( AB) para activar o desactivar las cargas a las que los conectemos estos , como por ejemplo el motor de una persiana eléctrica que tiene dos bobinados ( uno para subida y otro para bajada)

Este equipo , aun como vemos es muy versátil ,sin embargo  no incluye operación manual en el propio receptor ,ni tampoco  ningún tipo de tele-operación para poder activar los reles por medio  de algún automatismo  (Arduino ;Netduino ,Raspberry Pi,etc),lo cual puede ser un inconveniente  con vistas a automatizar nuestro hogar

La  modificación que se propone a este estupendo Kit es la posibilidad de operarlo via diferente a la de radio ,pero al no tener terminales específicos con objeto de no dañar la electrónica de RF ,el latch o los transistores de salida, lo  mejor es operar directamente  con los bobinados de los reles.

La modificación probada para este kit , no puede ser mas sencilla pues simplemente consiste en localizar los bobinados de los reles (diferentes del positivo)   y  soldar  a estos  sendos cablecillos  permitiéndonos  usarlos si lo conectamos a la masa general  tanto para operar manualmente los reles como para tele-operacion por otro circuito

En la siguiente imagen podemos ver dos cablecillos grises soldados a la placa para el control manual de los reles:

 

IMG_20160904_185521[1].jpg

 

En cuanto a las conexiones de los hilos de control  obtenidos, el conexionado no puede ser mas sencillo ,pues  sólo conectaremos los hilos a dos pulsadores (normalmente abiertos)  y después uno  común  que ira a ambos pulsadores  y a la masa común de la alimentación(ov)

 

IMG_20160904_185441[1].jpg

Obviamente los hilos obtenidos  de la conexión de los bobinados de los relés no solo sirven para la operación por pulsadores , también puedes ser utilizados para la tele-operación del circuito vía un circuito auxiliar( por ejemplo constituido un Arduino con un  transistor de pequeña potencia )

Finalmente  para terminar el montaje se recomienda usar dos regletas de terminales  diferenciadas:

  • Una de muy baja tensión para los tres terminales ( los dos relés y la masa) para el tele-control   o para  el accionamiento manual de los pulsadores
  • Una de Baja Tensión  de  al menos 5 terminales para la alimentación del montaje y para apoyar las conexiones de  utilización del receptor ( en la imagen se ve como se alimenta desde ahí a  la fuente del receptor)

 

IMG_20160904_191156[1].jpg

 

Si le interesa hace esta mejora  , el kit que hemos usado en este post lo puede conseguir en Amazon por menos de 12€  , aunque como se ha comentado tendrá que soldar dos cablecillos a la placa ( puede perder la garantía del producto así que se recomienda probarlo antes de emprender esta sencilla modificación) ,pero la mejora sera bastante ostensible pues abre un abanico inmenso de posibilidades