The keyboard and mouse are great, we’re big fans. But for some tasks, such as seeking around in audio and video files, a rotary encoder is a more intuitive way to get the job done. [VincentMakes] liked the idea of having a knob he could turn to adjust his system volume or move forward and backwards through a stream in VLC, but he also wanted to be able to repeatedly enter keyboard commands with it; something commercial offerings apparently weren’t able to do.
So he decided to build his own USB knob that not only looks fantastic, but offers the features he couldn’t find anywhere else. It’s another project which proves that DIY projects don’t have to look DIY. In fact, they can often give their commercial counterparts a run for their money. But this “Infinity USB Knob” isn’t just a pretty face, it allows the user to do some very interesting things such as quickly undo and redo changes to see how they compare.
As you might imagine, the electronics for this project aren’t terribly complex. The main components are the Adafruit Trinket M0 microcontroller and the EC11 rotary encoder itself. To provide nice visual feedback he added in a NeoPixel ring, but that’s not strictly necessary if you’re trying to rig this up yourself. Though we have to say the lighting effects are a big part of what makes this build look so good.
Though certainly not the only part. The aluminum enclosure, combined with the home theater style knob on the encoder, really give the finished product a professional look. We especially like his method of drilling out the top of the case and filling in the holes with epoxy to create easy and durable LED diffusers. Something to keep in mind for your next control panel build, perhaps.
[VincentMakes] has done an excellent job of documenting the hardware and software sides of this build on Hackaday.io, and gives the reader enough information that replicating this project should be pretty straightforward for anyone who’s interested. While we’ve seen several rotary encoder peripherals for the computer in the past, we have to admit this is one of the most compelling yet from a visual and usability standpoint. If this build doesn’t make you consider adding a USB knob to your arsenal, nothing will.
Continue reading “A Classy USB Knob For The Discerning Computerist”
Sometimes it’s necessary to make do with whatever parts one has on hand, but the results of squashing a square peg into a round hole are not always as elegant as [Juan Gg]’s programmable DC load with rotary encoder. [Juan] took a design for a programmable DC load and made it his own in quite a few different ways, including a slick 3D-printed enclosure and color faceplate.
The first thing to catch one’s eye might be that leftmost seven-segment digit. There is a simple reason it doesn’t match its neighbors: [Juan] had to use what he had available, and that meant a mismatched digit. Fortunately, 3D printing one’s own enclosure meant it could be gracefully worked into the design, instead of getting a Dremel or utility knife involved. The next is a bit less obvious: the display lacked a decimal point in the second digit position, so an LED tucked in underneath does the job. Finally, the knob on the right could reasonably be thought to be a rotary encoder, but it’s actually connected to a small DC motor. By biasing the motor with a small DC voltage applied to one lead and reading the resulting voltage from the other, the knob’s speed and direction can be detected, doing a serviceable job as rotary encoder substitute.
The project’s GitHub repository contains the Arduino code for [Juan]’s project, which has its roots in a design EEVblog detailed for an electronic load. For those of you who prefer your DIY rotary encoders to send discrete clicks and pulses instead of an analog voltage, a 3D printed wheel and two microswitches will do the job.
We’ve been told that standing at a desk is good for you, but unless you’re some kind of highly advanced automaton you’re going to have to sit down eventually no matter what all those lifestyle magazines say. That’s where desks like the IKEA SKARSTA come in; they use a crank on the front to raise and lower the desk to whatever height your rapidly aging corporeal form is still capable of maintaining. All the health benefits of a standing desk, without that stinging sense of defeat when you later discover you hate it.
But who wants to turn a crank with their hand in 2019? Certainly not [iLLiac4], who’s spent the last few months working in conjunction with [Martin Mihálek] to add some very impressive features to IKEA’s adjustable table. Replacing the hand crank with a motorized system which can do the raising and lifting was only part of it, the project also includes a slick control panel with a digital display that shows the current table height and even allows the user to set and recall specific positions. The project is still in active development and has a few kinks to work out, but it looks exceptionally promising if you’re looking to get a very capable adjustable desk without breaking the bank.
The heart of the project is a 3D printable device which uses a low-RPM DC gear motor to turn the hex shaft where the crank would normally go. A rotary encoder is linked to the shaft of the motor by way of printed GT2 pulleys and a short length of belt, which gives the system positional information and avoids the complexity of adding limit switches to the table itself.
For controlling the motor the user is given the option between using relays or an H-Bridge PWM driver board, but in either event an Arduino Nano will be running the show. In addition to controlling the motor and reading the output of the rotary encoder, the Arduino also handles the front panel controls. This consists of a TM1637 four digit LED display originally intended for clocks, as well as six momentary contact tactile switches complete with 3D printed caps. The front panel’s simple user interface not only allows for setting and recalling three preset desk heights, but can even be used to perform the calibration routine without having to go in and hack the source code to change minimum and maximum positions.
We’ve seen all manner of hacks and modifications dealing with IKEA products, from a shelving unit converted into a vivarium to a table doing double duty as a cheap plate reverb. Whether you’re looking for meatballs or some hacking inspiration, IKEA seems to be the place to go.
In the era of touch screens and capacitive buttons, we’d be lying if we said we didn’t have the occasional pang of nostalgia for the good old days when interfacing with devices had a bit more heft to it. The physical clunk and snap of switches never seems to get old, and while you can always pick up a mechanical keyboard for your computer if you want to hear that beautiful staccato sound while firing off your angry Tweets, there’s a definite dearth of mechanical interface devices otherwise.
[Jeremy Cook] decided to take matters into his own hands (literally and figuratively) by designing his own multipurpose USB rotary input device. It’s not a replacement for the mouse or keyboard, but a third pillar of the desktop which offers a unique way of controlling software. It’s naturally suited to controlling things like volume or any other variable which would benefit from some fine tuning, but as demonstrated in the video after the break even has some gaming applications. No doubt the good readers of Hackaday could think of even more potential applications for a gadget like this.
The device is built around the diminutive Arduino-compatible PICO board by MellBell, which features a ATmega32u4 and native USB. This allowed him to very rapidly spin up a USB Human Interface Device (HID) with minimal headaches, all he had to do was hang his buttons and rotary encoder on the PICO’s digital pins. To that end, he [Jeremy] used the fantastic I2C rotary encoder designed by [fattore.saimon], which readers may remember as a finalist in the Open Hardware Design Challenge phase of the 2018 Hackaday Prize. He also added a NeoPixel ring around the encoder to use for some visual feedback and because, well, it just looks cool.
Since all of the core components are digital, there’s not a whole lot required in the way of wiring or passive components. This let [Jeremy] put the whole thing together on a piece of perfboard, freeing him up to spend time designing the 3D printed enclosure complete with translucent lid so he can see the NeoPixel blinkenlights. He got the tolerances tight enough that the whole device can be neatly press-fit together, and even thought to add holes in the bottom of the case so he could push the perfboard back out if he needed to down the line.
[Jeremy] spends a good chunk of the video going over the software setup and development of the firmware, and details some of the nuances he had to wrap his head around when working with the I2C encoder. He also explains the math involved in getting his encoder to emulate a mouse cursor moving in a circle, which he thinks could be useful when emulating games that originally used an encoder such as Tempest or Pong.
We’ve seen similar USB “knobs” in the past for controlling volume, but the additional inputs that [Jeremy] built into his version definitely makes it a bit more practical. Of course we’re suckers for interesting USB input devices to begin with.
Continue reading “Every Computer Deserves a Rotary Encoder”
If you have a brushless motor, you have some magnets, a bunch of coils arranged in a circle, and theoretically, all the parts you need to build a rotary encoder. A lot of people have used brushless or stepper motors as rotary encoders, but they all seem to do it by using the motor as a generator and looking at the phases and voltages. For their Hackaday Prize project, [besenyeim] is doing it differently: they’re using motors as coupled inductors, and it looks like this is a viable way to turn a motor into an encoder.
The experimental setup for this project is a Blue Pill microcontroller based on the STM32F103. This, combined with a set of half-bridges used to drive the motor, are really the only thing needed to both spin the motor and detect where the motor is. The circuit works by using six digital outputs to drive the high and low sided of the half-bridges, and three analog inputs used as feedback. The resulting waveform graph looks like three weird stairsteps that are out of phase with each other, and with the right processing, that’s enough to detect the position of the motor.
Right now, the project is aiming to send a command over serial to a microcontroller and have the motor spin to a specific position. No, it’s not a completely closed-loop control scheme for turning a motor, but it’s actually not that bad. Future work is going to turn these motors into haptic feedback controllers, although we’re sure there are a few Raspberry Pi robots out there that would love odometry in the motor. You can check out a video of this setup in action below.
Continue reading “Using Motors As Encoders”
[Raphaël Yancey] wanted to be able to jam to Bounce FM and Radio:X all the time, without having to steal a car or a street sweeper in San Andreas. As people who like to put on the sad piano building music from The Sims and write Hackaday posts, we can totally relate.
But this isn’t just another one of those jam-a-Pi-into-a-vintage-radio-and-call-it-a-sandwich projects (not that there’s anything wrong with those). This thing acts like a real radio. All the stations play continuously whether you’re tuned in or not, and they bleed into each other as you go up and down the dial.
After much trial and error, [Raphaël] found a Python mixer that would work, but it was no longer maintained. He forked it, squashed a bug or two, and wrote a module for KY040 rotary encoders to make them play nice with the Pi. The snake charming doesn’t stop there: the rock star of this project is [Raphaël]’s virtual radio software, which handles the audio blending as he tunes between stations. A step-by-step tutorial is coming soon, so watch [Raphaël]’s site for updates. Tune past the break to give it a listen.
Adventures in Raspi radio-ing don’t have to be one-way. Here’s how you can turn one into an AM/FM+ transmitter using a DVB-T dongle and SDR.
Continue reading “GTA: San Andreas Radio Earns Six-Star Wanted Level”
We always think it is interesting that a regular DC motor and a generator are about the same thing. Sure, each is optimized for its purpose, but inefficiencies aside, you can use electricity to rotate a shaft or use a rotating shaft to generate electricity. [Andriyf1] has a slightly different trick. He shows how to use a stepper motor as an encoder. You can see a video of the setup below.
It makes sense. If the coils in the stepper can move the shaft, then moving the shaft should induce a current in the coils. He does note that at slow speeds you can miss pulses, however. Again, the device isn’t really optimized for this type of operation.
The circuit uses an opamp-based differential amplifier to read the pulses from the coil. Two opamps on two coils produce a quadrature signal just like a normal encoder. When the shaft turns in one direction, one pulse will lead the other. In the other direction, the lead pulse will be reversed.
There’s code to let an Arduino read the pulses. And here’s plenty of code that will read quadrature on an Arduino or other processors. We’ve seen similar hacks done with hard drive motors which are quite similar, by the way.
Continue reading “Stepper Motor? Encoder? It’s Both!”