martes, 12 de marzo de 2013

Llaves electronicas usb

En esta entrada exponemos una implementacion de llave electronica para proteger el código fuente de copias no autorizadas utilizando una placa generica basada en AVR especificamente ATtiny85, sin embargo es posible hacerla con otro mcu solo que quedaria con un tamaño un poco mas grande.

En la internet se consiguen varias implementaciones de estas placas a continuacion muestro un diseño muy simple

hay que acotar que en este caso es necesario colocar un pequeño regulador de 3v3 para alimentar el mcu y sobre todo los pines D+ y D- del usb; en otros diseños prefieren alimentar el mcu con los 5v y colocar un par de zener en D+ y D-, de igual manera cualquiera funciona, en mi caso particular hice algo menos fastidioso... utilizar el AVRStick de Sparkfun, simplemente hice un nuevo desarrollo basado en el diseño de ellos obteniendo resultados satisfactorios.

Para subir el programa en la plaquita utilizé los famosos pines pogo


simplemente es un pin que posee un resorte interno esto con el objeto de hacer un adaptador icsp de 6 pines para programar la plaquita 





por ultimo subo el programa que implenta la llave electronica basada en la libreria libusb ya que el micro ATtiny85 no posee puerto USB, en esta ocasión no utilicé la IDE de Arduino sino que lo hice directamente con el AVRStudio. Es importantes aclarar que hay que conectar la plaquita a la alimentacion preferiblemente no a la computadora sino a una toma externa para que no intente reconocerla.


por último colocamos las tapitas de pendrive y quedo de la siguiente manera




En el programa que va dentro del mcu se le coloca en las definiciones de USB_CFG_VENDOR_NAME y USB_CFG_DEVICE_NAME nuestro valores respectivos, ojo no debemos utilizar valores que corresponda a otros dispositivos comerciales. 

Cuando se inserta la llave en una maquina pedirá el driver y la va a reconocer con el nombre de fabricante y el nombre de dispositivo definido en la llave electronica.