Portfólió

Ultrahangos távolságmérő rendszer

Arduino alapú mikrovezérlős projekt, amely ultrahang segítségével méri a távolságot és LED-ekkel + buzzerrel jelzi.

Projekt célja

A projekt célja egy egyszerű, de jól demonstrálható mikrovezérlős rendszer megvalósítása, amely képes a környezetében lévő tárgyak távolságának mérésére.

A rendszer ultrahangos szenzort használ, amely visszaverődő hanghullám alapján számolja ki a távolságot. Az Arduino feldolgozza az adatot, majd LED-ekkel és hangjelzéssel visszajelzést ad.

teljes rendszer

Felhasznált eszközök

arduino

Arduino Uno

A rendszer központi eleme, amely feldolgozza a szenzor jeleit és vezérli a kimeneteket.

hc-sr04

HC-SR04 Ultrahangos szenzor

Ultrahang impulzust bocsát ki, majd méri a visszaérkezési időt. Ebből számolható a távolság.

led

LED-ek

A távolság vizuális jelzésére szolgálnak (zöld → sárga → piros).

buzzer

Buzzer

Hangjelzést ad, ha a tárgy túl közel van.

Bekötés

bekötés

Működés

A szenzor ultrahangot küld ki → visszaverődik → időt mérünk.

Arduino kiszámolja a távolságot

LED-ek jelzik a távolságot

Buzzer figyelmeztet

Kód bemutatása

A program több logikai részre bontható: lábkiosztás, inicializálás, mérés és kiértékelés.

1. Lábkiosztás (Pin definíciók)


#define TRIG 9
#define ECHO 10

#define RED 2
#define YELLOW 3
#define GREEN 4
#define BUZZER 5

Meghatározzuk, hogy melyik alkatrész melyik Arduino lábra van kötve.

2. Változók


long duration;
int distance;

A duration a visszaérkező jel idejét tárolja, a distance pedig a számolt távolságot cm-ben.

3. Setup függvény


void setup() {
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);

  pinMode(RED, OUTPUT);
  pinMode(YELLOW, OUTPUT);
  pinMode(GREEN, OUTPUT);
  pinMode(BUZZER, OUTPUT);

  Serial.begin(9600);
}

A setup egyszer fut le induláskor. Itt állítjuk be a bemeneteket és kimeneteket.

4. Ultrahangos mérés


digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);

duration = pulseIn(ECHO, HIGH);
distance = duration * 0.034 / 2;

A TRIG lábon egy impulzust küldünk ki, majd mérjük, mennyi idő alatt ér vissza. Ebből számoljuk ki a távolságot.

5. Soros monitor (debug)


Serial.print("Távolság: ");
Serial.print(distance);
Serial.println(" cm");

A mért adatokat kiírjuk a soros monitorra, így ellenőrizhető a működés.

6. Logika (LED + buzzer)


if (distance < 10) {
  digitalWrite(RED, HIGH);
  digitalWrite(YELLOW, LOW);
  digitalWrite(GREEN, LOW);
  digitalWrite(BUZZER, HIGH);
}
else if (distance < 30) {
  digitalWrite(RED, LOW);
  digitalWrite(YELLOW, HIGH);
  digitalWrite(GREEN, LOW);
  digitalWrite(BUZZER, LOW);
}
else {
  digitalWrite(RED, LOW);
  digitalWrite(YELLOW, LOW);
  digitalWrite(GREEN, HIGH);
  digitalWrite(BUZZER, LOW);
}

A rendszer három állapotot kezel: közel (piros + hang), közepes (sárga), távol (zöld).

7. Ismétlés


delay(200);

A ciklus 200 ms-onként ismétlődik.

Eredmény

eredmény

A rendszer valós időben méri a távolságot és vizuális + hang alapú visszajelzést ad.