C.A.M.P. Kit Guide

CAMP kit poster: Turn a cardboard box into a functional game controller!

When you purchase a Granola controller, you can optionally add a C.A.M.P. kit to your order to turn the cardboard box your controller arrived in into a playable and affordable second controller. C.A.M.P. kits make an excellent hobby project, and if you've never built an arcade controller before this is a great way to dive in. At the end of the project, you'll have fully functional leverless controller that you can use or give away!

C.A.M.P. stands for Cardboard Assembly Made Playable. This guide will teach you how to turn your C.A.M.P. kit into a controller.

What comes in the kit?

  • Cardboard box: This is the box your kit arrived in.
  • 20x switches: Choose either Gateron or Kailh switches. Gateron switches are less expensive but still totally functional, though they will not work as spare parts for your Granola controller. Kailh switches are what Granola controllers use and are very high quality, but cost a bit more. You will use 18 of them to build the controller, two of them are extra for you to accidentally melt with the soldering iron.
  • 20x switch stakes: These are designed to be inserted into the cardboard box. They give you a template to cut holes, and also a stable base for the switches. Like the switches, you will use 18 to build the controller, and the other two are for you to accidentally step on and break.
  • 20x button caps: You can pick any single color you want! You'll get two 30mm caps and the rest will be 24mm caps.
  • 25ft of stranded wire (26ga): You will cut and strip this wire to connect all your components together.

What tools do you need?

If this is your first electronics project, you will probably need to buy a few of these tools. I will recommend a few specific brands here, but my general philosophy with tools is that you should buy something very inexpensive at first, then replace it later with something nicer if you feel like you need to do that. Using an inexpensive tool first will give you an appreciation for the nicer stuff, and help you decide later what is more important to you as a builder when you choose to make a bigger investment. If you ever have questions, please join the Granola discord! There is a design channel where you can get advice from me and others.

  • Soldering iron that can reach at least 750F/400C
    • The Pinecil is amazing value, runs on USB-C and heats up incredibly fast. It will probably be the last soldering iron you'll ever need.
    • You can also get something for $10-15 on Amazon but it will lack the safety and convenience features of the Pinecil. It will work for this project, but you'll need to babysit it.
  • Solder (LEAD FREE!!!)
  • Wire stripper/cutter
  • Knife or something sharp
  • [Optional] Tape or glue to make sure switches are solidly in place
  • [Optional] Desoldering tools for fixing mistakes
    • Desoldering wick and a small jar of flux is usually sufficient
    • Also consider a "solder sucker" for pulling solder out of pins
  • [Optional] "Helping hands" soldering stand

What else do you need to provide?

This kit does not come with a PCB! You should choose one based on your needs and purchase it separately. I have some recommendations here and why you might pick them, as well as links to vendors. Vendor links are US centric unless otherwise noted, if you are outside the USA you should probably find different vendors to avoid paying shipping costs. If you are a vendor and want to be added to this list please reach out!

GP2040-CE board options

  • Raspberry Pi Pico: Inexpensive, ubiquitous, and very versatile, the Pi Pico is the standard for RP2040 projects. The Pico has a USB-Micro port so you will need an adapter if you want to use USB-C. There are no frills here; if you want features like USB passthrough you will need to wire additional boards up to the Pico. Still, this is a great board to get started with, and cheap enough that you can buy a couple of them just in case you break it. Get the version without pre-soldered header pins if possible.
  • Waveshare RP2040-Zero: Like the Pico, this is an inexpensive option that has an incredibly small footprint. Its small size makes it a little bit tricky to solder, but it has a USB-C port and all the same capabilities as the Pico. This is the board used in the very popular Flatbox rev.5 open source controller.
  • GP2040-CE Advanced Breakout Board: Designed by TheTrain, this is what you want if you need all of the GP2040-CE features. Thanks to the screw-down terminals, this is the simplest option to assemble. You also get an extra USB port for USB passthrough (PS4/PS5/Xbox support!). More expensive than the above options, but you can get them from a local vendor, or pool together with your friends to get it manufactured by a PCB maker (detailed instructions how to do this on the GitHub). Open source and fantastic!
  • GP2040-CE Basic Breakout Board: Another design by TheTrain, this is a stripped down version of the Advanced Breakout board that costs significantly less to produce. This is a nice middle ground between the tiny boards like the Pi Pico and the advanced breakout board. 
  • Design your own: This is probably not practical for most people, but if you want to learn about PCB design, making a game controller board is a fantastic place to get started. Because GP2040-CE is available already, you won't need to learn how to write any code, and there are lots of great resources for designing with the RP2040 microcontroller. I recommend KiCAD or EasyEDA for PCB design, just watch some tutorials and get started building!

Other board options

Brook boards are also very popular for custom arcade builds. Brook has been in the arcade business for a long time and have a good reputation for quality. These boards are more expensive and run closed-source firmware, so don't expect regular updates or new features, but you can expect good support and reliability.

    Assembly guide

    Button layout

    Lay out all the components in front of you. Remove any identifying information (like your address!) from the box and decorate it however you want. You can also decorate at the end, but it will be easier to do it now before you add any of the parts.

    All the parts for this project

    Arrange the switch stakes on the top of the box where you want the buttons to sit on the controller. It helps to orient your stakes with the pins facing up so they lay flat.  You can use your Granola controller as a guide to see how to lay it out, or just lay your hands naturally across the box and see what positions will be comfortable for your fingers. Don't be afraid to experiment to see what you like the best! You can also use the button caps to make sure you have spaced the buttons far enough apart.

    Once you are happy with the positions, flip the switch stakes over and push the pins into the top of the box so the stakes are held securely in place. You shouldn't need much force to push them through the cardboard.

    Make the cuts

    Use a sharp knife to cut out square holes in the box around each of the buttons. You don't need to make the cuts super clean, but you do want to create the maximum amount of space possible for you to fit the switches into later.

    Place the button caps on your switches BEFORE inserting them into the box, then put the switches in your switch stakes and test the overall fit and function. If any of the stakes come loose after making the cuts, you can use a bit of tape or glue to secure them again.

    Make a small hole in the back for your USB cable or adapter to fit.

    Solder the cables

    Open the box and view your switches from the underside. Each of the switches will have one pin soldered to a unique pin on your PCB, and the other pin soldered to a common "ground" connection. We'll start with the ground connection. For the lead free solder we should be using, you should set the soldering iron temperature to 400C/750F.

    Wait! How do I solder?

    If you've never soldered anything before, I recommend watching a few tutorials on YouTube before continuing. 

    Soldering is a process of using metal that melts at a low temperature (the "solder") to connect two parts together. In our case, we'll be connecting the ends of our wire to the pins on our PCB and our button switches.

    Rosin core solder has something in it called "flux" that helps the melted metal bind to the surfaces you are soldering to. When you see smoke come up from solder as you melt it, this is the flux burning off. You don't want to inhale much of this stuff, so make sure you solder in a well ventilated area. Because the flux burns off quickly, you want to hold the soldering iron in one hand and the solder in the other and use them together.

    Ideally, you'll want to use the wire stripper to cut and strip the wire, then line up your wire with where you want to solder. You can use a "helping hands" device for this, or bend the wire around and place it where you want it. Then you will use the soldering iron and solder to create a good connection.

    Ground Connection

    The Ground connection will be one long daisy-chained cable that connects to one pin on every switch as well as the GND pins on your PCB.

    I recommend cutting, stripping and soldering one segment of wire at a time. If you cut all the wire in advance, you won't be able to work around any mistakes you make. Soldering the pins on the switches is particularly difficult, so I recommend using the extra switches included in your kit to practice before diving in.

    Here is what a good connection will look like: 

    Here is what the final result will look like after you've connected all the switches together:

    You can connect the switches together in any order, but make sure they're all connected.

    If you have a multimeter, you can verify that you have a good connection by using the connection tester setting. You don't need a nice multimeter to do this, the cheapest one available will do. We won't use any of the other features on the multimeter for this project.

    Finally, you will connect both ends of your daisy chained connection to the GND pins on your PCB. It doesn't matter which GND pins you choose, in this example I chose pins 8 and 22 on the Raspberry Pi Pico.

    If your PCB has screw down terminals, you won't need to solder the wire to the PCB. But for soldered connections like the Raspberry Pi Pico, first thread the wire through the hole on the appropriate pin:
    Next, apply some solder carefully to the connection point:
    Finally, use your wire cutters or some scissors to trim the extra:
    That's it for the ground connection!

    Button Connections

    The other pin on each switch will connect to the appropriate pin on your PCB. To learn where your pins should connect, refer to the pinout diagrams on the Downloads page on the GP2040-CE website. There are different pinouts for each PCB type, so make sure you look at the information for your board before you proceed. For this example we'll use the Raspberry Pi Pico, which has these pinouts:

    This diagram references the GP2040-CE button names (see this table in the GP2040-CE docs). For the layout we'll use in this example, our wiring will look like:

    We need to connect each labeled pin on this diagram to its appropriate switch. This can get messy fast, so it's best to plan out your wiring before beginning to solder. Avoid using too much solder also, since you need the pins to avoid touching each other. Like we did with the GND pins, it's easiest to insert the wire through the holes on the Pi Pico and then perform the soldering.

    If you apply too much solder and it bridges across multiple pins, stop what you're doing and clean it up. The easiest way to do this is with a desoldering wick, but you can also try to break the surface tension by poking at it with your iron. This part can be frustrating, and this step is the most difficult part of the process, so don't worry if you don't do a great job. Soldering is an art form, you will get better as you complete more projects!

    When you are done, it might look like a bit of a mess:

    Once you close the box, though, the mess will be invisible. We're all a bit messy on the inside, so don't judge the controller until you get to know it.

    Upload the firmware and test your connection

    Plug the controller into your computer. It should appear as a flash drive called RPI-RP2.

    Head to the Downloads page on the GP2040-CE website and download the appropriate firmware for your board. This should be a file with the .uf2 extension.

    Drag this file into the RPI-RP2 folder. After the file uploads to the controller, it will automatically reboot and now it should connect as a controller to your computer!

    Visit "Set Up USB Game Controllers" in your Windows settings, or the online hardware gamepad tester website here. Test the function of all of your buttons.

    If any button is not working properly, take a look at your connection wire and ground wire and see if you need to repair any of the connections. If anything obvious is wrong, correct it and move on. Keep in mind the A1 and A2 buttons are not bound to anything on PC, so you should switch to a different console mode if you want to test those inputs.

    If any buttons are dead, check their connections and fix any soldering issues that may be there. If any buttons are mapped incorrectly, you can fix it by changing the pin mappings in the Web Configurator. See the GP2040-CE docs for info on this topic.

    Enjoy!

    You now have a fully functional cardboard controller! Go win your local with it!

    Help contribute to this guide!

    If you have any suggested updates or parts vendors to recommmend, please reach out on the Granola discord or email me!

    Acknowledgements

    The CAMP kit product was inspired by CountIfShine in the Granola discord, who built a controller on their own out of a Granola controller box.

    Thank you to Drug Free Plays who kindly answered my questions about their cardboard controllers.

    Crane's Budget Boxx guide and Super Toad Mods' guides on YouTube were very helpful in designing this guide as well.