This shows you the differences between two versions of the page.
pm:prj2024:amocanu:andreea.georgescu02 [2024/05/25 21:45] andreea.georgescu02 [Descriere generala] |
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 86: | Line 85: | ||
<note tip> | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | + | Medii de dezvoltare: |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * Cod: ArduinoIDE |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * Schema bloc: drawIO |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * Schema electrică: TinkerCad |
- | * (etapa 3) surse şi funcţii implementate | + | * Design circuit: TinkerCad |
+ | * Biblioteci folosite: | ||
+ | * LiquidCrystal_I2C.h: pentru a controla ecranul LCD cu interfață I2C. | ||
+ | * Servo.h: pentru a controla servomotorul. | ||
+ | **1. Codul Arduino:** | ||
+ | În cadrul codului Arduino, servomotorul rotește senzorul ultrasonic și măsoară distanța față de obiecte. Pe baza distanței măsurate, LED-ul își schimbă culoarea, buzzer-ul sună și mesajul de pe ecranul LCD se actualizează. De asemenea, datele despre unghi și distanță sunt trimise către interfața serială pentru a fi prelucrate ulterior de aplicația GUI. | ||
+ | |||
+ | **2. Funcționare:** | ||
+ | Î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: | ||
+ | * Culoarea default a LED-ului (verde) se schimbă în roșu. | ||
+ | * Buzzer-ul emite un sunet. | ||
+ | * Mesajul default de pe ecranul LCD (“ALL CLEAR!”) se schimbă în funcție de distanță ("TOO CLOSE!" sau "A LITTLE CLOSE!"). | ||
+ | * Pe interfața serială sunt trimise 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:** | ||
+ | |||
+ | **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 96: | 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 118: | 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> | ||