Herramientas de usuario

Herramientas del sitio


Barra lateral

Logo ACEMU

acemu:articulos:articulos_tecnicos:software:adafruit_trinket

Adafruit Trinket ATTiny85 y el IDE de Arduino

Cómo manejar este bicho desde Linux

Referencias: Introducción al Trinket de Adafruit

Ojo: el trinket sólo funciona en puertos USB 2.0. No lo podemos manejar con USB 3.0!

Para poder programar este dispositivo, empleando el IDE de Arduino (versión 1.6 o superior), es necesario hacer unas cuantas cosas antes.

Registrar el dispositivo en el IDE de Arduino

Para eso seguir las instrucciones que se recomiendan en el sitio web de Adafruit y podemos resumir como sigue:

1) Primero debemos conseguir el firmware de Adafruit para que el IDE de Arduino sea capaz de manejarlo. Para eso ir a Unofficial-list-of-3rd-party-boards-support-urls y allí buscar el link que corresponde a Adafruit:

https://adafruit.github.io/arduino-board-index/package_adafruit_index.json

Copiar ese link en las preferencias del IDE de Arduino: Ir a

Archivo –> Preferencias

y en esa ventana, copiar el link donde dice Additional Boards Manager URLs

2) Instalar los board managers en el IDE de Arduino: para eso vamos a

Herramientas –> Placa: –> Board Managers

eso abre la ventana de Boards Manager y allí seleccionamos Type –> Contributed y del listado que aparezca en la ventana, seleccionar e instalar el marcado como Adafruits AVR Boards

De esa manera, de ahora en adelante aparecerán en las placas disponibles, las que correspondan a Adafruits, entre ellas seleccionar la Adafruit Trinket 8MHz cuando queramos programar el trinket

3) Como programador hay que usar el USBtinyISP

Habilitar la lectura/escritura al dispositivo en Linux

Bajo Linux es muy probable que no podamos escribir (programar) el trinket a menos que lo hagamos como root. El problema es el siguiente: si luego de conectar el trinket ejecutamos el comando dmesg en alguna consola, veremos algo por el estilo:

[10862.096128] usb 3-5: USB disconnect, device number 13
[10862.750972] usb 3-5: new low-speed USB device number 14 using xhci_hcd
[10862.777018] usb 3-5: New USB device found, idVendor=1781, idProduct=0c9f
[10862.777027] usb 3-5: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[10862.777032] usb 3-5: Product: Trinket
[10862.777036] usb 3-5: Manufacturer: Adafruit

Vemos que lo reconoce con IDs de Adafruit: idVendor=1781, idProduct=0c9f

Si ejecutamos el comando lsusb obtendremos una listado de dispositivos USB, entre los cuales encontramos el trinket como USBtiny

Bus 003 Device 014: ID 1781:0c9f Multiple Vendors USBtiny

En este caso el dispositivo quedó en el Bus 3, identificado como dispositivo 14 (vemos que coindice con los datos que declara dmesg.

Así que si miramos los permisos que tiene el dispositivo:

ls -la /dev/bus/usb/003/014

puede que veamos algo similar a lo siguiente:

crw-rw-r-- 1 root root 189, 269 sep 14 23:41 /dev/bus/usb/003/014

Eso quiere decir que sólo root tiene permiso de escritura. Los demás usuarios del sistema sólo pueden leer del dispositivo.

Para poder cambiar esta situación, tenemos que crear una regla de udev nueva.

udevd es el demonio que atiende los eventos del kernel asociados a dispositivos. En particular cuando conectás o desconectás un dispositivo, de alguna manera el sistema tiene que enterarse y hacer algo al respecto.

Entonces el udevd es el demonio que se encarga de hacer lo que las reglas para ese dispositivo dicen que haya que hacer cuando ese dispositivo se conecta al sistema.

Como por defecto Linux no sabe qué hacer con un dispositivo como el trinket, hay que generar una regla particular para ese dispositivo. La regla que hay que incluir es muy sencilla: cuando veas el dispositivo con el idProduct e idVendor de Adafruit, asociá ese dispositivo a un grupo de usuarios particular del sistema.

Como root, podemos crear un archivo nuevo en /etc/udev/rules.d, llamémosle 99-USB-Adafruit-Trinket.rules y pongamos en su interior el siguiente texto:

# Set Group for Adafruit Trinket
SUBSYSTEM=="usb", ATTRS{idVendor}=="1781", ATTRS{idProduct}=="0c9f", GROUP="plugdev"

En este caso vemos que estamos identificando el dispositivo a partir de sus idVendor e idProduct, y la regla lo que hace es asociar el dispositivo al grupo plugdev.

Al salvar el archivo, gracias a inotify el subsistema de udev detecta que apareció un archivo de reglas nuevo y las tendrá en cuenta a partir de ese momento en adelante. Si ahora reiniciamos el trinket (con el botoncito que tiene en la punta) o lo desconectamos y volemos a reconectar al USB, al detectarlo el udev le va a aplicar la nueva regla.

Supongamos que luego de reiniciar el trinket, el sistema lo asocia al bus USB 003 y lo etiqueta como dispositivo 015, al listarlo en consola comprobamos que los permisos cambiaron:

crw-rw-r-- 1 root plugdev 189, 269 sep 14 23:41 /dev/bus/usb/003/015

Ahora alcanza con asignar al o los usuarios de linux que queramos que tengan permisos de escritura, al grupo plugdev (puede ser cualquier grupo que ya exista en /etc/group o podemos crear un grupo nuevo, a gusto de consumidor).

Por ejemplo en mi caso el archivo /etc/group quedó con la siguiente línea modificada:

plugdev:x:46:ken

De esa manera me aseguro de tener los permisos adecuados para escribir (programar) el trinket.

acemu/articulos/articulos_tecnicos/software/adafruit_trinket.txt · Última modificación: 2016/09/15 08:04 por kenneth