This is an old revision of the document!


Nadolu Alexandru: Parking Sensor

Introducere

Proiectul constă în dezvoltarea unui sistem de asistență la parcare, care utilizează senzori pentru detectarea obstacolelor din mediul înconjurător și oferă feedback vizual și auditiv șoferului pentru a-l ajuta să parcheze în condiții de siguranță. Ideea de la care am pornit acest proiect este chiar cea mai esentiala optiune pe care o poate avea un autovehicul, senzorul de parcare.

Descriere generală

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.
  • Indicarea distanței utilizând un LED, un 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 distanta vehiculului față de obstacole.
  • Intensitatea LED-ului va depinde de distanta senzorului pana la cel mai apropiat obstacol.

Hardware Design

Componente:

1x Arduino UNO
2x Senzor de distanta HC-SR04
1x Buzzer
1x Ecran LCD
1x LED
1x Breadboard
1x Rezistenta 430Ω

Descrierea 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ă.

Cod:

```cpp #include <Wire.h> #include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 16, 2);

const int trigPinFront = 13; const int echoPinFront = 12; const int trigPinBack = 4; const int echoPinBack = 3;

float distanceFront, distanceBack;

#define speakerPin 9 #define ledpin 10

unsigned long previousMillis = 0; const long interval = 1000;

void setup() {

Serial.begin(9600);
pinMode(ledpin, OUTPUT);
lcd.begin();
lcd.backlight();
lcd.setCursor(0, 0);
pinMode(speakerPin, OUTPUT);
digitalWrite(speakerPin, LOW); 
pinMode(trigPinFront, OUTPUT);
pinMode(echoPinFront, INPUT);
pinMode(trigPinBack, OUTPUT);
pinMode(echoPinBack, INPUT);

}

float getDistance(int trigPin, int echoPin) {

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
float distance = (duration / 2.0) * 0.0343;
return distance;

}

void loop() {

unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
  previousMillis = currentMillis;
  distanceFront = getDistance(trigPinFront, echoPinFront);
  distanceBack = getDistance(trigPinBack, echoPinBack);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Front: ");
  lcd.print(distanceFront);
  lcd.print(" cm");
  lcd.setCursor(0, 1);
  lcd.print("Back: ");
  lcd.print(distanceBack);
  lcd.print(" cm");
}
float minDistance = min(distanceFront, distanceBack);
if (minDistance <= 20) {
  int ledIntensity = map(minDistance, 1.67, 20, 255, 1);
  int buzzerSpeed = map(minDistance, 1, 20, 100, 500);
  unsigned long beepEnd = millis() + interval;
  while (millis() < beepEnd) {
    analogWrite(ledpin, ledIntensity);
    analogWrite(speakerPin, 255);
    delay(buzzerSpeed / 2);
    analogWrite(speakerPin, 0);
    analogWrite(ledpin, 0);
    delay(buzzerSpeed / 2);
  }
} else {
  digitalWrite(speakerPin, LOW);
  analogWrite(ledpin, 0);
}

} ```

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

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:prj2022:cc:dumitru_alin*.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe *Resurse Software* şi *Resurse Hardware*.

Export to PDF

pm/prj2024/ddosaru/nadolu.alexandru.1716741916.txt.gz · Last modified: 2024/05/26 19:45 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