This shows you the differences between two versions of the page.
|
pm:prj2026:florin.stancu:dana_maria.caruntu [2026/05/06 22:27] dana_maria.caruntu [Descriere generală] |
pm:prj2026:florin.stancu:dana_maria.caruntu [2026/05/15 02:55] (current) dana_maria.caruntu [Hardware Design] |
||
|---|---|---|---|
| Line 16: | Line 16: | ||
| </note> | </note> | ||
| - | {{:pm:prj2026:florin.stancu:diagramabloc.png?200|}} | + | {{:pm:prj2026:florin.stancu:diagramabloc.png?800|}} |
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| - | <note tip> | + | 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. |
| - | Aici puneţi tot ce ţine de hardware design: | + | |
| - | * listă de piese | + | |
| - | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | |
| - | * diagrame de semnal | + | |
| - | * rezultatele simulării | + | |
| - | </note> | + | |
| + | **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 ==== | ||
| + | {{:pm:prj2026:florin.stancu:schematic_spirobot.jpeg?800|}} | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| - | <note tip> | + | Dezvoltarea software este de tip bare-metal, bazată pe procesarea asincronă a comenzilor și controlul precis al mișcărilor. |
| - | Descrierea codului aplicaţiei (firmware): | + | |
| - | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * **Mediu de dezvoltare:** C folosind avr-gcc și VS Code. |
| - | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * **Librării:** Exclusiv bibliotecile standard AVR (`<avr/io.h>`, `<avr/interrupt.h>`, `<util/delay.h>`). |
| - | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * **Algoritmi și structuri:** |
| - | * (etapa 3) surse şi funcţii implementate | + | * **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. |
| - | </note> | + | * **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 ===== | ===== Rezultate Obţinute ===== | ||