Cross-posted with a few additions from my personal Medium page.
Tl;dr: I put a Raspberry Pi inside a karaoke machine and am managing it with Resin.io, a Docker-based Internet-of-Things orchestration engine.
For a video installation I’m working on, over the past few months, I’ve been on the hunt for something strange considering it’s 2018: a tiny CRT. I hunted thrift stores, dumpsters, eBay, at one point even taking a bunch of buses several hours to check out a film surplus sale in Echo Park. No dice.
One day, however, I found myself poking around Goodwill when I spotted a portable karaoke machine from 2005 (I think) sitting among the various discarded electronics in the back of the store. For the particular project I’m working on, it’s perfect. And it was $13. (Even better: when I got home, I noticed it had a DVD of Paul Blart: Mall Cop in the CD tray.)
There was one small problem, though: it’s a karaoke machine, and it definitely does not have any “video-in” ports on the outside. So I grabbed a handful of small computery things I had lying around and drug it to CRASH Space, hoping I might be able to liberate the display somehow.
Much to my surprise, it was incredibly easy to disassemble. Popping the top to get access to the monitor “section” was a simple matter of unscrewing 5 Philips screws, and all the internal wiring was in the form of convenient ribbon cables with header connectors, much like a computer.
I poked around the board with a meter — wearing rubber gloves, of course, considering the CRT is potentially highly energized, even when powered off, and I would prefer not to die — trying to figure out how the display was being driven. I Googled random part names trying to find a schematic, anything, but couldn’t find any information on the insides.
As I took another look at the board, I suddenly found what I was looking for – much to my surprise, I somehow had missed that the board was literally labeled with a header pin labeled “video in.” This machine was begging to be hacked.
Out of pure curiosity, I quickly pulled out a soldering iron and soldered two pins to the composite video headers on a Raspberry Pi Zero, so I could run jumper wire between the “video out” on the Zero and the “video in” on the karaoke machine. I plugged the whole thing in, and, much to my astonishment the display sprung to life with the Raspberry Pi’s boot sequence. It literally worked the first time.
Since then, I’ve replaced the Zero with a Raspberry Pi 3, because the Zero was a bit underpowered for my taste, and there’s plenty of room in the chassis. Since the big Pi doesn’t have composite headers, my first try involved soldering wires to the bottom of the Pi, but they broke in transit incredibly easily (there were a few nights where I drug the machine to CRASH on a bus, did work with it, and then drug it back home, again on a bus, and got very sad because it didn’t work when I got home.) As the (big) Pi carries video over the third ring of the 3.5mm jack, I found a TRS connector with screw block terminals on Amazon, which has since worked perfectly.
I ended up hot-gluing the Pi to the chassis rather than have it awkwardly float around and possibly short something out. My first try at this involved me gluing the Pi directly to the chassis… which I definitely wouldn’t recommend (RIP 8GB SD Card). I found a cheap Raspberry Pi case on Amazon and just glued the bottom half to the chassis, and that’s working much better. I then glued the jumper wire going into the board into the header slot so it wouldn’t fall out (thanks to Steve for showing me that trick.)
I also Dremeled out a small hole in the back for the wires (thanks to Barb, who makes things, for giving me hand with the Dremel.)
On the software end, it’s running Resin/Resin OS, which is a really cool Docker orchestration service for IoT devices. This makes it very easy for me manage and push software to the Pi, especially given my goal it is to be semi-autonomous – I don’t want to have to worry about attaching a keyboard and mouse to it.
Currently, it’s running a Screenly OSE image, an open source digital signage solution, so I can push videos and websites to it at will. I would dive into how I got Screenly running on the Pi, but all I did was follow this excellent tutorial. I’m working on giving it cellular data through a USB modem, so it’s always online, even when it’s not connected to my wifi network, and that’ll make it even more autonomous.
What I plan to do with this will be revealed with time, but for right now I’m pretty happy staring at the strange retro-futuristic object in my kitchen looping Meshes of the Afternoon on on a tiny black and white CRT while I weigh the absurd realization that I connected a karaoke machine to the Internet and it may indeed be one of the strangest machines running Docker in the world.
PS: I want to do more of this kind of work, whatever this is, potentially professionally. Hit me up at firstname.lastname@example.org if you’re interested in collaborating, especially if you need you’re an artist or do any kind of creative work and need someone good at DevOps/AWS.