PiSwitch

79,200

366

62

About: Hey my name is Chris, welcome to my instructors page. I'm happily married with a wonderful son, he makes the best workshop assistant ever. Plus I find a 7 year old has much more creative ideas than me. I wo...

Intro: PiSwitch

Welcome to the PiSwitch

Hello to the wonderful world of instructables. Sometimes this website feels like a second home to me I spend so much time drooling over the projects I wish I had the time and money to make. Alas, It's finally time for me to drop on you amazing people, my second instructable I call it The Pi-Switch. It's a conglomeration of the work of many people but this particular build is, certainly and uniquely my own. I do however want to give credit where credit is due. First off much thanks to Drew Wallace with the Switch Berry I couldn't make his software work but he helped get me started. Thanks to Adafruit they built the PiGrrl2 a while back and if the internals to my pi case seem familiar that's because the charging circuit and audio amplifier are the same circuits used in the PiGrrl 2. Third Thanks to the wonderful developers over at the pi foundation, RetroPie, and last but not least Kodi. My scripts are built around the incredible work you've done developing software to run on the raspberry pi. Finally, thanks to Nintendo for making me want to reverse engineer, poorly might I ad, their Switch Console.

Step 1: Procuring Provisions

You will need:

Tools:

Soldering iron + solder + soldering flux

Hot Glue Gun

A 3D Printer or $20-$40 and 3dhubs.com

A decent micro screwdriver kit

A Dremel Tool with a fine bit or a drill with a 3/16th bit

Patience

Parts:

Pi Foundation 7" Raspberry Pi screen

Kingwin 80 Piece Assorted Notebook Replacement Screw Kit or (various screws of fortunate sizes lying about)

26 awg wire

1/8 inch stereo jack with switch

Mini Metal Speaker

tiny power switch

6600 mah battery of plentiful life

Joy-Con Controllers (reccomend the addition of a charger)

Raspberry Pi 3 (Bluetooth and WiFi built in)

PAM8302 2.5W Audio Amp

PowerBoost 1000C

3d Printed Case (Files Are Attached to this step the instructable assumes you've printed the part.)

Optional:

PiCamera V2

Step 2: Soldering Headphone Jack to the Pi

I have pictures from the various steps above.

Start with the Pi and solder some 26 awg wire to it:

I used red for the left audio to pp26 near the audio jack (thank you pi foundation for labeling the solder pads)

solder black for ground to pp24

right audio is a yellow wire and you solder it to the upper left pin on the audio jack.

UPDATE: 3-26:

Some more testing showed to me that PP24 directly to the metal pad is ground PP25 is right audio and PP26 is left audio. Picture of updated solder pad usage attached.

I recommend leaving the wires long 3-4" you can trim them down or tuck them in later. I leave them long because my projects often get pulled apart and rebuilt/re-purposed. I really like this particular 1/8 in jack. I chose it because the clear top means you can see and understand exactly how it works.

Soldering The Audio Jack (The pinout is in pics above):

Take the red wire from the pi and solder it to pin 2 on the 1/8 in jack.

Take the yellow wire from the pi and solder it to pin 5 on the 1/8 in jack.

take the black wire and twist another 3-4" length of black wire to it then solder to pin 1 on the 1/8 in jack.

solder a 3-4" red wire to pin 3 on the 1/8 in jack.

You should now have an audio jack connected to the pi, if you were to play sound with headphones plugged in you would have music playing clearly on this jack. I reccomend hot gluing the wires on the bottom of the pi and the bottom of the jack in order to secure the thin wires and also to protect them from damage and shorts.

Step 3: Soldering the Power Board & Switch

The PowerBoost 1000C for all your lithium charging needs.

Unfortunately this little deal though fantastic does not output enough power to run the Pi-Switch. It does however do a great job charging the battery which has plenty of amperage to power the pi, screen, and audio simultaneously for about 2-3 hours. I left the power on the pi open so that running out of battery just means you need to plug directly to the pi. I'm working on a better solution still. I may build a switching circuit. I will update this if I find a better way to power this device but 2-3 hours isn't bad.

Power Leads:

Lets start by looking at Picture 1 above you'll notice 3 black circles and 3 red circles.

You Guessed IT !! solder 3 10" black wires and 3 10" red wires to the corrosponding spots marked on the PowerBoost.

The Switch (The Power Switch (Not Nintendo)):

Cut a single right or left leg off your switch and solder on a 2" wire to the remaining center and alternate legs of your amputee power switch.

solder one of the wires from you switch to en on the powerboost and the remaining wire to gnd on your powerboost board.

Hot Glue is cheap, quick, and easy. I reccomend now putting some hot glue over each of the wires connected to the PowerBoost Board

Step 4: Speaker and Audio Board and HeadPhone Jack (A.K.A. Tying It All Together)

This is the step in which we combine our various assets

Solder the Speaker:

Look at the picture above and solder one wire to each of the pads on the speaker as shown above. I'm too cheap for heat shrink so if you're like me HOT GLUE!

Solder the audio board:

grab your PAM8302 look at the writing. On the side where the board says 4-8 ohms solder your speaker wires to the two center pads as pictured above.

Solder the power to the audio:

Take one of you red power leads and one of your grounds from you PowerBoost board and solder the red wire to vin on the PAM8302 and the black wire to gnd on your PAM8302.

Solder headphone to the PAM8302:

Take the red wire from your headphone jack and solder it to A+ on your PAM8302

Take the black wire from your headphone jack and solder it to A- on your PAM8302

Solder the Pi:

There's a picture of the pi above. Take one black wire from your power boost solder it to the black dot on the picture of the pi.

Take one red wire from your power boost solder it to the red dot on the picture of the pi.

Testing:

carefully be sure the remaining black wire from the power boost and red wire from the powerboost aren't touching anything. then attach the battery and flip the switch. if everything is hooked up correctly an led should light on the pi, on the charge board and you may hear a light buzz from the speaker if it's noisy enough to bother you you likely have an issue with you solder joints.

Step 5: Assembly

We should now have everything attached with exception of the LCD and the optional pi camera. in the first few pictures you'll see how to screw in the pi itself. it's quite simple, so pull out your kit of 80 various laptop screws find some screws just a mm or two longer than the thickness of the pi and thread them into the soft printed plastic. PLA is recommended. there should be two lovely pegs to set the pi on, and on the opposite corners there's holes to thread. the same goes for the power board. there's pictures above that shows the assembly of the power boards.

now push the switch through the tiny hole above the power board. grab the switch from the outside with with some tweezers or finger nails. While pulling gently on the switch to keep it from falling back into the case put some hot glue on the backside of the switch as pictured above. once the glue has cooled double check that the switch is in a good position for use. If it's not good peal off the glue and try again.

Drill a 3/16th inch hole between the pi and the powerboost you can also dremel a hole. This should be on the side of the case where the pi's usb ports are located. Slide the headphone jack into the hole and hot glue it in place.

Finally, glue the speaker battery and audio boards in place as pictured above. I put the speaker facing the plastic under the battery which i tucked directly behind the powerboost board. Then I glued the battery up against the sides of the 3d printed case. Ffinally I glued the speaker amplifier the top of the battery.

So if you've done everything right this far you should have the pi, powerboost, the PAM8302, the speaker, the power switch, and the battery all installed and secured in the back of the pi case. There should also be one 10" black wire and one 10" red wire left.

Step 6: Adding the Screen and Finshing Assembly

Pat yourself on the back you're almost done with a rather complex assembly. now take some 6mm long screws and thread the side bars. They should thread into the screw holes on the screen as shown in the pics above. If the screen doesn't line up and fit you probably have it upside down. Look at the pictures and you may notice I have prototyping wires attached to my screen. I actually put pin headers on my powerboost instead of soldering direct. if you followed through step by step without looking ahead then you're soldering the wires on. if not it's your choice. I prefer pin headers for quick easy modification because my creations are always in a state of flux and improvement.

Use the remaining Wires:

Solder the remaining red wire from the powerboost to the vin pin on the screen

Solder the remaining black wire from the powerboost to the gnd pin on the screen

Attaching The Camera (Optional):

plug the camera cable into the camera board

plug the cable in the pi as shown above

flip the camera over the ethernet jack.

bend the cable flat and glue in place.

Attaching the screen ribbon:

Plug the Ribbon cable in to the pi as shown

if you look at picture 5 it shows how I flip the back panel down into place after attaching the ribbon

Finally screw the four screws from the back panel into the brackets on the back of the screen and you're fully assembled.

Step 7: Building the Pi Software Image

Step 1)

plug a keyboard into your pi, and make sure the pi is plugged into a charger.

Go to this website and follow the install: (only setup your keyboard as a temporary controller)

https://github.com/RetroPie/RetroPie-Setup/wiki/Fi...

Step 2)

You may have an annoying buzz sound (It's ok ignore for now, we'll fix it soon)
go through the ReroPie Menu as follows to setup wifi:

retropie / settings > raspi-config > interfacing options > SSH > Yes > Ok > Finish > Retropie Setup > Configuration Tools > wifi > (configure your wifi) > exit >

step 3)

Install Pixel:

raspbiantools > Install Pixel Desktop Environment > yes > (wait a while) > ok (to flash player) > (wait a while longer) > ok > cancel > back >

step 4)

Install Kodi:

Manage Packages > Manage Optional Packages > Kodi > Install from binary > (wait a while) > back > back > back>


step 5)

register and connect your JoyCons:

Configuration /Tools > bluetooth > Register and Connect (while pressing the tiny button between L and R on the right joy-con) > choose Joy-Con (R) > NoInputNoOutput > (wait) > ok > ok


step 6)

repeat step 5 with Joy-Con (L)

step 8)

cancel > back > exit > (start button) > quit > quit emulation station> yes

step 9)

type the following:
sudo apt-get update && sudo apt-get upgrade && sudo rpi-update
sudo reboot

step 10)

type the following:
wget  https://raw.githubusercontent.com/cfoote7/PiSwitc...
sudo chmod 777 setup.sh && sudo chmod a+x setup.sh 
./setup.sh

Update:

I've added a controller connection menu, where the screen will tell you if both joy-cons are connected. also added a one player two player mode selection menu. on first competed boot you will now connect your controllers with the + and - buttons, click next, click retropie, and choose 1 player mode.

Old:

when the device gets to the touchscreen boot menu tap + and - to activate the two controllers and tap retropie.

Choose retropie hit start > configure controllers > configure your joycons

Tada this is your first boot to the completed device. Now you just need to set it up with your own media and roms.

Check back for updates with automatic controller connecting and parsec for computer to pi game streaming.

Notes:

pywx.py is my touchscreen boot selection menu, it's not actually a boot selection being that all these options exist under one raspbian jessie build. I plan on adding a simpler way of pairing the controllers at boot to this menu. check back for updates, and please let me know if you build this especially if you make any improvements I'd love any co-op on this that's offered. Please check back on my repository I'll be updating it https://github.com/cfoote7/PiSwitch

Thanks for looking if you have any questions about my custom built hardware or software feel free to ask I like to answer questions and find ways to make my instructables clearer :)

Epilog Challenge 9

Runner Up in the
Epilog Challenge 9

Share

    Recommendations

    • Optics Contest

      Optics Contest
    • Halloween Contest 2018

      Halloween Contest 2018
    • Plastics Contest

      Plastics Contest

    62 Discussions

    0
    None
    KevinB532

    Question 6 months ago

    I'm still at this; how is the Raspberry Pi 3B being powered through the PowerBoost 1000C? The Pi 3 needs 2A at max usage (which admittedly isn't all the time), but I'm getting the Low Voltage symbol almost constantly whenever I'm playing - anybody solve this? I see some solutions would be to use an alternate power source, like an Anker 13000, but that doesn't seem like a very clean solution

    1 more answer
    0
    None
    jasdfKevinB532

    Answer 3 months ago

    Hey, did you ever come up with a better power solution?

    0
    None
    FrancisM87

    Question 3 months ago on Step 1

    Hi Chris, Tried checking the 3d stencils on 3dhubs.com and the case is showing me this error: Hard to Remove Support issues detected.

    This part has hard to remove support with FDM.

    Would appreciate getting some clarification on what the problem is. Thanks!

    Francisco

    Screen Shot 2018-07-12 at 11.24.25 AM.png
    0
    None
    KevinB532

    Question 4 months ago

    Does anybody know how to implement the "joy-mouse" mapping? I have played around and got it working with SCUMMVM, but it only works if I ONLY call this mapping on boot. I lose the dual joy-con/keyboard mapping. I would like to call this using the runcommand-onstart.sh script only for SCUMMVM programs (and possibly DOSBOX), but I can't find a way to make it play nice

    0
    None
    kuppi.s90

    Question 4 months ago

    Hi,

    Is the Analog Stick only mapped as digital signals (up, down, left, right) or as real analog axis?

    Greetings from Switzerland

    Simon

    1 more answer
    0
    None
    KevinB532kuppi.s90

    Answer 4 months ago

    It's only digital signals (up, down, left, right). The joystick mapper only maps as keyboard presses, not as real analog axis

    0
    None
    KevinB532

    Tip 6 months ago

    Hi everyone,

    I've tried building this project directly, and there are a few points I would like to pass on to future builders.

    As is, this project is based around Retropie 4.3; unless cfoote7 ever updates it, as of April 2018, it MUST be based on Jessie and not Stretch to use as-is. This project will NOT work with a new Raspberry Pi 3B+. Even with a regular 3B, if you initially base your build on Stretch, all you will get is a black screen with a flashing cursor.

    Next, the build instruction seem like a "hodge-podge" from Adafruit's PiGrrl 2, mixed with a few random notes here and there. When built exactly as these instructions list, it didn't really work for me. I have documented my changes to the wiring diagram, and list them here:

    http://s000.tinyupload.com/index.php?file_id=05772...

    Finally, the case STL file has been redesigned, closing some of the unnecessary gaps, adding standoffs for the PAM8302, adding a speaker mount and a mount for the headphone jack.

    http://s000.tinyupload.com/?file_id=52711687719593195465

    Even after this, I'm still having minor issues with this project; using all of the original parts list, the Raspberry Pi and the Touchscreen both issue "low voltage" and "under-voltage" warnings. Also, the joy cons never respond when choosing "two-player" mode from cfoote's selection menu.

    Hopefully my experiences following this project will help others :)


    PiSwitchInternal.jpg
    1 reply
    0
    None
    jasdfKevinB532

    Reply 4 months ago

    Thanks for posting the edits! Were you able to work through the power issues?

    3
    None
    derekhuffman

    Question 7 months ago

    Hi Chris. I really love what you've done here and I got the case printed and bought everything I needed. I get to step 10 and after running the setup.sh, I get a black screen with a blinking cursor. If I reboot it, it has the same thing.

    Any ideas as to how to help things along will be appreciated.

    3 more answers
    1
    None
    jasongobusderekhuffman

    Answer 6 months ago

    Hey buddy...
    I got the same thing.. Were you ever able to solve the issue? Or did you get an answer from this guy.

    1
    None
    cfoote7derekhuffman

    Answer 7 months ago

    This is more than likely either the config .txt or a corrupted card. config.txt could cause it if you're using different hardware than me. If you dont mind going to my github

    https://github.com/cfoote7/PiSwitch/issues

    and reposting this question under issues. Include any possible hardare differences you have. and I'll work with you to resolve the issues you're having. I've followed my instructions step for step several times with different pi setups and haven't ran into that particular issue but I'm certain we can work it out together. :)

    0
    None
    ProvokedCashew

    Question 5 months ago on Step 7

    I have two questions, both software related.

    -I've flowed the steps to a tee, and both of my recent tries I've ended up with my pi unable to boot after running setup.sh

    -In a previous build using your software, I was able to do everything with relative sucsess, however I could not get Retropad w/Analog (Left analog) to work with the Joy-cons. Do you have an alternate method, or fix, for using the left analog during d-pad only games?

    Thanks, and great stuff.

    0
    None
    Cagri Kanver

    6 months ago

    Impressive and very smart work. Do appreciate the share!

    0
    None
    jasongobus

    Question 6 months ago

    Hey buddy,
    Great instructable.. I am making this now. Got my Screen in the mail and 3d printed the body!! fits a treat also.

    I was wondering i have a Raspberry 3 B+ will your image work on that?? or do i need to use the Model B...

    Also is there a link to a complete IMAGE of your system so that all is set up and i can just image my SD??

    Thanks again and i look forward to sharing my pics of my Piswitch.

    2 more answers
    0
    None
    jasongobusjasongobus

    Answer 6 months ago

    Hey

    thanks for the response on Github, Unfortunately the 4.3 version doesn't work on the B+

    i will have to wait for you to finish the 4.4 version.

    Cheers

    0
    None
    jasongobusjasongobus

    Answer 6 months ago

    Just to add to this.. I even plugged it in to my raspberry pi 3 model b.. With the same result... I thought it migjt be a model issur but clearly it isint..

    Any thoughts buddy.. I would love to get this off the ground before i order the other parts.

    0
    None
    HexD

    Question 6 months ago on Step 5

    If I dont wanna do the full same build and just use the joycons on my own build could I just do steps 9,10 on a normal retropi build?

    1 more answer
    0
    None
    cfoote7HexD

    Answer 6 months ago

    No unfortunately that wouldn't work, I have a lot programs interacting together with specific hardware requirements. If you're linux competent You could download my joymap folder from my github repository though. Then modify autostart.sh to include the line "sudo hciconfig hci0 piscan" that line makes the bluetooth continuously scan and work with multiple Bluetooth devices simultaneously. This is the line I use to start retropie in single player mode with both controllers,
    sudo /home/pi/joymap/loadmap /home/pi/joymap/joycon & emulationstation" loadmap is the program that loads a controller map for the joycons, I modified the program joymap to work with the joycons which it doesn't natively. the file joycon is a text file with the controller map configuration. The problem with this method is my program notifies you when both controllers are connected and doesn't map the controllers until your bluetooth is connected. so you have to have delay on running loadmap until both controllers are bluetooth connected. I hope that was helpful for you.

    0
    None
    KevinB532

    Question 6 months ago

    Hi! Thanks for the walkthrough - love it! It took me a few attempts to realize that I should base the initial Retropie on Jessie rather than Stretch, but with that figured out, it was mostly smooth sailing.

    Two questions for you; the first is rather the more important one. I have the two joy-cons connected, and the buttons seem to work perfectly, but nothing recognizes the analog sticks. Is there something more required to get them working?

    Secondly, is it possible to change the images on the TouchBoot screen? I tried simply replacing the .jpgs with other images of the same filename, but that doesn't seem to update it. I'm not sure where the touchboot script is reading the images from if not the NewTouchBoot directory - is this something compiled?

    Thanks again - this is an awesome project!