As [Jan Derogee] explains in the faux-retro video after the break, drawing on classic 8-bit computers was something of a pain. The rudimentary light pens and joysticks of the 1980s allowed for free-form input, but were clumsy and awkward to use. Which is why he set out to create an ideal drawing device for the C64 using modern electronics. For the sake of completion, he also gave it a USB HID mode so it would work on somewhat more modern computers.
His device, which he’s calling the Commo Pad, looks like it could have been transported here directly from the 1980s, but it’s built from entirely new hardware. The case is actually made of wood that [Jan] sanded and painted to give it that chunky plastic aesthetic that we all know and love, and the retro artwork on the touch panel really goes a long way to sell the vintage vibe.
Speaking of which, the touch panel is perhaps the most interesting component of the entire build. It’s actually a resistive panel that was meant for mounting to an LCD that [Jan] has connected to an Arduino. All he had to do was provide a stable frame for it and print out some art work to slide in behind it.
The Arduino and associated electronics allow the Commo Pad to be picked up by the C64 as either a joystick or mouse, which means it doesn’t need any custom software on the computer side to function. Similarly, it can also mimic a USB mouse if you want to plug it into something made a bit later than 1982. Should you be so inclined to make it wireless, the addition of a Bluetooth seems like it would be relatively trivial.
Welcome to the first installment of Inputs of Interest. In this column, we’re going to take a look at various input devices and methods, discuss their merits, give their downsides a rundown, and pontificate about the possibilities they present for hackers. I’ll leave it open to the possibility of spotlighting one particular device (because I already have one in mind), but most often the column will focus on input concepts.
Some inputs are built for having fun. Some are ultra-specific shortcuts designed to do work. Others are assistive devices for people with low mobility. And many inputs blur the lines between these three ideas. This time on Inputs of Interest, we’re going to chew on the idea of oral inputs — those driven by the user’s tongue, teeth, or both.
Unless you’ve recently bitten it, burned it, or had it pierced, you probably don’t think much about your tongue. But the tongue is a strong, multi-muscled organ that rarely gets tired. It’s connected to the brain by a cranial nerve, and usually remains undamaged in people who are paralyzed from the neck down. This makes it a viable input-driving option for almost everyone, regardless of ability. And yet, tongues and mouths in general seem to be under-utilized as input appendages.
Ideally, any input device should be affordable and/or open source, regardless of the driving appendage. Whether the user is otherwise able-bodied or isn’t, there’s no reason the device shouldn’t be as useful and beautiful as possible.
For ease of use and a little bit of cool factor, arcade buttons were used for the media functions. Simple to wire up, cheap, and with a great tactile feel, they’re a popular choice for fun human interface projects. It’s all wrapped up in a neat plastic box with Dymo labels outlining the functions. It’s a neat and tidy build that should make running the Christmas show a cinch!
Macros are meant to make our lives easier, but they live up to this promise with mixed results. Generally speaking, a macro is a special combination of keys on the keyboard that execute a custom task — their goal is to speed up your productivity by getting away from mousing through menus. But once a macro requires more than two keys, they can get a bit cumbersome to input. I have personally found that repeated use of macros that require ctrl+shift can potentially cause problems. I don’t know about you (and your repetitive stress mileage may vary), but personal injury is the polar opposite of what I want from something that’s supposed to be convenient.
I love keyboard shortcuts, and not just because I prefer keyboard navigation in general. A lot of little things about writing for the web can be streamlined with shortcuts, like writing html tags and doing image manipulation. And I’m always looking for a better workflow to pin down my fleeting mental fragments, at least until that dark day that I can turn on Dropbox Thoughts™ and burn my brainwaves directly to disk.
As soon as a project involves other assemblies, parts, or modules, things get more complicated. Devices like fans, cooling units, probes, pumps, or lighting might have simple electrical requirements, but they are rarely identical. As a result, one’s tidy project ends up having to deal with, for example, a pump that is controlled with 5 V active high logic, a sensor that outputs 5 V active low, lights that expect to be switched with 24 VDC, and a fan that needs a relay right now. But that might change in the future.
That’s exactly what led [Lukas Fässler] to design and build the Universal Interface, a board intended to be a kind of universal translator and interface for all such devices. The idea is to have one Universal Interface board for every external device. For each board, a wide variety of input combinations controls a single output. The boards are “hardware programmable” in the sense that jumpers (zero-ohm resistors) are used to spell out in black and white exactly what combinations of inputs result in which output state. In this way, some standardization and clarity of control can be enforced while still being flexible enough to accommodate changes.
Each Universal Interface board has three inputs and an enable line, each with their own indicator LED visually confirming its state. The inputs are 24 V tolerant and each can be configured with a pull-up, a pull-down, and as an active high or active low. There is one output, but it takes several forms: a sturdy relay, a powerful open-collector output, a 5 V logic output, and a 24 V logic output. Configuring which output state corresponds to what combination of inputs is set by jumpers, so the board is very much WYSIWYG.
[Lukas] is currently using four of these devices with his CNC mill project, all in different configurations, and they’re working reliably. Interested? The GitHub repository for the project has all the board design files.
After verifying that the knob worked for volume control on his computer, [Tysonpower] decided to try and pull the firmware from the device’s STM32 microcontroller. Unfortunately, this is where things got tricky. It turned out the chip had Code Protection enabled, so when it was wired up to a programmer and put into DFU mode, the firmware got wiped. Oops.
That left [Tysonpower] with no choice but to write a new firmware from scratch, which naturally required reverse engineering the device’s hardware. Step one was reading up on STM32 development and getting the toolchain working, which paved the way to getting the knob’s LED to blink. A couple more hours worth of work and some multimeter poking later, and he was able to read the knob’s movement. He describes getting USB HID working as a nightmare due to lack of documentation, but eventually he got that sorted out as well.
Back in the early days of computing, user terminals utilized line printers for output. Naturally this took an incredible amount of paper, but it came with the advantage of creating a hard copy of everything you did. Plus it was easy to annotate the terminal output with nothing more exotic than a ballpoint pen. But once CRT displays became more common, these paper terminals (also known as teleprinters, or teletypes) quickly fell out of style.
A fan of nostalgic hacks, [Drew DeVault] recently tried to recreate the old-school teletype experience with (somewhat) more modern hardware. He picked up an Epson LX-350 line printer, and with a relatively small amount of custom code, he was able to create a fairly close approximation of what it would have been like to use one of these terminals. He’s published all the source code, so if you’ve got an old line printer and a Linux box, you too can learn what it was like to measure your work day in reams of paper.
This is made possible by the fact that the modern Linux virtual terminal is simply a userspace emulation of those physical terminals of yore. [Drew] just need to write some code that would essentially spawn a shell on the Linux USB line printer device, plus sprinkle in some quality of life improvements such as using Epson’s proprietary ANSI escape sequences to feed the paper out far enough so the user can see what it says before pulling it back in to write the next interactive line.