Skip to content

Commit 8387442

Browse files
committed
Add project page for matei.stanuca
Signed-off-by: Matei Stanuca <stanucamatei@gmail.com>
1 parent b662222 commit 8387442

4 files changed

Lines changed: 69 additions & 0 deletions

File tree

11.3 KB
Loading
12.7 KB
Loading
5.35 KB
Loading
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# STM32 Rubik's Cube Solver
2+
3+
A smart robotic system that uses mobile computer vision to analyze a Rubik's Cube and an STM32-controlled mechanical frame to solve it.
4+
5+
:::info
6+
7+
Author: Matei Stănuca
8+
9+
GitHub Project Link: [Rubiks Cube Solver](https://github.com/UPB-PMRust-Students/acs-project-2026-mateistanuca1)
10+
11+
:::
12+
13+
## Description
14+
15+
This project is an end-to-end automated solver. It uses a smartphone camera to scan all six faces of the Rubik's Cube. The mobile application processes the images to identify the color configuration and calculates the optimal solution using the Kociemba algorithm. The resulting move sequence is transmitted to an STM32 microcontroller, which executes the physical rotations using six NEMA 17 stepper motors.
16+
17+
## Motivation
18+
19+
The goal is to integrate high-level software (Computer Vision and Pathfinding) with low-level hardware control. By using a smartphone as the sensor, I can leverage its high-resolution camera and processing power to simplify the hardware setup while creating a seamless user experience where a simple scan leads to a physical solution.
20+
21+
## Architecture
22+
23+
The system operates in three main stages:
24+
25+
1. Vision Layer: Smartphone app captures and parses the cube's state.
26+
27+
2. Communication Layer: Data is sent via UART (Serial) or Bluetooth/Wi-Fi to the STM32.
28+
29+
3. Execution Layer: STM32 coordinates six A4988 drivers to perform the moves.
30+
31+
## Log
32+
33+
### Week 5 - 11 May
34+
35+
### Week 12 - 18 May
36+
37+
### Week 19 - 25 May
38+
39+
## Hardware
40+
41+
The system is powered by an STM32 Nucleo board. The mechanical assembly uses six NEMA 17 motors, each equipped with a 3D-printed adapter.
42+
43+
### Schematics
44+
45+
![Inner_Shell](images/Inner_Shell.webp)
46+
![Outer_Shell](images/Outer_Shell.webp)
47+
![Rubik_Adapter](images/Rubik_Adapter.webp)
48+
49+
### Bill of Materials
50+
51+
## Software
52+
53+
| Library | Description | Usage |
54+
|---------|-------------|-------|
55+
| [embassy-stm32](https://github.com/embassy-rs/embassy) | STM32 HAL for Embassy | Used for GPIO, ADC and timers/PWM |
56+
| [embassy-executor](https://github.com/embassy-rs/embassy) | Async task executor | Runs the main application logic |
57+
| [embassy-time](https://github.com/embassy-rs/embassy) | Timekeeping and delays | Used for timing and sensor polling |
58+
| [embedded-hal](https://github.com/rust-embedded/embedded-hal) | Hardware abstraction layer | Standard interface for peripherals |
59+
| [defmt](https://github.com/knurling-rs/defmt) | Lightweight logging framework | Used for debugging and logging |
60+
| [defmt-rtt](https://github.com/knurling-rs/defmt) | RTT logging transport | Sends logs to the PC |
61+
| [panic-probe](https://github.com/knurling-rs/probe-run) | Panic handler | Used for debugging crashes |
62+
| [imageproc](https://crates.io/crates/imageproc) | Vision library | Parsing cube colors from camera |
63+
64+
65+
## Links
66+
67+
<!-- Add a few links that inspired you and that you think you will use for your project -->
68+
69+
1. [Teseract Rubiks Cuber Robot](https://www.instructables.com/Tesseract-Rubiks-Cube-Robot/)

0 commit comments

Comments
 (0)