JC Pro Macro Rotary Computer Input
August 24, 2021
Most computer users interact with their device using a keyboard and mouse. Some of us have switched to a trackball-style input and/or a new keyboard better suited to one’s body style or use, but at the end of the day, what you normally buy online or from a brick-and-mortar store is designed to suit a large number of users.
What I wanted was a rotary input device to augment my keyboard/mouse setup, that was customized to my specific use and that could be reproduced for others if they wanted one as well. For that purpose, I came up with the JC Pro Macro. It’s named after the Arduino/ATmega32u4 Pro Micro board that connects to a computer as a human interface device (HID), plus my name, Jeremy Cook. Its most prominent features are a rotary encoder, plus 5 keyboard-style switches that can be assigned to whatever function you need. It also breaks out four GPIO pins (including I2C) for theoretically unlimited control possibilities.
Rotary Input Journey
Of course, this wasn’t my first try at an auxiliary input system. Four years ago I created my first volume control knob based on the Adafruit Trinket ATtiny85 development board, and followed up on it with a more capable device that had an extra button, lights, and 3D-printed parts. After I started designing circuit boards with KiCad, it seemed it was only a matter of time before these two worlds would collide.
Design and Customization
My idea for a compact macro pad was to arrange the Pro Micro board in the middle of the keys, letting the keycaps almost hang over the little board, as well as the rotary encoder knob. This worked out well for 5 keys and the encoder, leaving space for four WS2812B LEDs that act as a simple output device. Each key is directly wired into the Pro Micro board as a INPUT_PULLUP, making the wiring simple.
Image Credit: Jeremy Cook
To design this board in KiCad, I had to use custom libraries for the key switches, as well as the Pro Micro board. I wrote about how to add custom symbol libraries here, and as well as footprints in a separate article. I was also able to link up 3D files and even download custom models from GrabCAD to create a nice 3D model of the board, exporting this data to help design the base.
After the design was mostly finished, I expanded it to the front and back to accommodate 3mm screws and standoffs, leaving a bit of extra space that I decorated with a hatched pattern and a “JC Pro Macro” label. This led to what I think is the coolest feature of the device, as with this extra space on the upper-left part of the board I broke out the I2C pins, as well as GND and +5V. In a second iteration I also broke out GPIO pins 6 and 7 on the upper-right.
As shown in the video, I’m able to control media functions, as well as put it into a “jiggler” mode that randomly moves the mouse around to keep your computer awake. I’ve been working on different control modes to make it more usable in a variety of situations. One obvious use would be for Zoom calls and other teleconferencing applications, though any other program could be augmented as well.
Caption: GPIO pins broken out on left and on right sides of the board.
Image Credit: Jeremy Cook
I initially listed them for sale on Tindie and was happy to find that the six I had up there were gone within a few days. Subsequent orders include the extra GPIO breakouts, as well as pre-soldered WS2812B LEDs. As for what I will do with this, one might note that the arrangement of the pins line up nicely for controlling a PC fan (GND, Vcc, RPM feedback, PWM control), or a hobby-grade servo motor (GND, Vcc, signal). I have a few ideas.
More to come ??️ pic.twitter.com/X45lxZ0zhD— Jeremy Cook ? (@JeremySCook) August 3, 2021
Custom User Interface: A Good Idea?
One might wonder if my fascination with new and unique input devices is a bit silly. After all, is the productivity gained from being able to precisely adjust the computer’s volume worth the many hours that I’ve put into it?
I’d have to admit that, if I was just developing it for myself, the answer is “probably not.” However, if I include all of the shortcuts I’ve learned that save a few clicks/seconds over and over, day after day, and other interface tricks that I use to speed up my work, then yes, absolutely this pursuit of streamlined work is worth the effort. Plus there is something really pleasing about rotating a knob to increase/decrease a song’s volume or perform other tasks, so there is that.
I do love the challenge of designing a new PCB, especially one that I can sell and/or write articles about. Any time you can learn, have fun, and potentially get paid for it in the process is a win-win-win in my book!
Jeremy Cook is a freelance tech journalist and engineering consultant with over 10 years of factory automation experience. An avid maker and experimenter, you can follow him on Twitter, or see his electromechanical exploits on the Jeremy Cook YouTube Channel!