viernes, 8 de mayo de 2015

Arduino UNO como dispositivo HID

Bien hoy escribiré con el propósito de explicar como conseguir que nuestra tarjeta Arduino en mi caso un Arduino UNO funcione como un dispositivo de interfaz humana HID (Human Interface Device). Esta es un funcionalidad que se logra extra con un procedimiento reversible y es algo muy útil para algunos de nuestros proyectos cuando nuestro dispositivo necesita funcionar como una interfaz de entrada en diversos sistemas como por ejemplo una consola de vídeo juegos como un Xbox 360 o un PS3, o también como un teclado automático como anteriormente utilice una tarjeta Teensy 3.1 en este post que precisamente tiene esta función de fabrica y ahora podremos tenerla en nuestra tarjeta sin necesidad de adquirir ningún modulo.

Para comenzar debo explicarles que la tarjeta UNO se compone entre diversas cosas de un microcontrolador principal y uno secundario, probablemente los conozcamos a ambos pero sin duda estamos mas familiarizado con el principal el ATMEGA328 que es el que programamos directamente desde el IDE de Arduino, pero este no es el único microcontrolador con poder a bordo de la tarjeta también esta el ATMEGA16U2 este microcontrolador es el encargado de comunicar nuestra computadora con el ATMEGA328 pues entre otras cosas posee un puerto de USB que es el que en realidad utilizamos cuando conectamos la tarjeta a nuestro PC, este principalmente se encarga de "rutear" la comunicación de USB al serial del ATMEGA328 y viceversa es por ello que cuando conectamos nuestra tarjeta por USB nuestra computadora lo reconoce como un puerto Serial COM, es ahí donde radica el objetivo de este post ya que lo que aremos sera programar ese ATMEGA16U2 con otro firmware para que no funcione como un Serial COM si no como un teclado, un joystick, un mouse o un control de vídeo consola.

En la siguiente imagen se puede observar a rasgos muy generales como es la comunicación con el microcontrolador principal a través de la conexión directa USB del ATMEGA16U2.
Esquema general de la comunicación entre el PC con ATMEGA328 a través del ATMEGA16U2

Para conseguir grabar un sketch en Arduino basta con conectarlo a nuestra computadora seleccionar el puerto serial en el IDE y dar grabar, para grabar el ATMEGA16U2 el proceso es un poco diferente pero no por ello mas complicado solo que tendremos que descargar un software especial llamado FLIP que esta disponible para descargar de manera gratuita aqui desde la pagina de ATMEL ese sera el primer paso, ahora algo importante es que para poder conseguir la grabación necesitaremos entrar en modo DFU (Device Firmware Upgrade) para entrar en este modo sera  necesario unir por un instante los siguientes pines de nuestra tarjeta como se muestra en la fotografía siguiente esto para un Arduino UNO SMD si nosotros tenemos una placa UNO convencional sera necesario agregar una resistencia de 10kOhm como también puede observarse a continuación.

Puente necesario para la grabación

Resistencia necesaria si nuestra tarjeta no es SMD
Los firmwares son diferentes para cada una de las aplicaciones es decir hay un firmware para que opere como teclado otro para que opere como Joystick, aquí hay algunos de los firmware disponibles pero para comenzar yo recomiendo descargar estos 2 luego ya que dominen el proceso podrá experimentar con los demás.

Firmwares de prueba

1. firmware de fabrica para Arduino UNO, USB-SERIAL - DESCARGAR
2. firmware para operar como teclado HID - DESCARGAR
3. Aquí un Sketch de prueba para teclado - DESCARGAR

Bien para que sea mas claro describiré el procedimiento en una serie de pasos

  1. Descargar e instalar el software FLIP desde la pagina de ATMEL aquí
  2. Agregar el puente de resistencia si nuestra tarjeta no es SMD
  3. Conectar la tarjeta al PC y grabar el sketch que necesitemos
  4. Conectar la tarjeta al PC y aplicar la unión de los pines por 1 Segundo nuestro disposivos aparecerá como Dispositivo desconocido
  5. Ir al administrador de dispositivos e instalar el driver del ATMEGA16U2 que se encuentra en la siguiente ruta C:\Program Files\Atmel\Flip 3.4.7\usb
  6. Lanzar FLIP e ir a file/Load HEX file y seleccionar el archivo HEX perteneciente al firmware que deseamos grabar.
  7. En FLIP ir a Settings/Communication/ y seleccionar USB ó presionar Ctrl+U
  8. En el programa seleccionar Device/Erase y luego Erase/Program
  9. Desconectar nuestra tarjeta y conectar donde necesitamos el dispositivo HID
Es importante mencionar que el procedimiento se hace cada vez que hagamos una modificación al sketch es decir tendremos que grabar de nuevo el firmware original de la tarjeta para poder cargar el programa al ATMEGA328.

Bueno espero tener tiempo próximamente para actualizar esto con imágenes y de una manera un poco mas gráfica, si  mas espero que les sea de utilidad.






jueves, 7 de mayo de 2015

Microcontroladores y Microprocesadores

Hoy escribo esto con la finalidad de tratar de explicar para mi mismo y para quien tenga la necesidad de saber, las diferencias que existen entre un microcontrolador y un microprocesador, frecuentemente me hacia esa pregunta y en ocasiones la respuesta podemos tenerla bastante clara pero cuando queremos expresarla formalmente es un poco difícil de explicar y aun mas cuando deseas explicarlo a alguien que te lo pregunta y no esta muy familiarizado con electrónica o sistemas digitales.

Los microcontroladores son computadoras encapsuladas en un circuito integrado o chip que se componen de diversos componentes, una Unidad Central de Procesamiento (CPU, Central Processing Unit), memoria de programa, memoria de datos, puertos de entradas y salidas digitales, temporizadores (timers) e interrupciones internas y externas. Todos los componentes mencionados se encuentran encapsulados en un único circuito integrado. Podemos decir que los microcontroladores son dispositivos inteligentes que se emplean en sistemas de monitoreo y control. Estos dispositivos son los responsables de la revolución digital y se emplean en muchísimos dispositivos de uso diario como teléfonos, impresoras, vídeo juegos y reproductores de medios.

Microcontrolador típico



Un microcontrolador se diferencia de un microprocesador en diversos aspectos. lo principal es que el microprocesador necesita de componentes externos para funcionar como memoria, reloj, dispositivos de entrada y salida. También es importante mencionar que los microprocesadores son generalmente mas poderosos pero ello implica que el consumo de energía sera mayor, que posiblemente necesitaran de dispositivos de enfriamiento y que su costos es mas elevado.

Microprocesador típico montado en un circuito integrado

Los microcontroladores son ideales para sistemas dedicados donde se realiza un tarea especifica, mientras que los microprocesadores son mejores para aplicaciones de propósito general, donde las tareas pueden ser múltiples y simultaneas.

Bueno espero les sea útil la información

Fuente: PIC Basic Projects "by" Dorgan Ibrahim