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”
SHUT UP AND TAKE MY MONEY!
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”.
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.
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.
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.
Why no video of how it looks lit up?
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.
Have fun hooking into MAME for all of that.
VCR tape heads make the absolute BEST heavy volume spinner knobs. Sadly they are now hard to find.
You can find TONs at local Goodwill superstores!
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.
Yeah, it’s transparently clear that they are making BILLIONS in filthy profits.
I actually have 2 video heads in the loft for this exact reason. :)
Just looked up the neopixel, are they WS2812’s?
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.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)