PiConsole - Raspberry Pi Pico Retro Console
by Niubit in Circuits > Microcontrollers
4575 Views, 10 Favorites, 0 Comments
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.
- 1x PCB
- 1x LED Red 5mm
- 1x LED Yellow 5mm
- 1x LED Green 5mm
- 1x LED IR 5mm
- 1x Raspberry Pi Pico
- 6x Rubber switch 8mm
- 1x Tactile switch 6mm
- 1x OLED screen 1,54" SSD1306
- 1x Pasive buzzer
- 1x LDR Photoresistor GL5516
- 2x Male 1x20 header pin
- 1x Female 2x06 socket pin
- 3x 330Ω resistor 1/4W
- 1x 47Ω resistor 1/4W
- 1x 10KΩ resistor1/4W
- 1x Slide switch
- 1x 10KΩ potentiometer
- 1x Diodo Schottky 1N5817
- 1x Battery holder 2xAAA (alternative)
- 4x M3x10 allen screw
- 1x M3x8 phillips countersunk screw
- 1x M3 bolt
- 4x M3 Metal knurl thread insert
- 1x 3D printed top case
- 1x 3D printed bottom case
- 1x 3D printed D-pad
- 2x 3D printed action buttons
- 1x 3D printed reset button
- 4x 3D printed screen spacers
Downloads
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 |
Downloads
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:
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:
- Bottom face PCB (the one with big niubit logo)
- 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.
- Buzzer
- Upper side PCB
- Resistors
- Schottky diode
- Power switch
- Tactile switch 6mm (reset)
- Rubber switches
- 2x06 socket pin (GPIO)
- IR LED
- Colour LEDs
- LDR photoresistor
- OLED screen with plastic supports
- Bottom face PCB
- Battery holder
- Upper side PCB
- 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.
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.
Software
In terms of the software that can run on the PiConsole, there are several approaches:
- Own development in MicroPython using this SSD1306 library for OLED screen
- Own development in C (Arduino IDE) using the SSD1306 library included in Arduino IDE library manager
- Adaptation of games made for other similar platforms (Arduboy, Tinyjoypad)
In the following repository we have compiled some of the programs developed or adapted by us that we know work on PiConsole:
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.