This shows you the differences between two versions of the page.
pm:prj2024:tdicu:alexandra.florescu [2024/05/20 17:23] alexandra.florescu |
pm:prj2024:tdicu:alexandra.florescu [2024/05/27 03:01] (current) alexandra.florescu |
||
---|---|---|---|
Line 3: | Line 3: | ||
<note tip> | <note tip> | ||
- | Proiectul constă într-un robot ingenios, cu aspect de câine, care își asumă rolul unui ceas desteptător. În momentul în care ora dorită este atinsă, acesta nu doar sună, ci și latră, apoi pornește pe un traseu predefinit. Scopul său este acela de a crea o experiență interactivă și distractivă pentru utilizator, încurajându-l să se ridice și să-l urmărească pentru a-l opri. | + | Proiectul constă într-un robot ingenios, cu aspect de câine, care își asumă rolul unui ceas desteptător. În momentul în care ora dorită este atinsă, acesta nu doar sună, ci și cântă, apoi pornește pe un traseu predefinit. Scopul său este acela de a crea o experiență interactivă și distractivă pentru utilizator, încurajându-l să se ridice și să-l urmărească pentru a-l opri. |
Ideea a pornit de la dorința de a combina utilul cu plăcutul, oferindu-mi o alternativă amuzantă și eficientă pentru ceasurile obișnuite. Consider că acest proiect este folositor atât pentru mine, asigurându-mi o modalitate inedită de a începe ziua, cât și pentru alții, oferindu-le o privire asupra creativității și inovației în domeniul roboților și designului. Mai mult, robotul este util și pentru a rezolva problema snooze-urilor constante ale alarmelor, ce pot rezulta într-o trezire întârziată. | Ideea a pornit de la dorința de a combina utilul cu plăcutul, oferindu-mi o alternativă amuzantă și eficientă pentru ceasurile obișnuite. Consider că acest proiect este folositor atât pentru mine, asigurându-mi o modalitate inedită de a începe ziua, cât și pentru alții, oferindu-le o privire asupra creativității și inovației în domeniul roboților și designului. Mai mult, robotul este util și pentru a rezolva problema snooze-urilor constante ale alarmelor, ce pot rezulta într-o trezire întârziată. | ||
Line 30: | Line 30: | ||
<note tip> | <note tip> | ||
- | Aici puneţi tot ce ţine de hardware design: | + | **Listă de piese**: |
- | * listă de piese | + | * Zumo Shield v1.2 |
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | * Placă Plusivo |
- | * diagrame de semnal | + | * Ecran pentru afișare |
- | * rezultatele simulării | + | * RTC DS1307 |
+ | * Senzor infraroșu | ||
{{:pm:prj2024:tdicu:p2506_zumorobot_c.jpg?200|}} | {{:pm:prj2024:tdicu:p2506_zumorobot_c.jpg?200|}} | ||
+ | {{:pm:prj2024:tdicu:screenshot_2024-05-23_183354.png?300|}} | ||
+ | |||
+ | * In urma finalizării codului, am renunțat la led- ul ce era pe pin-ul 13, neavând nevoie de el, și am pus receiver-ul pe pin-ul respectiv. | ||
+ | </note> | ||
+ | |||
+ | ===== Robot ===== | ||
+ | |||
+ | <note tip> | ||
+ | **Inițial:** | ||
+ | {{:pm:prj2024:tdicu:doggy_clock_poza_initial.jpg?200|}} | ||
+ | |||
+ | **Produs final:** | ||
+ | {{:pm:prj2024:tdicu:poza_1.jpg?200|}} | ||
+ | {{:pm:prj2024:tdicu:poza_2.jpg?200|}} | ||
+ | {{:pm:prj2024:tdicu:poza_3.jpg?200|}} | ||
+ | {{:pm:prj2024:tdicu:poza_4.jpg?200|}} | ||
+ | {{:pm:prj2024:tdicu:poza_5.jpg?200|}} | ||
+ | {{:pm:prj2024:tdicu:poza_6.jpg?200|}} | ||
+ | |||
+ | **Demo-ul video se găsește în drive-ul de mai jos!** | ||
</note> | </note> | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | <note tip> | ||
+ | Descrierea codului aplicației (firmware): | ||
+ | * Mediu de dezvoltare: Arduino IDE | ||
+ | * Librării și surse 3rd-party: | ||
+ | - `IRremote.h` pentru gestionarea semnalului IR | ||
+ | - `Wire.h` pentru comunicația I2C | ||
+ | - `LiquidCrystal.h` pentru afișajul LCD | ||
+ | - `RTClib.h` pentru modulul RTC | ||
+ | - `ZumoShield.h` pentru controlul motorului și buzzer-ului | ||
+ | |||
+ | * Algoritmi și structuri pe care plănuiți să le implementați: | ||
+ | - Setarea și afișarea datei și orei folosind RTC DS1307 | ||
+ | - Setarea unei alarme folosind un senzor IR pentru input | ||
+ | - Redarea unei melodii și mișcarea robotului la activarea alarmei | ||
+ | |||
+ | * (Etapa 3) Surse și funcții implementate: | ||
+ | - Funcții pentru setarea orei și datei alarmei | ||
+ | - Funcții pentru afișarea datei și orei pe LCD | ||
+ | - Funcție pentru redarea unei melodii și controlul motoarelor Zumo la activarea alarmei | ||
+ | </note> | ||
+ | |||
+ | ===== Laboratoare utilizate ===== | ||
<note tip> | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | + | 1. **Laboratorul 1: UART (Universal Asynchronous Receiver-Transmitter):** |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * Comunicarea serială pentru debugging și afișarea mesajelor în serial monitor. |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * De exemplu, inițializarea comunicării seriale în setup() (Serial.begin(19200);) și utilizarea Serial.println() pentru a afișa mesaje de diagnosticare și rezultate IR. |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | 2. **Laboratorul 2: Întreruperi (Interrupts):** |
+ | * În cazul gestionării senzorului IR, unde întreruperile sunt folosite pentru a detecta semnalul de la telecomandă. | ||
+ | * De exemplu, funcția irrecv.enableIRIn(); pornește receptorul IR, care utilizează întreruperi pentru a recepționa semnalele. | ||
+ | |||
+ | 3. **Laboratorul 3: Timere. PWM (Pulse Width Modulation):** | ||
+ | * Controlul motoarelor Zumo prin PWM pentru a ajusta viteza acestora. | ||
+ | * De exemplu, utilizarea funcțiilor motors.setLeftSpeed(speed); și motors.setRightSpeed(speed); pentru a controla viteza motoarelor. | ||
+ | |||
+ | 4. **Laboratorul 6: I2C (Inter-Integrated Circuit):** | ||
+ | * Comunicarea cu modulul RTC DS1307 și afișajul LCD. | ||
+ | * De exemplu, inițializarea comunicației I2C în setup() cu Wire.begin(); și folosirea librăriei RTClib.h pentru a interacționa cu modulul RTC. | ||
</note> | </note> | ||
Line 53: | Line 106: | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | În urma realizării proiectului, am obținut următoarele rezultate: |
+ | * Implementarea cu succes a setării orei și datei alarmei folosind telecomanda IR | ||
+ | * Afișarea corectă a datei și orei curente pe ecranul LCD | ||
+ | * Redarea unei melodii prestabilite și mișcarea robotului Zumo la activarea alarmei | ||
+ | * Sincronizarea corectă a timpului folosind RTC DS1307 | ||
+ | |||
+ | Deși intenția inițială a fost ca robotul să scoată sunete asemănătoare unui lătrat, nu am reușit să reproduc acest efect folosind note muzicale. În schimb, am optat pentru redarea unei melodii scurte ca ton de apel. În plus, am renunțat la utilizarea unui buton fizic în favoarea telecomenzii, considerând că aceasta oferă mai multă libertate în controlul robotului. | ||
</note> | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | ===== Download ===== | + | <note tip> |
+ | Proiectul de realizare a unui robot cu funcționalitate de alarmă s-a dovedit a fi un succes. Utilizarea senzorului IR pentru setarea orei și datei alarmei a simplificat interacțiunea utilizatorului cu sistemul. Afișajul LCD a permis verificarea ușoară a timpului curent și a setărilor alarmei. Implementarea codului a demonstrat că robotul poate reda o melodie și poate efectua mișcări în momentul activării alarmei, oferind astfel un exemplu practic de utilizare a componentelor hardware și a bibliotecilor software disponibile pentru Arduino. | ||
- | <note warning> | + | Codul inclus pentru gestionarea afișajului LCD, a senzorului IR, a modulului RTC și a controlului motorului și buzzer-ului a funcționat conform așteptărilor, iar proiectul poate fi extins cu ușurință pentru a include funcționalități suplimentare, cum ar fi controlul prin aplicații mobile sau integrarea cu alte module de senzori pentru detectarea obstacolelor sau a liniilor traseului. |
- | 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**. | + | |
</note> | </note> | ||
- | ===== Jurnal ===== | + | ===== Download ===== |
- | <note tip> | + | <note warning> |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | https://drive.google.com/drive/folders/1oPTOUkiUTXF1mzVAzsIgkYLWNibOeZcv?usp=drive_link |
</note> | </note> | ||
Line 75: | Line 132: | ||
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | https://github.com/pololu/zumo-shield-arduino-library/tree/master |
+ | |||
+ | Mai multe materiale se găsesc în drive-ul de mai sus. | ||
</note> | </note> | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||