Spiro-Bot: Plotter Mobil Autonom
Introducere
Acest proiect consta in realizarea unui robot mobil autonom, denumit Spiro-Bot, capabil sa deseneze forme geometrice complexe pe o suprafata plana.
Ce face: Robotul se deplaseaza folosind tractiune diferentiala (sasiu 2WD rotund) si manipuleaza un instrument de scris aflat in centrul sau geometric cu ajutorul unui servomotor. Acesta executa secvente de miscari precise (rotatii pe loc, deplasari liniare) controlate prin semnale PWM, pentru a trasa pattern-uri matematice pe hartie.
Scopul lui: Obiectivul este crearea unui plotter mobil, complet independent de sine sau axe fixe de ghidaj, care sa transforme calculele geometrice si comenzile primite (via USART) in arta fizica 2D.
Ideea de la care am pornit: Inspiratia a venit din nostalgia jucariilor copilariei (Spirograph) si din conceptul “Turtle Graphics” (limbajul Logo). Am dorit sa reproduc acel mecanism de generare a formelor abstracte, dar folosind o abordare de inginerie embedded si programare bare-metal.
De ce este util: Pentru echipa este un exercitiu excelent de intelegere a cinematicii, controlului prin PWM si procesarii asincrone la nivel bare-metal. Pentru ceilalti, poate servi ca platforma educationala pentru a intelege cum algoritmii software se traduc direct in miscari mecanice.
Descriere generală
Hardware Design
Design-ul fizic se bazeaza pe un sasiu circular pentru a permite rotatii precise pe loc, avand instrumentul de scris montat exact in centrul geometric pentru a asigura trasarea corecta a formelor matematice. Conexiunile sunt realizate prin fire Dupont, separand logica de forta.
Lista de piese:
1 x Microcontroler ATmega324P (pe placa de dezvoltare)
1 x Kit Sasiu Robot Rotund 2WD (include 2 roti motoare, 2 roti de sprijin)
1 x Modul Driver Motoare Dual L298N
1 x Modul Bluetooth HC-05 (interfata UART wireless)
1 x Servomotor SG90 (pentru mecanismul Pen-Up/Down)
2 x Motoare DC cu reductor (incluse in kit)
1 x Baterie 9V + Conector (alimentare logica microcontroler)
1 x Suport 4 baterii AA (alimentare forta driver motoare)
Fire de conexiune Dupont (Mama-Tata, Mama-Mama)
Elemente de fixare (coliere plastic, banda dublu adeziva) si un pix/carioca
| Board Pin | Function | Component | Direction | Description |
| Pin 4 | Digital Out | Driver L298N (IN1) | Output | Direcție motor stâng |
| Pin 5 | Digital Out | Driver L298N (IN2) | Output | Direcție motor stâng |
| Pin 6 | Digital Out | Driver L298N (IN3) | Output | Direcție motor drept |
| Pin 7 | Digital Out | Driver L298N (IN4) | Output | Direcție motor drept |
| Pin 10 | PWM Out | Driver L298N (ENA) | Output | Viteză motor stâng |
| Pin 11 | PWM Out | Driver L298N (ENB) | Output | Viteză motor drept |
| Pin 9 | PWM Out | Servomotor SG90 | Output | Control unghi braț |
| Pin 0 (RX) | UART RX | Bluetooth HC-05 | Input | Recepție date |
| Pin 1 (TX) | UART TX | Bluetooth HC-05 | Output | Transmisie date |
Schematic
Software Design
Dezvoltarea software este de tip bare-metal, bazată pe procesarea asincronă a comenzilor și controlul precis al mișcărilor.
Mediu de dezvoltare: C folosind avr-gcc și VS Code.
Librării: Exclusiv bibliotecile standard AVR (`<avr/io.h>`, `<avr/interrupt.h>`, `<util/delay.h>`).
Algoritmi și structuri:
Cinematică de tracțiune diferențială: Calculează cât timp trebuie acționate roțile la un anumit nivel PWM pentru a parcurge o distanță sau a executa o rotație la un unghi dat.
Parser de comenzi: Un buffer simplu de tip inel (ring buffer) pentru a stoca comenzile primite prin Bluetooth fără a bloca execuția.
Surse și funcții implementate:
`init_system()`: Configurează UART și Timerele pentru PWM.
`ISR(USART0_RX_vect)`: Rutina de tratare a întreruperii pentru preluarea caracterelor trimise de pe telefon/PC.
`set_pen(uint8_t state)`: Ajustează unghiul servomotorului pentru a ridica sau coborî pixul.
`draw_segment(int speed_left, int speed_right, int duration)`: Comandă driverul L298N pentru a executa traiectoria calculată.
Rezultate Obţinute
Care au fost rezultatele obţinute în urma realizării proiectului vostru.
Concluzii
Download
O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună

.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.
Jurnal
Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.
Bibliografie/Resurse
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.
Export to PDF