I would like to start by saying that this is my first instructable. Generally speaking, I am very green so if you are looking for something intricately awesome, you can probably pass this over. I am just posting because I thought this was a fun project - flame me for its simplicity if you want I spose.
tl;dr: I hooked a Raspberry Pi to a DVD player screen and put emulators on it so the kids could play a ton of retro games while driving around.
I found myself in possesion of a Dual-Screen DVD player (SDVD8716D) meant for use in the backseat of a vehicle. Upon using it for the first time and buying the necessary power and A/V cables, I began to look at the A/V jack and think to myself, "what else could I do with that?" My kids are over DVDs so I began to think about ways to do some gaming on it.
Equipment (used in the end product) that I already had:
- 1 Sylvania Dual-Screen DVD Player with A/V cable and car adapter plugin
- USB Wired XBox Controller
- 4GB Micro SD Card with SD Card adapter
Equipment that I bought:
- Raspberry Pi 3 with case and power adapter: $50
- 3.5mm (1/8") 4-Pole (TRRS) Audio Plug Terminal Block: $2.50
- Headphones with a TRRS adapter to chop up for testing: $7 (ugh - overpriced)
- A power adapter for the car
Step 1: Rasperry Pi
The first thing I did was buy a Raspberry Pi and slap RetroPie on it. Really not so hard, once I finally found a micro SD card and adapter that actually worked. It's just a matter of getting the right download and downloading the recommended software to burn the ISO on to the SD card.
I confirmed that it was working by connecting it to my TV via HDMI and plugging my wired USB XBox controller into it (instead of a USB keyboard since I didn't have one). Next job was to load ROMs from teh Interwebs. My ethernet cable wouldn't reach to both the RPi and the router, so I decided to try to hook it up to my wireless network. I could get to the wireless configuration screen, but since I didn't have a USB keyboard I couldn't enter the wireless key (grr). So, I temporarily took the security off of my wireless SSID and connected right up. Once in, I could SSH right into the RPi from my laptop, and manually edit the /etc/network/interfaces file to put my key in and turn security back on for the SSID (btw, using the wifikeyfile.txt method in the wiki did not for me). Now, I could SSH and SCP ROMs right to the RPi. So, I got myself a full NES ROM pack and WinSCP'd them right to the RPi.
In retrospect, I would probably look for a more pared-down set of ROMs and later I did end up paring down the list quite a bit because my 7 year-old is probably a bit overwhelmed and frustrated by having to scroll through hundreds of obscure Japanese NES titles only to find something like Fester's Quest, which sounds cool but is actually semi-lame.
Of course, many emulators are available on the RetroPie build so one will customize this step as they please.
Step 2: Figuring Out the Video Connection
So, I know my RPi works and I can play on my TV with games, so let's connect it to the DVD player screen.
OK so a couple of problems:
1) My Sylvania 3.5mm A/V jack is of a non-standard size - 17mm. Ain't no normal 3.5mm TRRS plug gonna fit in there. I mean yes, it will fit, but not all 4 poles are going to touch to get both audio and video. Best I could figure the 17mm was a rather obscure spec used by Asian manufacturers.
2) I have no idea what the plug readout is on my DVD A/V cable (that is, which pole is supposed to receive which channel) and I sure couldn't find it anywhere on teh Interwebs.
Sooo, because of #1 my ability to buy adapters was severely limited, it looked like I was going to have to make a Franken-cable. The closest one I found was a 3.5mm to RCA with a 17mm tip, but I had to make sure that the ground would map to the same pin on that connector as it did to the DVD player. Why? Because in RCA, the ground runs to the ground of all 3 connectors and if I'm going to connect that to another RCA -> 3.5mm connector (female), the ground would go to the middle of one pin and it would be all screwed up. If you think about it, you'll get it.
To find out which pin was the ground on the DVD player jack/plug, I bought a cheap TRRS headset from the grocery store and snipped and stripped the cable and plugged it into the RPi. From there, I plugged I took some educated guesses about sleeve being the ground on the DVD plug and which wire was which based on the color of the internal wires. Also, I could tell which wire was connected to which pole on the headphone plug by testing for resistance on with my multimeter (continuity test didn't beep for me for some reason).
Through some trial and error and educated guesses, I found that the sleeve was indeed ground and the tip was the video signal. I had to hold the connectors on there for a sec until the signal/picture resolved so gotta be patient. Picture 2 shows the wires soldered onto the pin and Picture 1 shows the video coming through.
Step 3: Assembly
Now I know what pole does what and I know that the sleeve does in fact conduct ground in the DVD player jack/plug and I could do a few things at this point to get the RPi signal to the DVD.
- I could run the RPi to a RCA, swapping cables where necessary and then from RCA back to a 3.5mm for the RPi jack.
- I could buy another DVD A/V cable and splice it with my TRRS headphone cable or buy a custom TRRS plug and solder it up
- I could use a TRRS terminal block to split out the wires and do my splicing
In the end, I chose a rather convoluted solution where I ran the 3.5mm to RCA with a 17mm tip from the DVD player to a female RCA -> 3.5mm connector. That way I had a way to swap the signals as necessary to match the RPi jack's poles and I could use RCA or 3.5mm cables to extend as necessary - remember this is going to end up in a car. From there, I plugged the 3.5mm plug into a female terminal block and swapped the ground wire with ring 2 with wires back into a male terminal block to plug into the RPi (pic 1 shows the terminal blocks connected). The connectors could be tightened really firmly and felt like they would be more secure then any kind of splice I could do. Yes, it is convoluted and a simpler solution may require less work and be better suited for others.
With all of this connected, things are a little more solid than a clipped/stripped/soldered solution.
Step 4: Case / Housing
My kids are kids, so they pull cables hard and things get kicked around, so I can't have these loose components laying around in the car. I needed to put my components in some kid of structure that would keep them together and keep them from shifting about if I had to take them out of the car. The most reasonable choice was, of course, an old Blink 182 lunchbox that I found in the closet.
My goal was to keep the RPi relatively secure and in once place, obviously. I didn't want to spend any money on constructing the housing, so I looked through my box of spare parts and found some mounting brackets, mostly from curtains. Put some short bolts in to secure the pieces and a little bit of weather stripping where the RPi met the side of the "case" to prevent banging and voila. Obviously, I could have done a better job but whatever - I didn't spend any money.
Step 5: Making It Mobile
Now to move the system into the car. I think newer cars have 110V outlets, but mine still has the old cigarette lighter outlet thing going on, so I got an inverter on flash sale for $15. I needed to power my DVD screen and RPi, although I also had a cigarette lighter adapter for the DVD player so I could have used that, but I instead I rummaged around and found some generic12V 1A wall wart which matched the specs on the DVD player label and happened to fit the jack. I liked the on/off switch on the inverter so I could keep the system from coming on when I started the car if there is no one in the back seat, though. One little problem was that the outlets on my inverter were a little too close together and my wall warts were a little too fat. I had to root through my drawers and found an ancient un-grounding plug adapter which raised one of the outlets a few inches and I could plug in both. WARNING: Not totally sure about how much current this inverter pulls when the engine is off, though, so I make sure and unplug or flip the on/off switch when the engine is off and / or I am not using the system - don't want to end up with a dead battery.
Found an old pouch with a strap and stuck the lunchbox / case in it and wrapped the strap around the headrest as a holder.
What is kind of hilarious is that I park my car within range of my wireless router, so I can just turn on the car engine and go back inside and WinSCP ROMs any times I want to add new games.
Everything was working great. Until RetroPie crashed while running a game. FCEUX is a wonderful emulator, but it's not perfect and when it crashes, it dumps one to a command line. With no keyboard plugged in, I had no way to run a shutdown on the RPi and I had to just cut the power - which is a no-no.
I needed a way to shut the system down with the control pad. Luckily, someone had already built it at https://github.com/workinghard/jslisten . I followed the installation instructions, mapped my "shutdown -h now" command to Right Trigger + Left Trigger + Select (did some troubleshooting to fix my screwups) and now had a way to shutdown via the control pad.
We live in a pretty safe town, but when we park I put a blanket over the seat and lock the doors and I doubt anyone even knows that it's there.
It ain't beautiful and it ain't perfect, but the kids love it so I was pretty happy.