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. .

Desarrollo de aplicaciones con HTML5,CSS y JavaScript en Android ,iOS o windows phone


Tras el éxito de la tienda de aplicaciones de para iOS comenzaron a nacer herramientas de desarrollo de aplicaciones ajenas a Apple y que los californianos vetaron durante un período de tiempo. La prohibición iba encaminada, al parecer  a limitar la creación de programas para el iPhone y el iPad mediante Adobe Flash. Actualmente es posible este tipo de herramientas sin saltarse los estrictos términos de uso de la App Store, y eso abre la posibilidad de emplear alguno de estos frameworks de desarrollo para crear aplicaciones con tecnologías web y “empaquetarlas” como una app nativa que pueda ser publicada en la tienda oficial de Apple.

Lo bueno de este tipo de herramientas es que no solo se ciñen al canal de distribución de aplicaciones de iOS, la App Store, sino que, además, permiten hacerlo para Google Play a partir de la misma base.

Esto abre a los desarrolladores web la posibilidad de crear aplicaciones nativas usando las tecnologías que dominan (HTML, CSS y Javascript) y hacerlo para múltiples plataformas sin realizar una adaptación específica.

Adobe PhoneGap

PhoneGapp: Aplicación de Adobe para desarrollar aplicaciones iOS y Android con HTML5, Javascript y CSS

 

Tal vez una de las más conocidas, PhoneGap permite empaquetar tu código HTML5, CSS y Javascript como aplicación nativa para distintas plataformas: iOS, Android, Blackberry, Windows Phone, etc…

Fundamentalmente PhoneGap pone a nuestra disposición una serie de librerías que, incrustadas en las plataformas de desarrollo de cada uno de los fabricantes (SDK’s), permiten programar a través de su API funcionalidades del SDK nativo.

Si queremos distribuir nuestra trabajo en distintas plataformas, construiremos una aplicación nativa para una de ellas con la ayuda de Phonegap y luego, usando el mismo código base, la portaremos a las restantes con la ventaja de mantener el mismo código base creado usando las tecnologías HTML5, CSS3 y Javascript.

PhoneGap ademas  de permitir exportar los proyectos a las iOS y Android también permite hacerlo a Windows Phone o a Blackberry.

Icenium

Icenium: Desarrolla aplicaciones con javascript, html5 y css para ios y android

Es  una plataforma de desarrollo en la nube para crear aplicaciones iOS y Android mediante HTML5, CSS y Javascript

Una de las facetas más interesantes de Icenium es que hace que nos olvidemos de las SDK’s de cada una de las plataformas. Mediante su propio IDE de desarrollo podemos crear aplicaciones usando estándares web (como HTML5 o CSS) y publicar directamente en las distintas tiendas de aplicaciones a través de un sencillo paso a paso.

La ventaja de Icenium con respecto a PhoneGap radica precísamente en esa funcionalidad. Un único entorno (Icenium Mist), al que podemos acceder desde cualquier navegador, y una publicación directa de nuestra app simplemente seleccionando la plataforma deseada (Android o iOS).

AppCelerator

Appcelerator: Desarrolla aplicaciones HTML5, CSS y Javascript para iOS, Android y Windows 8

Gracias a esta herramienta  se puede conectar tu aplicación nativa a la nube con node.js

AppCelerator, al igual que Icenium, posee su propio IDE de desarrollo, mediante el cual podemos programar funcionalidades comunes a las distintas plataformas sin tener que crearlas de manera específica y en lenguajes diferentes. Una de las cualidades más interesantes de AppCelerator es lo fácil que resulta conectar nuestras aplicaciones con distintas fuentes de datos mediante sus servicios personalizados de conexión con node.js.

Aunque requiera hacerse con la plataforma y su funcionamiento, AppCelerator ofrece funcionalidades muy interesantes con su sencilla forma de integrar la información de múltiples servicios en nuestras aplicaciones.

 

Fuente aqui

¿Qué es y para que sirve node.js?


JavaScript es un sólo un lenguaje de programación del lado del cliente que se ejecuta en el navegador, ¿verdad? . Ya no másNode.js es una forma de ejecutar JavaScript en el servidor; pero es mucho más también. Si usted está interesado en el desarrollo web realmente debe saber un poco acerca de node.js  y por qué está haciendo olas en la comunidad.

¿Qué es Node.js?

Node.js es una interfaz para el tiempo de ejecución de JavaScript V8 ( el intérprete súper rápido de JavaScript) que se ejecuta en el navegador Chrome.

 Como suele suceder, también puede descargar V8 e incrustarlo en cualquier cosa pues node.js NO es  un servidore Web. JavaScript es después de todo, sólo un lenguaje de programación y  no hay nada que diga que no se podría utilizar en un servidor, así como en el navegador del usuario.

Lo constituye una típica pila servidor LAMP, tiene un servidor web Apache subyacente o Nginx, con PHP que se ejecuta en la parte superior de la misma. Cada nueva conexión con un  servidor tradicional  genera un nuevo hilo, y es muy fácil de perder rápidamente el rendimiento o para un sitio para “bajar” – la única manera de apoyar a más usuarios que son para añadir más servidores por lo que simplemente no escalan bien. Con Node.js , este no es el caso.

No hay Apache para escuchar las conexiones entrantes y devolver los códigos de estado HTTP – usted necesita para manejar esa arquitectura servidor central a ti mismo. Afortunadamente, hay módulos para hacer esto más fácil, pero todavía puede ser un poco abrumador cuando se empieza. El resultado, sin embargo, es una aplicación web de alto rendimiento.


var http =  require ( "http" ) ;  
http . createServer ( function  ( request , response )  { 
 response . writeHead ( 200 ,  { 
 'Content-Type' :  'text/plain' 
 } ) ; 
 response . write ( 'Hello ! Mundo " ) ; 
 respuesta . extremo ( ) ; 
} ) . escuchar ( 8080 ) ; 
consola . log ( "! Server que se ejecuta" ) ;

Vamos a tratar de entender este tozo de código.

 En primer lugar, estamos incluyendo el módulo http en el proyecto. Entonces estamos creando un servidor y que pasa en una función anónima como un parámetro – esta función se llama para cada nueva conexión que ha hecho.

 Tiene dos argumentos – petición , que contiene los parámetros de la petición por parte del usuario; y la respuesta , lo que vamos a utilizar para enviar las cosas de nuevo.

 A continuación, estamos utilizando el objeto de respuesta puede escribir un encabezado de nuevo al usuario con el código de respuesta HTTP 200 (“ok”) y el tipo de contenido, escribir un “Hello World!” mensaje, y finaliza la respuesta.

 Por último, le decimos al servidor para que escuche en el puerto 8080 para las solicitudes entrantes, y la salida de un mensaje rápido a la consola (la línea de comandos) para hacernos saber que se está ejecutando. Si quiere probar en realidad esto por sii mismo, guardar el código anterior como test.js , descargar el instalador de nodo , y de la ejecución de línea de comandos –

prueba de nodo . js

Abra un navegador y vaya a localhost: 8080 para ver a su aplicación de prueba! Ahora debería tener una pequeña idea de cómo funciona ese código de forma  asíncrono en conjunto, con los modelos de eventos impulsado (si usted es  nuevo en JavaScript, el concepto de pasar alrededor de funciones como argumentos a otras funciones es, probablemente, un poco extraño.)

¿Por qué utilizar Node.js?

En primer lugar, para el rendimiento y la escalabilidad. Node es rápido. Eso es un requisito muy importante cuando eres un start-up tratando de hacer que la próxima gran cosa y quiere asegurarse de que puede escalar rápidamente, para hacer frente a una afluencia de usuarios a tu sitio.

Node es también perfecta para ofrecer una API REST – un servicio web que tiene unos parámetros de entrada y pasa un poco de datos de nuevo – la manipulación de datos sencillo y sin una gran cantidad de cálculos.

Node puede manejar miles de estos al mismo tiempo en que PHP acaba de derrumbarse. Beneficios de rendimiento y escalabilidad a un lado, hay una buena probabilidad de que usted ya sabe algo de JavaScript, por lo que ¿por qué molestarse en aprender un nuevo lenguaje como PHP? Y entonces – está la emoción de aprender algo nuevo y relativamente desconocido. Usted sabe cuando algo nuevo llega y entonces llega a ser tan omnipresente que no se arrepiente de su aprendizaje anterior, siempre jugando catchup? No haga  eso esta vez. Node  va a ser grande.

Desventajas

Como la mayoría de las nuevas tecnologías, que no es tan fácil de implementar Node en los hosts existentes. Si usted tiene un alojamiento web compartido, no sólo tiene que cargar una aplicación de nodo y esperar que funcione. VPS y servidores dedicados están en mejor posición – se puede instalar el Nodo en ellos. Aún más fácil es usar un servicio escalable como Heroku, que es completamente libre para desarrollar su sitio – usted sólo tendrá que pagar cuando se necesita más recursos.

Por otro lado, es muy fácil de instalar nodo local en su Windows, Mac o Linux PC y comenzar a desarrollar de inmediato – sólo la cabeza de Descarga Nodo . También es importante tener en cuenta que el Nodo no es simplemente un reemplazo para Apache – aplicaciones web existentes no son compatibles, y que va a trabajar con eficacia a partir de cero . (aunque hay una gran cantidad de marcos por ahí para ayudarle con características comunes) 

Otra desventaja importante nodo es que es todavía en las primeras etapas de desarrollo, lo que significa algunas características pueden cambiar según avanza el desarrollo. De hecho, si nos fijamos en la documentación , que incluye un índice de estabilidad, que muestra cómo el uso riesgoso de cada función está actualmente.¿Qué es la estabilidad Node.JS y por qué me debe importar?  [Desarrollo Web]

Usted sabe – nunca ha habido un momento más emocionante para ser un desarrollador web.Con los servicios web abiertos y el intercambio de datos, es más fácil que nunca para hacer algoi mpresionante .

Por ultimo es posible que también desee una buena puesta a tierra de la biblioteca de Javascript jQuery por la parte delantera.

 

 

Fuente aqui