Вы находитесь на странице: 1из 40

Para su comodidad Apress ha colocado a algunos de los materiales texto preliminar

despus del ndice. Por favor, use los Marcadores


y contenido a una Vistazo enlaces para acceder a ellos.
Mapa de contenidos

Contenido................................................. .................................................. ............... vii Acerca de los


autores ............................... .................................................. ................ xvii Sobre el revisor tcnico
............................. ................................................ Agradecimientos xviii ..................................................
............................................... xix Introduccin. ..................................................
.................................................. ....... xx

Captulo 1: Conceptos bsicos de Arduino ............................................. ...................................... 1

Captulo 2: Conceptos bsicos de Kinect ............................................. ....................................... 23

Captulo 3: Procesar .............................................. .......................................... 35

Captulo 4: Arduino y Kinect: ....................................... Hello World ............ 61

Captulo 5: Control remoto Kinect ............................................ .......................... 77

Captulo 6: Kinect en red de marionetas ............................................ ..................... 99

Captulo 7: Las lmparas del estado de nimo ............................................. ...................................... 133

Captulo 8: Kinect-Driven dibujo del robot .......................................... ............... 167

Captulo 9: Kinect a control remoto Vehculos .......................................... ...... 207

Captulo 10: Estacin biomtrico ............................................. ............................. 243

Captulo 11: Interfaz de modelado 3D ............................................ ...................... 279

Captulo 12: placa giratoria del escner ............................................. ........................... 309

Captulo 13: Kinect controlado Delta Robot .......................................... ............ 343

ndice................................................. .................................................. .................. 385

v
INTRODUCCIN

Introduccin

Si usted ha hecho algunos retoques Arduino y se ha preguntado cmo se puede incorporar el Kinect en sus proyectos - o al revs - este libro
es para ti.
Si usted no ha hecho ninguna realidad retoques pero ests buscando una buena manera de empezar, este libro tambin puede ser para
usted. A pesar de que esto no pretende ser un libro de introduccin, hemos tratado de asumir tan poco conocimiento del lector de lo posible, a
partir de la instalacin de todas las herramientas que va a utilizar y explicar a fondo cada nuevo concepto que aparece en el libro.

La estructura de este libro


Este es un libro prctico. Como tal, usted va a ser conducido a travs de una serie de proyectos en evolucin de lo simple a lo complejo, aprender todo
lo que necesita saber a lo largo del camino. El libro comienza con tres captulos introductorios orientados a conseguir que familiarizarse con Arduino,
Kinect, y Procesamiento en el menor tiempo posible para que pueda entrar directamente en la construccin de proyectos interesantes. Desde el
captulo 4, se le condujo a travs de una serie de 10 proyectos de la diversin aumentando en complejidad, empezando por el equivalente de Arduino y
Kinect de "Hello World" y terminando con la construccin y programacin de un robot delta impulsada por el Kinect.

El contenido de los captulos


Cada captulo le guiar paso a paso a travs de la construccin de la obra fsica, la construccin de los circuitos necesarios, la programacin de la
placa Arduino, y la implementacin de los programas de procesamiento de datos que conectan las Kinect a la placa Arduino. La mayora de los
proyectos implicarn la realizacin de dos programas separados, el programa de Arduino y el programa de procesamiento. cdigo de Arduino se
mostrar en tipo de letra negrita espacio sencillo, como este:

digitalRead (A0); // Este es el cdigo de Arduino

programas de procesamiento sern escritos en el estilo de fuente normal de espacio sencillo, como este:

llenar (255,0,0); // Este es el Cdigo de Procesamiento

En cada captulo, se le presentarn los conceptos y tcnicas especficas que se necesitan para construir ese proyecto, y en particular
probablemente algunas de las siguientes. Si usted es un programador experimentado, es posible que desee leer este libro no secuencial,
comenzando por el proyecto que ms le interese. Si usted es un principiante de programacin, le resultar ms fcil comenzar con el primer proyecto
y construir su conocimiento a medida que avanza a travs del libro.

Esta es una lista de temas que sern introducidos en cada captulo, por lo que si usted est interesado en un concepto especfico que puede saltar
directamente al proyecto de la derecha.

Captulo 1: Usted aprender todo lo que necesita saber sobre la plataforma Arduino, que va a instalar los
controladores y el software necesarios, y que va a escribir su primer programa de Arduino.

Capitulo 2: Este captulo le ayudar a descubrir qu hay dentro de ese dispositivo nuevo asombroso que ha
cambiado interfaces hombre-mquina: el Kinect.

xx
INTRODUCCIN

Captulo 3: Va a descubrir el lenguaje de programacin Processing e IDE. Si quiere instalar procesamiento, construir
sus programas de primera transformacin, y aprender mucho sobre el trabajo en 3D.

Captulo 4: Usted aprender acerca de la comunicacin con Arduino y Kinect a travs de serie, que va a desarrollar
su propio protocolo de comunicacin, y que va a utilizar el seguimiento de la mano por primera vez. Tambin
aprender cmo utilizar la modulacin de ancho de pulso y cmo trabajar con LEDs y sensores de luz.

Captulo 5: Este captulo le ensear a piratear un mando a distancia y el uso de los gestos del cuerpo para controlar su
televisor. Usted aprender cmo utilizar rels y cmo construir un circuito en un escudo de prototipos. Es posible incluso
desarrollar su propia rutina de reconocimiento de gestos.

Captulo 6: Usted aprender a trabajar con los servos y la forma de comunicarse a travs de redes ya travs de
Internet. Tambin utilizar las capacidades de seguimiento esqueleto de Kinect para conducir una marioneta con sus
gestos corporales.

Captulo 7: El Arduino Nano y el mdulo inalmbrico XBee sern introducidos en este captulo. Tambin aprender
todo sobre resistencias y LEDs de color. Tendr que tomar el esqueleto de seguimiento a tres dimensiones y utilizarlo
para controlar una serie de lmparas que responden a su presencia.

Captulo 8: Przemek Jaworski ha contribuido este proyecto brazo de dibujo increble. En este captulo, tendr que
trabajar con Firmata, una biblioteca que le permite controlar el Arduino de procesamiento sin la necesidad de escribir
ningn cdigo de Arduino. Tambin aprender cmo construir una tabla tangible para controlar el brazo robtico.

Captulo 9: Se le present a motores de corriente continua y cmo controlarlos utilizando H- puentes. Tambin aprender
cmo utilizar los sensores de proximidad. Que va a utilizar todas estas tcnicas para controlar un coche RC con gestos de
la mano.

Captulo 10: Este proyecto le ensear cmo cortar una bscula de bao para proporcionar datos de peso de usuario de forma
inalmbrica. Usted aprender cmo adquirir datos de una pantalla de cristal lquido de siete segmentos y, a continuacin,
combinar los datos con el esqueleto de seguimiento Kinect para aplicar el reconocimiento del usuario y el clculo del ndice de
masa corporal.

Captulo 11: Usted va a construir un circuito inalmbrico, usable en un guante utilizando el Arduino LilyPad, sensores
de flexin, y un mdulo XBee. A continuacin, poner en prctica su propio software sencillo de diseo asistido por
ordenador (CAD), y que va a utilizar su interfaz inalmbrica para dibujar geometras 3D moviendo la mano en el
espacio.

Captulo 12: Este captulo le ensear permite analizar, transformar y recomponer las nubes de puntos primas con el fin
de realizar anlisis de 360 degreee de objetos usando slo un Kinect y un plato giratorio que se va a construir. A
continuacin, aprender a escribir el suyo propio. capa presentar rutina de exportacin y la forma de importar los datos
puntuales en MeshLab para prepararlo para ser impresas en 3D o prestados.

Captulo 13: Este proyecto final le ensear los conceptos bsicos de la cinemtica inversa y cmo utilizar todas
las tcnicas de todo el libro para construir un robot delta Kinect- controlada.

Este libro se ha construido intencionadamente sobre mltiples plataformas, iniciativas de cdigo abierto. Todas las herramientas utilizadas en el
libro son gratuitos y estn disponibles para Mac OS X, Windows y Linux en licencias comerciales.
Debido a la naturaleza tridimensional de los datos que se pueden adquirir con el Kinect, algunos de los proyectos ms avanzados se basan en
el uso de la trigonometra y matemticas del vector. Hemos tratado de cubrir los principios y las definiciones necesarias, pero si sus habilidades
matemticas son algo oxidado, puede que desee

xxi
INTRODUCCIN

considerar la posibilidad de un libro de referencia que nos ocupa. John Vince Matemticas para Computer Graphics ( Saltador,
2006) es un recurso increble. sitios web como Wolfram Alpha ( www.wolframalpha.com) o Mathworld ( http://mathworld.wolfram.com) puede
ser til tambin.
Cada captulo incluir el cdigo necesario para que el proyecto funcione. Puede copiar el cdigo del libro o puede descargar los archivos
necesarios del Apress ( www.apress.com) o en el sitio web del libro ( www.arduinoandkinectprojects.com).

Si necesita ponerse en contacto con los autores, puede encontrar en la siguiente direccin:

Enrique Ramos Melgar: enrique@esc-studio.com

Ciriaco Castro Dez: ciriaco@esc-studio.com

Przemek Jaworski: studio@jawordesign.com

xxii
CAPTULO 1

Conceptos bsicos de Arduino

por Enrique Ramos

Este primer captulo est dedicado a Arduino, una de las dos piedras angulares de este libro. Las siguientes pginas cubren los aspectos bsicos del
hardware y software de Arduino. Al final del captulo, se ha instalado la plataforma en su ordenador y se han programado dos ejemplos utilizando el
entorno de desarrollo integrado Arduino (IDE).

Se analizar la estructura de un boceto Arduino y cada funcin explicada. Usted aprender acerca de los pines de entrada y salida de
Arduino. Tambin aprender los conceptos bsicos de electricidad, circuitos y tcnicas de prototipado que se van a utilizar a lo largo del libro.

Es muy probable que este no es el primer libro sobre Arduino que usted ha tenido en sus manos. Si usted es un usuario experimentado de
Arduino, se debe considerar la lectura de estas pginas como un repaso. Si usted es un principiante, lea con cuidado!

La Figura 1-1. Arduino Uno

1
Bsica Captulo 1 ARDUINO

Qu es Arduino?
Arduino es una plataforma de creacin de prototipos electrnicos de cdigo abierto compuesto por un microcontrolador, un lenguaje de programacin, y un IDE.
Arduino es una herramienta para hacer aplicaciones interactivas, diseadas para simplificar esta tarea para principiantes, pero todava lo suficientemente flexibles
para los expertos para desarrollar proyectos complejos.
Desde su comienzo en 2005, ms de 200.000 placas Arduino (vase la figura 1-1) se han vendido, y hay un nmero rpidamente creciente de
proyectos utilizando Arduino como su ncleo de computacin. La comunidad Arduino es enorme, y tambin lo es el nmero de tutoriales, libros de
referencia y bibliotecas disponibles. Al ser de cdigo abierto significa que hay clones de Arduino que se pueden elegir para sus proyectos. Los
usuarios avanzados de Arduino estn desarrollando constantemente escudos para el Arduino disponibles, as como completamente nuevas placas
compatibles Arduino- especializadas en diferentes tareas.

La simplicidad intencional de aproximacin a la plataforma Arduino ha permitido un acceso a la informtica fsica para las personas que nunca
han pensado en utilizar o programar un microcontrolador antes de la era / Cableado Arduino.

Una breve historia de Arduino


Arduino naci en 2005 en el Interaction Design Institute Ivrea, Italia, como un tenedor de la plataforma de cdigo abierto de cableado. Los
fundadores del proyecto, Massimo Banzi y David Cuartielles, el nombre del proyecto despus de Arduin de Ivrea, el principal carcter histrico de
la ciudad.
Hernando Barragn, un estudiante en el mismo Instituto, junto con Diego Gonzalez Joven, haba desarrollado cableado en 2003 como su tesis
de maestra, que fue supervisada por Massimo Banzi y Casey Reas (uno de los iniciadores de procesamiento). La idea detrs de cableado era
permitir una introduccin fcil de programar y dibujar con la electrnica para artistas y diseadores en una mentalidad similar en la que Casey Reas y
Ben Fry haban desarrollado Procesamiento algunos aos antes (se le conoce ms sobre la historia de procesamiento en el captulo 3).

Arduino fue construido alrededor de cableado, pero desarrollada de forma independiente a partir de 2005. Los dos proyectos son todava muy vivo,
por lo que todo lo que va a hacer en este libro con Arduino tambin se podra hacer con tableros de cableado e IDE.

Instalacin de Arduino
La primera cosa que hay que hacer si se quiere trabajar con Arduino es comprar una placa Arduino y un cable USB estndar (plug-A-to-B, si est
utilizando un Arduino Uno). Bueno, por supuesto que va a necesitar ms que esto, si usted quiere construir cualquier aplicacin til razonable, pero
por el momento vas a trabajar con lo esencial.

Arduino se ejecuta en Windows, Mac OS X y Linux, as que hay una versin de Arduino para que sea cual sea su sistema operativo. Ir a la
pgina web de software de Arduino en http://arduino.cc/en/Main/Software y descargar la versin del software compatible con su sistema. Si despus
de leer las secciones siguientes se sigue teniendo problemas con la instalacin, puede tener informacin ms detallada en el

http://arduino.cc/en/Guide/HomePage.

Instalacin en Mac OS X
Despus de haber descargado el archivo zip, descomprimirlo. Puede arrastrar la aplicacin Arduino a la carpeta Aplicaciones, y luego ejecutar
desde all. Bastante fcil, verdad?

2
CAPTULO 1 FUNDAMENTOS ARDUINO

Si est utilizando una tabla mayores de Arduino Uno (Duemilanove, Diecimila, o ms), es necesario instalar los controladores para el chip
FTDI en el tablero. Puede encontrar los controladores y las instrucciones en
http://www.arduino.cc/en/Guide/MacOSX.

La instalacin en Windows
En primer lugar, descarga de archivos de Windows .zip y descomprimirlo. Ver una carpeta llamada Arduino-1.0. Esta es la carpeta de Arduino y hay
que almacenarlo en algn lugar de la computadora desde la que ms tarde puede ejecutar el programa. La carpeta Archivos de programa podra
parecer un lugar razonable para el software de Arduino, pero no dude en elegir una ubicacin alternativa.

Es necesario instalar los controladores de Arduino antes de poder empezar a trabajar con su junta. Suponiendo que usted est instalando un
Arduino Uno, siga estos pasos:

Conecte su tablero a su ordenador y espere a que Windows para iniciar el proceso de instalacin del controlador. Despus de
un tiempo, se producir un error. No hay problema.

Haga clic en el men Inicio y abra el Panel de control.

Ir a Sistema y seguridad, a continuacin, en Sistema y despus Administrador de dispositivos.

Encontrar el puerto Arduino Uno que aparece en Puertos (COM y LPT).

Haga clic derecho sobre l y seleccione Actualizar software de controlador, seleccionando Buscar software de
controlador.

Por ltimo, navegar y seleccionar archivo del controlador de la Arduino Uno llamado ArduinoUNO.inf
ubicado en la carpeta de controladores de la carpeta del software de Arduino que acaba de descargar.
Windows instalar con xito el tablero en este momento.

Instalacin en Linux
Si est trabajando en Linux, el proceso de instalacin es ligeramente diferente dependiendo de la distribucin de Linux, y por desgracia no tenemos el
espacio para detallar todas ellas en este libro. Puede encontrar toda la informacin que necesita en http://www.arduino.cc/playground/Learning/Linux.

Prueba de la Arduino
Una vez que haya instalado el software y los controladores de Arduino, es necesario realizar una pequea prueba para asegurarse de que todo funciona
correctamente.
Arduino tiene un built-in LED conectado al pin 13, por lo que en realidad se puede probar la tarjeta sin tener que conectar ningn hardware
adicional a ella. Entre los numerosos ejemplos de Arduino incluidos con el IDE de Arduino, hay un ejemplo de parpadeo llamada que hace que este
LED incorporado a parpadear cada segundo. Usted aprender ms sobre pasadores, LEDs, y el cdigo de Arduino en las siguientes secciones, pero
por el momento, que se va a utilizar este ejemplo como una manera de averiguar si su Arduino se comunica correctamente con el ordenador y si los
bocetos pueden ser cargado a la tarjeta.

Conecta tu placa Arduino al ordenador y ejecutar el software de Arduino. En el men Herramientas, seleccione Junta, y asegrese de que se
ha seleccionado el tipo correcto de la junta. En nuestro caso, queremos comprobar que la placa Arduino Uno est marcada (vase la Figura 1-2).

3
Bsica Captulo 1 ARDUINO

La Figura 1-2. la seleccin Junta

Despus de esto, seleccione el dispositivo serie en la opcin de puerto serie en el men Herramientas. Si est trabajando en Mac OS X, el puerto
debe ser algo con / dev / tty.usbmodem ( para el Uno o Mega 2560) o
/dev/tty.usbserial ( para las placas mayores) en el mismo (vase la figura 1-3). Si est utilizando Windows, el puerto es probable que sea COM 3 o superior.

La Figura 1-3. Puerto serial

4
CAPTULO 1 FUNDAMENTOS ARDUINO

Ahora todo debera estar listo para que usted cargue su primer programa a la placa Arduino. Usted va a utilizar uno de los ejemplos clsicos de
Arduino para esta prueba. Haga clic en el botn Abrir de la barra de herramientas y vaya a 1.Basics Parpadeo, como se muestra en la Figura 1-4. A
continuacin, sube el dibujo haciendo clic en el botn Subir (el que tiene la flecha hacia la derecha en la barra de herramientas). Despus de algunos
segundos, recibir un mensaje que dice Carga de Hecho en la barra de estado, y el LED marcado con una A mayscula en su tablero comenzar
a parpadear cada segundo. Si tuvo xito en esto, la placa Arduino est correctamente configurado, y se puede pasar a aprender sobre el hardware y
el software de Arduino.

La Figura 1-4. Abriendo el ejemplo Blink

Hardware Arduino
Se puede pensar en la placa Arduino como un pequeo cerebro que le permite conectar entre s una amplia gama de sensores y actuadores. La
placa Arduino est construido alrededor de un microcontrolador de 8 bits AVR. Dependiendo de la tarjeta, encontrar diferentes chips incluyendo
ATmega8, ATmega168, ATmega328, ATmega1280 y Atmega2560. La placa Arduino expone la mayor parte de entrada y salida de los pines del
microcontrolador para que puedan ser utilizados como entradas y salidas para otros circuitos construidos alrededor de la Arduino.

5
CAPTULO 1 FUNDAMENTOS ARDUINO

Nota Un microcontrolador es slo una pequea computadora diseada para aplicaciones embebidas, como dispositivos de control, mquinas, aparatos y

juguetes. Atmel AVR es un microcontrolador de un solo chip de 8 bits desarrollado por Atmel en 1996.

Si vas a http://arduino.cc/en/Main/Hardware, se encuentra una sorprendentemente amplia gama de placas Arduino. Cada uno de ellos ha sido
diseado con un propsito diferente en mente y por lo tanto tiene una cantidad diferente de pasadores y la electrnica de a bordo (vase la figura
1-5).
El Arduino Uno es, en el momento de la escritura, la placa Arduino ms sencilla de utilizar. Para el resto del libro, cada vez que nos referimos a la placa
Arduino, en realidad nos referimos a un Arduino Uno menos que se indique de forma explcita (tambin vamos a trabajar con Arduino Nano y Arduino Lilypad
en posteriores captulos).

Figura 1-5. tablones de anuncios oficiales de Arduino (desde http://arduino.cc)

Arduino es el hardware de cdigo abierto y como tal, los esquemas de cada tabln oficial estn disponibles para el pblico como archivos EAGLE
(EAGLE es un diseo de PCB, trazador, y el software CAM por Cadsoftusa). De esta manera, si ninguno de los diseos de placas parecen satisfacer sus
necesidades, o si usted quiere tener acceso a tablas ms baratas, en realidad se puede hacer su propio tablero compatible con Arduino. Si quieres saber
cmo hacer esto, conseguir
Arduino Robtica ( Apress, 2011) y aprender todo lo que necesita saber para hacer su propio clon de Arduino. Si usted est pensando en la
creacin de sus propios clones de Arduino para fines comerciales, asegrese de leer la poltica de Arduino en http://arduino.cc/en/Main/Policy.

6
CAPTULO 1 FUNDAMENTOS ARDUINO

Entrada y salida de Arduino prendedores


El Arduino Uno tiene 14 pines digitales de entrada / salida y seis pines de entrada analgicas, como se muestra en la Figura 1-6. Como se mencion, estos
pines corresponden a los pines de entrada / salida de su microcontrolador ATmega. La arquitectura de la placa Arduino expone estos pines para que
puedan ser fcilmente conectados a los circuitos externos.
pins Arduino se pueden configurar en dos modos: entrada y salida. Los pasadores de ATmega se establecen en la entrada por defecto, por lo que no es necesario
establecer explcitamente los pines como entradas en Arduino, aunque a menudo se va a hacer esto en su cdigo para mayor claridad.

Figura 1-6. pins Arduino digitales (arriba) y pines analgicos (abajo)

pines digitales

Arduino tiene 14 pines digitales, numerados de 0 a 13. Los pines digitales se pueden configurar como ENTRADA o
SALIDA, utilizando el pinMode () funcin. En ambos modos, los pines digitales slo pueden enviar o recibir seales digitales, que consisten en dos
estados diferentes: EN LAS ALTURAS, o 5 V) y OFF (LOW, o 0 V).
Fijaron como SALIDA puede proporcionar corriente a los dispositivos externos o circuitos a la carta. Fijaron como ENTRADA
estn listos para leer las corrientes de los dispositivos conectados a ellos. En otros captulos, aprender cmo configurar estos pines a ENTRADA para que pueda leer el
estado de un interruptor, pulsos elctricos, y otras seales digitales. Tambin aprender cmo trabajar con los pines digitales establecidos como SALIDA para encender
las luces LED de encendido y apagado, motores de accionamiento, sistemas de control, y otros dispositivos.

Seis de estos pines se puede utilizar tambin como pasadores de modulacin de ancho de pulso (PWM). Captulo 4 cubre lo que esto significa y cmo utilizar
pines PWM.

Pines de entrada analgica

Los microcontroladores Atmega utilizados en las placas Arduino contienen un convertidor de seis canales de analgico a digital (ADC). La funcin de
este dispositivo es la de convertir una tensin de entrada analgica (tambin conocido como

7
Bsica Captulo 1 ARDUINO

potencial) en un nmero digital proporcional a la magnitud de la tensin de entrada en relacin con la tensin de referencia (5V).

El convertidor ATmega en su placa Arduino tiene una resolucin de 10 bits, lo que significa que volver nmeros enteros de 0 a 1023 de forma
proporcional basado en el potencial solicite beneficios en comparacin con la referencia de 5V. Un potencial de entrada de 0 V producir un 0, un
potencial de entrada de 5V volver 1023, y un potencial de entrada de 2,5 V volver 512.

Estos pines en realidad se pueden establecer como pines de entrada o de salida exactamente como sus pines digitales, llamndolos A0, A1, etc. Si
necesita ms de seis pines de entrada o de salida digital para un proyecto, puede utilizar su pines analgicos, leer o escrito a ellos como si fueran los pines
digitales. Usted va a utilizar este truco en el captulo 10 cuando se necesita 16 pines de entrada digitales.

Las resistencias de pull-up

Cada vez que usted est leyendo una entrada digital desde uno de sus pines de Arduino, en realidad se est mirando el voltaje de entrada a ese pin.
Arduino est listo para volver a 0 si no se detecta tensin y un 1 si la tensin est cerca de la tensin de alimentacin (5V). Usted necesita
asegurarse de que los voltajes de entrada son lo ms cercano posible a 0 o 5 V si desea obtener lecturas consistentes en su circuito.

Sin embargo, cuando los pasadores se fijan a la entrada, se dice estar en una alta impedancia estado, lo que significa que se necesita muy poca
corriente para mover el pasador de un estado a otro. Esto se puede utilizar para hacer que las aplicaciones que se aprovechan de este fenmeno, tales
sensores tctiles capacitivos o la lectura de LEDs como fotodiodos, pero para el uso general, esto significa que el estado de una patilla de entrada
desconectado oscilar aleatoriamente entre 1 y 0, debido a ruido elctrico.

Para evitar esto, es necesario polarizar la entrada de alguna manera a un estado conocido si no hay entrada est presente. Este es el papel de los ATmega
incorporados resistencias pull-up.

Figura 1-7. Pull-up y pull-down resistencias (de Wikipedia)

En cuanto a la figura 1-7, se puede ver que cada vez que el interruptor est abierto, la tensin Vout, que es el voltaje se lee en el pin de entrada,
est muy cerca de Vin, o 5V. Cuando el interruptor est cerrado, todos los flujos de corriente a travs de la resistencia a tierra, por lo que Vout muy
cerca de tierra, o 0V. De esta manera, el pin de entrada est siempre conducido a un estado coherente muy cerca de 0 o 5V.

La resistencia de desconexin funciona de la misma manera, pero la seal se har con preferencia o se baj a tierra cuando el interruptor est
abierto y a 5V cuando el interruptor est cerrado.

8
CAPTULO 1 FUNDAMENTOS ARDUINO

El chip ATmega tiene 20K resistencias pull-up integradas en ella. Estas resistencias se puede acceder desde el software de la
siguiente manera:

pinMode (pin, INPUT); // set pin de entrada


digitalWrite (pin, HIGH); // enciende el pull-up

Arduino escudos
Arduino escudos son tablas que han sido diseados para realizar una tarea especfica y puede ser conectado en la parte superior de una placa Arduino compatible
directamente, extendiendo los pasadores de Arduino a la parte superior por lo que todava son accesibles.
Hay unos cuantos escudos Arduino oficiales y un gran nmero de los no oficiales que se pueden encontrar en Internet (ver Figuras 1-8 y 1-9). Y
lo mejor, puede crear sus propios escudos Arduino utilizando un Protoshield compatible con Arduino o imprimiendo su propio PCB compatibles con el
diseo de Arduino.

Figura 1-8. Arduino XBee Shield (izquierda) y Arduino de prototipos Shield (derecha)

Figura 1-9. escudos oficiales Arduino

9
Bsica Captulo 1 ARDUINO

Arduino IDE
La IDE Arduino es una aplicacin multiplataforma escrito en Java y derivado del IDE para el procesamiento y el cableado. Un IDE es bsicamente un
programa diseado para facilitar el desarrollo de software. El IDE de Arduino incluye un editor de cdigo fuente (un editor de texto con algunas
caractersticas tiles para la programacin, como el resaltado de sintaxis y sangra automtica) y un compilador que convierte el cdigo que ha
escrito en instrucciones legibles por mquina.

Pero todo lo que necesitas saber sobre el IDE Arduino es que es la pieza de software que le permitir escribir fcilmente sus propios
bocetos Arduino y cargarlas en el tablero con un solo clic. Figura 1-10 muestra lo que el IDE se parece.

Figura 1-10. Arduino IDE

Tmese un momento para familiarizarse con el IDE. Tabla 1-1 ofrece una descripcin de todos los botones que encontrar en la barra de
herramientas.

10
CAPTULO 1 FUNDAMENTOS ARDUINO

Tenga en cuenta que la lnea de texto que se ve en la parte inferior derecha de la IDE en realidad le est diciendo a la placa Arduino y el
puerto serie que ha seleccionado. Si no corresponden a lo que se espera, puede cambiarlas siguiendo los pasos de la seccin Prueba de la
Arduino.

Tabla 1-1. Entorno de desarrollo Arduino (de http://arduino.cc)

smbolo Descripcin

Verificar
Comprueba el cdigo de errores.

Subir
Compila su cdigo y lo sube a la placa Arduino E / S.

Nuevo

Crea un nuevo dibujo.

Abierto
Presenta un men con todos los bocetos en su cuaderno de dibujo. Al hacer clic en uno que se abrir en la ventana actual.

Salvar
Guarda el boceto.

serial monitor
Abre el monitor serie.

Si estos smbolos se ven un poco diferentes a las de su IDE Arduino, es probable que tenga una versin antigua de las herramientas de
Arduino. Ir http://arduino.cc/en/Main/Software y descargar la versin ms reciente. En el momento de la escritura, Arduino 1.0 es la versin actual del
software.

Nota En Arduino versin 1.0, los dibujos se guardan con la extensin. ino en lugar de la antigua extensin. pde

(El mismo que bocetos de Procesamiento). Todava se puede abrir. pde bocetos creados con versiones anteriores.

serial monitor
El monitor de serie (en la parte superior derecha de la Arduino IDE) es una herramienta para visualizar los datos en serie que se envan desde la placa Arduino al
ordenador (ver Figura 1-11). Es necesario para que coincida con la velocidad de transmisin en el monitor de serie a la velocidad de transmisin se especifica en
los datos de envo de croquis Arduino. La velocidad de transmisin es el nmero de cambios de smbolos transmitidos por segundo.

El monitor de serie es muy til en la depuracin de los programas de Arduino (el proceso de encontrar y corregir los defectos en el programa
para que se comporta como se esperaba). Siempre que no est seguro de lo que est mal con el cdigo, solicite Arduino para imprimir mensajes al
monitor de puerto serie para que pueda mirar en el estado del programa en ese preciso momento.

11
Bsica Captulo 1 ARDUINO

Figura 1-11. Serial Monitor Arduino

Se le hacen un amplio uso de la comunicacin en serie en todo el libro, ya que es la principal forma de conseguir Arduino para comunicarse
con Processing y por lo tanto con los datos de Kinect.

Arduino idioma
El lenguaje de Arduino se implementa en C / C ++ y basada en el cableado. Cuando se escribe un boceto Arduino, usted est haciendo
implcitamente el uso de la biblioteca de cableado, que se incluye con el IDE de Arduino. Esto le permite hacer programas ejecutables mediante el
uso de slo dos funciones: preparar() y lazo(). Como se mencion, el idioma de cableado est inspirado por la transformacin, y la estructura del
lenguaje Arduino se hereda del lenguaje de procesamiento, donde se llaman las funciones equivalentes preparar() y dibujar(), como se ver en el
captulo 3.

Es necesario incluir ambas funciones en cada programa de Arduino, incluso si usted no necesita una de ellas. Vamos a analizar la estructura de
un simple boceto Arduino usando de nuevo el ejemplo de parpadeo. Abra el IDE de Arduino y seleccione Abrir 1.Basics parpadeo.

La funcin setup ()
los preparar() la funcin se ejecuta slo una vez, justo despus de cargar un nuevo dibujo a la junta, y luego cada vez que encienda el Arduino. Esta
funcin se utiliza para inicializar las variables, los modos de pasador, puesta en bibliotecas, etc. En este ejemplo, el preparar() funcin se utiliza para
definir pin 13 como salida:

void setup () {
pinMode (13, OUTPUT); }

12
CAPTULO 1 FUNDAMENTOS ARDUINO

El bucle () Funcin
los lazo() la funcin se ejecuta continuamente en un bucle sin fin, mientras que la placa Arduino es alimentado. Esta funcin es el corazn de la mayora de
los programas.
En este ejemplo, se activa de 13 pin LED incorporado en el uso de la funcin digitalWrite () enviar una ALTO
seal (5V) para el pasador. Luego hace una pausa en la ejecucin del programa durante un segundo con la funcin
retrasar(). Durante este tiempo, el LED permanecer encendido. Despus de esta pausa, se enciende el LED apagado, de nuevo utilizando la funcin digitalWrite () pero el
envo de una BAJO ( 0V) de la seal en su lugar, y luego hacer una pausa en el programa para otro segundo. Esta voluntad bucle cdigo continuamente, haciendo que el
parpadeo del LED.

void loop () {
digitalWrite (13, HIGH); retardo
(1000);
digitalWrite (13, LOW); retardo
(1000); }

Este cdigo no sera en realidad ser visto como un programa C ++ vlida por un compilador de C ++, por lo que cuando se hace clic en Compilar o Ejecutar,
Arduino aade un encabezado en la parte superior del programa y un sencillo principal() funcin de lo que el cdigo puede ser ledo por el compilador.

Variables
En el ejemplo anterior, que no declar ninguna variable porque el boceto era bastante simple. En los programas ms complejos, se declarar,
inicializar y utilizar variables.
Las variables son nombres simblicos dados a una cierta cantidad de informacin. Esto significa que asociar una determinada pieza de informacin
con un nombre simblico o identificador por el cual se va a hacer referencia a la misma.

Declaracin e inicializacin de variables


Para utilizar una variable, primero tiene que declarar, especificando en ese momento el tipo de datos de la variable. El tipo de datos especifica el tipo
de datos que se pueden almacenar en la variable y tiene una influencia en la cantidad de memoria que se reserva para esa variable.

Como lenguaje de Arduino se basa en C y C ++, los tipos de datos que puede utilizar en Arduino son los mismos permitido en C ++. Tabla 1-2 se
enumeran algunos de los tipos de datos que va a utilizar en este libro. Para obtener una lista completa de C ++ tipos de datos, puede hacer referencia a C ++
libros de referencia y sitios de Internet.

Tabla 1-2. Arduino tipos de datos fundamentales

Nombre Descripcin tamao Distancia

carbonizarse Carcter o pequeo nmero entero 1byte Firmado: -128-127 sin


signo: 0 a 255

booleano valor booleano (verdadero o falso) 1byte Verdadero o falso

int Entero 4bytes Firmado: -2147483648 a 2147483647


Sin signo: 0 a 4294967295

13
Bsica Captulo 1 ARDUINO

Nombre Descripcin tamao Distancia

largo Entero largo 4bytes Firmado: -2147483648 a 2147483647


Sin signo: 0 a 4294967295

flotador nmero de punto flotante 4bytes +/- +/- 38 3.4e (~ 7 dgitos)

doble nmero de coma flotante de doble precisin +/- 8 bytes 1.7e +/- 308 (~ 15 dgitos)

Cuando se declara la variable, es necesario escribir el especificador de tipo de tipo de datos deseado seguido de un identificador de variable
vlido y un punto y coma. En las siguientes lneas, se declara un nmero entero, un personaje, y una variable booleana:

int miEntero; Char


myLetter; prueba
boolean;

Este cdigo ha declarado las variables, pero su valor es indeterminado. En algunos casos, desea declarar la variable y se establece en un
valor predeterminado al mismo tiempo. Se llama inicializar las variables. Si quieres hacer esto, puede hacerlo de la siguiente manera:

int miEntero = 656; Char


myLetter = 'A'; prueba boolean
= true;

De esta manera, sus tres variables se establecen en valores especficos y usted puede empezar a usarlas desde este momento.

En otros casos, usted quiere declarar las variables de primera e inicializar ellos ms tarde. Ver que esto ocurra con frecuencia, ya que
es necesario cuando se desea declarar la variable como global, pero su valor depende de otras variables o procesos sucediendo dentro de la setup
(), dibujar (), u otras funciones.

int miEntero; Char


myLetter; prueba
boolean;

preparar(){
miEntero = 656; myLetter
= 'A'; prueba = true; }

Mira variable
Cuando se declara las variables, el lugar lo hace dentro del cdigo tendr un impacto en el mbito en el que la variable ser visible. Si declara la
variable de fuera de cualquier funcin, se considera una global variable y ser accesible desde cualquier parte del cdigo. Si se declara la variable
dentro de una funcin, la variable ser una local variable y slo ser accesible desde dentro de la misma funcin. Vamos a hacer un ejemplo desde el
boceto de parpadeo.

int ledPin = 13; void


setup () {

14
CAPTULO 1 FUNDAMENTOS ARDUINO

pinMode (ledPin, OUTPUT); int


myOtherPin = 6;
pinMode (myOtherPin, OUTPUT); }

void loop () {
digitalWrite (ledPin, HIGH); // establecer el LED
retardo (1000); // Espera un segundo
digitalWrite (ledPin, LOW); // establecer el LED apagado

retardo (1000); // Espera un segundo


}

Este cdigo ser cargar y ejecutar sin problemas, comportndose exactamente como el original ejemplo de parpadeo. Usted ha declarado e
inicializado el nmero entero ledPin al comienzo de su programa, fuera de cualquier funcin, por lo que se considera una variable global visible desde
dentro de las otras funciones en el cdigo.
La variable myOtherPin, por el contrario, se ha definido dentro de la preparar() funcin. Ha utilizado la variable para fijar el pasador definido por
la variable de SALIDA. Si se trat de utilizar la variable de la
lazo() funcin, Arduino arrojara un error en ti, diciendo: 'myOtherPin' no estaba declarado en este mbito. Y eso es correcto; se ha declarado
e inicializado la variable dentro del preparar() funcin, por lo que es una variable local y slo es visible desde el interior de la funcin en la que se
declar.

Su primer proyecto Arduino


Usted va a escribir un ejemplo de Arduino boceto participacin de todos los elementos que acaba de aprender en las secciones anteriores. Esto
es slo un primer paso en el desarrollo de un proyecto Arduino, pero ser suficiente para resumir este captulo sobre conceptos bsicos de
Arduino.
Usted va a construir un circuito muy simple primero, y luego va a programar utilizando el IDE de Arduino. Necesitar su placa Arduino, una
placa, un LED, una resistencia de 220 ohmios, un potencimetro, y algunos cables para construir este ejemplo.

Tablero de circuitos

Cuando se trabaja con la electrnica, a menudo es til para dibujar el circuito rpidamente para que pueda probarlo antes de construirlo en una forma ms
permanente. El uso de un tablero sin soldadura, puede crear prototipos fcilmente mediante la conexin electrnica de los elementos juntos. A medida que los
elementos no estn soldados a la placa, la placa en realidad se puede reutilizar tantas veces como se desee (consulte las figuras 1-12 y 1-13).

15
CAPTULO 1 FUNDAMENTOS ARDUINO

Figura 1-12. diagrama de conexin Bredboard

Figura 1-13. Proyecto esbozado en una protoboard

Tenga en cuenta que los pasadores flanqueadas por lneas azules y rojas en el tablero (las dos filas superiores y las dos filas inferiores de la
Figura 1-13) estn conectados entre s en posicin horizontal, para que pueda utilizarlos para proporcionar 5V y tierra a todos los elementos de la
proyecto. Los otros pines estn conectados en tiras verticales rotas en el medio. Utiliza estas tiras vinculados a conectar la resistencia al LED y los
pines del potencimetro a 5V, suelo, y el Pin de entrada analgica 0 Arduino.

Construccin del Circuito


Tratar de replicar este circuito en el tablero y conectarlo a la placa Arduino como se ve en la figura 1-14 sucediendo. El LED est conectado al pin
analgico 11, y el pasador medio del potencimetro est conectado al pin analgico 0. Los cables de tierra y 5V estn conectados a la Arduino GND
y los pasadores de 5V. Tenga en cuenta que el LED tiene una pierna ms corta (ctodo), que necesita ser conectado a tierra. El uno ya est
conectado al resistor. Si tienes curiosidad sobre el funcionamiento de los LED y por qu est utilizando un ohmios 220-, hay una seccin completa
sobre las resistencias en el Captulo 7.

diecisis
CAPTULO 1 FUNDAMENTOS ARDUINO

El objetivo de este proyecto es controlar el brillo del LED girando el potencimetro. Un potencimetro es bsicamente una resistencia variable
que permite controlar girando el mando. Tenga en cuenta que el potencimetro no est conectado al LED o la resistencia en absoluto; es
simplemente conectado a la placa Arduino. Usted adquiere los valores procedentes del potencimetro de Arduino y utiliza estos valores para
impulsar el brillo del LED. Todo esto se hace en el cdigo de Arduino.

Programacin del Arduino


Ahora se va a escribir el cdigo que le permitir conducir el LED girando el potencimetro. Que va a utilizar la comunicacin serie para comprobar los
valores que obtiene del potencimetro en tiempo de ejecucin mediante el Monitor de serie.

En primer lugar, se declara una variable global entera llamada ledPin que define el nmero pin LED durante la ejecucin del programa.

int ledPin = 11;

La funcin setup ()
Despus de esto, se escribe el preparar() funcin en la que se inicia la comunicacin en serie a una velocidad de transmisin de 9600 y se define el pinMode de
su pin LED SALIDA para que pueda escribir en l.

void setup () {
Serial.begin (9600); pinMode (ledPin,
OUTPUT); }

Figura 1-14. Su primer proyecto Arduino

17
Bsica Captulo 1 ARDUINO

El bucle () Funcin
En el lazo() funcin, el primero que se hace es declarar una nueva variable entera local llamada sensorValue para almacenar el valor del potencimetro
conectado al pin analgico 0. inicializar la variable a este valor mediante el uso de la analogRead () funcin y A0 especificando (analgica 0) como su
PIN. Si se va a leer pin analgico
1, podra escribir A1, y as sucesivamente.
A continuacin, se imprime el valor del potencimetro a la memoria intermedia serie utilizando la funcin
Serial.println (). Si abre el monitor de serie, mientras que el programa se est ejecutando, se ver que los valores procedentes de la gama del
potencimetro 0-1023.
Desea utilizar este valor para ajustar el brillo de LED, pero que han declarado que el alcance de la luminosidad tiene que estar en un rango de
0 a 255. La solucin a este problema se cartografa los valores del potencimetro de su gama a la gama del potencimetro. Que va a utilizar esta
tcnica muy a menudo en sus proyectos; Por suerte, Arduino tiene una funcin para realizar esta operacin llamada mapa().

los mapa() funcin toma cinco argumentos: Mapa (valor, fromLow, fromHigh, toLow, toHigh).
El argumento valor es el valor actual a ser asignada. fromLow y fromHigh definir los valores ms bajos y ms altos de la gama de la fuente, y muy
bajo y en lo alto, los valores ms bajos y ms altos de la gama objetivo.
En su caso, su brillo LED necesita ser definida como Mapa (sensorValue, 0,1023,0,255), por lo que si el valor del sensor es 1023, el brillo del
LED es 255. La mapa() funcin siempre devolver un nmero entero, incluso en el caso de que el mapeo se traducira en un nmero de punto
flotante.
Una vez que haya determinado el brillo del LED, se escribe este valor en el pasador de LED usando la funcin analogWrite (pin, valor).

void loop () {
int sensorValue = analogRead (A0); Serial.println
(sensorValue);

int ledBrightness = map (sensorValue, 0,1023,0,255); analogWrite (ledPin,


ledBrightness); }

Sube este programa a tu placa Arduino, y usted ser capaz de cambiar el brillo de la LED girando el potencimetro. Va a desarrollar ms
tcnicas avanzadas de control en el captulo 4, pero antes de seguir adelante, vamos a ir a travs de algunos conceptos bsicos de la electrnica.

diagramas de circuitos
Que acabamos de describir el circuito a travs de fotografas y texto. Pero cuando se llega a los circuitos ms complicados, esto no ser suficiente. La
forma en circuitos deben estar representados es con esquemas de circuitos, o esquemas.
Los diagramas de circuitos muestran los componentes de un circuito como smbolos estndar simplificados y las conexiones entre los
dispositivos. Tenga en cuenta que la disposicin de los elementos en un diagrama no se corresponde necesariamente a la disposicin fsica
de los componentes.
Existen numerosos paquetes de software que facilitan el dibujo de esquemas, pero hay uno diseado para ser utilizado por los no
ingenieros, y funciona muy bien con los proyectos de Arduino: Fritzing.

Fritzing
Fritzing es una herramienta de cdigo abierto desarrollado en la Universidad de Ciencias Aplicadas de Potsdam en Alemania; que est dirigido a
artistas y diseadores que quieren desarrollar sus prototipos en proyectos reales. Se puede (y debe) descarga de Fritzing http://fritzing.org.

Fritzing tiene una interfaz grfica que permite al usuario construir el circuito como en el mundo fsico, conectando juntos placas
universales, Arduinos, LEDs, resistencias, etc. A continuacin, convertir esta representacin visual en un diagrama de circuito con slo cambiar
la vista, como se muestra en Las figuras 1-15 y 1-16.

18
CAPTULO 1 FUNDAMENTOS ARDUINO

Figura 1-15. vista de tablero de su proyecto en Fritzing

Figura 1-16. Esquemas de vista de su proyecto en Fritzing

19
Bsica Captulo 1 ARDUINO

Smbolos electrnicos
smbolos electrnicos, o smbolos de circuito, son los pictogramas utilizados para representar los componentes y dispositivos elctricos en los
esquemas. Hay varias normas internacionales de estos smbolos grficos. En este libro, vamos a utilizar ANSI en todos los diagramas y smbolos de
circuito. En la tabla 1-3 se muestra una lista de algunos smbolos electrnicos que se pueden ver utilizadas en este libro y algunos de los equivalentes
IEC para referencia.

Tabla 1-3. Smbolos electrnicos y Equivalentes IEC

Smbolo de circuito Componente Smbolo de circuito Componente

Resistor
Cable
(ANSI)

Resistencia
Ingres alambres
(IEC)

Reostatos, o resistencia
Los cables no Ingres variable (ANSI)

Reostato, o resistencia
Celda variable (IEC)

Potencimetro (ANSI)
Batera

Potencimetro (IEC)
Tierra)

Interruptor encendido / apagado Motor

NO
Diodo emisor de luz
COM Rel
(LED)
NC

Electricidad
A lo largo del resto del libro, que ser la construccin de circuitos, utilizando motores, y hablando mucho acerca de la electrnica en general. Una
de las ventajas de Arduino es que hace que para una fcil introduccin a la electrnica para los principiantes, pero si usted es completamente
nuevo a la electrnica, aqu hay algunos conceptos bsicos.

20
CAPTULO 1 FUNDAMENTOS ARDUINO

AC/DC
La red elctrica es corriente alterna (AC), pero que va a utilizar la corriente directa (DC) para todos sus proyectos. AC es en realidad ms barato de producir y
transmitir desde las plantas de energa a su hogar. Esa es la razn por la cual todos los enchufes en nuestros hogares nos dan la corriente alterna. Pero CA
tambin es ms difcil de controlar, por lo que la mayora de los dispositivos electrnicos funcionan con una fuente de alimentacin que convierte CA en CC.

La corriente proporcionada por su USB es CC, como es la corriente que se obtiene de una batera o una fuente de poder, por lo que no va a funcionar
con corriente alterna en absoluto en este libro. Cada vez que hablamos acerca de la electricidad o la corriente en el libro, nos estamos refiriendo a DC.

Ley de Ohm
Electricidad, o elctrico corriente es decir, muy en general, el movimiento de electrones a travs de un conductor. los
intensidad ( I) de esta corriente se mide en amperios (A). La fuerza de empuje de los electrones a fluir se llama voltaje, que es la medida de la
diferencia de energa potencial relativo entre los dos extremos del circuito. El voltaje se mide en voltios, o V.

El conductor a travs del cual los electrones estn fluyendo se opondr cierta resistencia a su paso. Esta fuerza se llama resistencia,
y se mide en ohmios ( ).
Georg Ohm public un tratado en 1827 que describe las mediciones de voltaje y corriente que fluye a travs de los circuitos. Hoy en da,
una de estas ecuaciones se ha conocido como la ley de Ohm, y se une voltaje, corriente y resistencia.

I=V
R
Su puesta en palabras, la ecuacin establece que la corriente que fluye a travs de un conductor (I) es directamente proporcional a la
diferencia de potencial (V) a travs de los dos extremos. La constante de proporcionalidad se denomina resistencia (R).

La resistencia es entonces la medida de la oposicin al paso de una corriente elctrica a travs de un elemento. Lo contrario de la
resistencia es la conductancia (G).

R=V G=I G=1


yo V R
La ley de Ohm se puede reescribir de tres maneras diferentes dependiendo de qu elementos de la ecuacin que ya conoce y que uno
est tratando de calcular.

I=V R=V V = R yo
R yo

Ley de Joule
La primera ley de Joule, tambin conocido como Efecto Joule, fue declarado por James Prescott Joule en la dcada de 1840. Esta ley establece que la
potencia disipada en una resistencia, en trminos de la corriente a travs de l y su resistencia, es

P = I 2 R

Si se aplican las ecuaciones anteriores a la ley de Joule, que ser finalmente capaz de calcular la potencia en vatios como un valor calcula
multiplicando la corriente por el voltaje.

21
Bsica Captulo 1 ARDUINO

P=IV

Esto le ayuda a elegir la potencia correcta para elementos tales como resistencias y calcular el consumo de energa a partir de fuentes
impulsados por batera. Esto, a su vez, le permite estimar el tiempo que el proyecto se ejecutar en un conjunto de bateras.

Resumen
En este primer captulo se ha tomado a travs de una visin general de la plataforma Arduino en el que tanto el hardware como el software de
Arduino se han analizado a fondo.
Su placa Arduino se debe configurar correctamente ahora, el IDE Arduino debera estar instalado en su computadora, y usted debe estar
comunicando a la perfeccin con su tablero a travs de USB. Usted ha tenido un breve curso de actualizacin sobre los conceptos bsicos de
electricidad, y ha calentado con un par de ejemplos.
Esta introduccin no pretende ser un sustituto de las obras ms introductorios. Si este es su primer contacto con Arduino, es posible que
desee considerar la posibilidad de un vistazo a algunos otros ttulos como A partir de Arduino ( Apress, 2010) antes de profundizar en este libro, o al
menos tener uno a mano por si acaso.
Despus de terminar este captulo, es de esperar que quiere comer proyectos ms interesantes, pero no se precipiten en l! Usted todava tiene
que ir a travs de algunos conceptos fundamentales sobre la otra piedra angular de este libro: el Kinect.

22
CAPITULO 2

Fundamentos de Kinect

por Enrique Ramos

El Kinect, que se muestra en la Figura 2-1, se puso en marcha el 4 de noviembre de 2010 y vendi la impresionante cifra de 8 millones de unidades en los
primeros 60 das, entrar en el Libro Guinness de los Rcords como la ms rpido dispositivo de electrnica de consumo venta en la historia. El Kinect fue
el primer dispositivo de sensor comercial para permitir al usuario interactuar con una consola a travs de una interfaz de usuario natural (utilizando gestos y
comandos hablados en lugar de un dispositivo de juego). El Kinect es el segundo pilar de este libro, as que va a pasar este captulo conseguir que
familiarizarse con ella.

En las siguientes pginas, aprender la historia de este dispositivo innovador, su hardware, software y flujos de datos. Usted aprender lo que
es un escner 3D-luz estructurada y cmo se implementa en el sensor Kinect. Usted aprender acerca de los diferentes datos que se pueden adquirir
de su Kinect (como RGB, y las imgenes infrarrojas de profundidad), y la forma en que se combinan para realizar el seguimiento del movimiento y
reconocimiento de gestos. Bienvenido al mundo de Kinect!

La Figura 2-1. el Kinect

23
CAPTULO 2 GUA DE KINECT

COMPRA DE KINECT

Actualmente hay tres maneras de comprar un sensor de Kinect.

Kinect para Windows ($ 249.99)

Kinect para Xbox 360 como un perifrico independiente para ser utilizado con su previamente adquirido Xbox
360 ($ 129.99)

Kinect para Xbox 360 incluye con la Xbox 360 (a partir de $ 299.99 dependiendo del paquete)

Si usted compra el nuevo Kinect para Windows o el Kinect para Xbox 360 como un perifrico independiente, ambos estn preparados para conectarse
a su ordenador.

Pero tal vez usted ya tiene un dispositivo Kinect que est utilizando con su Xbox 360, o si est pensando en comprar el Kinect junto con una
Xbox 360. Si usted compra el Kinect incluido con la Xbox 360, tambin tendr que comprar una por separado fuente de alimentacin ($ 34.99
de Microsoft).

Cuando se utiliza con la ltima Xbox, el dispositivo Kinect no necesita el adaptador de CA, ya que la consola tiene un puerto USB especial que
proporciona la energa suficiente para el Kinect para funcionar. Su USB del ordenador no puede entregar lo ms actual, sin embargo, y el USB
especial de Kinect no se ajusta a su puerto USB estndar. Necesitar la fuente de alimentacin de CA para conectar el Kinect a una toma de
corriente, y para convertir el conector USB especial a un USB estndar que usted ser capaz de conectar al ordenador (Figura 2-2).

La Figura 2-2. Kinect adaptador de CA con conexin USB estndar

24
CAPITULO 2 FUNDAMENTOS DE KINECT

Una breve historia de la Kinect


Microsoft anunci el proyecto Kinect el 1 de junio de 2009 bajo el nombre cdigo Project Natal. El nombre fue cambiado a Kinect el 13 de junio de
2010; que se deriva de las palabras cintico y conectar para expresar las ideas detrs del dispositivo. El lema de la campaa de marketing para
el lanzamiento era, muy apropiadamente, Usted es el controlador.

Este primer lanzamiento caus un frenes en todo el mundo, y los hackers pronto encontr la puerta abierta en este dispositivo asombroso. A diferencia
de otros dispositivos de juego, la conexin Kinect era un puerto USB, por lo que potencialmente podra estar conectado a un PC. Desafortunadamente,
Microsoft no haba publicado ningn controlador de PC para el dispositivo y no pareca estar dispuesto a hacerlo en un futuro prximo.

Nota drivers son programas informticos que permiten a otros programas informticos de alto nivel para interactuar con los dispositivos de hardware.

Convierten una API conocida y predecible (interfaz de programacin de aplicaciones) a la API nativa integrada en el hardware, por lo que diferentes

dispositivos parecen y se comportan de manera similar. Piense en los conductores como los traductores entre el hardware y la aplicacin o el sistema operativo

de usarlo. Sin los controladores adecuados, el equipo no sabra cmo comunicarse con cualquiera de hardware conectado a ella!

Hackear el Kinect
Justo despus de que el Kinect fue lanzado en noviembre de 2010, y aprovechando la conexin USB libre del Kinect, Adafruit Industries ofreci una
recompensa de $ 1,000 a cualquiera que proporcionara controladores de cdigo abierto para este dispositivo USB fresco. Los conductores y / o
aplicacin puede funcionar en cualquier sistema operativo, pero completamente documentado y bajo una licencia de cdigo abierto . Despus de
algunos comentarios negativos iniciales de Microsoft, Adafruit aadido otros $ 2.000 a la generosidad de sabor a su vida.

El ganador de la recompensa de $ 3.000 fue Hctor Martn, quien produjo los controladores de Linux que permitan el uso de la imagen de
profundidad del Kinect tanto la cmara RGB y.
La liberacin de los controladores de cdigo abierto agit un frenes de desarrollo de aplicaciones de Kinect que llam la atencin de los medios de
comunicacin. Los sitios web dedicados al nuevo mundo de aplicaciones, tales como Kinect
http://www.kinecthacks.com, proliferado en Internet. El pblico sorprendido poda ver un nmero creciente de nuevas aplicaciones aparecen de
todos los rincones del mundo.

marcos oficiales
Sin embargo, los hackers de Kinect no fueron los nicos que dan cuenta de las increbles posibilidades que la nueva tecnologa estaba a punto de
desatar. Las empresas que participan en el diseo de la Kinect pronto comprendieron que el Kinect para Xbox 360 fue slo un primer paso tmido
hacia una nueva revolucin tecnolgica y que no tenan intencin de quedarse atrs.

En 2010, PrimeSense (la compaa detrs de las imgenes en 3D de Kinect) dio a conocer su propio marco de los conductores y la programacin
para el Kinect, llamado OpenNI. Poco despus, se anunci una asociacin con ASUS en la produccin de un nuevo dispositivo Kinect-como, la Xtion.

En 2011, Microsoft lanz Kinect SDK no comercial (kit de desarrollo de software). En febrero de 2012, se public una versin
comercial, acompaado por el dispositivo Kinect para Windows.
Y aqu es donde nos encontramos ahora. Los porttiles con cmaras de Kinect como integrados son muy probablemente en su camino. Esto es
slo el comienzo de toda una gama de hardware y aplicaciones utilizando la tecnologa detrs de Kinect para hacer que las computadoras entiendan
mejor el mundo que les rodea.

25
CAPITULO 2 FUNDAMENTOS DE KINECT

El sensor de Kinect
El sensor Kinect cuenta con una cmara RGB, un sensor de profundidad que consiste en un proyector de lser de infrarrojos y un sensor CMOS de
infrarrojos, y un micrfono de mltiples matrices permitiendo localizacin de la fuente acstica y la supresin del ruido ambiente. Tambin contiene una
luz LED, un acelermetro de tres ejes, y un pequeo servo control de la inclinacin del dispositivo.

Nota El sensor de infrarrojos CMOS (semiconductor complementario de xido metlico) es un circuito integrado que contiene una matriz de fotodetectores que

actan como un sensor de imagen infrarroja. Este dispositivo tambin se conoce como cmara de infrarrojos, sensor de IR, CMOS imagen de profundidad, o un sensor

CMOS, dependiendo de la fuente.

A lo largo de este libro nos centraremos en las funciones de escaneado en 3D del dispositivo Kinect se accede a travs OpenNI / NITE. No
vamos a estar hablando de los micrfonos, el acelermetro incorporado, o el servo, que no son accesibles desde OpenNI porque no son parte del
diseo de referencia de PrimeSense.
La cmara RGB es una resolucin VGA de 8 bits (640 x 480 pxeles) de la cmara. Esto quiz no suene muy impresionante, pero hay que
recordar que la magia sucede en el sensor de profundidad, que es completamente independiente de la cmara RGB.

Los dos elementos de sensor de profundidad, el proyector IR y la cmara IR, trabajan juntos con el chip interno de PrimeSense para reconstituir
una captura de movimiento en 3D de la escena delante de la Kinect (Figuras 2-3 y 2-4). Lo hacen mediante el uso de una tcnica llamada El escaneado
3D-luz estructurada, lo que vamos a discutir en profundidad al final de este captulo. La cmara IR tambin utiliza una resolucin VGA (640 x 480 pxeles)
con la profundidad de 11 bits, proporcionando 2.048 niveles de sensibilidad.

La Figura 2-3. hardware de Kinect

26
CAPITULO 2 FUNDAMENTOS DE KINECT

La Figura 2-4. De izquierda a derecha: la cmara Kinect IR, cmara RGB, LED, y un proyector de infrarrojos (foto cortesa de iFixit)

Por supuesto, hay mucho ms en juego dentro del sensor. Si usted est interesado en las tripas del dispositivo Kinect, el iFixit sitio web
aparece un desmontaje de la Kinect en noviembre de 2010 ( http://www.ifixit.com/Teardown/Microsoft-Kinect-Teardown/4066).

El posicionamiento de su Kinect

gama prctica de la Kinect va de 1,2 ma 3,5 m. Si los objetos estn demasiado cerca del sensor, no van a ser escaneados y se acaba de aparecer
como puntos negros; si estn demasiado lejos, la precisin de exploracin ser muy baja, por lo que aparecen como objetos planos. Si est utilizando
el dispositivo Kinect para Windows, el rango de la cmara es ms corto, desde 40 cm a 3 m.

Las capacidades de Kinect


Entonces, qu se puede hacer con su dispositivo Kinect y todas las cosas de alta tecnologa oculta en el interior? Una vez que el Kinect est
correctamente instalado y comunicarse con el ordenador, podr acceder a una serie de flujos de datos en bruto y otras capacidades proporcionadas por
el middleware especfico. En este libro, vamos a utilizar los controladores y middleware OpenNI NITE.

imagen RGB
S, puede utilizar el Kinect como una cmara web 640 x 480 pxeles. Usted aprender cmo acceder a la imagen RGB de Kinect usando OpenNI en el Captulo
3.

27
CAPTULO 2 GUA DE KINECT

imagen IR
Como Kinect tiene un CMOS de infrarrojos, tambin se puede acceder a la imagen de 640 x 480 IR usando OpenNI. Esto tambin se trata en el captulo 3.

Mapa de profundidad

El mapa de profundidad es el resultado de las operaciones realizadas por chip de pS1080 de PrimeSense la imagen IR capturada por de Kinect IR
CMOS en. Esta imagen VGA tiene una precisin de 11 bits, o 2048 valores diferentes, representada grficamente por niveles de gris de blanco
(2048) a negro (0).
En el captulo 3, aprender cmo acceder y visualizar la imagen de profundidad de procesamiento utilizando el marco OpenNI, y cmo convertir
la imagen en escala de grises en dimensiones espaciales reales. Hay un detalle que se debe tener en cuenta: medicin de la distancia del sensor no
sigue una escala lineal, sino una escala logartmica. Sin entrar en lo que es una escala logartmica, usted debe saber que la precisin del sensor de
profundidad es menor en los objetos ms lejos del sensor de Kinect.

Mano esqueltica y Seguimiento


Despus de que el mapa de profundidad se ha generado, se puede usar directamente para sus aplicaciones o ejecutar a travs de un middleware especfico para
extraer informacin ms compleja desde el mapa de profundidad en bruto.
En los siguientes captulos, que va a utilizar el middleware NITE aadir la mano de seguimiento / esqueleto y el reconocimiento de gestos a
sus aplicaciones. Captulo 4 le ensear cmo utilizar el seguimiento de la mano para controlar luces LED a travs de una placa Arduino. Captulo 5
introducir el reconocimiento de gestos de NITE, y que incluso programar su propia rutina de reconocimiento simple gesto. Captulo 6 le ensear
cmo trabajar con seguimiento esqueleto.

Los algoritmos que NITE o cualquier otro uso de middleware para extraer esta informacin del mapa de profundidad cada mucho ms all del
alcance de este libro, pero si usted es curioso, se puede leer Hackear el Kinect por Jeff Kramer et al (Apress, 2012), en la que se encuentra un
captulo entero sobre el reconocimiento de gestos.

Los conductores Kinect y Pautas


Con el fin de acceder a los flujos de datos de Kinect, tendr que instalar los controladores necesarios en el ordenador. Debido a la historia y no
complicar de este dispositivo, hay una serie de opciones disponibles que detallaremos a continuacin.

OpenKinect: libfreenect Drivers


Poco despus de la creacin de los controladores de cdigo abierto para Kinect Adafruit, Hctor Martn se uni a la comunidad OpenKinect ( http://openkinect.org),
que fue creada por Josh Blake con la intencin de reunir a los programadores interesados en interfaces de usuario naturales (NUIS). OpenKinect
desarrolla y mantiene la biblioteca central libfreenect para acceder a la cmara USB Kinect. Actualmente soporta el acceso a las imgenes RGB y
profundidad, el motor de Kinect, el acelermetro, y el LED. El acceso a los micrfonos se est trabajando.

28
CAPITULO 2 FUNDAMENTOS DE KINECT

PrimeSense: OpenNI y NITE


A lo largo de este libro, vamos a utilizar OpenNI y NITE acceder a los flujos de datos y las capacidades de Kinect esqueleto / seguimiento de la mano,
por lo que aqu es un poco ms de detalle en este marco. La empresa israel PrimeSense ha desarrollado la tecnologa detrs de las imgenes en 3D
de Kinect y trabaj con Microsoft en el desarrollo del dispositivo Kinect. En diciembre de 2010, PrimeSense cre una organizacin industrial, sin fines
de lucro llamada OpenNI, acrnimo de interaccin natural abierta ( http://www.openni.org).

Esta organizacin se form a promover y certificar la compatibilidad e interoperabilidad de dispositivos de interaccin natural (NI),
aplicaciones y middleware. Los miembros fundadores de la organizacin OpenNI son PrimeSense, Willow Garaje, Side-Kick, ASUS, y AppSide.

OpenNI
Con el fin de cumplir con su objetivo, OpenNI public un marco de cdigo abierto llamado OpenNI marco. Proporciona una API de middleware y de alto
nivel llamado NITE para la implementacin de la mano / de seguimiento esqueleto y el reconocimiento de gestos.

La Figura 2-5. OpenNI visin abstracta en capas (cortesa de PrimeSense)

Debido OpenNI rompe la dependencia entre el sensor y el middleware (vase la figura 2-5), el API permite a los desarrolladores de middleware para
desarrollar algoritmos en la parte superior de formatos de datos en bruto, independientes del dispositivo sensor que est produciendo los datos. De la misma
manera, fabricantes de sensores pueden construir sensores que funcionarn con cualquier aplicacin compatible con OpenNI.

29
CAPTULO 2 GUA DE KINECT

Kinect fue la primera implementacin del diseo de referencia PrimeSense; su ptica y microchip se desarrollaron en su totalidad por
PrimeSense. A continuacin, Microsoft ha aadido un motor y un acelermetro de tres ejes para el diseo. Esta es la razn por OpenNI no
proporciona acceso al motor o el acelermetro; que son especficos para la implementacin de Kinect.

PrimeSense es una compaa de semiconductores (fabricacin-menos). Esto hace que sus ingresos mediante la venta de chips de hardware y de
semiconductores, mientras que la externalizacin de la fabricacin. Es principalmente un B2B (empresa a empresa): vende soluciones a los fabricantes que
se insertan estas soluciones en productos de consumo. Esta es exactamente la manera en la que estaba involucrado en el desarrollo de la Kinect con
Microsoft.
PrimeSense luego vende su tecnologa a fabricantes como Asus y otros fabricantes de ordenador o televisin. Sin embargo, para que se
desarrolle este mercado, es necesario que exista un ecosistema de personas que crean contenido y aplicaciones basadas en la interaccin
natural. PrimeSense creado OpenNI como una manera de ayudar a los desarrolladores aadir interaccin natural con su software y aplicaciones
para este ecosistema prosperara.

NITE
Para la interaccin natural para ser implementado, el desarrollador necesita ms que la nube de puntos 3D de Kinect. Las caractersticas ms tiles
provienen de las capacidades de seguimiento de esqueleto y de la mano. No todos los desarrolladores tienen los conocimientos, tiempo o recursos
para desarrollar estas capacidades a partir de cero, ya que implican algoritmos avanzados. PrimeSense decidi implementar estas capacidades y
distribucin con fines comerciales, pero mantener el cdigo cerrado, y as se desarroll NITE.

Nota Ha habido mucha confusin acerca de las diferencias entre OpenNI y NITE. OpenNI es el marco de PrimeSense; que le permite adquirir la

profundidad y las imgenes RGB de la Kinect. OpenNI es de cdigo abierto y el uso comercial. NITE es el middleware que permite llevar a cabo el

seguimiento de la mano / esqueleto y el reconocimiento de gestos. NITE no es de cdigo abierto, sino que tambin se distribuye para su uso

comercial.

Esto significa que sin NITE no se puede utilizar esqueleto / seguimiento de la mano o el reconocimiento de gestos, a menos que desarrolle su
propio middleware que procesa los datos de nubes de puntos OpenNI y extrae la informacin de las articulaciones y el gesto. Sin lugar a dudas,
habr otro middleware desarrollado por terceros en el futuro que competir con OpenNI y NITE para aplicaciones de interaccin naturales.

En el captulo 3, aprender cmo descargar OpenNI y NITE, y va a empezar a usarlas para desarrollar proyectos increbles en todo el
resto del libro.

Microsoft Kinect para Windows


El 16 de junio de 2011, seis meses despus de PrimeSense dio a conocer sus conductores y middleware, Microsoft anunci el lanzamiento del
Microsoft Kinect SDK oficial para uso no comercial. Este SDK ofreci el acceso programador para todas las capacidades ms el sensor de la mano
/ el esqueleto de seguimiento Kinect. En el momento de la escritura, Kinect para Windows SDK incluye lo siguiente:

Los controladores para el uso de dispositivos de sensor Kinect en un equipo que ejecuta Windows 7 o Windows 8 Developer
Preview (aplicaciones de escritorio solamente)

API y las interfaces de dispositivos, junto con la documentacin tcnica

ejemplos de cdigo fuente

30
CAPITULO 2 FUNDAMENTOS DE KINECT

Por desgracia, la licencia no comercial limitado a las aplicaciones de pruebas o para uso personal. Adems, el SDK slo se instala en Windows
7, dejando de lado las comunidades programador de Linux y Mac OSX. Por otra parte, el desarrollo de aplicaciones est limitada a C ++, C # o Visual
Basic utilizando Microsoft Visual Studio 2010.

Estas limitaciones desaniman a muchos desarrolladores, que optaron por continuar desarrollando aplicaciones con OpenNI / NITE adems
de su sistema operativo y la plataforma de desarrollo de la eleccin, con un ojo hacia la comercializacin de sus aplicaciones.

A partir de febrero de 2012, el Kinect para Windows incluye un nuevo dispositivo sensor diseado especficamente para su uso con un PC
basado en Windows y una nueva versin del SDK para uso comercial. El oficial de Microsoft SDK seguir apoyando el Kinect para Xbox 360 como
un dispositivo de desarrollo.

Kinect Teora
La tcnica utilizada por el sistema ptico 3D de PrimeSense en el Kinect se llama escaneado 3D-luz estructurada. Esta tcnica se utiliza en muchas
aplicaciones industriales, tales como el control de la produccin y la medicin de volumen, e implica escneres altamente precisos y costosos.
Kinect es el primer dispositivo para poner en prctica esta tcnica en un producto de consumo.

Estructurado-luz de exploracin 3D
escneres ms estructurada de luz se basan en la proyeccin de una estrecha franja de luz sobre un objeto 3D, utilizando la deformacin de
la banda cuando es visto desde un punto de vista diferente de la fuente para medir la distancia de cada punto a la cmara y por lo tanto reconstituir
el volumen 3D. Este mtodo puede extenderse a la proyeccin de muchas rayas de la luz al mismo tiempo, que proporciona un alto nmero de
muestras simultneamente (Figura 2-6).

La Figura 2-6. principios de triangulacin para la digitalizacin en 3D con estructura de luz (de Wikipedia,
http://en.wikipedia.org/wiki/Structured_Light_3D_Scanner, bajo la licencia Creative Commons Atribucin-Compartir Igual 3.0)

31
CAPTULO 2 GUA DE KINECT

El sistema Kinect es algo diferente. En lugar de proyectar rayas de luz visible, un proyector de infrarrojos del Kinect enva un patrn de rayos
de luz infrarroja (llamada de codificacin de imgenes IR por PrimeSense), que rebota en los objetos y es capturado por el sensor de imagen CMOS
estndar (vase la figura 2-7). Esta imagen capturada se transmite al chip PrimeSense a bordo para ser traducido en la imagen de profundidad
(Figura 2-8).

Figura 2-7. Kinnect IR de codificacin de imgenes (detalle)

La Figura 2-8. mapa de profundidad (izquierda) reconstituido a partir de la luz infrarroja de codificacin patrn (derecha)

32
CAPITULO 2 FUNDAMENTOS DE KINECT

La conversin de la luz de codificacin de imgenes a un mapa de profundidad

Una vez que se recibe el patrn de infrarrojo de codificacin de la luz, chip de pS1080 de PrimeSense (Figura 2-9) compara esa imagen una imagen de
referencia almacenada en la memoria del chip que el resultado de una rutina de calibracin se realiza en cada dispositivo durante el proceso de
produccin para. La comparacin de la imagen de referencia plana y el patrn infrarroja entrante es traducida por el chip de una imagen de
profundidad-VGA tamao de la escena que se puede acceder a travs de la API en OpenNI.

Figura 2-9. sistema en un chip (imagen cortesa de PrimeSense) PrimeSense pS1080

Kinect Alternativa: ASUS Xtion PRO


Despus de PrimeSense liberado el marco OpenNI, Asus y PrimeSense anunciaron su intencin de liberar a un dispositivo compatible con PC similar
a Kinect. En 2012, revel la ASUS Xtion PRO, una aplicacin exacta del diseo de referencia de PrimeSense que slo cuenta con una cmara de
profundidad. Fue seguido por la VIVO PRO Xtion que, como Kinect, incluye una cmara RGB, as como la cmara de infrarrojos (Figura 2-10). ASUS
afirma que su dispositivo es la primera y exclusiva solucin de desarrollo de software para PC de deteccin de movimiento profesional del mundo
debido a que el Xtion est diseado para ser usado con un PC (a diferencia del Kinect, el cual fue diseado inicialmente para la Xbox 360). ASUS
tambin est creando una tienda en lnea para aplicaciones Xtion donde los desarrolladores podrn vender su software a los usuarios.

33
CAPTULO 2 GUA DE KINECT

Nota ASUS Xtion es OpenNI- y compatible-NITE, lo que significa que todos los proyectos de este libro tambin se pueden implementar utilizando una

cmara en vivo PRO Xtion de ASUS!

Figura 2-10. ASUS Xtion PRO VIVO (imagen cortesa de ASUS)

Resumen
En este captulo se proporciona una visin general del dispositivo Kinect: su historia y capacidades, as como el hardware, el software y los detalles
tcnicos detrs de su digitalizacin en 3D. No era la intencin de los autores para darle una introduccin detallada de todos los aspectos tcnicos del
dispositivo Kinect; lo nico que queramos para que se familiarice con el sensor asombroso que le permitir construir todos los proyectos en este
libro, y los que se imaginar despus.

En el siguiente captulo, aprender cmo instalar todo el software que necesita utilizar su Kinect. A continuacin, llevarlo a la prctica el
primer programa de Kinect. Ahora usted es el controlador!

34

Вам также может понравиться