This shows you the differences between two versions of the page.
pm:prj2025:atoader:alexandru.stefan03 [2025/05/28 01:32] alexandru.stefan03 [Bill of Materials (BOM)] |
pm:prj2025:atoader:alexandru.stefan03 [2025/05/28 02:06] (current) alexandru.stefan03 [Concluzii] |
||
---|---|---|---|
Line 28: | Line 28: | ||
* **Modul SD + Card SD (SPI)** | * **Modul SD + Card SD (SPI)** | ||
- | - Stochează fișierele cu modelele de desen. | + | - Stochează timestamp-uri pentru desen. |
- Arduino accesează datele prin SPI. | - Arduino accesează datele prin SPI. | ||
Line 97: | Line 97: | ||
LCD-ul 1602 comunică cu Arduino prin interfață I2C și afișează modul curent de desen. | LCD-ul 1602 comunică cu Arduino prin interfață I2C și afișează modul curent de desen. | ||
- | Modulul CH376S este conectat prin interfață SPI și citește fișiere `.TXT` de pe un SD Card drive ce conțin coordonate de mișcare. | + | Modulul SD este conectat prin interfață SPI și scrie fișiere `.TXT` pe un SD Card log-urile. |
Butonul permite utilizatorului să schimbe între diverse moduri de desen. | Butonul permite utilizatorului să schimbe între diverse moduri de desen. | ||
Line 113: | Line 113: | ||
{{:pm:prj2025:atoader:screenshot_2025-05-20_005906.png?600|}} | {{:pm:prj2025:atoader:screenshot_2025-05-20_005906.png?600|}} | ||
- | 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 | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | |||
+ | ==== Descrierea codului aplicației (firmware) ==== | ||
+ | |||
+ | * **Mediu de dezvoltare:** Arduino IDE, programarea s-a realizat în limbajul C/C++ specific platformei Arduino. | ||
+ | | ||
+ | * **Librării și surse 3rd-party:** | ||
+ | * `Stepper.h` – folosită pentru controlul motoarelor pas cu pas 28BYJ-48 prin driverele ULN2003. | ||
+ | * `LiquidCrystal_I2C.h` – pentru controlul unui ecran LCD 1602 prin interfața I2C (cu backlight). | ||
+ | * `SPI.h` și `SD.h` – pentru inițializarea și operarea modulului de card microSD pe magistrala SPI. | ||
+ | | ||
+ | * **Algoritmi și structuri implementate:** | ||
+ | * Mișcare sincronă a celor două motoare folosind funcția personalizată `stepTogether`, care calculează pașii proporțional în funcție de traiectoria dorită. | ||
+ | * Funcții abstracte `stepX` și `stepY` pentru a naviga în planul X/Y, care țin cont de limitele de mișcare și actualizează poziția curentă. | ||
+ | * Implementare a două moduri de desen: **zigzag** și **spirală**, selectabile cu un buton și afișate pe ecranul LCD. | ||
+ | * Algoritm PWM software (cu `digitalWrite` și `delayMicroseconds`) pentru controlul vizual pe un LED conectat la pin analogic. | ||
+ | * Comenzi seriale interpretate în `loop()` pentru a permite controlul manual al brațului desenator din tastatură (WASD și alte shortcut-uri). | ||
+ | | ||
+ | * **Funcții implementate principale:** | ||
+ | * `drawZigZag(int size)` – desenează modelul zigzag pe întreaga suprafață. | ||
+ | * `drawSquareSpiral(int size)` – desenează o spirală pătrată cu pasul specificat. | ||
+ | * `stepX(int steps)` și `stepY(int steps)` – mută bila în plan pe axele X/Y. | ||
+ | * `center()` și `goHome()` – repoziționează bila în centrul sau la originea suprafeței. | ||
+ | * `logFile = SD.open(...)` – scrie un log cu tipul desenului și timpul de execuție în milisecunde. | ||
+ | |||
+ | ---- | ||
- | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | ||
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | ||
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | ||
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | ||
- | * (etapa 3) surse şi funcţii implementate | ||
- | </note> | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | * [[https://youtube.com/shorts/D8XvRboe0RU|Desenare (Sand Drawing)]] |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | * [[https://youtube.com/shorts/DJ0Bj3kJju0|Selectare moduri]] |
- | </note> | + | * [[https://youtube.com/shorts/nIZXOoKpGAE|Control PWM pe LED]] |
+ | |||
+ | |||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | ===== Download ===== | + | Proiectul „Sand Drawing Machine” a fost o oportunitate excelentă de a combina partea de hardware cu cea software într-o aplicație creativă și interactivă. Utilizând un Arduino Uno, două motoare pas cu pas 28BYJ-48 și un ecran LCD cu interfață I2C, am reușit să construiesc un dispozitiv care poate desena modele precum spirale și zigzaguri într-un strat de nisip, cu ajutorul unei bile metalice ghidate magnetic. |
- | <note warning> | + | Pe parcursul dezvoltării am întâlnit provocări legate de sincronizarea motoarelor, controlul precis al poziției, citirea de pe cardul SD și afișarea informațiilor pe LCD, dar toate acestea au fost depășite prin testare și implementarea unor soluții personalizate. |
- | 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**. | + | Funcționalitățile software, precum controlul PWM al LED-ului, salvarea logurilor pe cardul SD și comutarea modurilor prin buton, au adus un plus de interactivitate proiectului. Am învățat importanța gestionării resurselor hardware limitate ale microcontrollerului, precum și avantajele modularizării codului în funcții clare. |
- | </note> | + | |
+ | Consider că proiectul poate fi extins în viitor prin adăugarea unor senzori pentru auto-calibrare, integrarea unei aplicații mobile pentru control de la distanță sau adăugarea unor modele mai complexe citite de pe fișiere externe. | ||
+ | |||
+ | **În concluzie**, Sand Drawing Machine demonstrează cu succes cum pot fi combinate cunoștințele de electronică, programare și design pentru a crea un sistem funcțional, estetic și educativ. | ||
+ | |||
+ | ===== Download ===== | ||
- | ===== Jurnal ===== | + | {{:pm:prj2025:atoader:cod_sand_drawing.zip|}} |
- | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
- | </note> | ||
- | ===== Bibliografie/Resurse ===== | ||
- | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | ||
- | </note> | ||
- | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||