This shows you the differences between two versions of the page.
|
pm:prj2026:radu_ion.balasa [2026/05/20 19:26] radu_ion.balasa [Rubik's Cube Solver] |
pm:prj2026:radu_ion.balasa [2026/05/20 19:43] (current) radu_ion.balasa [Software Design] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Rubik's Cube Solver ====== | ====== Rubik's Cube Solver ====== | ||
| **Autor:** Balasa Radu-Ion\\ | **Autor:** Balasa Radu-Ion\\ | ||
| - | **Grupa:** 331CA | + | **Grupa:** 331CA\\ |
| **Link github**: [[https://github.com/BalasaRadu/rubik_solver/tree/main]] | **Link github**: [[https://github.com/BalasaRadu/rubik_solver/tree/main]] | ||
| ==== Introducere ==== | ==== Introducere ==== | ||
| Proiectul propune realizarea unui robot capabil sa rezolve un cub Rubik de tip 3x3x3, folosind o structura mecanica simpla si procesare externa. Sistemul foloseste puterea de calcul a unui laptop pentru a determina secventa optima de miscari, transmitand ulterior comenzile catre un microcontroler ESP32 care actioneaza motoarele. | Proiectul propune realizarea unui robot capabil sa rezolve un cub Rubik de tip 3x3x3, folosind o structura mecanica simpla si procesare externa. Sistemul foloseste puterea de calcul a unui laptop pentru a determina secventa optima de miscari, transmitand ulterior comenzile catre un microcontroler ESP32 care actioneaza motoarele. | ||
| - | |||
| - | Obiectivul principal este demonstrarea controlului precis al servomotoarelor si al comunicarii seriale intre un PC si un sistem embedded. Sistemul este conceput sa permita introducerea manuala a starii cubului sub forma de text intr-o interfata dedicata. | ||
| ==== Descriere generala ==== | ==== Descriere generala ==== | ||
| Line 54: | Line 52: | ||
| - Parsarea comenzilor(open, closed, flip, start, cw, ccw) intr-un loop care monitorizeaza buffer-ul UART | - Parsarea comenzilor(open, closed, flip, start, cw, ccw) intr-un loop care monitorizeaza buffer-ul UART | ||
| - Controlul PWM al servomotoarelor folosind biblioteca ESP32Servo | - Controlul PWM al servomotoarelor folosind biblioteca ESP32Servo | ||
| + | |||
| + | Cele 2 motoare au urmatoarele stari calibrate in functie de unghi: | ||
| + | - Top Cover Servo: gestioneaza pozitia capacului superior in functie de urmatoarele 3 stari: **open** pozitionat la 70 grade pentru a elibera cubul si a il putea misca liber, **closed** pozitionat la 115 grade pentru a fixa cubul in momentul rotatiei stratului de jos, **flip** aflat la 15 grade pentru a rasturna fizic cubul, schimband astfel orientarea sa. | ||
| + | - Cube Holder Servo: roteste stratul de la baza cubului. Initial se afla la pozitia **start**, mentinand baza la pozitia neutra de 90 grade. Pentru miscarile efective se folosesc rotatiile la 90 de grade in cele doua sensuri **cw** (sensul acelor de ceasornic), respectiv **ccw** (sens opus acelor de ceasornic). Pentru a nu mentine motorul in tensiune, acesta se roteste la 0 grade si dupa aceea la 5 grade pentru rotatiile de tip ccw (analog 180, 175 grade pentru cw). | ||
| ==== Bibliografie ==== | ==== Bibliografie ==== | ||
| * [[https://github.com/AndreaFavero71/CUBOTino_base_version|CUBOTino Base Version Documentation]] | * [[https://github.com/AndreaFavero71/CUBOTino_base_version|CUBOTino Base Version Documentation]] | ||
| * [[https://github.com/hkociemba/RubiksCube-TwophaseSolver|Hegbert Kociemba Two-Phase Algorithm]] | * [[https://github.com/hkociemba/RubiksCube-TwophaseSolver|Hegbert Kociemba Two-Phase Algorithm]] | ||