It is also worth mentioning that this remote control can be used in reverse - to browse information received from somewhere else.

Step 1: (Optional) Desolder an Old Stereo

Why a stereo? Even a broken one contains many parts that you might upcycle for projects: speakers, IR receivers, LEDs, resistors, rectifiers, transformers, potentiometers, lasers, motors... the list goes on. The one I took apart looked kind of like this. I used a cordless drill to unscrew everything that can be, followed by a hammer and flathead screwdriver for anything that puts up a fight. Use gloves and safety glasses.

When you are done, you should have at least one chunk of circuit board with buttons all over it. Angle the board vertically. Clamp the button or resistor with one of the helping hands. Find where the pins are soldered to the board. Add a tiny amount of solder to each of them - this helps loosen things up. Pull the circuit board free, one pin at a time. If you take more than a few seconds to do each pin, the part might melt. For best results, give it time to cool.

Step 2: Test Fit Everything on the Protoboard. Glue Down the LCD. Test the Resistors and Button Pins With a Multimeter.

Make sure you are using a nodeMCU "v2" by Amica, as the "v3" Lolin version is slightly larger and will not fit!

Buttons don't always have four pins - but when they do, you have to check them. Set your multimeter to read resistances. Touch two pins. If the resistance reads zero, the pins are connected to each other. It's easier to test the buttons when they are sitting on the protoboard.

Resistors can fool you! For example, we want three 1k resistors, which are brown, black, red. The red band can be easily confused with orange, which designates a 10k resistor! Also, anytime you salvage a component, it is good to check that it is still working right, if possible. So long as all the 1k resistors read something close to 1,000 ohms, you are good to go.

Step 3: Solder the On/Off Switch First, Then the Wires/Buttons/Resistors, Then the NodeMCU. See Schematic.

TinkerCAD was used to create the schematic pictured. Since TinkerCAD does not have a NodeMCU in the available parts list, I used header pins to represent it. Labels were added with a photo editor.

Most of the circuit will be covered up by the NodeMCU and the battery, so it is important to double check everything. Take care that your power switch is not going to block the usb port on the NodeMCU. Use a pliers to route the 9V battery wires, one at a time, through a mounting hole. This will protect the wires from being broken over time. After you have soldered all the rest of the circuit, I recommend only soldering the NodeMCU pins that you are going to use.

Next comes the anti-static plastic. Cut a piece out of the bag the NodeMCU came in. Hotglue the plastic to the underside of the protoboard where the battery will go. This will protect the solder and pins from shorting against the battery casing, or anything else you might set the remote on top of. Also, the plastic provides a smooth surface on which to place the battery.

Step 4: Hardware Testing

Instead of reading a digital on/off signal, we are going to read the analog voltage. This allows us to put all three buttons on a single pin. Each button has a different resistance, which is then connected to a voltage divider when you press the button. The NodeMCU will read a voltage between 0-3.3 volts and give you a corresponding value between 0-1024. I am including a sketch that will fire up the lcd screen and display the value being captured by pin A0. This will allow you to tell whether the buttons are working. The values I captured, from left to right, were 545, 520, and 365 but yours may vary somewhat. When no buttons are pressed, the analog value should be between 0-15.

Attachments

Step 5: WiFi Programming Choices

There are a number of ways to program the remote to talk to other devices over WiFi and even across the internet. The method you choose will depend on your particular situation. It is also worth mentioning that this remote control can be used in reverse (to browse information received from somewhere else). The two major methods I've seen are HTTP and MQTT. Here are a few tutorials which you can follow from here: