I've always loved the look and feel of the "world of tomorrow" we were presented in mid-century science fiction and concept products.
Okay, that's not true. When I was young I thought the Tricoders on Star Trek were ugly and clumsy, but the ones on The Next Generation were sleek and awesome. But now that I'm older I prefer the combination of black and silver, of leather and metal over featureless beige or black.
It's only been the last decade or so that I've gained a deeper appreciation for the fusion of aesthetic and functionality over minimalism.
So when I embarked on a project to create a controller for my "atomic" studio, I wanted to use a television remote of the approximate era as a base. I found a two-pack of this Magnavox eight-button remote on eBay and fell in love. I only needed the one, but it was a good deal. Over the course of this project, I've been inspired to use the other one to take a different approach to the same concept in a future project.
I knew that early wireless television remote controls (often called "clickers") used sound. [Side note: we had cheaper televisions in my house and I was the "remote"] The only other one I had seen in person had a single button which hit a strike plate inside to create a tone that the TV could hear to go to the next channel and the next and so forth until coming around to the off position.
But opening this remote showed so much more. The circuit board inside had a coil and something like a speaker that aimed out the top of the remote. Next to each of the buttons was a capacitor of a different rating. By pressing one of the eight buttons the circuit routed through one of the capacitors which modulated the frequency that was transmitted.
I found myself admiring the elegance of using simple parallel circuits to provide such a range of inputs. I started to regret taking it apart.
Well... I've got two. One can be sacrificed in the name of SCIENCE!
Step 1: Gather Components and Tools.
The parts you will need to build your own retro Bluetooth remote are:
- A vintage remote control (I'm using a Magnavox remote with eight buttons)
- A piece of permaboard (If you have the skills, time, and resources to make a custom PCB, go for it. My biggest challenges in this project came from wiring and soldering good connections in this form factor)
- A microcontroller (I'm using the Adafruit Feather 32u4 Bluefruit LE)
- A Bluetooth module (I used the above feather which has both in one, but I could have used separate pieces)
- Buttons (I'm using the "Soft Tactile Buttons" from Adafruit because the larger buttons I was using originally clicked loud enough to be picked up on microphone)
- A battery of some kind
- An on/off switch
Other things you will need are:
- Electrical Tape
- A third hand or PCB vice (I used both at times)
- Wire cutter
- Wire stripper
- Calipers and/or a good eyeball
Step 2: Dissect Vintage Remote
I have a vague memory of this, but my parents once told me about the time we went to Red Lobster and I started coming up with names for the lobsters in the tank. My parents tried to subtly dissuade me, but I persisted. Then when the meal came and there were dead crustaceans (I didn't know lobsters from crabs apparently) on the plates I started asking if they had killed [insert childhood names for critters] for this!? I was pretty upset.
The horrible lesson I was supposed to take away from that was to not name things that were about to be killed.
So I spent a few minutes with my screwdriver poised over the back of "Clicky" pondering what a monster I was about to become.
Then I remembered I had two and I hadn't named the other one yet so I killed it instead.
Removing the circuit board was easy. I clipped off the leads going to the battery holder before using pliers to pull those out as well.
Step 3: Determine Position of Inputs and Place
Luckily the circuit board from the original remote was almost the exact same size as a piece of permaboard I had lying around so I didn't have to cut anything there.
To place the buttons I used a combination of precision measurement and less precise "eyeballing" the first row of buttons and the first button of the second row. After that I just counted the same spaces up and over to place the others.
The on/off switch was relatively easy. I didn't want to cut into the case if I didn't have to, so I used the front where the emitter had been. In the picture above I had the switch on the other side from the buttons, but luckily I re-checked placement before soldering it in because it was unreachable through the hole unless I moved it to the other side.
Step 4: Choose Placement of Microcontroller
This is where I started to get sad.
I had originally thought to place the microcontroller on the bottom of the board with the buttons and place it where it would sit in the original battery compartment, but if I did that the board would not be tall enough to be screwed into place by the stand-offs that also held on the back.
Next I tried placing it across the top of the board but it wouldn't fit between the stand-offs.
So in the end I decided to place it such that the GPIO pins that I was going to use lined up between the buttons themselves. I did have to shift it slightly to the side to get the ground pin where I needed it as well.
Step 5: Solder It All Together
First thing I did was connect a single wire to all the "top outer" pins of the buttons on each side. Then I bent the wires around the bottom edge of the board and created a solder bridge. Then I ran another wire from one side of the switch to the ground bus.
Next I cut a strip of header pins to the right length and placed them halfway in the holes. This way I could run wires from each of the "bottom inner" pins of the buttons to their respective GPIO pins beneath the plastic part of the header.
After that I sat on the couch sobbing into my hands while alternately drinking a Rum and Coke to get over the trauma I put myself through with all those connections and wishing I had the time and skill to make my own PCB. I also swore to various supernatural forces that if this worked, I never do it again. [Not pictured]
Next I ran a wire from the middle position of the switch to the "enable" pin of the Feather.
Then I placed a single header pin where it needed to be and soldered it into place running a short wire from it to the existing ground bus.
Lastly I placed the Feather in place and soldered it down. In the picture above I hadn't finished the right side, just the ground pin.
Step 6: Drill Mounting Holes
Once again using a combination of precise measurement and imprecise eyeballing I marked the placement of the mounting screws and used my Dremel and stand to drill the holes.
Step 7: Code!
Aside from my soldering job, this is the ugliest part of the project right now. It's just a hack of two different libraries: one from Adafruit (from their Adafruit BluefruitLE nRF51 library) and something else I found after too many Rum and Cokes and sobbing.
I beat at them both until they worked.
In the version here, the remote keeps sending the meta keys at times it shouldn't. It doesn't affect my usage so I haven't taken the time to fix it yet.
Basically it scans the GPIO pins and maps them to a number on the keyboard. It sends that number while holding down some meta keys so that I can assign them easily to shortcuts within the studio software I'm using.
Step 8: Assemble and Enjoy!
I put some electrical tape down over all the wires for protection. I connected the battery and placed it between the mounting stand-offs toward the top. By bending the battery leads around the one stand-off the thing stayed in place nicely.
Now I have a Bluetooth remote that sends a hotkey to my studio computer when I press a button. I can control the software without having to have a visible keyboard in view.
Step 9: THE FUTURE!
I have a few different ideas on where to take this next:
If I stay with the current system, I'd love to make my own board so the connections would be neater. I'd also update the code to be leaner and cleaner.
Another thought would be to use the other remote (Clicky!) as he was designed and build a receiver that would hear Clicky! and, using a microcontroller with HID capability, act as a keyboard for the studio computer.