
Hogyan mérhetsz távolságot pontosan és egyszerűen egy ultrahangos szenzorral? Az HC-SR04 ultrahang szenzor egy sokoldalú eszköz, amely hobbi és professzionális projektekben is megállja a helyét. Akár akadálykerülő robotot építenél, akár egy parkolóasszisztenst, vagy csak szeretnéd megismerni az ultrahangos távolságmérés világát, ez a részletes útmutató minden szükséges információval ellát. Ismerd meg az HC-SR04 működését, alkalmazási lehetőségeit, és készítsd el saját projektjeidet lépésről lépésre!
Bevezetés
A távolságmérés kiemelkedően fontos szerepet játszik a modern technológiában, különösen a robotika, az automatizálás és az érzékelőrendszerek területén. Akár egy önvezető robot akadálykerüléséről, akár egy parkolóasszisztens járművezetést segítő rendszeréről van szó, pontos és megbízható távolságmérő eszközökre van szükség. Az HC-SR04 ultrahang szenzor az egyik legismertebb és legkedveltebb eszköz ebben a kategóriában, amely a maga egyszerűségével és megbízhatóságával vívta ki népszerűségét.
Mi az ultrahang szenzor, és hogyan működik?
Az ultrahangos szenzorok az emberi fül számára hallhatatlan frekvenciájú hanghullámokat (általában 40 kHz körül) bocsátanak ki, majd mérik, hogy a visszaverődő jel mennyi idő alatt ér vissza a szenzorhoz. Ezt az elvet „Time of Flight” (ToF) módszernek hívják, amelyet a természetben is megfigyelhetünk – például a denevérek vagy a delfinek hasonló elven tájékozódnak. A szenzor által kibocsátott hanghullámok elérik az akadályt, visszaverődnek róla, majd a visszatérő jel idejének mérésével a rendszer kiszámítja a távolságot a következő képlet alapján:

Ahol:
- Vhang = A hang terjedési sebessége levegőben (~343 m/s, 20°C-on)
- t = A jel kibocsátása és visszaverődése között eltelt idő
Ez az egyszerű, mégis hatékony módszer lehetővé teszi, hogy pontos távolságmérést végezzünk különféle környezetekben.
Az HC-SR04 szenzor jelentősége
Az HC-SR04 ultrahangos szenzor az egyik leggyakrabban használt modell a hobbielektronikai projektekben és az oktatásban. Népszerűségét több tényezőnek köszönheti:
- Egyszerű bekötés: Az HC-SR04 szenzor csupán négy csatlakozót igényel – VCC, Trig, Echo, és GND –, így könnyedén csatlakoztatható egy mikrokontrollerhez, például Arduinóhoz vagy Raspberry Pi-hez.
- Megbízható teljesítmény: A szenzor 2 cm-től egészen 400 cm-ig képes mérni a távolságot, viszonylag pontosan, ±3 mm hibahatárral. Ez az intervallum ideálissá teszi számos alkalmazásban.
- Költséghatékony megoldás: Az HC-SR04 szenzor rendkívül megfizethető, ezért kiváló választás iskolai projektekhez, hobbistáknak és kezdő fejlesztőknek egyaránt.
- Sokoldalú alkalmazhatóság: A szenzort széles körben alkalmazzák robotikában (pl. akadálykerülő robotok), automatizált rendszerekben (pl. parkolóradarok), valamint egyszerű szintérzékelő rendszerekben (pl. folyadékszint mérés).
Hogyan illeszkedik a technológia a mindennapokba?
Észrevétlenül számos hétköznapi eszközben használunk ultrahangos szenzorokat. Például az autókban található parkolóradarok is ultrahangos technológiát alkalmaznak a jármű mögötti akadályok érzékelésére. Az ipari automatizálásban szintén gyakori megoldás, például a szalagok végén levő tárgyak pozíciójának meghatározására. De akár egyszerű szintmérőként is használhatjuk – például folyadékszintek érzékelésére tartályokban.
A HC-SR04 tehát egy remek kiindulópont lehet a távolságmérő szenzorok világának megismerésére, és számos projektben hasznos társunk lehet.
Az HC-SR04 ultrahang szenzor részletes bemutatása
Fizikai jellemzők és specifikációk
Az HC-SR04 egy kisméretű, de hatékony ultrahangos távolságmérő szenzor, amely két fő részegységet tartalmaz:
- Ultrahang adó (Transmitter): Ez az egység bocsátja ki a 40 kHz-es ultrahangos hullámokat. Ezeket a hanghullámokat az emberi fül nem érzékeli, mivel a hallható tartományon kívül esnek.
- Ultrahang vevő (Receiver): A visszaverődő ultrahangos hullámokat érzékeli. Amint a kibocsátott hanghullám egy tárgyról visszaverődik, a vevő felfogja azt, és továbbítja a jelet a szenzor áramköri részéhez, amely feldolgozza az adatokat.
A szenzor nyomtatott áramköri lapján (PCB) található egy alapvető jelfeldolgozó áramkör is, amely felelős a kiadott és érkező jelek kezeléséért.
Műszaki adatok:
Paraméter | Érték |
---|---|
Tápegység | 5V DC |
Áramfelvétel | ~15 mA |
Mérési távolság | 2 cm – 400 cm |
Mérési pontosság | ±3 mm |
Ultrahangos frekvencia | 40 kHz |
Kimeneti jel | Digitális PWM jel |
Látószög | Kb. 15° |
Működési hőmérséklet-tartomány | -15°C – +70°C |
Méretek | ~45mm x 20mm x 15mm |

Érdekesség
A szenzor által használt 40 kHz-es ultrahangos frekvencia optimális kompromisszumot jelent a távolságmérési hatótáv és a jel pontossága között. A túl magas frekvencia csökkentené a hatótávot, míg az alacsonyabb frekvencia a pontosságot rontaná.
Működési elv – Hogyan mér távolságot?
Az HC-SR04 szenzor működésének alapja az ultrahangos távolságmérés, amely a „Time of Flight” (ToF) elvet alkalmazza. Ez azt jelenti, hogy a szenzor megméri az ultrahangos jel kibocsátása és visszaverődése közötti időt, majd ebből kiszámítja a távolságot.

Lépésről lépésre a működés:
- Mérési ciklus indítása: A mikrokontroller (például Arduino) 10 µs hosszúságú magas szintű jelet küld a szenzor Trig lábára. Ez a rövid impulzus indítja el a mérést.
- Ultrahangos impulzus kibocsátása: A szenzor 8 darab 40 kHz-es ultrahangos hullámot bocsát ki a levegőbe. Ezek a hullámok terjedni kezdenek a levegőben a hang sebességével (~343 m/s, 20°C-on).
- Visszaverődés érzékelése: Ha a kibocsátott ultrahangos hullám egy tárggyal találkozik, visszaverődik róla. A szenzor Echo lába ekkor magas szintre vált, és a mikrokontroller elkezdi mérni a jel kibocsátása és visszaérkezése közötti időt.
- Távolság kiszámítása: A mikrokontroller kiszámítja a távolságot a következő képlet segítségével:
Ahol:
- t = az Echo láb magas szinten maradásának időtartama (mikroszekundumban)
- 34300 = a hang terjedési sebessége cm/s-ban
A képletben a szorzást követően elosztjuk kettővel, mert a hanghullám oda-vissza teszi meg az utat a szenzor és a tárgy között.
A szenzor csatlakozói
Az HC-SR04 ultrahangos szenzor négy csatlakozási ponttal rendelkezik, amelyeket az alábbi táblázat részletez:
Csatlakozó | Megnevezés | Funkció |
---|---|---|
VCC | +5V | A szenzor tápfeszültsége. 5V stabil feszültség szükséges. |
Trig | Trigger | A mérési ciklus elindításához szolgál. A mikrokontroller innen adja a mérés kezdőjelét. |
Echo | Echo | A visszaverődő hanghullámot érzékelő jel. A mikrokontroller innen olvassa ki a mért időtartamot. |
GND | Föld | A földelés, a közös negatív csatlakozási pont. |

Fontos tudnivaló:
- Bizonyos mikrokontrollerek (pl. ESP8266, ESP32) 3.3V logikai szinten működnek. Az HC-SR04 – Echo lába viszont 5V-os jelet ad ki, így ilyen esetekben feszültségosztó vagy logikai szintillesztő használata javasolt a mikrokontroller megóvása érdekében.
Működési korlátok és kihívások
Bár az HC-SR04 szenzor kiváló választás a legtöbb hobbiprojekthez, bizonyos korlátokkal rendelkezik, amelyeket érdemes figyelembe venni a használat során.
1. Minimális mérési távolság – „Vakfolt”: Az HC-SR04 nem képes 2 cm-nél közelebbi tárgyakat érzékelni. Ez a „vakfolt” a szenzor működési elvéből fakad, mivel idő kell a kibocsátott és visszavert jelek elkülönítéséhez.
2. Felületfüggő mérési pontosság: A hanghullámok visszaverődése nagyban függ a tárgy anyagától és textúrájától. A sima, kemény felületek kiválóan verik vissza az ultrahangot, míg a puha vagy szivacsos anyagok elnyelhetik azt, pontatlan mérésekhez vezetve.
3. Környezeti zaj és interferencia: Környezeti tényezők, például ventilátorok, egyéb ultrahangos szenzorok, vagy magas páratartalom zavarhatják a jeleket. Ezért fontos a mérési környezet megfelelő megválasztása.
4. Látószög korlátozottság: A szenzor körülbelül 15°-os látószöggel rendelkezik. Ez azt jelenti, hogy csak az előtte lévő szűk területen belül képes pontos mérést végezni. Ez előnyös lehet célzott mérési alkalmazásokban, de hátrány robotoknál, ahol szélesebb érzékelési szögre lehet szükség.
5. Hőmérsékletfüggő pontosság: A hang terjedési sebessége a levegő hőmérsékletétől is függ. Például alacsonyabb hőmérsékleten a hang lassabban terjed, ami enyhe mérési eltérésekhez vezethet. Komolyabb pontosságigény esetén hőmérséklet-kompenzáció alkalmazása javasolt.
Egyszerű mintaprogram – HC-SR04 használata Arduinóval
Az HC-SR04 ultrahang szenzor egyik leggyakoribb felhasználási módja az Arduino mikrokontrollerrel való összekapcsolás. Ebben a fejezetben egy egyszerű projektet készítünk, amely méri a távolságot a szenzor előtt elhelyezett tárgytól, majd az eredményt megjeleníti a soros monitoron.

Szükséges eszközök
A projekt megvalósításához a következő komponensekre lesz szükség:
![]() | → Arduino Uno alaplap(vagy bármely más kompatibilis Arduino): Ez fogja kezelni az érzékelőt. |
![]() | → Ultrahangos modulok: A távolságmérő ultrahangos modul |
![]() | → Dupont összekötő kábelek (apa-apa/apa-anya/anya-anya). |
![]() | → Breadboard – a könnyű csatlakoztatáshoz. |
HC-SR04 bekötése Arduinóval
Az HC-SR04 szenzor négy csatlakozási ponttal rendelkezik (VCC, Trig, Echo, GND), amelyekhez a következőképpen kell csatlakoztatni az Arduino megfelelő lábait:
HC-SR04 láb | Kapcsolat az Arduinóval | Funkció |
---|---|---|
VCC | 5V | Tápellátás |
Trig | Digitális láb (pl. D9) | Mérési ciklus indítása |
Echo | Digitális láb (pl. D10) | Visszaverődő jel érzékelése |
GND | GND | Földelés |

Fontos megjegyzés
- A Trig lábat a mikrokontroller egy rövid (10 µs) impulzussal indítja el.
- Az Echo láb 5V-os jelet ad vissza. Ha az Arduino 5V logikai szinten működik (pl. Arduino UNO), akkor közvetlenül csatlakoztatható. Ha 3.3V logikai szintű mikrokontrollert használsz (pl. ESP8266, ESP32), feszültségosztó vagy szintillesztő használata szükséges.
Arduino programkód – Távolságmérés
Most elkészítünk egy egyszerű Arduino programot, amely méri a távolságot és megjeleníti a soros monitoron.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | // HC-SR04 Ultrahangos távolságmérő szenzor használata Arduinóval // A Trig és Echo lábak csatlakoztatása az Arduinóhoz const int trigPin = 9; // Trig láb az Arduino D9 pin-hez const int echoPin = 10; // Echo láb az Arduino D10 pin-hez // Változók a távolság és idő tárolására long duration; float distanceCm; void setup() { // Soros kommunikáció indítása a mérések kiíratásához Serial.begin(9600); // A Trig lábat kimenetként, az Echo lábat bemenetként állítjuk be pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { // A Trig lábat alacsony szintre állítjuk, hogy biztosan tiszta legyen a jel digitalWrite(trigPin, LOW); delayMicroseconds(2); // 10 mikroszekundumos impulzus küldése a Trig lábra digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // A visszavert jel időtartamának mérése duration = pulseIn(echoPin, HIGH); // Távolság számítása (cm) distanceCm = (duration * 0.0343) / 2; // Az eredmény kiíratása a soros monitorra Serial.print("Tavolsag: "); Serial.print(distanceCm); Serial.println(" cm"); // Rövid szünet a következő mérés előtt delay(500); } |
És a soros vonalon visszakapott eredmény:

Programkód részletes magyarázata
1. Lábak beállítása: A program elején két állandó változót (trigPin és echoPin) definiálunk, amelyek a szenzor Trig és Echo lábait jelölik. Ezeket a D9 és D10 digitális lábakra kötjük az Arduino lapon.
1 2 | const int trigPin = 9; const int echoPin = 10; |
2. Setup szekció: A setup() függvényben beállítjuk a Trig lábat kimeneti (OUTPUT) módba, míg az Echo lábat bemenetként (INPUT) állítjuk be. Ezen kívül elindítjuk a soros kommunikációt, hogy a mérések láthatóak legyenek a soros monitoron.
1 2 3 4 5 | void setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } |
3. Loop szekció: A loop() függvény folyamatosan fut, és minden ciklusban végrehajt egy távolságmérést.
- A Trig lábat először alacsony szintre állítjuk, majd egy 10 µs hosszú magas szintű impulzust küldünk ki.
- A pulseIn() függvénnyel mérjük meg, hogy mennyi ideig marad magas szinten az Echo láb – ez az idő jelzi a visszaverődött hanghullám visszatérésének idejét.
1 2 3 4 5 6 7 8 9 | // 10 mikroszekundumos impulzus küldése digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Visszaverődött jel időtartamának mérése duration = pulseIn(echoPin, HIGH); |
4. Távolság kiszámítása és az eredmény kiírása: A visszavert jel idejét átváltjuk távolságra, a korábban megismert képlet alapján:
Ahol:
- t = a mért időtartam (mikroszekundumban)
- 0.0343 = a hang sebessége levegőben cm/µs-ban
- A végeredményt kettővel osztjuk, mivel a hang oda-vissza tette meg az utat.
1 2 3 4 5 6 7 | // Távolság számítása (cm) distanceCm = (duration * 0.0343) / 2; // Az eredmény kiíratása a soros monitorra Serial.print("Tavolsag: "); Serial.print(distanceCm); Serial.println(" cm"); |
Tesztelés és hibakeresés
1. A soros monitor beállítása: A mérési eredményeket a Soros Monitoron jeleníthetjük meg. Az Arduino IDE-ben válaszd a Tools → Serial Monitor opciót (vagy nyomd meg a Ctrl + Shift + M billentyűkombinációt). Állítsd be a sebességet 9600 baud-ra.
2. Eredmények ellenőrzése: Mozgass egy tárgyat a szenzor előtt, és figyeld a soros monitoron megjelenő távolságértékeket. A mért távolságoknak a valóságnak megfelelően kell változniuk.
3. Hibakeresési tippek:
- Nincs mért adat: Ellenőrizd a kábelezést, különösen a Trig és Echo lábak csatlakozását.
- Folyamatosan 0 cm: Győződj meg arról, hogy nincs túl közel tárgy a szenzorhoz (minimum 2 cm távolság szükséges).
- Pontatlan mérések: Ellenőrizd a környezeti tényezőket – például a szél vagy más ultrahangos eszközök zavarhatják a mérést.
Haladó funkciók és bővítési lehetőségek
Az HC-SR04 ultrahang szenzor önmagában is hasznos eszköz, de a kreativitás és egy kis programozói tudás segítségével továbbfejleszthetjük a funkcionalitását. Ebben a fejezetben bemutatok néhány haladó technikát és bővítési lehetőséget, amelyekkel a szenzor teljesítményét és pontosságát optimalizálhatod.
Több szenzor használata egy rendszerben
Ha komplexebb projektekben dolgozol (például akadálykerülő robotokon), gyakran szükség lehet több ultrahangos szenzor használatára, hogy lefedd a környezetet. Azonban, ha egyszerre több szenzort indítasz, azok jelei interferálhatnak egymással, és pontatlan mérésekhez vezethetnek.
Hogyan kerülheted el az interferenciát?
Szekvenciális mérés: Indítsd el a szenzorokat egymás után, nem egyszerre. Minden szenzornak külön indító jelet küldj, majd várd meg a mérést, mielőtt a következőt aktiválod.
Időzítés használata: Az egyes mérések között hagyj megfelelő szünetet (például 60-100 ms-ot), hogy elkerüld a jelek átfedését.
Kódminta több szenzor szekvenciális használatához:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | const int trigPins[] = {9, 11}; // Két szenzor Trig lábai const int echoPins[] = {10, 12}; // Két szenzor Echo lábai float distances[2]; void setup() { Serial.begin(9600); for (int i = 0; i < 2; i++) { pinMode(trigPins[i], OUTPUT); pinMode(echoPins[i], INPUT); } } void loop() { for (int i = 0; i < 2; i++) { distances[i] = measureDistance(trigPins[i], echoPins[i]); Serial.print("Szenzor "); Serial.print(i + 1); Serial.print(": "); Serial.print(distances[i]); Serial.println(" cm"); delay(100); // Kis szünet a szenzorok között } delay(500); // Várakozás a következő mérési ciklusig } float measureDistance(int trigPin, int echoPin) { long duration; float distanceCm; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distanceCm = (duration * 0.0343) / 2; return distanceCm; } |
Eredmény
Ez a kód két HC-SR04 szenzort kezel szekvenciálisan, és pontos mérési adatokat jelenít meg a soros monitoron. A két független mérés egymáshoz elcsúsztatva történik, így a két mérés nem zavarja egymást.
Zajszűrési technikák
A környezeti zajok és interferencia hatására az HC-SR04 szenzor pontatlan adatokat adhat. A következő zajszűrési technikákat alkalmazhatod a mérési pontosság növelésére:
1. Átlagolás:
Több mérést végezhetsz egymás után, majd ezek átlagát számolod ki. Ez kisimítja a véletlenszerű zajok okozta pontatlanságokat.
1 2 3 4 5 6 7 8 | float getAverageDistance(int trigPin, int echoPin, int samples) { float sum = 0; for (int i = 0; i < samples; i++) { sum += measureDistance(trigPin, echoPin); delay(50); // Rövid szünet a mérések között } return sum / samples; } |
Tipp: 5-10 mérés átlagolása általában elegendő a zaj csökkentésére. Gyorsan mozgó tárgyak esetén a több mérés alatt elmozdulás történhet – ez a mérés pontosságát/megbízhatóságát rontja!
2. Mért értékek szűrése:
Alkalmazhatsz egy median filtert, amely a mért értékek közül a középső értékeket választja ki, kizárva a szélsőséges (zajos) adatokat.
3. Küszöbérték beállítása:
Állíts be minimális és maximális távolságértékeket (pl. 2 cm és 400 cm között), és szűrd ki az ezen kívül eső adatokat.
4.3. Távolságmérés pontosságának növelése
Az HC-SR04 szenzor alapból ±3 mm pontossággal működik, de néhány technikával tovább finomíthatod a méréseket.
1. Hőmérséklet-kompenzáció:
A hang sebessége változik a hőmérséklet függvényében, ezért pontosabb mérés érdekében figyelembe kell venni a környezeti hőmérsékletet. A hang sebességének képlete hőmérsékletfüggően:
Ahol:
- Vhang = hang sebessége (m/s)
- T = hőmérséklet °C-ban
Példa kód hőmérséklet-kompenzált távolságméréshez:
1 2 3 | float temperatureC = 25.0; // Példa hőmérséklet, használhatsz hőmérőt is float soundSpeed = 331.4 + (0.6 * temperatureC); float distanceCm = (duration * soundSpeed * 100) / 2; |
2. Fizikai szigetelés:
Az ultrahangos szenzort érdemes árnyékolni más hangforrásoktól és zajoktól. Emellett gondoskodni kell arról is, hogy a szenzor közvetlenül a céltárgyra irányuljon.
3. Mechanikai rögzítés:
A szenzort stabil, rezgésmentes felületre szereld, mivel a mozgás vagy vibrációs hatások pontatlan mérési eredményeket okozhatnak.
Bővítési lehetőségek és haladó alkalmazások
Az HC-SR04 szenzort nemcsak egyszerű távolságmérésre használhatod, hanem komplexebb rendszerek részeként is alkalmazhatod.
1. Akadálykerülő robotok:
Több szenzorral ellátott robot képes felismerni az akadályokat és automatikusan elkerülni azokat. Ehhez több szenzort kell szinkronizálnod és a mért távolságok alapján navigálnod a robotot.
2. Folyadékszint-érzékelő rendszerek:
Az HC-SR04 szenzor folyadékszintek mérésére is alkalmas. Elég, ha a szenzort a tartály tetejére rögzíted, és lefelé irányítod. A mért távolság segítségével kiszámítható a folyadék szintje.

3. Érintésmentes eszközvezérlés:
Kézmozdulatok érzékelésére is használhatod az HC-SR04-et. Például ha egy kéz közeledik a szenzorhoz, az aktiválhat egy világítást vagy más eszközt.
4. Parkolóasszisztens rendszerek:
Autókban ultrahangos szenzorokat használnak a közeli akadályok érzékelésére. Az HC-SR04 szenzor segítségével egyszerű parkolóasszisztenst készíthetsz LED-ekkel és hangjelzéssel.
Ultrahangos szenzorok használata Arduino Library segítségével
Az ultrahangos távolságmérő szenzorok, mint az HC-SR04, JSN-SR04T, SRF05, SRF08 vagy MaxBotix MB1000, elengedhetetlen eszközök a robotikában, automatizálási rendszerekben és érzékelési technológiákban. Az ultrahangos érzékelők képesek meghatározni az előttük lévő tárgyak távolságát azáltal, hogy ultrahanghullámokat bocsátanak ki, majd mérik a visszaverődési időt. Bár a szenzorok vezérlése Arduino-val alapvetően nem bonyolult, manuálisan kezelve a Trig és Echo lábak vezérlését, a programkód gyorsan összetetté válhat. Itt jönnek képbe az Arduino library-k, amelyek leegyszerűsítik ezt a folyamatot, lehetővé téve, hogy kevesebb kódsorral, pontosabb és hatékonyabb méréseket végezzünk.
Miért érdemes Arduino Library-t használni az ultrahangos szenzorokhoz?
A könyvtárak automatizálják a szenzor vezérlését, lehetővé téve a könnyebb integrációt és a megbízhatóbb működést. Használatuk számos előnnyel jár:
- Egyszerűsített kód – A könyvtárak automatikusan kezelik a Trig és Echo jelek generálását, így nem szükséges manuálisan időzítéseket beállítani.
- Pontosság és zajszűrés – Az időzítési algoritmusok javítják a mérési pontosságot és csökkentik az interferenciát.
- Több szenzor egyidejű kezelése – Egyes könyvtárak, például az I2C_SR04, lehetővé teszik több szenzor egyszerre történő vezérlését.
- Alternatív interfészek támogatása – Az egyes könyvtárak támogatják az I2C, UART vagy PWM alapú kommunikációt is.
- Hardverfüggetlenség – Bizonyos library-k nem csak Arduino-val, hanem ESP8266, ESP32 vagy akár Raspberry Pi platformokon is működnek.
Library alapú ultrahangos távolságmérés – Arduino példakód
Az alábbi példában bemutatjuk, hogyan lehet az HC-SR04 szenzort a NewPing könyvtárral használni.
Könyvtár telepítése
- Arduino IDE-ben nyisd meg a Library Manager-t (Sketch → Include Library → Manage Libraries…).
- Keresd meg a NewPing könyvtárat.
- Kattints a Telepítés gombra.
Arduino kód – HC-SR04 használata NewPing könyvtárral
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include <NewPing.h> // NewPing könyvtár betöltése #define TRIG_PIN 9 // HC-SR04 Trig láb #define ECHO_PIN 10 // HC-SR04 Echo láb #define MAX_DISTANCE 400 // Maximális mérési távolság (cm) NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE); // Szenzor inicializálása void setup() { Serial.begin(9600); // Soros monitor indítása } void loop() { delay(50); // Kis késleltetés a mérések között int distance = sonar.ping_cm(); // Távolság lekérdezése centiméterben if (distance > 0) { // Ha van érvényes mérési adat Serial.print("Távolság: "); Serial.print(distance); Serial.println(" cm"); } else { Serial.println("Nincs visszaverődött jel."); } } |
Mit csinál a fenti kód?
- Inicializálja a szenzort a NewPing könyvtár segítségével.
- Egyszerű parancsokkal méri a távolságot, és az eredményt kiírja a soros monitorra.
- Ha a tárgy túl messze van, vagy nincs visszavert jel, erről külön üzenet jelenik meg.
Arduino Library-k összehasonlítása
Library neve | Interfész | Támogatott szenzorok | Link |
---|---|---|---|
NewPing | Trig-Echo | HC-SR04, SRF05, HY-SRF05 | NewPing GitHub |
Ultrasonic | Trig-Echo | HC-SR04, HY-SRF05 | Ultrasonic GitHub |
HCSR04 | Trig-Echo | HC-SR04 | HCSR04 GitHub |
I2C_SR04 | I2C | I2C kompatibilis szenzorok | I2C_SR04 GitHub |
DFRobot URM37 | UART/I2C | DFRobot URM37 | DFRobot URM37 Library |
MaxBotix | Analog/PWM/UART | MaxBotix ultrahangos szenzorok | MaxBotix Arduino |
Library használata több ultrahangos szenzorral
Ha több HC-SR04 szenzort szeretnél használni egy projekthez, az alábbi módosított kódot alkalmazhatod:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <NewPing.h> #define SENSOR_COUNT 2 #define TRIG_PINS {9, 11} #define ECHO_PINS {10, 12} #define MAX_DISTANCE 400 NewPing sonar[SENSOR_COUNT] = { NewPing(9, 10, MAX_DISTANCE), NewPing(11, 12, MAX_DISTANCE) }; void setup() { Serial.begin(9600); } void loop() { for (int i = 0; i < SENSOR_COUNT; i++) { int distance = sonar[i].ping_cm(); Serial.print("Szenzor "); Serial.print(i + 1); Serial.print(": "); Serial.print(distance); Serial.println(" cm"); } delay(100); } |
Ez a kód lehetővé teszi, hogy több szenzort szekvenciálisan vezérelj, minimalizálva az interferenciát.
Összegzés
Az ultrahangos szenzorokhoz készült Arduino library-k jelentősen leegyszerűsítik a fejlesztést, pontosabb méréseket biztosítanak, és lehetővé teszik több szenzor egyidejű használatát. A megfelelő könyvtár kiválasztása a szenzor típusától és a projekt követelményeitől függ.
Felhasználási javaslatok
Az HC-SR04 ultrahang szenzor egy rendkívül sokoldalú eszköz, amely az egyszerű otthoni projektektől kezdve a komplex robotikai alkalmazásokig számos területen felhasználható. Az alacsony ár, a könnyű kezelhetőség és a viszonylag pontos mérések miatt a szenzor kiváló választás kezdők és haladók számára is.
Ebben a fejezetben részletesen bemutatom, hogy az HC-SR04 miként illeszkedhet különféle projektekbe, és inspirációt adok saját fejlesztéseidhez is.
Robotikában való alkalmazások
A robotika világában az ultrahangos szenzorok kulcsfontosságúak a környezet érzékelésében és az akadályok elkerülésében. Az HC-SR04 szenzor segítségével a robotok „látni” tudják a környezetüket, ami elengedhetetlen a pontos navigációhoz.
1. Akadálykerülő robotok
Az egyik legismertebb alkalmazási terület az akadálykerülő robotok fejlesztése. Ezek a robotok önállóan képesek navigálni, elkerülni az akadályokat és megtalálni a legbiztonságosabb útvonalat.

Projektötlet:
- Három HC-SR04 szenzorral felszerelt robot: Egy szenzor előre néz, kettő pedig oldalirányba van felszerelve. A robot folyamatosan pásztázza a környezetét, és ha az előtte lévő szenzor akadályt érzékel, a robot az oldalsó szenzorok adatai alapján eldönti, merre forduljon.
- Fejlettebb navigáció: A szenzorok adatait egy algoritmus elemzi, amely figyelembe veszi a távolságokat és a robot méretét, így biztosítva a sima navigációt.
2. Tárgykövető robotok
Egy másik izgalmas alkalmazási terület a tárgykövetés. Az HC-SR04 szenzor képes érzékelni egy mozgó tárgy távolságát, és a robot ennek megfelelően változtatja mozgását.
Projektötlet:
- Személykövető robot: Egy olyan robot, amely követi a felhasználót, például bevásárlás közben. A robot szenzora méri a felhasználó távolságát, és igyekszik egy meghatározott távolságot fenntartani.
- Gépjármű követő rendszer: Egy robot, amely automatikusan követ egy másik járművet, például raktárakban logisztikai célokra.
3. Akadályfelismerő drónok
Az HC-SR04 szenzor akár drónokon is használható. Bár a drónoknál a súly és a méret fontos tényező, az HC-SR04 megfelelő választás lehet egyszerűbb akadályfelismeréshez.
Projektötlet:
- Beltéri drón akadálykerülő rendszer: A drónra felszerelt szenzor érzékeli a falakat és egyéb akadályokat, így elkerüli az ütközéseket zárt terekben.
Biztonsági rendszerek
A biztonságtechnika egyik alapja a pontos mozgásérzékelés. Az HC-SR04 szenzor az alacsony ára és egyszerű használhatósága miatt népszerű választás különféle biztonsági rendszerekben.
1. Mozgásérzékelő riasztórendszerek
Az HC-SR04 szenzor képes érzékelni, ha egy személy áthalad egy előre meghatározott területen. Ezt az elvet használhatod otthoni vagy ipari riasztórendszerekben.
Projektötlet:
- Egyszerű riasztórendszer: Ha a szenzor által mért távolság hirtelen megváltozik (pl. egy személy áthalad), a rendszer hangjelzést ad ki vagy értesítést küld.
- Automatikus értesítés: Kombináld a szenzort egy Wi-Fi modullal (pl. ESP8266), hogy a rendszer e-mailt vagy értesítést küldjön, ha mozgást észlel.
2. Érintésmentes ajtónyitók
Az HC-SR04 szenzort használhatod automatikus ajtónyitó rendszerekhez is. Ha valaki közelít az ajtóhoz, a szenzor érzékeli a távolságot, és automatikusan nyitja az ajtót.
Projektötlet:
- Középületekben alkalmazható ajtónyitók: A szenzor méri a közeledő személy távolságát, és ha az egy bizonyos küszöbérték alá esik, az ajtó motorja aktiválódik.
- Intelligens otthoni rendszerekhez: A szenzor kombinálható RFID-olvasóval vagy arcfelismerő rendszerrel, hogy csak a jogosult személyek nyithassák ki az ajtót.
Interaktív művészeti installációk
A technológia és a művészet határterületén számos kreatív projekt született ultrahangos szenzorok felhasználásával. Az HC-SR04 szenzor lehetőséget ad az interaktív művészeti alkotások létrehozására.
1. Érintésmentes zenei eszközök
Készíthetsz olyan hangszert, amely az HC-SR04 szenzor segítségével érzékeli a kézmozdulatokat, és ezek alapján hangokat generál.

Projektötlet:
- Ultrahangos theremin: A szenzor méri a kéz távolságát és ennek megfelelően változtatja a kiadott hang frekvenciáját. Két szenzorral akár hangerőt és hangmagasságot is szabályozhatsz.
- Interaktív zenefal: Több szenzor segítségével egy falra szerelt interaktív hangszer, ahol a felhasználó mozdulataival hozhat létre dallamokat.
2. Interaktív fényinstallációk
Az HC-SR04 szenzor adatait fényinstallációk vezérlésére is használhatod. Például egy kiállításon, ahol a fények a látogatók mozgására reagálnak.
Projektötlet:
- Közeledésre változó fények: Ahogy a látogató közeledik a fényforráshoz, a színek és a fényerősség változik.
- Interaktív táncparkett: A parkettába süllyesztett szenzorok érzékelik a mozgást és fényhatásokat generálnak.
GYIK – Gyakran Ismételt Kérdések
Az HC-SR04 ultrahang szenzor széles körű használata miatt számos kérdés merül fel a kezdők és a haladó felhasználók körében is. Ebben a szekcióban a leggyakrabban feltett kérdéseket és a hozzájuk tartozó részletes válaszokat találhatod meg.
Mi a maximális és minimális mérési távolság az HC-SR04 szenzornál?
Az HC-SR04 ultrahang szenzor mérési tartománya 2 cm és 400 cm között van. A minimális távolságot a szenzor kialakítása és az ultrahangos hullámok természetes viselkedése határozza meg — 2 cm alatti tárgyakat nem képes megbízhatóan érzékelni. A maximális hatótávolság 400 cm, de ez függ a környezeti tényezőktől és a tárgy felületétől is.
Mennyire pontos az HC-SR04 szenzor mérése?
A szenzor gyári specifikációi szerint a mérési pontosság ±3 mm. A pontosságot befolyásolhatják a következők:
- Környezeti zajok (pl. más ultrahangos eszközök)
- A tárgy felülete: a sima, kemény felületek jobban visszaverik az ultrahangot, míg a puha vagy szivacsos anyagok elnyelhetik azt.
- Hőmérséklet és páratartalom: a hang terjedési sebessége változik a környezeti tényezők függvényében.
Miért nem pontos a szenzor által mért távolság?
Az alábbi okok okozhatják a pontatlan mérést:
- Zajos környezet: Más ultrahangos források interferálhatnak a méréssel.
- Nem megfelelő felület: Puha vagy porózus anyagok nem verik vissza megfelelően az ultrahangos jelet.
- Túl közel vagy túl távol lévő tárgyak: Ha a tárgy 2 cm-nél közelebb van, a szenzor nem érzékeli pontosan. Ha 400 cm-nél távolabb, a jel nem tér vissza.
- Szűk látószög: A szenzor kb. 15°..30°-os látószöggel rendelkezik — ha a tárgy ezen kívül esik, a szenzor nem érzékeli.
Megoldási javaslatok:
- Próbálj ki különböző felületeket a mérésekhez (simább, keményebb tárgyakat).
- Alkalmazz átlagolást — több mérést végezz, majd számítsd ki az átlagot.
- Használj zajszűrő algoritmusokat, például medián szűrést.
Az HC-SR04 szenzor folyamatosan 0 cm-t mér. Mi lehet a probléma?
Ez a hiba általában a következőkből adódhat:
- Hibás kábelezés: Ellenőrizd, hogy a Trig és Echo lábak megfelelően csatlakoznak-e a mikrokontrollerhez.
- Rossz tápellátás: Győződj meg róla, hogy a szenzor 5V tápot kap.
- Szoftveres hiba: Ellenőrizd a kódot, különösen a pulseIn() függvény használatát, amely az Echo láb jeleit méri.
Az HC-SR04 véletlenszerű értékeket ad. Hogyan lehet ezt megoldani?
- Zajszűrés: Használj szoftveres szűrést, például átlagolást vagy medián szűrést.
- Fizikai árnyékolás: Bizonyosodj meg róla, hogy a szenzor környezetében nincsenek visszaverődő felületek, amelyek megzavarhatják a mérést.
- Külső interferencia kizárása: Egyes zajforrások, például ventilátorok vagy más ultrahangos eszközök, interferálhatnak a szenzorral.
Használható kültéren az HC-SR04 szenzor?
Igen, de bizonyos óvintézkedésekkel:
- Páratartalom és csapadék elleni védelem: Az HC-SR04 szenzor nem vízálló. Kültéri használathoz burkolatot kell biztosítani, amely védi az áramkört az esőtől és párától, miközben a szenzor “szemei” szabadon maradnak.
- Hőmérséklet-kompenzáció: A kültéri hőmérsékleti változások befolyásolhatják a méréseket. Egy NTC hőmérő hozzáadásával kompenzálhatod a méréseket a hőmérséklet-változások hatásai ellen.
Hogyan lehet több HC-SR04 szenzort egy rendszerben használni?
Több HC-SR04 szenzort is használhatsz egyszerre, de kerülnöd kell az ultrahangos interferenciát. Az interferencia elkerülésére a következőket teheted:
- Szekvenciális mérés: Ne indítsd el egyszerre a szenzorokat. Inkább egymás után aktiváld őket, kis késleltetésekkel.
- Időzített késleltetés: Az egyes szenzorok között hagyj 50-100 ms szünetet, hogy a visszavert jelek ne keveredjenek össze.
Mi a különbség az HC-SR04 és más ultrahangos szenzorok között?
Az HC-SR04 egy alap ultrahangos szenzor, de léteznek fejlettebb modellek is, mint például az SRF05 vagy az SRF08. Egy részletesebb táblázat, amely többféle ultrahangos szenzort tartalmaz, összehasonlítva őket a legfontosabb paramétereik alapján:
Szenzor | Max. hatótáv | Pontosság | Tápfeszültség | Extrák |
---|---|---|---|---|
HC-SR04 | 400 cm | ±3 mm | 5V | Egyszerű, olcsó, könnyen beszerezhető, kompatibilis Arduinóval. |
SRF05 | 450 cm | ±1 cm | 5V | Kettős mód (Trig+Echo külön vagy 1 vezetékes mód), stabilabb mérések, jobb zajszűrés. |
SRF08 | 600 cm | ±1 cm | 5V | I2C interfész, több érzékelő egyszerre működtethető, állítható mérési szög. |
JSN-SR04T | 600 cm | ±3 mm | 5V | Vízálló kivitel, kültéri használatra is alkalmas, egy vezetékes működés. |
US-100 | 450 cm | ±1 cm | 3.3V vagy 5V | Soros kommunikáció támogatása, beépített hőmérséklet-kompenzáció. |
HY-SRF05 | 450 cm | ±1 cm | 5V | Jobb stabilitás és pontosság az HC-SR04-hez képest, kettős mód támogatása. |
DYP-ME007 | 500 cm | ±2 mm | 5V | Kompakt kivitel, egyszerű integráció különféle rendszerekbe. |
Parallax Ping))) | 300 cm | ±2 mm | 5V | Egy vezetékes (Trig és Echo egy lábon), egyszerű használat. |
HC-SR05 | 450 cm | ±2 mm | 5V | Fejlettebb zajszűrés, nagyobb stabilitás, kompatibilis az HC-SR04-gyel. |
DFRobot URM37 | 750 cm | ±1 cm | 5V | Beépített hőmérséklet-kompenzáció, soros kommunikáció és analóg kimenet. |
Források
A cikkhez az alábbi hasznos linkek kapcsolódnak:
- HC-SR04 Ultrasonic Sensor Datasheet [SparkFun]
- Arduino Documentation – pulseIn() Function [Arduino.cc]
- Folyadékszint mérés HC-SR04 szenzorral [Instructables]
- Ultrahangos theremin hangszer készítése [Arduino Project Hub]