Introduction: PiConsole - Raspberry Pi Pico Retro Console

If you have ever worked with an Arduino kit to make electronic assemblies on breadboard, you will have been aware of how fragile and cumbersome they are. Normally, when a circuit or assembly has been debugged on a breadboard, it is consolidated on a PCB to which all the components are soldered, obtaining what we can call a device. Once we have built such a device, especially if it integrates a microcontroller or microprocessor, it will be much easier and more comfortable to work with.

PiConsole is an electronics kit with a Raspberry Pi Pico microcontroller, which has been given the shape of a portable video game console. Once assembled, it can be used for teaching basic electronics and programming activities. And of course also to play.

Supplies

For the assembly, we will need the following elements in addition to soldering iron and solder wire.

Attachments

Step 1: Schematics

As in all electronic assemblies, it is important to have the circuit schematic to understand it well or to modify/repair it.

As can be seen, everything is centered around the Raspberry Pi Pico to which a few input and output devices have been connected to several of its GPIO pins. The installation has been made as simplistic as possible, disregarding debouncing capacitors in the controls for example, since being a kit designed to be made in class with young/inexperienced people, we have tried to minimize the number of components to be soldered. In addition, the debounce can be managed by software.

The OLED display in SPI version has been used (instead I2C) because of the higher refresh rate it achieves, as the device is shaped like a video game console.

The battery circuit incorporates a diode to avoid problems with the battery if the microUSB cable is connected to the computer for programming the device or debugging programs.

The LDR photoresistor and the potentiometer have been assembled in voltage divider format, so the range of analogue values they will produce will be maximum.

All unused Raspberry Pi Pico GPIO pins have been exposed via a socket so that they can be exploited for external mounting on the device.

The table below shows the Raspberry Pi Pico GPIO where each component is connected, to be used as a reference when programming.

| Device         | Pico Pin | Pico Direction | Device Pin  ||----------------|----------|----------------|-------------|| OLED           | GP16     | OUT            | DC          || OLED           | GP17     | OUT            | CS          || OLED           | GP18     | OUT            | SCL (SCK)   || OLED           | GP19     | OUT            | SDA (MOSI)  || OLED           | GP20     | OUT            | RES         || Keys           | GP11     | IN PULL_UP     | A           || Keys           | GP7      | IN PULL_UP     | B           || Keys           | GP12     | IN PULL_UP     | Right       || Keys           | GP13     | IN PULL_UP     | Left        || Keys           | GP14     | IN PULL_UP     | Down        || Keys           | GP15     | IN PULL_UP     | Up          || Buzzer         | GP10     | OUT            | +           || Potentiometer  | ADC1     | IN             | Central Pin || Photoresistor  | ADC2     | IN             |             || LEDs           | GP8      | OUT            | Yellow      || LEDs           | GP9      | OUT            | Red         || LEDs           | GP21     | OUT            | Green       || LEDs           | GP22     | OUT            | IR          || GPIO PiConsole | GND      | Power          | Pin #1      || GPIO PiConsole | 3.3V     | Power          | Pin #2      || GPIO PiConsole | ADC0     | IN             | Pin #3      || GPIO PiConsole | GP0      | IN/OUT         | Pin #4      || GPIO PiConsole | GP6      | IN/OUT         | Pin #5      || GPIO PiConsole | GP1      | IN/OUT         | Pin #6      || GPIO PiConsole | GP5      | IN/OUT         | Pin #7      || GPIO PiConsole | GP2      | IN/OUT         | Pin #8      || GPIO PiConsole | GP4      | IN/OUT         | Pin #9      || GPIO PiConsole | GP3      | IN/OUT         | Pin #10     || GPIO PiConsole | GND      | Power          | Pin #11     || GPIO PiConsole | VSYS     | Power          | Pin #12     |

Step 2: PCB

Using the schematic seen in the previous step, we designed a PCB so that the final device would look like a handheld video game console in vertical format. In the renders above, some components such as the rubber buttons or the display do not correspond to the actual components used. They have been replaced by similar components scaled slightly.

The gerber files so you can order a bunch of PCBs to a manufacturer can be obtained from next link:

PiConsole v7 gerbers

The KiCad (6.0) sources with schematic and PCB layout can be obtained from next repository:

PiConsole - Raspberry Pi Pico Retro Console - PCB

The assembly of the components is not particularly difficult, as they are all of THT type. The order in which the components are soldered is important, as some are on one side of the PCB and others on the other, so if a certain order is not followed, some solder joints could be hindered. The recommended order is as follows:

  1. Bottom face PCB (the one with big niubit logo)
  2. Raspberry Pi Pico: Before soldering Pico to the bottom of the PCB, we have to solder the two 1x20 pin strips to the Pico itself.
  3. Buzzer
  4. Upper side PCB
  5. Resistors
  6. Schottky diode
  7. Power switch
  8. Tactile switch 6mm (reset)
  9. Rubber switches
  10. 2x06 socket pin (GPIO)
  11. IR LED
  12. Colour LEDs
  13. LDR photoresistor
  14. OLED screen with plastic supports
  15. Bottom face PCB
  16. Battery holder
  17. Upper side PCB
  18. Potentiometer

It is recommended to solder the potentiometer last as it is the component that sticks out the most and is therefore the most obtrusive.

Before soldering the OLED screen, it is recommended to glue or hot glue the nut that will hold the battery holder with the corresponding screw. If we don't do it before, it will be difficult to keep the nut in place to screw the battery holder, as the screen is covering the area.

Despite the screw/nut that holds the battery holder, it is advisable to place a double-layer adhesive strip between it and the PCB, preferably one of a certain thickness, i.e. with foam. It is also advisable to trim the terminals of all the solder joints in this area as much as possible.

In the video of this section you can see the whole process of soldering the components. Unfortunately the audio is in Spanish, but it can be followed without listening to the explanations.

Step 3: Case, Keys and Supports

To handle the console once it is built, especially if it is to be used for gaming, it is almost essential to protect the device with a suitable case. It will also serve as a support and guide for the controls that will be placed on the switches of the board as D-pad, action and reset keys.

All parts have been modeled with FreeCAD. Both the sources and the STL files for printing can be found in the following repository:

PiConsole - Raspberry Pi Pico Retro Console - Case

The two larger pieces (for top and bottom case) and screen supports can be fabricated with a 3D filament printer (FDM). But the parts corresponding to the controls (D-pad and action keys) are highly recommended to be made with a resin printer (SLA).

Once we have the PCB mounted and the case printed, the final assembly can be done with the screws listed in the Supplies section.

Step 4: Software

In terms of the software that can run on the PiConsole, there are several approaches:

In the following repository we have compiled some of the programs developed or adapted by us that we know work on PiConsole:

PiConsole - Raspberry Pi Pico Retro Console - Software

Step 5: End

And that concludes it. We hope that you will be encouraged to make the assembly. It is a good exercise in soldering and basic electronics.

If anyone does the assembly, we hope you will let us know your impressions.

PD: The game collection seen in the video is MegaGamesCompilationPicoAdafruit by Roger Rabbit, adapted from MEGA games compilation for ESP8266 or ESP8285.

Electronics Contest

Participated in the
Electronics Contest