Cloning the Trinket for a USB Volume Knob

A while back, [Rupert] wrote a blog post on using V-USB with the very small, 8-pin ATtiny85. Since then, the space of dev boards for 8-pin micros with USB has exploded, the most recent being Adafruit’s Trinket. [Rupert] liked what he saw with the Trinket bootloader and decided to clone the circuit into a useful package. Thus was born an awesome looking USB volume knob┬ácomplete with a heavy aluminum knob, rotary encoder, and RGB LED strip.

[Rupert] got his V-USB/ATtiny85/rotary encoder circuit working, and at the expense of a ‘mute’ control, also added an awesome looking RGB LED ring powered by Adafruit’s Neopixels. The PCB [Rupert] fabbed is pretty well suited for being manufactured one-sided. If you’ve ever wanted an awesome volume knob for your computer, all the files are available form [Rupert]’s blog.

Just as an aside, [Rupert] has been working on getting the Trinket bootloader working on the ATtiny84, a very similar microcontroller to the ’85, but with eight analog pins. It’s a neat device that I’ve made a small V-USB breakout board for, but like [Rupert], I’m stuck on porting the bootloader. If anyone has the Trinket/Gemma firmware running on an ATtiny84, send that in. We’ll put it up.

16 thoughts on “Cloning the Trinket for a USB Volume Knob

  1. Why does it have to by the Trinket/Gemma bootloader? It is rather bulky.

    Using a USB based bootloader on the ATtiny84 has the disadvantage that you need an external quartz. You cannot use the internal rc-oscillator like on the ATtiny85 due to the lack of a PLL.

    There are plenty of nice serial bootloaders that are much better suited for the ATtiny84. Search for “Fastload”.

    1. The Gemma bootloader is great because it does USB without a crystal. For just about everything it’s good enough, and there was a HaD post a few weeks ago for a Trinket/V-USB serial output.

      1. I should elaborate a bit on that. First of all, the Gemma bootloader is not the only one providing this functionality. There is also the Digispark bootloader, micronucleus, who was there before and has a much smaller memory footprint.

        Getting V-USB bootloaders to work without a crystal is a bit tricky because they work at 16.5 MHz. You can only reach this clock speed with the internal RC oscillator when using the PLL. Unfortunately only few ATtinys come with a PLL (25/45/85, 261/461/861?), the ATtiny 84 does not.

    2. There are problems with not using an external crystal on a consumer control device that is intended to be connected all the time, the USB connection is just not reliable enough.
      If you look at the Adafruit trinket you will find lots of people with connection and enumeration issues. This is not a snub on the Adafruit Trinket its a great product, it is common to all V-USB projects using PLL/internal oscillator, the timings are crucial.

  2. RGB LED ring around a spinner knob for a MAME cabinet. Color shift the LEDs as the knob is spun faster. Have it blink as you take hits then flash white and fade to black when you lose a life.

    If it could also vibrate a bit when you get hit, that’d be even cooler. For a game like TEMPEST, have the LEDs light up in a color matching the enemy that gets you.

      1. Yea, if you want to pay 20 bucks for a vcr. Or 40 for a Playstation without controls. Not PS2 or PS1(The portable one), but the first playstation. 30 for a beat up genesis with no games. Fsck Goodwill, the bastards.

  3. Get to made it for an Attiny84. But LED don’ work, device is renumerated and I can upload using Arduino. But it ends here:

    avrdude: 872 bytes of flash written
    avrdude: verifying flash memory against C:\DOKUME~1\tom\LOKALE~1\Temp\build814328462096500915.tmp\blink84.cpp.hex:
    avrdude: load data flash data from input file C:\DOKUME~1\tom\LOKALE~1\Temp\build814328462096500915.tmp\blink84.cpp.hex:
    avrdude: input file C:\DOKUME~1\tom\LOKALE~1\Temp\build814328462096500915.tmp\blink84.cpp.hex contains 872 bytes
    avrdude: reading on-chip flash data:

    Reading | ################################################## | 100% 0.13s

    avrdude: verifying …
    avrdude: verification error, first mismatch at byte 0x0040
    0x01 != 0xff
    avrdude: verification error; content mismatch

    avrdude done. Thank you.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s