In this project, I convert a set of illuminated push buttons from a vintage Grass Valley video mixer into a custom vendor-defined USB HID peripheral. Like the USB analog panel meters project, this project uses a Silicon Labs EFM8UB1 microcontroller for USB connectivity. Unlike the panel meters project which only received data from the USB host, this project needs to send data back to the USB host too.
In this write up, we’ll reverse engineer the button panel, decide on a strategy for reading the keys and controlling the LEDs, build a board, then write both embedded and Linux software to interface with the button panel. If you want to build your own device like this but don’t have this specific switch panel, don’t worry–the ideas presented here are applicable to any generic 3×4/4×3/4×4 matrix keypad with or without LEDs.
Teensy 4.1 (600 MHz arm Cortex M7) running a full-speed Apple //e emulator. Because everyone needs one of these, right?
The OSH Park boards arrived, and I spent some time Monday assembling! Here’s a time lapse of the build, which took me shy of 3 hours (mostly because I hadn’t organized any of the parts and had to hunt for several).
General Instrument’s AY-3-8910 is a chip associated with video game music and is became popular with arcade games and pinball machines. The chip tunes produced by this IC are iconic and are reminiscent of a great era for electronics. [Deater] has done an amazing job at creating a harmony between the old and new with his Raspberry…
I’ve been working on, replacing the NAND raw flash with an eMMC chip on the CPC2.0 board.
I wrote about raw flash and the challenges of writing a flash translation later in part 16 of this series. After some research, I concluded that the eMMC interface looked exactly like the much more common SDCard interface, albeit that the interface can be run with an 8-bit width. SDCards are limited to 4 bits by the physical pin count. Taking a gamble I created a board to test this new eMMC chip. I created a fake SDCard!
This fake card allowed me to check very quickly if my assumptions were correct both at a hardware and a firmware level. I wanted to be sure that it was possible to interface the eMMC via 4 bits, rather than the full 8 bits and be sure the firmware instructions were the same between these two technologies.