This shows you the differences between two versions of the page.
pm:prj2023:razvans:parking_helper [2023/05/29 19:35] catalin_ioan.balea |
pm:prj2023:razvans:parking_helper [2023/05/30 00:20] (current) catalin_ioan.balea [Rezultate Obţinute] |
||
---|---|---|---|
Line 9: | Line 9: | ||
Senzorii vor transmite date catre arduino, iar acesta, pe baza datelor primite, va afisa pe ecranul OLED o reprezentare a masinii si a locatiei obstacolelor, va marii sau micsora frecventa semnalului sonor emis de buzzer si va aprinde diverse LED-uri (de culori reprezentativa: rosu, portocaliu, galben, verde) semnificand gradul de apropiere al obiectului de masina. \\ | Senzorii vor transmite date catre arduino, iar acesta, pe baza datelor primite, va afisa pe ecranul OLED o reprezentare a masinii si a locatiei obstacolelor, va marii sau micsora frecventa semnalului sonor emis de buzzer si va aprinde diverse LED-uri (de culori reprezentativa: rosu, portocaliu, galben, verde) semnificand gradul de apropiere al obiectului de masina. \\ | ||
Detectarea obstacolelor va fi reprezentata de niste linii reprezentative pe ecranul OLED, asemenea undei care detecteaza obiectul. Liniile delimiteaza spatiul de siguranta, acesta fiind spatiul dintre masina si o linie, in spatiul dincolo de linie considerandu-se a fi obstacolul. | Detectarea obstacolelor va fi reprezentata de niste linii reprezentative pe ecranul OLED, asemenea undei care detecteaza obiectul. Liniile delimiteaza spatiul de siguranta, acesta fiind spatiul dintre masina si o linie, in spatiul dincolo de linie considerandu-se a fi obstacolul. | ||
- | Daca LED-ul rosu nu este aprins pe ecran se va afisa masina si linii fata-spate reprezentand ce detecteaza senzorul din fata si spatele masinii, daca LED-ul rosu este aprins pe ecran se va reprezenta masina, dar mai mica, si fata sau spatele masinii, depinde de unde se detecteaza un obiect mai apropiat, impreuna cu o linia care semnifica unde\\ | + | Daca LED-ul rosu nu este aprins pe ecran se va afisa masina si linii fata-spate reprezentand ce detecteaza senzorul din fata si spatele masinii, daca LED-ul rosu este aprins pe ecran se va reprezenta masina, dar mai mica, si fata sau spatele masinii, depinde de unde se detecteaza un obiect mai apropiat, impreuna cu o linie care semnifica unde se afla obiectul detectat, dar cu o precizie mai mare decat in modul anterior.\\ |
Buzzer-ul va emite un semnal sonor de baza, chiar daca niciun obiect nu s-a detectat, si va creste frecventa acestuia odata cu apropierea obiectului de masina. \\ | Buzzer-ul va emite un semnal sonor de baza, chiar daca niciun obiect nu s-a detectat, si va creste frecventa acestuia odata cu apropierea obiectului de masina. \\ | ||
LED-uri se vor aprinde pe rand avand urmatoarele semnificatii: | LED-uri se vor aprinde pe rand avand urmatoarele semnificatii: | ||
Line 31: | Line 31: | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Descrierea codului aplicaţiei (firmware): | ||
+ | * mediu de dezvoltare: IDE Arduino | ||
+ | * librării şi surse 3rd-party: Adafruit_GFX, Adafruit_SSD1306 | ||
+ | |||
+ | Descriere functii cod: | ||
+ | * calculateTopValue(int frequency): calculeaza valoarea top-ului pe baza frecventei introduse (cu prescalar de 256) | ||
+ | * configure_timer1(), init_timer1(): functii care seteaza timer1 pentru utilizarea buzzer-ului | ||
+ | * pulseIn(): masoara timpul in care se receptioneaza unda transmisa de emitatorul senzorului | ||
+ | * drawRoundRect(), drawTriangle(), drawLine(): deseneaza obiectele specificate pe ecranul OLED pe baza punctelor date ca parametru | ||
+ | Descriere cod: | ||
+ | Pe baza datelor de la senzori aprind cate un LED, afisez pe ecranul OLED un desen reprezentativ, pe baza datelor primite, si modific frecventa buzzer-ului utilizand timer1 pentru a nu avea intreruperi de sonor. Buzzer-ul functioneaza astfel: cand timer1 atinge topul setat schimb valoarea | ||
+ | de output a buzzer-ului (din high in low sau din low in high), iar cand vreau sa modific frecventa buzzer-ului modific valoarea topului, astfel incat timer-ul sa-si atinga topul mai repede sau mai lent. | ||
<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: IDE Arduino |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * librării şi surse 3rd-party: Adafruit_GFX, Adafruit_SSD1306 |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | |
</note> | </note> | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | Proiectul indeplineste toate functionalitatile prezentate. | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | In videoclip senzorul fata este cel din stanga, iar cel spate este cel din dreapta. |
+ | Fata masini este indicata pe ecranul OLED print-un triunghi. | ||
</note> | </note> | ||
+ | <html> | ||
+ | <iframe width="560" height="315" | ||
+ | src="https://www.youtube.com/embed/uU3dd9qMOGg" | ||
+ | title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> | ||
+ | </html> | ||
- | ===== Concluzii ===== | ||
+ | ===== Concluzii ===== | ||
+ | Proiectul a reprezentat o experienta foarte interesanta, mai ales ca a fost primul proiect care a inclus si o parte hardware pe care l-am realizat. A fost distractiv de realizat si a ajutat foarte mult la intelegerea in profunzime a materiei. | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | {{pm:prj2023:razvans:pm-parkinghelpercode.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 ===== | ===== Jurnal ===== | ||
Line 64: | Line 79: | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
+ | Resurse Software: | ||
+ | * [[https://github.com/adafruit/Adafruit_SSD1306 | OLED Display library]] | ||
+ | Resurse Hardware: | ||
+ | * [[https://ocw.cs.pub.ro/courses/pm| PM labs]] | ||
+ | * [[https://ocw.cs.pub.ro/courses/_media/pm/atmel-7810-automotive-microcontrollers-atmega328p_datasheet.pdf | ATmega328P Datasheet]] | ||
+ | * [[https://howtomechatronics.com/tutorials/arduino/ultrasonic-sensor-hc-sr04/#:~:text=How%20the%20HC%2DSR04%20Ultrasonic%20Distance%20Sensor%20Works%3F,you%20can%20calculate%20the%20distance. | Ultrasonic Sensor Guide]] | ||
- | <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> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||