¡Esta es una revisión vieja del documento!
Referencias: Introducción al Trinket de Adafruit
Para poder programar este dispositivo, empleando el IDE de Arduino (versión 1.6 o superior), es necesario hacer unas cuantas cosas antes.
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
Ojo: el trinket sólo funciona en puertos USB 2.0. No lo podemos manejar con USB 3.0!
El problema es el siguiente: si cuando conectamos el trinket ejecutamos el comando dmesg
, 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.
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
lo estamos asociando al grupo plugdev
.
al salvar el archivo, el subsistema de udev
detecta que apareció un archivo de reglas nuevo y las activa inmediatamente. Si ahora miramos los permisos en el filesystem, vemos que el dispositivo cambió de grupo:
crw-rw-r-- 1 root plugdev 189, 269 sep 14 23:41 /dev/bus/usb/003/014
(probablemente haya que reiniciar el trinket para que el cambio tenga efecto…)
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.