The Mini Arcade
Pocket-sized arcade action for solo challenges or head-to-head fun.
Author: Iulian Alexa
GitHub Project Link: https://github.com/UPB-PMRust-Students/proiect-iulianalexa
Description
This handheld mini-console delivers a diverse collection of engaging numeric mini-games, controlled by dual keypads for both solo brain teasers like Sudoku and competitive two-player challenges. Players can test their calculation speed, memory of number sequences, and reaction time in intense 1v1 battles across multiple rounds, with scores tallied to determine the winner.
Motivation
I chose this project because it taps into something I enjoy: the simple joy of accessible gaming. The idea of creating a small, portable, and cheap mini-arcade that doesn't need a computer is exciting. It's reminiscent of retro consoles, from a time when fun activities weren't always about intense competition. Focusing on straightforward, engaging numeric mini-games controlled by keypads offers a cool mix of nostalgia and something a bit different, emphasizing quick thinking and friendly rivalry.
I also thought it would be interesting to try and connect a USB keyboard to a microcontroller using Rust (without the TinyUSB C bindings).
Architecture
Hardware Integration
- The Raspberry Pi Pico 2W acts as the central processing unit, running the software.
- The display is driven by the Pico 2W to provide the visual interface for all menus, games, and feedback.
- The MicroSD module integrated in the TFT display module allows for writing and reading leaderboard scores.
- The buzzer, connected to a GPIO pin on the Pico 2W, provides simple audio cues.
- The USB hub allows the Pico 2W to receive input from the two keypads.
- LEDs are used for additional visual feedback.
Software Flow
Log
Week 28 April - 4 May
- ordered hardware components
- soldered headers to the microcontroller
- performed USB tests
Week 5 - 11 May
Week 12 - 18 May
Week 19 - 25 May
Hardware
- Raspberry Pi Pico 2W - The microcontroller
- 2.2'' LCD TFT SPI 320x240 ILI9341 display - Display and Micro SD module
- 2x A4Tech NumericPad Fstyler FK13 USB Black - User Input
- LOGILINK Hub USB 2.0 4 ports - Join Keyboards to allow connecting to MCU USB
- Active Buzzer - Audio feedback
- LEDs - Additional visual feedback
Schematics
Bill of Materials
Device | Usage | Price |
---|---|---|
Raspberry Pi Pico 2W | The microcontroller | 40 RON |
Raspberry Pi Pico 2W | As Debug Probe | 40 RON |
2.2'' LCD TFT SPI 320x240 ILI9341 display | Main Game Output and microSD card reading/writing for leaderboard scores | 69 RON |
2x A4Tech NumericPad Fstyler FK13 USB Black | User Input | 2x 30 RON |
LOGILINK Hub USB 2.0 4 ports | Connect Keyboards | 30 RON |
Breadboard (830 contacts) | Connect Components | 10 RON |
Female USB-A to Male Micro USB Adapter | USB Hub input | 5 RON |
Jumper Wires | Connecting Components | 5 RON |
3xR6 Battery Holder | Portable Power Source | 4 RON |
2x Active Buzzer | Audio Feedback | 2x 2 RON |
Resistors | Voltage regulation and signal protection for components | 3 RON |
LEDs | Visual Feedback | 3 RON |
Total | 273 RON |
Software
Library | Description | Usage |
---|---|---|
mipidsi | Display driver for ILI9341 | Used for the display |
embedded-graphics | 2D graphics library | Used for drawing to the display |
embassy-rp | HAL for RP2350 | |
cotton-usb-host | USB Host Stack | Enable the Keyboards |
rp235x-pac | PAC for RP2350 | Used by cotton-usb-host |
defmt | Deferred formatting | Logging during testing |