Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:ddosaru:nadolu.alexandru [2024/05/05 19:47]
robert.nadolu [Hardware Design]
pm:prj2024:ddosaru:nadolu.alexandru [2024/05/26 20:19] (current)
robert.nadolu [Bibliografie/Resurse]
Line 11: Line 11:
 Sistemul va avea urmatoarele functionalitati:​ Sistemul va avea urmatoarele functionalitati:​
   * Detectarea distanței față de obstacole: Sistemul va măsura distanța dintre vehicul și obstacolele aflate atat în fața, cat și în spatele acestuia.   * Detectarea distanței față de obstacole: Sistemul va măsura distanța dintre vehicul și obstacolele aflate atat în fața, cat și în spatele acestuia.
-  * Indicarea distanței utilizând un LED și un buzzer: Se vor transmite informații vizuale și auditive către șofer.  +  * Indicarea distanței utilizând un LEDun buzzer ​si un ecran LCD.  
-  * Frecvența cu care LED-ul va executa o serie de cicluri de aprindere și stingere și sunetul produs de buzzer vor varia în funcție de proximitatea ​vehiculului față de obstacole. +  * Frecvența cu care LED-ul va executa o serie de cicluri de aprindere și stingere și sunetul produs de buzzer vor varia în funcție de distanta ​vehiculului față de obstacole
-{{:​pm:​prj2024:​ddosaru:​diagram.jpg?​400|}}+  * Intensitatea LED-ului va depinde de distanta senzorului pana la cel mai apropiat obstacol
 +{{:​pm:​prj2024:​ddosaru:​diagram.jpg?​450|}}
 </​note>​ </​note>​
    
 +
 ===== Hardware Design ===== ===== Hardware Design =====
    
Line 25: Line 27:
   1x Ecran LCD   1x Ecran LCD
   1x LED   1x LED
 +  1x Breadboard
 +  1x Rezistenta 430Ω
   ​   ​
 {{:​pm:​prj2024:​ddosaru:​schema_nadolu_alex.png?​650|}} {{:​pm:​prj2024:​ddosaru:​schema_nadolu_alex.png?​650|}}
 </​note>​ </​note>​
 +Proiectul in beta:
    
 +{{:​pm:​prj2024:​ddosaru:​img_7174.jpg?​450|}}
 +
 ===== Software Design ===== ===== Software Design =====
-  + 
-  +**Descrierea aplicației (firmware):** 
-<note tip> + 
-Descrierea ​codului ​aplicaţiei (firmware):​ +Această aplicație este destinată unui sistem de asistență la parcare pentru un vehicul. Utilizează un ecran LCD pentru afișarea distanțelor măsurate de senzorii ultrasunete montați în față și în spatele vehiculului. Un buzzer și un LED sunt folosite pentru a avertiza șoferul în cazul în care există un obstacol la o distanță periculoasă. 
-  mediu de dezvoltare ​(if any) (e.gAVR StudioCodeVisionAVR+ 
-  ​* librării şi surse 3rd-party (e.gProcyon AVRlib+**Cod:** 
-  ​* algoritmi şi structuri ​pe care plănuiţi să le implementaţi + 
-  ​(etapa 3surse şi funcţii implementate +<​code>​ 
-</note+  #include <​Wire.h>​ 
- +  #include <​LiquidCrystal_I2C.h>​ 
 + 
 +  // LCD-ul este initializat ​de la adresa 0x3F 
 +  LiquidCrystal_I2C lcd(0x3F, 16, 2)
 + 
 +  // pinii pentru HC-SR04 
 +  const int trigPinFront = 13; 
 +  const int echoPinFront = 12; 
 +  const int trigPinBack = 4; 
 +  const int echoPinBack = 3; 
 + 
 +  // distantele fata de obstacolele din fata si din spatele vehiculului 
 +  float distanceFront,​ distanceBack;​ 
 + 
 +  // pinul pentru buzzer 
 +  #define speakerPin 9 
 + 
 +  // pinul pentru led 
 +  #define ledpin 10 
 + 
 +  // variabile pentru masurarea timpului 
 +  unsigned long previousMillis = 0; 
 +  const long interval = 1000;  // 1s 
 + 
 +  void setup() { 
 +    Serial.begin(9600);​ 
 + 
 +    // setez pinul ledului pe output 
 +    pinMode(ledpin,​ OUTPUT); 
 + 
 +    // initializez LCD-ul 
 +    lcd.begin(); 
 +    lcd.backlight();​ 
 + 
 +    // setez cursorul pe prima linie 
 +    lcd.setCursor(00)
 + 
 +    // initializez pinul pentru buzzer si ma asigur ca e oprit la inceput 
 +    pinMode(speakerPin,​ OUTPUT); 
 +    digitalWrite(speakerPin,​ LOW);  
 + 
 +    // initializez pinii pentru senzori 
 +    // trigger ON = incep sa transmit ultrasunete,​ echo masoara durata semnalului 
 +    pinMode(trigPinFront,​ OUTPUT); 
 +    pinMode(echoPinFront,​ INPUT); 
 +     
 +    pinMode(trigPinBack,​ OUTPUT); 
 +    pinMode(echoPinBack,​ INPUT); 
 +  ​
 + 
 +  float getDistance(int trigPin, int echoPin) { 
 +    // trimite un impuls pe pinul trig, ma asigur inainte ca trig este in repaus 
 +    digitalWrite(trigPin,​ LOW); 
 +    delayMicroseconds(2);​ 
 + 
 +    digitalWrite(trigPin,​ HIGH); 
 +    delayMicroseconds(10);​ 
 +    digitalWrite(trigPin,​ LOW); 
 + 
 +    // masoara durata pe pinul echo 
 +    long duration = pulseIn(echoPin,​ HIGH); 
 + 
 +    // distanta = durata (dus intors) * viteza de propagare a sunetului 
 +    float distance = (duration / 2.0) * 0.0343; 
 + 
 +    // returnez distanta 
 +    return distance; 
 +  } 
 + 
 +void loop({ 
 +  ​unsigned long currentMillis = millis(); 
 +  if (currentMillis - previousMillis >= interval) { 
 +    previousMillis = currentMillis;​ 
 + 
 +    // distanta pentru senzorul din fata 
 +    distanceFront = getDistance(trigPinFront,​ echoPinFront);​ 
 + 
 +    // distanta pentru senzorul din spate 
 +    distanceBack = getDistance(trigPinBack,​ echoPinBack);​ 
 + 
 +    // afisez distantele ​pe LCD 
 +    lcd.clear();​ 
 +    lcd.setCursor(0,​ 0); 
 +    lcd.print("​Front:​ "); 
 +    lcd.print(distanceFront);​ 
 +    lcd.print("​ cm"​);​ 
 + 
 +    // mut cursorul pe al doilea rand al ecranului 
 +    lcd.setCursor(0,​ 1); 
 +    lcd.print("​Back:​ "); 
 +    lcd.print(distanceBack);​ 
 +    lcd.print("​ cm"​);​ 
 +  } 
 + 
 +  // verific ​care este cea mai mica distanta pana la obstacol (fata sau spate) 
 +  ​float minDistance = min(distanceFront,​ distanceBack)
 + 
 +  if (minDistance <= 20) { 
 +    // calculez intensitatea led-ului in functie de distanta 
 +    int ledIntensity = map(minDistance,​ 1.67, 20, 255, 1); 
 + 
 +    // emit semnale acustice 
 +    int buzzerSpeed = map(minDistance,​ 1, 20, 100, 500); 
 +    unsigned long beepEnd = millis() + interval; 
 + 
 +    while (millis() < beepEnd) { 
 +      // setez intensitatea LED-ului 
 +      analogWrite(ledpin,​ ledIntensity);​ 
 +      analogWrite(speakerPin,​ 255); 
 +      delay(buzzerSpeed / 2); 
 +      analogWrite(speakerPin,​ 0); 
 +      analogWrite(ledpin,​ 0); 
 +       
 +      delay(buzzerSpeed / 2); 
 +     
 +    } 
 +  } else { 
 +    // opresc semnalele acustice si luminoase 
 +    digitalWrite(speakerPin,​ LOW); 
 +    analogWrite(ledpin,​ 0); 
 +  } 
 +
 + 
 + 
 +</code
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
    
 <note tip> <note tip>
-Care au fost rezultatele obţinute în urma realizării proiectului vostru.+Un videoclip cu proiectul se poate vedea mai jos: 
 +<​html>​ 
 +<iframe width="​700"​ height="​435"​ src="​https://​www.youtube.com/​embed/​RUq7kS161kw"​ title="​Parking sensor"></​iframe>​ 
 +</​html>​
 </​note>​ </​note>​
    
 ===== Concluzii ===== ===== Concluzii =====
- + Un proiect la care am lucrat de drag, foarte challenging si frumos, de care imi voi aminti cu placere.
 ===== Download ===== ===== Download =====
    
Line 65: Line 200:
    
 <​note>​ <​note>​
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe *Resurse Softwareşi *Resurse Hardware*.+  * https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab0-2023 
 +  ​https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab3-2023-2024 
 +  ​https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab6-2023-2024 
 +  ​https://​www.youtube.com/​watch?​v=0Lhgd8PQmn0 
 +  ​https://​www.ardumotive.com/​how-to-use-a-buzzer-en.html
 </​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>​
pm/prj2024/ddosaru/nadolu.alexandru.1714927678.txt.gz · Last modified: 2024/05/05 19:47 by robert.nadolu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0