diff --git a/website/versioned_docs/version-fils_en/project/2026/furkan.korkmaz/images/gamepad.svg b/website/versioned_docs/version-fils_en/project/2026/furkan.korkmaz/images/gamepad.svg new file mode 100644 index 00000000000..9499a063a7d --- /dev/null +++ b/website/versioned_docs/version-fils_en/project/2026/furkan.korkmaz/images/gamepad.svg @@ -0,0 +1,15621 @@ + + + +SVG Image created as Pico_Gamepad.svg date 2026-05-09T17:20:24 + Image generated by Eeschema-SVG + + + + + + + + + + + +1 +1 + + + + + +2 +2 + + + + + + + + + + +3 +3 + + + + + + + + + + + + + +4 +4 + + + +5 +5 + + + + + + + + + + + + + + + +6 +6 + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +1 + + + + + +2 +2 + + + + + + + + + + +3 +3 + + + + + + + + + + + + + +4 +4 + + + +5 +5 + + + + + + + + + + + + + + + +6 +6 + + + + + + + + + + + + + + + + + + + + + + + + +A +A + + + +B +B + + + + + + + + + + + + + + + + + + +C +C + + + + + + + + + + + + + + + +D +D + + + + + + + + + + + + + + + +A +A + + + +B +B + + + + + + + + + + + + + + + + + + +C +C + + + + + + + + + + + + + + + +D +D + + + + + + + + + + + + +Date: +Date: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +KiCad E.D.A. 10.0.1 +KiCad E.D.A. 10.0.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Rev: +Rev: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Size: A4 +Size: A4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Id: 1/1 +Id: 1/1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Title: +Title: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +File: Pico_Gamepad.kicad_sch +File: Pico_Gamepad.kicad_sch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Sheet: / +Sheet: / + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +D1 +D1 + + + + + + + + + + + + + + + + + +LED +LED + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SW4 +SW4 + + + + + + + + + + + + + + + + + + + + + + + + + + +SW_Push +SW_Push + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SW3 +SW3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SW_Push +SW_Push + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SW2 +SW2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SW_Push +SW_Push + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SW1 +SW1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SW_Push +SW_Push + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GPIO0 +GPIO0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +1 + + + + + + + + + + +GPIO1 +GPIO1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +2 +2 + + + + + + + + + + + + + + + + +GND + +GND + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3 + +3 + + + + + + + + + + + + + + + + + + +GPIO2 +GPIO2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4 +4 + + + + + + + + +GPIO3 +GPIO3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +5 +5 + + + + + + + + + + + + + + + + + + + + +GPIO4 +GPIO4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +6 +6 + + + + + + + + + + + + + + + + + + + + + + + + + + +GPIO5 +GPIO5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +7 +7 + + + + + + + +GPIO6 +GPIO6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 + + + + + + + + + + + + + + + + + + + + + + + + + + +GPIO7 +GPIO7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +10 +10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GPIO8 +GPIO8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +11 +11 + + + + + + + + + + + + + + + +GPIO9 +GPIO9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +12 +12 + + + + + + + + + + + + + + + + + + + + +GPIO10 +GPIO10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +14 +14 + + + + + + + + + + + + + +GPIO11 +GPIO11 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +15 +15 + + + + + + + + + + + + + + + + + + + + + + + + + +GPIO12 +GPIO12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +16 +16 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GPIO13 +GPIO13 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +17 +17 + + + + + + + + + + + + +GPIO14 +GPIO14 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +19 +19 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GPIO15 +GPIO15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +20 +20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GPIO16 +GPIO16 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +21 +21 + + + + + + + + + + + + + + + + + + + + +GPIO17 +GPIO17 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +22 +22 + + + + + + + + + + + + + + + + + + + + + + + + + +GPIO18 +GPIO18 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +24 +24 + + + + + + + + + + + + + + + + + + +GPIO19 +GPIO19 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +25 +25 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GPIO20 +GPIO20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +26 +26 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GPIO21 +GPIO21 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +27 +27 + + + + + + + + + + + + + + + + + +GPIO22 +GPIO22 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +29 +29 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +RUN +RUN + + + + + + + + + + + + + + + + + + + + + + + + + +30 +30 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GPIO26_ADC0 +GPIO26_ADC0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +31 +31 + + + + + + + + + + + + + + + + + + + + + + + +GPIO27_ADC1 +GPIO27_ADC1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +32 +32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +AGND +AGND + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +33 +33 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GPIO28_ADC2 +GPIO28_ADC2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +34 +34 + + + + + + + + + + + + + + + + + + + + + +ADC_VREF +ADC_VREF + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +35 +35 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3V3 + +3V3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +36 + +36 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3V3_EN +3V3_EN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +37 +37 + + + + + + + + + + + + + + + + + + + + + +VSYS + +VSYS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +39 + +39 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +VBUS + +VBUS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +40 + +40 + + + + + + + + + + + + + + + + + + + + + + + + + +A1 +A1 + + + + + + + + +RaspberryPi_Pico_W +RaspberryPi_Pico_W + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SW8 +SW8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SW_Push +SW_Push + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +R1 +R1 + + + + + + + + + + + + + + + + +R +R + + + + + + + + + + + + + + + + + + + + + +SW6 +SW6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SW_Push +SW_Push + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SW5 +SW5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SW_Push +SW_Push + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GND +GND + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SW7 +SW7 + + + + + + + + + + + + + + + + + + + + + + + + + +SW_Push +SW_Push + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website/versioned_docs/version-fils_en/project/2026/furkan.korkmaz/images/snake_game_architecture.svg b/website/versioned_docs/version-fils_en/project/2026/furkan.korkmaz/images/snake_game_architecture.svg new file mode 100644 index 00000000000..7e262b8d4a4 --- /dev/null +++ b/website/versioned_docs/version-fils_en/project/2026/furkan.korkmaz/images/snake_game_architecture.svg @@ -0,0 +1,63 @@ + + Snake Game - STM32 Architecture + Button inputs connect to STM32 which processes game logic and outputs via USB gamepad to PC monitor + + + + + + + + + + Buttons + 8x GPIO + Input Pins + + + + + + STM32U545RETx + Game Logic + Button Processing + Score + Lives + Level Management + USB Output + + + + + + PC Monitor + USB Gamepad + Rendering + + + + + GPIO read + + + USB HID + + + + + + Buzzer (optional) + + + + + + + + + OLED (optional) + + + + + + diff --git a/website/versioned_docs/version-fils_en/project/2026/furkan.korkmaz/images/tiny_knight_architecture.svg b/website/versioned_docs/version-fils_en/project/2026/furkan.korkmaz/images/tiny_knight_architecture.svg new file mode 100644 index 00000000000..1c6ca002efa --- /dev/null +++ b/website/versioned_docs/version-fils_en/project/2026/furkan.korkmaz/images/tiny_knight_architecture.svg @@ -0,0 +1,100 @@ + + Tiny Knight - STM32 Architecture + Button inputs to STM32 game engine with player, enemies, physics, and shop systems, output to PC via USB + + + + + + + + + + Buttons + D-Pad + Actions + 8x GPIO + + + + + + STM32U545RETx + Core Game Engine + Level Management + Entity System + + + + + + Player + Position + Health + Sword + + + + + + Enemies + AI States + 5 Types + Patrol/Chase + + + + + + Physics + Gravity + Collision + Platforms + + + + + + Shop + Coins + Power-ups + + + + + + Levels + Platforms + 20 Levels + + + + + + PC Monitor + USB Gamepad + Graphics + Audio + + + + + Input + + + + Player + + + Enemies + + + Physics + + + + + + + + USB HID + + diff --git a/website/versioned_docs/version-fils_en/project/2026/furkan.korkmaz/index.md b/website/versioned_docs/version-fils_en/project/2026/furkan.korkmaz/index.md new file mode 100644 index 00000000000..87aca34425b --- /dev/null +++ b/website/versioned_docs/version-fils_en/project/2026/furkan.korkmaz/index.md @@ -0,0 +1,109 @@ +# Reaction Gamepad + +A classic reaction-based gamepad with STM32U545RETx microcontroller, playable via USB connection to PC. + +:::info + +**Author**: Furkan Korkmaz +**GitHub Project Link**: https://github.com/UPB-PMRust-Students/fils-project-2026-FurkanKorkmaz1 + +::: + +\--- + +## Description + +Reaction Gamepad is a fully functional implementation of a reaction-based game system, running on an STM32 microcontroller. The player uses 8 physical buttons connected to the microcontroller, which communicates with a PC via USB as a gamepad device. The game displays on the PC monitor through a custom graphics engine. Features include multiple game modes, difficulty levels, and visual feedback systems. + +\--- + +## Motivation + +This project demonstrates embedded game development on microcontrollers. It combines real-time input handling, game state management, USB protocol implementation, and Rust embedded systems programming. The reaction gamepad serves as a practical platform for learning microcontroller programming while creating an engaging interactive experience. + +\--- + +## Architecture + +**Main Components:** + +* **STM32U545RETx Microcontroller**: Central processor running game logic, manages GPIO input and USB output +* **8 Physical Buttons**: User input connected to GPIO pins with debouncing +* **USB Gamepad Emulation**: HID protocol implementation for PC communication +* **Game State Manager**: Handles game state, score, and level progression +* **Collision Detection Engine**: Detects input validation and timing + +**How They Connect:** + +* Buttons connect to GPIO pins → Firmware reads debounced input +* Game logic updates based on button input +* Game state is converted to HID gamepad commands +* PC receives gamepad data via USB and renders graphics/audio + +!\[snake\_game\_architecture](./images/snake\_game\_architecture.svg) + +!\[tiny\_knight\_architecture](./images/tiny\_knight\_architecture.svg) + +\--- + +## Log + +### Week 5 - 11 May + +Project concept selected. Decided to build a reaction-based gamepad using STM32U545RETx microcontroller. First version will use buttons as input with PC display for visual feedback. + +### Week 12 - 18 May + +Hardware architecture planned. Buttons configured as GPIO inputs. Main software logic designed with game loop structure and timing measurement. + +### Week 19 - 25 May + +Documentation page created. Project description, motivation, architecture, hardware plan, and software plan documented. Game modes and difficulty levels finalized in design. + +\--- + +## Hardware + +STM32U545RETx (Nucleo-U545RE-Q) development board serves as the main microcontroller. Prototype built on breadboard using 8 push buttons for input, USB connection to PC for gamepad communication. Buttons connected via GPIO pins with pull-down resistors for debouncing. All power supplied via USB cable. + +\--- + +## Schematics + +!\[gamepad](./images/gamepad.svg) + +\--- + +## Bill of Materials + +|Device|Usage|Price| +|-|-|-| +|STM32 Nucleo-U545RE-Q|Main microcontroller|Borrowed from FILS| +|Push Buttons (x8)|Player input controls|20 RON| +|Breadboard|Circuit assembly|18 RON| +|Jumper Wires|Component connections|20 RON| +|Resistors (10kΩ)|Button debouncing|1.20 RON| +|USB Micro Cable|Power and communication|12 RON| +|**Total**||**71.20 RON**| + +\--- + +## Software + +|Library|Description|Usage| +|-|-|-| +|embassy-stm32|STM32 hardware abstraction layer|Controls GPIO pins and USB device| +|embassy-usb|USB device stack|Implements HID gamepad protocol| +|usbd-hid|USB HID device support|Sends gamepad input to PC| +|embedded-hal|Embedded hardware traits|Standard interface for GPIO operations| +|stm32u5|STM32U5 specific bindings|Direct microcontroller access| + +\--- + +## Links + +1. [STM32U5 Datasheet](https://www.st.com/resource/en/datasheet/stm32u545re.pdf) +2. [Nucleo-U545RE-Q User Manual](https://www.st.com/resource/en/user_manual/um2912-stm32u545-discovery-kit-stmicroelectronics.pdf) +3. [Rust Embedded Book](https://rust-embedded.github.io/book/) +4. [Embassy Documentation](https://embassy.dev/) +