Your PC Sound Card As A Sensor Input

The commoditised PC is the most versatile tool many of us will own, and since it has been around for a very long time it is also something that can be found for free or very cheaply if the latest components aren’t a concern. It’s not without limitations though, while it’s designed for expansion it no longer has any ports that can easily be repurposed as GPIOs for reading sensors. A solution for some sensors comes courtesy of [Ruslan Nagimov], who shows us how the PC sound card can become a measurement interface.

The idea is that simple resistive or capacitive sensors can be read through their AC characteristics by sending out a sine wave on one channel of the card and reading the result on the other from a divider circuit. He goes extensively into the code, both for the resistive example and for reactive components, and we can see that it forms a handy extension to the PC capabilities.

We’re sure this technique will find applications for some readers, but it interests us for another platform. Measurement using a mobile phone’s audio jack doesn’t have an inspiring history, but perhaps this could be used as well for mobile sensors.

Coding A Custom Driver For The Adafruit Mini Thermal Printer

Thermal printers are cool… or, uh, warm actually. They use heat to make images, so they never need ink and they print on receipt rolls. The thermal printer available from Adafruit is a particularly tasty example, as it comes fully documented for the budding hacker. [Ed] is one such person, who set about writing his own driver to use the hardware with Linux on a Raspberry Pi.

The project came about as [Ed] didn’t like the halftone output from the standard Adafruit CUPS driver. Thus, a dithering-capable driver was needed instead. The first step of the project was to get dithering working via running such an algorithm into a custom driver, as well as to vary the heating time of the print head to gain greyscale capability. From there, the driver was integrated with CUPS and could be used with the Linux lp command. Finally, measures to deal with the paper running out were coded in as well.

It’s a fun dive into the nitty-gritty of talking to printers at the low level, something that few of us think about when printing concert tickets in a rush. There’s a lot that goes on to get a page to print successfully, and [Ed]’s work leaves us more respect for everything that goes on to get an image on the paper. The driver is available for keen tinkerers over at Github.

Meanwhile, consider a thermal printer for all your banner-printing needs.

Breaking Down The USB Keyboard Interface With Old-Fashioned Pen And Paper

What is better for gaming, old PS/2 style keyboards, or modern USB devices? [Ben Eater] sets out to answer this question, but along the way he ends up breaking down the entire USB keyboard interface.

It turns out that PS/2 and USB are very, very different. A PS/2 keyboard sends your keystroke every time you press a key, as long as it has power. A USB keyboard is more polite, it won’t send your keystrokes to the PC until it asks for them.

To help us make sense of USB’s more complicated transactions, [Ben] prints out the oscilloscope trace of a USB exchange between a PC and keyboard and deciphers it using just a pen and the USB specification. We were surprised to see that USB D+ and D- lines are not just a differential pair but also have more complicated signaling behavior. To investigate how USB handles multi-key rollover, [Ben] even borrowed a fancy oscilloscope that automatically decodes the USB data packets.

It turns out that newer isn’t always better—the cheap low-speed USB keyboard [Ben] tested is much slower than his trusty PS/2 model, and even a much nicer keyboard that uses the faster full-speed USB protocol is still only just about as fast as PS/2.

If you’d like to delve deeper into keyboard protocols, check out [Ben]’s guide to the PS/2 keyboard interface, complete with a breadboarded hardware decoder. If these keyboards have too many keys for your taste, you might consider this USB Morse code keyboard. Thanks to Peter Martin for the Tip!

Illustrated Kristina with an IBM Model M keyboard floating between her hands.

Keebin’ With Kristina: The One With The Chinese Typewriter

As much as I’d like to devote an article to each and every bit of keyboard-related what-have-you that I come across in my travels through the intertubes, there just aren’t enough hours. And after all, this isn’t Clack-a-Day. To that end, I gained editorial approval to bring you a periodic round-up of news and other tidbits on the keyboard and keyboard accessories front, and here we are. So let’s get to it!

Continue reading “Keebin’ With Kristina: The One With The Chinese Typewriter”

Printable Hot-Swap Sockets Make Keyboard Building Even Cooler

Okay, so you want to build a keyboard — something crazy-curvy like the dactyl or dactyl manuform. The kind of keyboard that has to be hand-wired, because key wells and rigid PCBs do not play well together. You want to build this keyboard, but all that hand-wiring would mean that you can’t easily swap switches later. And it will means hours and hours of fiddly soldering. What do you do? You could buy or design your own switch PCBs, but again, those are rigid and space is limited inside of most of these designs.

If you’re [stingray127], you trade those hours of soldering for a week of designing and printing some sweet little hot-swap sockets with wire guides. This is version four, which is easier to print than earlier versions. They are designed to use through-hole diodes and 24 AWG solid-core wire and give a tight fit. Can’t figure out how to use them? [stingray127] has a wiring guide with plenty of pictures.

We really like this idea, and it makes the end result feel more like a totally hand-wired keyboard than individual switch PCBs would As you can see, it involves little solder. The only downside is that you can only swap a few switches at a time, otherwise the matrix might fall apart. But that’s hardly even a downside.

Just want to make a macropad? You can easily print your way out of using a PCB for those, too.

Via KBD and r/mk

Friendly Webcam Robot Keeps An Eye On Privacy

Wouldn’t it be nice if every webcam had a hardware switch? Especially for those built-in webcams like the one in your laptop. Since they don’t have switches yet, we’re just stuck trying to remember to turn them off or re-apply the sticker after every meeting. [Becky Stern] was tired of trying to remember to blind the all-seeing eye, and decided to make a robot companion that would do it for her.

Essentially, a servo-driven, 3D-printed eyelid covers the eye’s iris and also the web cam directly underneath. At first, we though [Becky] had liberated the business parts of a cheap webcam and built it into the eyeball, but this is far less intrusive. The eyeball simply sits atop the monitor, and [Becky] can control the eyelid two ways: she can set a timer with the potentiometer to close it automatically after some number of minutes, or else do it on demand using the momentary button. We’d love to see it tied directly to Zoom and or whatever else [Becky] uses regularly. Be sure to check out the build and demo video after the break to see it in action.

We love this cute and friendly reminder that the camera could be watching us. It’s way less creepy than this realistic eyeball webcam that looks around and blinks.

Continue reading “Friendly Webcam Robot Keeps An Eye On Privacy”

Custom Firmware Teaches USB Relay Board New Tricks

If you’re looking for a quick and easy way to control a few devices from your computer, a cheap USB relay board might be the ideal solution. These are fairly simple gadgets, consisting of little more than a microcontroller and a handful of relays. But that doesn’t mean there isn’t room for improvement, and as [Michał Słomkowski] recently demonstrated, flashing these boards with a custom firmware allows the user to modify their default functionality.

In his case, [Michał] wanted to build a power strip that would cut the power to any devices plugged into it once his computer went to sleep. Unfortunately, he couldn’t just check to see if there was 5 V on the line as his motherboard kept the USB ports powered up all the time. But with some modifications to the relay board’s firmware, he reasoned he should be able to detect if there was any USB activity by watching for the start-of-frame packet that goes out every millisecond when the bus is active.

Wiring up the ATtiny45 for flashing.

Now [Michał] isn’t claiming to be the first person to come up with a custom firmware for one of these boards, in fact, he credits an existing open source firmware project as an inspiration for his work. But he did create an entirely new GPLv3 firmware for these ATtiny45 powered devices, which includes among other improvements the latest version of V-USB. As it so happens, V-USB includes start-of-frame packet detection out of the box, which made it much easier to implement his activity detection code.

With the new firmware flashed to the relay board’s chip, [Michał] put it in an enclosure and wired up the outlets. But there was still one missing piece of the puzzle. It seems that Linux won’t actually send out the start-of-frame packets unless its actively communicating with a USB device, as part of the so-called “selective suspend” power saving feature. Luckily there is support for disabling this feature for specific devices based on their Vendor/Product ID pair, so after a little udev fiddling, everything was working as expected.

We love custom firmware projects here at Hackaday. Not only do they keep proprietary software out of our devices, but they often unlock new and expanded capabilities which otherwise would be hidden behind artificial paywalls.