This shows you the differences between two versions of the page.
pm:prj2023:danield:linetracer [2023/05/07 21:47] araducanu [Hardware Design] |
pm:prj2023:danield:linetracer [2023/05/29 19:24] (current) araducanu [Rezultate Obţinute] |
||
---|---|---|---|
Line 2: | Line 2: | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | <note tip> | + | |
Prezentarea pe scurt a proiectului vostru: | Prezentarea pe scurt a proiectului vostru: | ||
* Proiectul acesta presupune crearea unui robotel care poate urmari o linie de pe podea. Scopul proiectului este acela de a aplica cunostintele dobandite pe parcursul laboratoarelor din acest semestru. De asemenea, reprezinta si o oportunitate de a-mi perfectiona abilitatile de programare in limbajul C. | * Proiectul acesta presupune crearea unui robotel care poate urmari o linie de pe podea. Scopul proiectului este acela de a aplica cunostintele dobandite pe parcursul laboratoarelor din acest semestru. De asemenea, reprezinta si o oportunitate de a-mi perfectiona abilitatile de programare in limbajul C. | ||
- | </note> | ||
- | ===== Descriere generală ===== | ||
+ | ===== Descriere generală a modului de functionare===== | ||
- | {{:pm:prj2023:danield:schema_pm.jpg|}} | + | Placuta Arduino UNO va primi informatii de la cei 2 senzori optici. Acesti senzori se afla de o parte si de alta a liniei care trebuie urmarita. In cazul in care un senzor detecteaza linia, informatia este transmisa catre microcontrollerul ATMEGA328 care, la randul lui, controleaza motoarele. Placuta va comanda oprirea rotii de pe partea cu senzorul, pentru ca masinuta sa se redreseze. Roata ramane oprita pana cand celalalt senzor "loveste" linia. Acum, cealalta roata se opreste. Procesul se repeta, linefollower-ul avansand "din greseala in greseala". |
+ | |||
+ | In cazul unei "coliziuni" cu linia (descrisa mai sus), placuta ATMEGA328 va comanda ecranul OLED sa afiseze un anumit mesaj. | ||
+ | |||
+ | In plus, daca exista un obstacol la mai putin de 20 cm distanta in directia inainte, senzorul ultrasonic il va detecta, iar rotile linefollower-ului se vor opri. | ||
+ | |||
+ | {{:pm:prj2023:danield:mighty_schema.jpg?600|}} | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 15: | Line 20: | ||
<note tip> | <note tip> | ||
Lista de piese | Lista de piese | ||
- | * Placa ATMEGA 328 | + | |
- | * Kit sasiu 2 roti | + | * Placuta Arduino UNO - microcontroller ATMEGA328 |
- | * Ecran LCD | + | * Baterie 9V (pentru alimentarea placutei Arduino) |
- | * Difuzor Audio | + | |
- | * 2 * senzori optici | + | * Modul Driver L298N (pentru 2 motoare DC) |
- | * Carcasa baterii alimentare | + | * 2 motoare (curent continuu 6V) |
+ | * 2 roti | ||
+ | * 4 baterii AA (1.5V) + carcasa (pentru alimentarea modulului Driver) | ||
+ | |||
+ | * Ecran OLED | ||
+ | * 2 * Infrared Sensor | ||
+ | * Sensor Ultrasonic pentru distanta HC-SR04 | ||
* Fire de legatura | * Fire de legatura | ||
</note> | </note> | ||
+ | |||
+ | {{:pm:prj2023:danield:mighty_migelo.png?800|}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Din punct de vedere al software-ului, linefollower-ul nu este foarte complicat. Avand doar 2 senzori infrarosii, am decis ca cea mai buna decizie ar fi sa implementez 2 intreruperi pe pinii PD2 si PD3 ai placutei. Aceste intreruperi vor schimba valoarea unei variabile, iar in bucla principala, in functie de aceasta variabila, voi controla motoarele. | ||
+ | |||
+ | O alta varianta de implementare software a a acestui proiect ar fi citirea direct in bucla principala a valorilor de la senzorii infrarosii. | ||
<note tip> | <note tip> | ||
Descrierea codului aplicaţiei (firmware): | Descrierea codului aplicaţiei (firmware): | ||
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * mediu de dezvoltare: ARDUINO IDE |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * NU am folosit nicio biblioteca externa |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | |
</note> | </note> | ||
Line 38: | Line 53: | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Robotul urmareste linia neagra trasata pe fundal alb. |
</note> | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Principala provocare a acestui proiect a fost asamblarea pieselor hardware astfel incat proiectul sa functioneze. A trebuit sa fiu atent la alimentarea modulului drive si a placutei Arduino astfel incat motoarele sa aiba destula putere sa miste robotul. Asezarea componentelor pe placa de carton a fost de asemenea foarte importanta, intrucat dezechilibrarea robotului putea duce la functionarea gresita a senzorilor infrarosii. | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | {{:pm:prj2023:danield:proiect.zip|}} |
- | 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> | ||
- | ===== Jurnal ===== | ||
- | |||
- | <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 ===== | ===== Bibliografie/Resurse ===== |