This is an old revision of the document!


Rubik's Cube Solver

Autor: Balasa Radu-Ion
Grupa: 331CA

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.

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

Arhitectura sistemului este de tip Master-Slave:

  • Laptop (Master): Interfata utilizator unde se introduce configuratia fetelor sub forma de text. Aici ruleaza algoritmul Kociemba pentru a genera solutia.
  • ESP32 (Slave): Microcontrolerul primeste prin UART (Serial) instructiunile de miscare si le traduce in unghiuri specifice pentru cele doua servomotoare.

Interactiunea modulelor

  1. Utilizatorul introduce pe laptop starea cubului (codificata prin litere pentru culori).
  2. Laptopul calculeaza solutia si trimite prin cablu USB (UART) sirul de comenzi catre ESP32.
  3. ESP32 parseaza comenzile si activeaza:
    • Servomotorul de baza (Cube Holder): Roteste baza cubului la unghiuri de 90 sau 180 de grade.
    • Servomotorul superior (Top Cover/Lifter): Basculeaza cubul pentru a schimba fata care urmeaza sa fie rotita.

Schema bloc

Schema Bloc Proiect

Hardware Design

Componentele utilizate sunt:

  • ESP32 (30 pini): Creierul de executie.
  • Placa de expansiune ESP32 (38 pini): Pentru facilitarea conexiunilor.
  • 2 x Servomotoare Digitale MG995: Ofera cuplul necesar pentru rotirea straturilor cubului (rotatie 180 grade).
  • Structura imprimata 3D: Include elementele de sustinere, capacul superior, balamaua si sistemul de ridicare.
  • Sursa de alimentare externa (5V/2A): Esentiala pentru a preveni caderile de tensiune la activarea servomotoarelor.

Conectivitate:
Servomotoarele sunt controlate prin semnale PWM generate de ESP32 pe pinii D22 (baza) si D23 (capac/lifter). Alimentarea motoarelor se face separat de placa ESP32 pentru a evita zgomotul electric si resetarea accidentala a sistemului.

Software Design

Proiectul foloseste doua medii de programare:

  1. Python (Laptop):
    • Modul pentru introducerea textului.
    • Implementarea algoritmului de rezolvare (ex: Kociemba).
    • Comunicare seriala folosind biblioteca pyserial.
  2. C/C++ (ESP32):
    • Codul pentru microcontroler este scris in Visual Studio Code, folosind extensia PlatformIO.
    • Un program principal care asculta instructiunile primite pe portul serial (UART).
    • Un modul de control al servomotoarelor care mapeaza comenzile primite in semnale PWM specifice pentru pozitiile Home, CW, CCW, Open, Close si Flip.

Rezultate Obtinute

Concluzii

Bibliografie

pm/prj2026/radu_ion.balasa.1777831564.txt.gz · Last modified: 2026/05/03 21:06 by radu_ion.balasa
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0