Related lists

Description

Many attempts at making a RetroPie handheld gaming device have utilized off the shelf boards from Adafruit and other vendors. Combining these individual boards works well but requires a lot of time to put together and may not be accessible to a first time hacker. Many people seem to be looking for a RetroPie device that is ready to play off the shelf, not a kit that requires assembly. Therefore, this project aims at creating an all-in-one board for a possible large(r) production device that lowers the level of entry compared to other DIY kits currently available.

Details

This project is ongoing. I have currently made v4.0 of the board and it works with minor errors. The next version of the board will fix the battery management circuit and add audio and HDMI output.

The most recent version of the board has been assembled and tested! There has been a design flaw identified with the load sharing feature of the battery management circuit but otherwise the board is a success. The next version will fix the battery management and add audio and HDMI out capabilities.

I have made a blank Kicad project that has all the parts necessary for jumpstarting a project based on the Raspberry Pi Compute Module 3 Lite. All of the files are available at our GitHub. If anyone has an issue using these files, please let us know so we can help fix any issues.

The process of designing v4.0 of the board has begun. We have chosen to modify the design slightly with this update. This update will also bring the battery management circuit onto the board, a power switch, and buttons that are better suited for manufacturing. This version will also add test points and holes for mounting the device in a case. Here is quick look at the proposed board redesign:

The first prototype is complete. There are some minor issues with the layout and some features that still have yet to be added. The next version of the board is in the works and should be closer to the final version.

Build Instructions

Setup:

A requirement of this project is having the ability to reflow surface mount components on a PCB. I chose to go with the ControLeo2 Reflow Oven Controller. I ordered the full kit from their website Whizoo. I decided to use the exact same toaster oven that the tutorial on their website uses. This took some of the major unknowns out of the equation for the build. I bought the toaster oven off of Amazon for pretty cheap.

Some tips based on my experience of putting together the reflow oven:

Read the full tutorial multiple times before starting to make sure you understand the process.

Look at the pictures in the tutorial carefully. A couple of times I assumed I knew what the instructions were saying only to look at the pictures after doing something to realize I had done the step incorrectly.

Avoid the temptation to work on steps out of order. I tried to skip ahead a couple of times thinking that I could save some time. This did not always work well. The tutorial has the steps in the best order.

DON'T CUT THE WIRES UNTIL YOU ARE CERTAIN. You will need to reuse the wires you remove from the oven so do not cut them into sections for reuse without first making sure they are the correct length.

Here are some pictures of my final build of the reflow oven:

2

Step 2

Raspberry Pi Compute Module 3 Lite:

The only design needed for using the Raspi CM3L is the power supplies, pull-up resistors for some of the I/O, and the micro-SD card slot. This setup is pretty straightforward following the schematics for the I/O board given here. A KiCAD project with a blank schematic for the CM3L can be found here. Customizing the board for a particular use then only requires adding whatever else is needed for the specific application.

3

Step 3

Enabling the DPI on the Raspi CM3L:

I decided to drive the LCD display with the GPIO in case I wanted to make a dock for the handheld in the future. The dock would allow for HDMI out to a larger screen as well as a USB hub for Wifi and Bluetooth. This would enable updates to the device as well as wireless controllers for playing games on a bigger screen. To this end, using the GPIO to drive the screen keeps the HDMI lines free for future use.

Getting the screen to be driven by the GPIO was pretty straightforward. I suggest looking at the Raspi documentation here and a good tutorial here. The thing that I had to spend the most time on was the pixel timings. I tried using the exact frequency as suggested by the data sheet for the screen I was using. However, it turns out that the Raspi does not support arbitrary clock frequencies for this purpose. The only explanation I found is given here.