Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2025:atoader:alexandru.stefan03 [2025/05/12 05:32]
alexandru.stefan03
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 56: Line 56:
  
 === Listă de piese === === Listă de piese ===
-  * Arduino UNO +  * Arduino UNO R3 
-  * Driver motoare +  * Driver motoare ​ ​ULN2003 
-  * 2x motoare+  * 2x motoare ​stepper 28BYJ-48
   * Modul SD Card + card microSD   * Modul SD Card + card microSD
-  * Display +  * LCD 1602 cu I2C 
-  * 2-3 butoane+  * 1 buton
   * Breadboard   * Breadboard
   * Fire de legătură   * Fire de legătură
Line 73: Line 73:
   * Magneti neodim pentru controlul bilei   * Magneti neodim pentru controlul bilei
  
 +{{:​pm:​prj2025:​atoader:​poza_hard_bubu.jpeg?​300|}}
  
  
 +==== Bill of Materials (BOM) ====
  
 +^ Nr. ^ Componentă ​                       ^ Descriere ​          ​| ​                              
 +| 1   | Arduino UNO R3                    | Microcontroller principal ​        ​| ​              
 +| 2   | 2x 28BYJ-48 + 2x ULN2003 Driver ​  | Motoare pas cu pas + drivere ULN2003 ​   |           
 +| 3   | LCD 1602 I2C                      | Display pentru afișare moduri desen   ​| ​              
 +| 4   | Micro SD Card Adapter ​                | Modul scriere fișiere pe Micro SD     ​| ​           ​
 +| 5   | Buton push                        | Selectare mod desen        |                         
 +| 6   | Breadboard 800 puncte ​           | Pentru conexiuni temporare ​     |                     
 +| 7   | Fire (40 bucăți) ​                  | Conexiuni între componente ​     |                  ​
 +| 8   | Sursă alimentare 5V              | Alimentare pentru Arduino ​        ​| ​   ​
 +| 9   | Bila metalică + magnet neodim ​   | Componente mecanice pentru desen   ​| ​             ​
 +                       
 +                                  ​
 +
 +==== Funcționalitate hardware ====
 +
 +Dispozitivul se bazează pe un Arduino UNO, care controlează două motoare pas cu pas 28BYJ-48, fiecare legat la un driver ULN2003. Cele două motoare mișcă un magnet într-un plan XY sub o tavă cu nisip, ghidând o bilă metalică pentru a desena modele.
 +
 +LCD-ul 1602 comunică cu Arduino prin interfață I2C și afișează modul curent de desen.
 +
 +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.
 +
 +==== Pini folosiți (Arduino UNO) ====
 +
 +^ Componentă ​      ^ Pin Arduino ^ Tip conexiune ^ Detalii tehnice ​                             ^
 +| Stepper 1        | D8-D11 ​      | PWM| Control IN1-IN4 prin ULN2003 ​                |
 +| Stepper 2        | D4-D7        | PWM| Control IN1-IN4 prin ULN2003 ​                |
 +| LCD I2C          | A4 (SDA), A5 (SCL) | I2C    | Comunicare I2C standard la 0x27              |
 +| CH376S ​          | D0 (RX), D1 (TX)   | SPI| Comunicarea SPI pentru citirea SD Card        |
 +| Buton            | D12          | Digital Input | 
 +
 +
 +{{:​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 motoarelorcontrolul precis al pozițieicitirea ​de pe cardul SD ș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:​ surseschemeetc. Un fişier README, un ChangeLog, un script ​de compilare ş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 Alin331CC -> **:​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 proiectuluiAm î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>​ 
  
pm/prj2025/atoader/alexandru.stefan03.1747017129.txt.gz · Last modified: 2025/05/12 05:32 by alexandru.stefan03
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