Vous êtes sur la page 1sur 11

Conecta tus proyectos al puerto USB

Sbado 14/11/2009 por Mario Sacco . Vista 0 313 36 349 Votos 72 Comentarios 72>> comenta

y y y y y

El puerto serie y el puerto paralelo ya quedaron atrs. Con la superpoblacin de ordenadores porttiles, el espacio de accin de los enlaces por puerto serie comienza a reducirse. Lo mismo ocurre con las conexiones por puerto paralelo. Ya ni siquiera los ordenadores de mesa traen un puerto de este tipo utilizado antiguamente para las impresoras. Hoy todo trae conectividad USB. El mouse, el teclado, la impresora multifuncin, el telfono mvil, el pen drive, el disco duro porttil, el Blu-ray Player, el mdem, el router, todo se conecta a travs de un puerto USB. En este artculo veremos la manera ms sencilla de realizar un circuito con un microcontrolador, encender y apagar un LED desde nuestro ordenador porttil, en una aplicacin hecha por ti mismo a travs del puerto USB. Conctate.

Ads By Google

Las antiguas conexiones de puerto serie o paralelo permitan velocidades de transferencia de datos de hasta 115 kbps., mientras que una conexin USB 1.1 alcanza los 1.2 Mbps. y una USB 2.0 logra 480 Mbps. Sin contar con la sencillez que supone utilizar un nico tipo de conector para todos los perifricos necesarios, la posibilidad de conectar y desconectar sin tener que reiniciar el ordenador a cada cambio de equipo es una ventaja que ha llevado al trabajo mvil hasta su mximo potencial. Disponer de instrumentos de campo o de equipos porttiles que permitan monitorear el clima en el lugar de los hechos es, gracias al ordenador mvil, un avance que complementado con la practicidad de los puertos USB se ha ganado la preferencia de la mayora de los usuarios. Es hora entonces que comiences a transitar el camino de las aplicaciones basadas en conectividad USB. El programa Proton Development Suite posee entre sus herramientas ms importantes la que conocemos como EasyHID USB Wizard. Esta prestacin se encarga de manera automtica de generar los programas necesarios para poder utilizar los microcontroladores de la lnea PIC 18F2455, 18F2550, 18F4455 y 18F4550, que ser el que utilizaremos para nuestro ejemplo. El cdigo para el PIC, lo genera tanto para Pic Basic Pro como para Proton, mientras que para el ordenador, se encarga de generar el cdigo en Borland Delphi, Visual C++ y Visual Basic. Por supuesto que todos estos parmetros se pueden seleccionar mientras se avanza en la preparacin del software. En apenas muy pocos pasos, ya podemos tener una aplicacin HID USB lista para comenzar a cargarla de cdigo. Tanto desde el Microcode Studio Plus como desde Proton Development Suite, al iniciar la aplicacin, nos encontraremos con pantallas a las que les iremos cargando los datos que el sistema nos vaya pidiendo.

En la primer pantalla puedes cargar el nombre del producto que ests desarrollando

No cambies los nmeros de la segunda pantalla, utiliza los que aparecen de muestra

Como a este sistema lo estamos preparando para manejar y operar el receptor multibanda NeoTeo, los datos que le agregaremos estarn en coincidencia con esta aplicacin. De all surgen los nombres que ves en las imgenes. Aqu, en esta pequea gua, slo te daremos un ejemplo prctico para que te vayas familiarizando con el sistema y sus pequeos secretos para lograr una conexin exitosa. Las pantallas que comiencen a aparecer son las que ves en imagen; t les colocars el nombre de la aplicacin que ms desees. Lo que NO debes cambiar en la segunda pantalla son los nmeros de Vendor ID y Product ID. Estos nmeros son asignados por el organismo que regula la autenticidad de los productos USB donde puedes comprar por U$S 4mil una membresa anual con nmeros otorgados exclusivamente a tu desarrollo. Por lo tanto, nuestro consejo es que utilices los nmeros de muestra que provee la aplicacin para los proyectos domsticos que realices.

En las primeras aplicaciones te recomendamos utilizar los parmetros preestablecidos

Pantalla final de seleccin de PIC y destino de carpetas

Luego avanzas a la pantalla que te permite ajustar los valores de tiempo en que el ordenador controlar la existencia de la conexin USB (Polling). Este punto es muy importante porque el ordenador interrogar por el enlace y, si no lo encuentra (Atached), te expulsar la conexin y quedars inactivo (Dettached). Esta accin de comprobacin puede ser realizada en forma constante mediante una interrupcin con un Timer (TMR1) del microcontrolador o a travs de un programa organizado y estructurado de manera apropiada dentro del PIC. El tamao de los Buffers de entrada y salida quedar en 8 bytes. Hasta que no logres tener buena prctica en la realizacin de esta clase de aplicaciones, te recomendamos utilizar siempre los valores indicados por default. Son ms que suficientes para las aplicaciones a nivel inicial como la que haremos en esta entrega. En la pantalla siguiente puedes seleccionar el lugar donde guardars los archivos que se cargarn en dos carpetas individuales: una para el programa base del microcontrolador y otra para el software de aplicacin que utilizars en el ordenador. Siempre trata de buscar una locacin de nombre corto que se encuentre cercana al rbol raz del disco duro porque con nombres extensos el compilador puede generar errores al armar los programas. Debajo de la seleccin del PIC, tienes un casillero para habilitar la generacin automtica de un programa manejado con interrupciones que mantengan viva la conexin USB durante todo el tiempo

que ests conectado. Como puedes ver, no tendrs que preocuparte por realizar un programa con los tiempos bien ajustados. Listo, eso es todo. A la siguiente pantalla, el sistema comenzar a organizar y armar el cdigo; t slo debes esperar a que termine su trabajo sin errores.

EasyHID har su trabajo y t esperars el resultado listo para usar Una vez que hayas realizado estos cinco sencillos pasos, tendrs los programas listos para comenzar a trabajar. Lo primero que debes hacer es definir el tipo de hardware que utilizars alrededor del microcontrolador seleccionado y en funcin de l organizar todo el resto de la aplicacin. Es decir, en este caso, slo colocaremos un pulsador y un LED como componentes adicionales y un LCD de 16 caracteres y dos lneas. Adems de definir el hardware que utilizars, tambin aqu se define la idea bsica del software que crears para utilizar y controlar tu aplicacin desde el ordenador. Para nosotros es importante poder controlar de manera autnoma el dispositivo que hemos ideado con el PIC y poder hacerlo a travs del ordenador, si es que lo deseamos. En este ltimo caso, al conectarlo al ordenador porttil, los mandos en el hardware dejarn de funcionar y el LCD nos indicar que estamos conectados al ordenador y podremos as operar el hardware directamente a travs del puerto USB. El circuito En el circuito podemos ver claramente definidos los sectores ms importantes del desarrollo: el PIC 18F4550, al centro de la imagen, el display LCD 16X2, el conector USB, el conector ICSP para poder programar el PIC en forma serial y sin necesidad de extraerlo del proyecto, el cristal de 20Mhz, el pulsador, el LED que elegimos de color verde y, por ltimo, el ingreso de la seal de 5 volts provenientes desde el ordenador a travs del conector USB. Muchos desarrollos basan su alimentacin en esta tensin que extraen desde el conector. Un ejemplo de esto es el mecanismo de la carga de bateras de muchos MPX (MP3, MP4, MP5, etc.) o de algn GPS. Los quemadores de PICs suelen extraer alimentacin desde este puerto y muchas otras aplicaciones tambin lo hacen. Debes tener en cuenta que esta salida de tensin tiene un mximo posible de 500 miliamperes; si te excedes de este

consumo, puedes daar la salida del puerto. En muchas oportunidades bastar con reponer un resistor fusible en el motherboard, pero te aconsejamos no jugar con esta suerte.

El circuito propuesto con conexin USB utilizando el PIC 18F4550 Adems, debes recordar que en la tercera pantalla del EasyHID USB Wizard, por default, esta corriente se limita a 50 mA. Este pequeo valor ser suficiente para extraer de all la informacin que le daremos al programa del PIC para indicarle que nos estamos conectando al ordenador. Pero antes de escribir siquiera una lnea de cdigo de programa, debemos grabar el PIC con el firmware que nos gener el EasyHID (previo compilarlo y obtener el .HEX). Luego de grabarlo, procederemos a conectarlo al ordenador para que ste lo reconozca como un nuevo dispositivo HID (Human Interface Device) y para que estemos seguros de que no hayan existido errores en la generacin del cdigo, al menos, en el correspondiente al microcontrolador.

Las imgenes aparecern como al instalar cualquier dispositivo USB

Por ltimo, verificas que el dispositivo funcione correctamente

El nombre del producto seleccionado en la primera imagen deber aparecer al conectar el dispositivo avisando que ha encontrado un nuevo hardware. Luego de esto veremos el mensaje que indica que se trata de un dispositivo de interfaz humana USB. Si todo marcha correcto, finalizar la instalacin indicando que el dispositivo se ha instalado con xito y que funciona correctamente. Si todo es as, dentro de Configuracin > Panel de Control > Sistema > Hardware > Administrador de Dispositivos, encontrars una imagen como la que puedes ver a la derecha. Esto es vlido para el SO XP. Importante: No intentes ponerte a jugar queriendo insertar y extraer varias veces el conector del ordenador ya que el dispositivo creado se identificar una vez y, para que el ordenador vuelva a reconocerlo, debes reiniciarlo o apagarlo y volver a conectarlo (a tu proyecto). Esto es debido a la estructura del programa que ya veremos cmo funciona y qu parmetros podremos aprender a dominar y manejar a gusto. El programa dentro del PIC, en el cdigo que genera EasyHID, tiene una lgica muy sencilla pero a la vez muy rgida y al principio complicada de entender. Pero una vez que comprendes el mecanismo de trabajo, tus desarrollos se harn

realidad en pocos minutos. La rutina se basa en interrogar, en primera instancia, si el dispositivo est conectado al puerto USB. Si no lo est, queda en un bucle infinito del que no sale hasta detectar la conexin o hasta que se reinicia el PIC. Esto sucede en la ltima parte donde vemos la etiqueta AttachToUSB. Como puedes ver, all se repite en un lazo infinito hasta que (UNTIL) el registro interno del PIC detecte la conexin al puerto USB. Para ser claro: si antes de esto pensabas poner un destellador, un blinker, un reproductor de MP3 o lo que se te ocurra dentro de tu PIC, debes saber que hasta que no lo conectes a un puerto USB, el cdigo del programa quedar muerto en ese lazo.

Salir del AttachToUSB nos permitir tener un diseo autnomo y a la vez operable por USB Es por esto que con el simple agregado de una lnea de cdigo puedes esquivar esta atadura y salir del lazo. Para esto vamos a utilizar la tensin de entrada de 5Volts que trae el puerto USB, ingresando a travs de R6 y R5 a RC0. Si RC0 no detecta tensin de entrada, deber sacarnos del bucle y llevarnos hacia otro lugar del programa que agregaremos nosotros donde no sea necesario estar conectado a un puerto USB y donde podamos realizar cualquier funcin tal como hacemos con cualquier otro microcontrolador. Dentro de ese lazo cerrado que utilizaremos para realizar una actividad autnoma, podremos escribir/leer una memoria EEPROM, interpretar un teclado, manejar un display LCD y cualquier otra cosa a la que ya estemos acostumbrados.

Controlando la presencia de tensin en RC0, sabremos si debemos salir o quedarnos en el lazo USB

De esta forma, cuando encendamos nuestro dispositivo, apenas caiga en la instruccin de verificar la insercin en el puerto USB, ser enviado fuera de ese lazo cerrado y pasar a funcionar de manera autnoma. Nosotros hemos decidido mostrar este funcionamiento en el display LCD con el mensaje alusivo correspondiente. Es en esta seccin del programa creada por nosotros mismos en la que delinearemos el funcionamiento autnomo del desarrollo. Aqu decidiremos qu har por s sola nuestra creacin. Para el caso de muestra que nos convoca, slo encenderemos y apagaremos un LED con un pulsador. Pero t puedes expandir la aplicacin a un sistema de adquisicin de datos para aplicaciones de campo que guarde en una tarjeta SD o en memorias EEPROM de gran capacidad datos que despus pueden ser analizados en laboratorio. O lo que sea. Nosotros, por ejemplo, utilizaremos esta base para controlar nuestro receptor de VHF-UHF que venimos entregando por secciones cada sbado. Tambin puedes construir un Holter Cardaco para monitorear pacientes con insuficiencia cardiovascular. O lo que tu imaginacin sea capaz de lograr.

La condicin de funcionamiento de este sistema dual se basa en la colocacin en la mayor parte que sea posible de la rutina que detecte que el USB se ha conectado, es decir, que RC0 se vuelve igual a uno. Aqu ocurrirn dos cosas: por un lado, el programa puede seguir siendo operado desde su teclado nativo (en nuestro ejemplo, un solo botn) o no. En nuestro ejemplo, el botn deja de funcionar; pasa a interesarnos el trabajo a travs del ordenador. Y por el otro lado, ya debes ir preparando algunas lneas de programa para el software que hayas seleccionado. Nosotros hemos optado por una aplicacin en VB6 que nos muestra varias cosas: por ejemplo, que el sistema se conecta y se desconecta del puerto de manera efectiva y sin inconvenientes (funcionamiento ptimo de la instruccin de PORTC.0). Luego vemos un botn que se encargar de prender y apagar el LED en el dispositivo y un crculo de color que emula esta accin, tal como sucede en el equipo mientras es controlado en forma remota. Por ltimo, un pequeo texto que cambia de Encendido a Apagado acompaando la accin del LED.

Aspecto de la aplicacin que te brindamos para que puedas comenzar a experimentar Tal como se poda ver en el circuito, hemos conectado al LED en PORTC.1 y al botn en PORTC.2. La aplicacin es sencilla pero intenta ser didctica para que comiences a hacer tus primeros pasos en el manejo del puerto USB. Debes tener conciencia que dominar este puerto es la llave de salida para que tus diseos puedan tener aplicaciones exitosas, efectivas y prcticas, sobre todo, en el mundo de los ordenadores porttiles. Volviendo a la programacin del microcontrolador, que es la ms compleja, debemos seguir aclarando puntos difciles dentro de la rutina del servicio USB. Entre las cuestiones que suelen traernos dolores de cabeza estn los buffers y su ubicacin o numeracin dentro del PIC respecto a la numeracin que llevarn en el software dentro del ordenador. En Visual Basic, la posicin 0 no se puede emplear ya que se la utiliza para el reporte del dispositivo, tal como lo expresa el cdigo generado: first byte is the report ID, e.g. BufferIn(0) the other bytes are the data from the microcontrolller... Por lo tanto, la enumeracin debe iniciarse desde el 1 hasta el 8 y esto corresponder dentro del PIC en posiciones de Buffer que irn del 0 al 7. Es decir, que lo que en el PIC sea USBBuffer[2] y sea un dato para transmitir, en VB6 ser BufferIn(3). Compara entre los listados de los programas que te entregamos, observa este detalle y expndelo utilizando otros botones, otros LEDs, en fin, otros recursos para ampliar las prestaciones del dispositivo remoto desde el ordenador.

Observa que adems tienes dos lazos cerrados que si el programa del PIC cae all dentro se cuelga y no sale ms hasta que lo reinicies. Estos puntos son los momentos en los que entrega los datos al bus desde el buffer (DoUSBOut) o aquellas instancias en las que solicita los datos cargados dentro del buffer (DoUSBIn). Si en cualquiera de los casos no encuentra valores, se quedar all

esperando que lleguen y t debes advertirlo rpidamente para sacarlo de esa situacin. Por eso te entregamos los programas completos. Para que puedas experimentar a partir de un modelo que sabemos que funciona. Ahora depende de tu imaginacin y tu creacin. Esto recin comienza, amigo. Proton e EasyHID lograron hacerlo muy fcil, ahora la conectividad USB est en tus manos.

Vous aimerez peut-être aussi