MiniMath Pocket Monsters
An embedded game where players catch Pokémon by solving math equations.
Author: Cojan Alexia-Ramona
GitHub Project Link: https://github.com/UPB-PMRust-Students/fils-project-2026-0monia0
Description
MiniMath Pocket Monsters is an embedded game in which the player explores a virtual enviroment and ecounters Pokémon that can only be caught by solving mathematical equations. The player can move within the game either by using physical buttons or by using motion input from an accelerometer. When a Pokémon randomly appears, the player is prompted with a mathematical equation that needs to be solved in a limited time. If the correct answer is given, the creature is successfully captured, otherwise, it escapes. The difficulty of the mathematical challenges varies depending on the rarity of the encountered Pokémon. There is also a score that shows how many Pokémon you caught, if u get one answer wrong, the score goes back to 0. The game provides visual feedback from a TFT display, where the game environment and interactions are rendered, an additional display for auxilliary information such as score or status, as well as LEDs. Audio feedback is given through a passive buzzer which provides sound effects during key events like successfuly capturing a Pokémon or losing it, and encounters.
Motivation
The motivation behind this project is personal, as well as educational. I chose this topic because i am interested in the Pokémon franchise and i like video games. I wanted to bring my interests to life by making my own version of the popular Pokémon games. At the same time, this project gives me the opportunity to learn and explore how interactive applications can be implemented on microcontrollers.The inspiration for this project comes from classic Pokémon games, which provide an engaging experience through simple mechanics. Another source of inspiration is represented by the modern game Pokémon Go, where real world actions influence the behvior in the game. This project adapts that idea in a simplified manner by using motion input from an accelerometer, allowing the player to interact with the game in a more dynamic way.The game can also be considered an educational tool, as it encourages quick thinking and problem solving through time-limited mathematical challenges. By combining gameplay with simple equations, the system provides a fun and engaging way to practice basic arithmetic skills.
Architecture
Log
Week 1-6:
I started brainstorming for my project idea and getting approval from my professors.
Week 6-9:
I purchased all the needed components, doing tests to make sure everything works right and working on the documentation milestone.
Week 9-14:
Hardware
The system is built around an STM32 microcontroller, which controls all the components and runs the main game logic. The TFT display is connected using SPI and is used to show the game itself, including the map, player, and interactions. The OLED display is connected through I2C and is used to display additional information such as score or messages. The MPU9250 sensor is also connected via I2C and is used to detect movement. The data from the accelerometer will be processed in order to detect walking patterns, which are then used to move the player in the game. User input is provided through push buttons connected to GPIO pins, allowing direct control of the game. A passive buzzer is also connected to a GPIO pin and is used to generate simple melodies during gameplay. LEDs will also be connected to GPIO pins through resistors and be used for debugging or simple visual feedback. All components are connected to the microcontroller using standard interfaces such as SPI, I2C, and GPIO.
Schematics
Place your KiCAD schematics here.
Bill of Materials
| Device | Usage | Price |
|---|---|---|
| STM32 Nucleo-U545RE-Q | main microcontroller board used to control the system | borrowed from laboratory |
| BreadBoard 400 tie points | used to connect components and build circuits without soldering the components together | ~7 RON |
| Dupont wires male-to-male, 20 cm | used to connect components on the breadboard and to the microcontroller | ~2 RON |
| LED kit 3mm/5mm, assorted colors | used for visual indicators | ~18 RON |
| Resistors 220Ω, 1/4W | used to limit current in circuits, especially for LEDs | ~13 RON |
| Tactile push buttons 6x6 mm | used as user input controls for interacting with the game | ~37 RON |
| OLED display 0.96", 128x64, SSD1306, I2C | used to display additional information such as score | ~30 RON |
| Passive buzzer module KY-006 | used to generate sound effects and simple melodies during gameplay | ~3 RON |
| MPU9250 9-axis sensor | the accelerometer will be used to detect walking motion by analyzing variations in acceleration | ~90 RON |
| TFT display (1.3", IPS, ST7789V, SPI, 240x240 | used as the main display for rendering game graphics | ~30 RON |
Software
| Library | Description | Usage |
|---|---|---|
| embassy | Async embedded framework for Rust | Used for handling tasks and timing |
| embedded-hal | Hardware abstraction layer | Used for interfacing with peripherals |
| embedded-graphics | 2D graphics library | Used for rendering text and graphics on displays |
| st7789 | Display driver for ST7789 | Used for the TFT display |
| ssd1306 | OLED display driver | Used for the OLED display |