Many of us in the secret Hackaday lair use gaming hardware at our work desks because it is reliable and performs well. We are not alone, and maybe you are reading this on your coffee break over a 20-button mouse. We wager that [Thiago Ribeiro de Azeredo] has this mindset because he converted some old analog gaming pedals into teleconferencing tools for his home office. Now that he is not racing to the office, he has to take a lot of computer calls, and he must quickly and covertly mute his microphone when his howling son tries to take the stage.
The pedals were gathering dust when he started working from home, but they are unretired for the upgrade. Inside, there is no mystery, just a couple of spring-loaded variable resistors, so he adds an Arduino Nano a couple of 4.7 kΩ resistors to create a voltage divider. The Nano doesn’t have native Human Interface Device (HID) functionality, so a Python script receives the serial port signals and toggles an application bar notification so he can see the microphone status. With two pedals, he can press-to-talk or lock his microphone on and off. We have to wonder, did he write the software during a meeting?
We love the idea of controlling our battle stations with our feet or seeing a bunch of RGB keyboards used as a low-res display.
17 thoughts on “Push Pedal For Privacy”
This would work best as a push to talk.
Just until you’re driving in your car one day and slam on the brakes from reflex when your phone is ringing ;)
What’s with the odd pot wiring? What’s wrong with doing it like this –
Edit- to clarify, I’m doing it this way too for a USB joystick, seems to work fine – genuinely interested in whether there’s a better way.
Incidentally my Logitech steering wheel pedals are wired up really weirdly – they use an RJ11 connector to connect to the wheel, internally the two wipers (Accel + Brake) are just connected together, while pins 1 and 3 of each pot are broken out to the connector! Makes no sense.
it’s because on the older (GamePort era) joysticks, the usual is to have Accel/Brake share an axis, above 50% for accel, below 50% for brake. if it sounds dumb, it’s because there was limited axes to work with and Pedals had to serve double-duty for Racing Wheels or Flight Sim which used a HOTAS that already ate up 3 Axes, leaving the pedals to share Axis 4. the result is a setup that’s Oddball in the modern thought of ‘every control is a unique axis’
It made sense then! not so much now
this limit is still present in the DirectInput HID Gamepad definitions – the shoulder triggers share an axis the same way on DInput/XInput convertible gamepads when in DIN mode. XIN mode gives the shoulders separate axes.
Sharing axis is not relevant as only affect how the data is reported.
The only way one would bother with the fixed resistor is the number of wires needed for the connection. The fixed resistor added non-linearity on the output voltage vs angle. The non-linearity can be removed by solving the equation, but that’s an extra step and might lose a bit of resolution.
What’s really odd though is that this is indeed an old steering wheel pedals combo, but it’s USB, not GamePort. It works without having to get a driver but I have to use a Vista/8 driver from 2007, but it works in Win10. Without it im missing this feature –
The Accel+Brake axes are actually independent, believe it or not, only with the 2007 driver mind you and only when u select it in the driver UI. You get two bars and pressing each one results in is own reading no matter how you’ve pressed the other one.
Boggles my mind trying to understand how this works with the pot wipers joined together by design! Must be some kind of multiplexing going on.
ETA – if you have a game with strict 4-axis support, the Z Throttle is on RstickY with this functionality
For one thing, the fixed 4.7K resistor adds non-linear behavior to the output voltage vs angle. The one with trim pot is linear.
Vout is proportional to 4.7K / (4.7K + Rv)
Might not be a big issue for triggers, but you might want the linearity for a joystick axis.
It appears he is doing it because the old joystick port just measured resistance , something like 0-100k from memory – so thats all the peddles provide.
The old joystick uses a RC timer and measure the time delay and yields a linear relationship.
This however doesn’t get you a linear relationship when you are using a voltage divider with a fixed resistor.
It would be better to use a switch than a pedal that is not as fast of a response. The outgoing volume should be variable down to nothing at all so muting is not obvious. I would make the left pedal be variable and ramp up from it’s normal value the volume of sound. 0 to + 20dB in a split second! It would be handy for those videos with up to minus 20dB narration caused by talking into a mic whose level is designed for lips to touch and using it at a “social distance” making low audio level.
V-usb works just fine on the Arduino Nano. If he really wanted to turn it into a HID controller. Sounds like what he’s got is doing exactly what he wants, though.
I love my digisparks to do USB HID, cheap and small.
I suppose that ana anolugue solution could give better results, expression pedals are commercially made.
And one could elaborate on this putting a wah wah or an chorus/echo effect too.
An analog mute which shorts the mic element would have a couple of advantages.
It’s unhackable. There is no code possible which would allow someone to remotely turn the mic on.
It’s invisible. The conferencing software doesn’t know anything about it so it can’t display the little mute symbol next to your name or picture.
I found through doing something similar, f20 seems to be interpreted both linux and windows as the media key for toggle microphone status. I snagged a pro micro and did something very similar, however no software required on the computer end, just a pure USB hid muting and unmuting. No PTT that way however – Zoom doesn’t let you map PTT to anything other than spacebar, annoyingly.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)