This shows you the differences between two versions of the page.
pm:prj2024:amocanu:andreea.georgescu02 [2024/05/25 21:53] andreea.georgescu02 [Software Design] |
pm:prj2024:amocanu:andreea.georgescu02 [2024/05/27 00:47] (current) andreea.georgescu02 [Concluzii] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Sistem Radar cu Interfata Grafica ====== | ====== Sistem Radar cu Interfata Grafica ====== | ||
- | Proiect realizat de: Andreea-Daniela GEORGESCU - 333CC | ||
===== Introducere ===== | ===== Introducere ===== | ||
Line 98: | Line 97: | ||
**2. Funcționare:** | **2. Funcționare:** | ||
- | În funcția loop, la fiecare pas de rotație al servomotorului, se apelează funcția distanceCheck(). | + | În cadrul funcției loop, la fiecare pas de rotație al servomotorului, se apelează funcția distanceMeasurement(), unde se primesc datele de la senzorul de distanță ultrasonic. Dacă distanța măsurată este mai mică decât limita impusă, atunci: |
- | În cadrul funcției distanceCheck(), se primesc datele de la senzorul de distanță ultrasonic. | + | * Culoarea default a LED-ului (verde) se schimbă în roșu. |
- | Dacă distanța măsurată este mai mică decât limita impusă: | + | * Buzzer-ul emite un sunet. |
- | LED-ul schimbă culoarea în roșu (default este verde). | + | * Mesajul default de pe ecranul LCD (“ALL CLEAR!”) se schimbă în funcție de distanță ("TOO CLOSE!" sau "A LITTLE CLOSE!"). |
- | Buzzer-ul începe să sune. | + | * Pe interfața serială sunt trimise datele despre unghi și distanță pentru fiecare iterație a servomotorului în care a fost detectat un obiect. |
- | Mesajul de pe ecranul LCD se schimbă din “NO OBJECTS ENC” în “OBJECT IN RANGE”. | + | |
- | Pe interfața serială se trimit datele despre unghi și distanță pentru fiecare iterație a servomotorului în care a fost detectat un obiect. | + | **Inițializarea și configurarea piniiilor:** |
+ | |||
+ | Funcția initializePins() configurează pinii pentru trig, echo, buzzer și LED-ul RGB ca OUTPUT. | ||
+ | |||
+ | **Scanarea și măsurarea distanței:** | ||
+ | |||
+ | Funcția scanAndMeasure() rotește servomotorul de la 0 la 170 de grade și înapoi, măsurând distanța la fiecare pas. | ||
+ | Funcția distanceMeasurement() măsoară distanța folosind senzorul ultrasonic, trimite datele prin serial și actualizează ecranul LCD și culoarea LED-ului. | ||
+ | |||
+ | **Afișarea mesajului și setarea culorii LED-ului:** | ||
+ | |||
+ | Funcția displayMessageAndColor() afișează un mesaj pe LCD și setează culoarea LED-ului în funcție de distanța măsurată. | ||
+ | Funcția setColor() setează intensitatea LED-urilor RGB pentru a afișa culoarea corespunzătoare (roșu, portocaliu sau verde). | ||
**3. Codul Java folosind framework-ul de Processing:** | **3. Codul Java folosind framework-ul de Processing:** | ||
- | Aplicația GUI primește datele de la placa Arduino prin intermediul portului serial într-un format prestabilit. Datele sunt parsate și împărțite în partea de distanță și de unghi. Dacă distanța primită este mai mică decât limita impusă în cod, se creează un nou obiect de tip punct. Toate aceste obiecte sunt desenate în cadrul funcției drawObjects, împreună cu unghiul și distanța la care s-a făcut detecția. Restul radarului se redesenează la fiecare iterație. | + | |
+ | **Serial Communication:** | ||
+ | * Se inițializează comunicarea serială pentru a primi date de la un dispozitiv radar, conectat la portul COM5 și setat la o viteză de transfer de 9600 baud. | ||
+ | |||
+ | **Desenarea Elementelor Vizuale:** | ||
+ | |||
+ | * drawRadar(): Desenează arcele concentrice și liniile radiale pentru a reprezenta zona de scanare a radarului. | ||
+ | * drawObject(): Detectează și afișează obiectele detectate pe radar în funcție de distanță și unghi. | ||
+ | * drawLine(): Desenează linia rotativă a radarului, indicând direcția de scanare. | ||
+ | * drawText(): Afișează informații despre distanță, unghi și starea de siguranță a mediului înconjurător. | ||
+ | |||
+ | **Manipularea Datelor de la Radar:** | ||
+ | |||
+ | * serialEvent(): Este activată atunci când sunt primite date de la radar prin comunicarea serială. Aceasta interpretează datele primite și extrage unghiul și distanța obiectelor detectate. | ||
+ | |||
+ | **Desenarea Componentelor Vizuale:** | ||
+ | |||
+ | * drawArcs(): Desenează arcele concentrice care reprezintă diferitele intervale de distanță ale radarului. | ||
+ | * drawAngleLines(): Desenează liniile radiale care reprezintă diferitele unghiuri de scanare ale radarului. | ||
+ | * drawAngleLabels(): Desenează marcajele de unghiuri pe radar pentru a indica direcția de scanare. | ||
+ | |||
+ | **Afișarea Informațiilor:** | ||
+ | |||
+ | * setObjectColor(): Stabilește culoarea obiectelor detectate în funcție de distanță. | ||
+ | * drawAngleLabel(): Desenează etichetele de unghi pentru a indica direcția de scanare a radarului. | ||
</note> | </note> | ||
Line 113: | Line 148: | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Video cu sistemul radar: https://youtube.com/shorts/3qU8o9yFfes?si=KjTPv5YFtWFnJ9V1 |
</note> | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | A fost o provocare sa implementez primul meu proiect de acest gen, dar si o introducere utila in acest domeniu. | ||
+ | |||
+ | Proiectul este functional si pregatit sa serveasca la detectia obiectelor pe o raza minimala. | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | Codul sursa al proiectului: |
- | 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ă ;-). | + | |
+ | {{:pm:prj2024:amocanu:georgescu_andreea.daniela.zip|}} | ||
- | 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 ===== | ||
<note tip> | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | * 25 aprilie: Alegere finala proiect. |
+ | * 30 aprilie: Am comandat piesele. | ||
+ | * 3 mai: Sosire comanda. | ||
+ | * 7 mai: Comanda suplimentară pentru piese. | ||
+ | * 10 mai: Sosire comanda suplimentară. | ||
+ | * 16 mai: Milestone Hardware. | ||
+ | * 23 mai: Milestone Software | ||
</note> | </note> | ||
Line 135: | Line 178: | ||
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | In realizarea proiectului m-am folosit de informatii preluate din urmatoarele surse: |
+ | |||
+ | **Resurse Hardware:** | ||
+ | * https://www.geeksforgeeks.org/how-to-interface-i2c-lcd-display-with-arduino/ | ||
+ | * https://www.youtube.com/watch?v=n-gJ00GTsNg | ||
+ | * https://www.ardumotive.com/how-to-use-a-buzzer-en.html | ||
+ | |||
+ | **Resurse Software:** | ||
+ | * https://www.youtube.com/watch?v=w5-LD8OGJNs | ||
+ | * https://chat.openai.com/ | ||
+ | |||
</note> | </note> | ||