
Sokan szeretnék gyorsan megnézni, hogy működik-e még egy régi távirányító, vagy milyen jelet ad le, amikor megnyomsz rajta egy gombot. Ez különösen akkor lehet hasznos, ha nem tudod, jó-e még az eszköz, vagy ha több távirányítód van, és nem tudod, melyik mit irányít. Egy KY-022-es IR vevőmodullal és egy Arduino UNO-val ezt könnyen meg lehet csinálni, és nem is kell hozzá sok minden.
Ha összekötöd a modult az Arduinóval, majd feltöltöd rá az egyszerű példakódot, akkor a távirányító gombnyomásaira villogni fog egy LED, és a számítógép képernyőjén megjelenik, hogy pontosan milyen kódot küldött a távirányító. Így gyorsan és egyszerűen ellenőrizheted, hogy működik-e a távirányító, milyen protokollt használ, és milyen adatokat küld az Arduino felé. Ez az alapja annak, hogy később saját infrás vezérléseket építs, például lámpákat, menüket vagy akár hangmodulokat irányíts velük.
Alkalmazási körülmények és a kapcsolás
A KY-022 IR vevőmodulnak három lába van, amelyeket pontosan kell bekötni, hogy megbízhatóan működjön az Arduino-val. Ezek a lábak a következők:
- OUT (S): Ez a kimeneti láb az, amely jelet ad, amikor a modul érzékel egy infravörös jelet, például egy távirányító gombnyomására. Amikor a jel megérkezik, ez a láb rövid ideig alacsony szintre vált, vagyis 0 voltot ad ki magából. Az Arduino ezt az impulzust érzékeli, és ennek alapján tovább dolgozik vele. Ez a digitális jel lehetővé teszi, hogy az Arduino szoftveresen dekódolja a különböző gombnyomásokhoz tartozó kódokat. Egyes modulokon a visszajelző LED a vevőkimenetre van kötve – azaz villogással jelzi a jel vételét.
- VCC (+): Ez a tápellátás bemeneti pontja. Ide kell csatlakoztatni az 5 voltos feszültséget az Arduino 5V kimenetéről. Fontos, hogy stabil 5V-ot kapjon, mert ettől függ a működése megbízhatósága. Ha túl alacsony a feszültség, a modul nem érzékel rendesen, ha pedig túl magas, akkor akár meg is hibásodhat. Egyes esetekben érdemes kondenzátort is használni a tápvonal szűrésére, hogy kiszűrjük a zajt és stabilabb jelet kapjunk.
- GND (-): Ez a földelés vagy negatív pólus, amit az Arduino GND lábához kell kötni. A közös földelés elengedhetetlen ahhoz, hogy az áramkör jól működjön. Ha ez hiányzik, akkor az adatátvitel sem fog működni és a vevőmodul nem fog jelet továbbítani. Ha több modult is használsz, mindegyiknek ugyanahhoz a közös GND-hez kell csatlakoznia.

IR (infravörös) távirányító kód vétele
A kapcsolás elkészítése után jöhet a próba. Az alábbi program egyszerű, mégis elég ahhoz, hogy lásd: az IR vevő valóban működik. Ha megnyomsz egy gombot a távirányítón, a modul érzékeli a jelet, az Arduino pedig kiírja a kódot a soros portra. Közben a D13 LED is felvillan – így akkor is látszik, hogy történik valami, ha nincs nyitva a monitor. A kód rövid, kezdőknek is könnyen átlátható. Csak figyelj arra, hogy a megfelelő könyvtár legyen telepítve – ha nem, akkor bizony a program nem fog fordulni vagy teljesen hibásan működik!
Könyvtárhasználat – csak egyet használj, különben nem működik
Ahhoz, hogy a program valóban működjön, elengedhetetlen a megfelelő IR könyvtár használata. Bár több „IRremote” nevű könyvtár is elérhető az Arduino környezetben, nem mindegyik kompatibilis a példában szereplő kóddal. A program pontos működéséhez a „IRremote” könyvtár Armin Joachimsmeyer-féle verziója szükséges, amely a IrReceiver.begin(), IrReceiver.decode(), IrReceiver.resume() függvényeket, valamint a decodedIRData adatstruktúrát is tartalmazza. Ez a verzió a Library Managerben „by shirriff” néven található meg, és legalább a 4.1.0 verziószámú kiadást ajánlott használni. Telepíthető az Arduino IDE-n belül a Sketch → Include Library → Manage Libraries… menüponton keresztül, IRremote névre keresve.

Ugyanakkor fontos tudni, hogy az IDE-ben gyakran jelen van egy másik, hasonló nevű könyvtár is: a RobotIRremote. Ez a verzió korábban egyes Arduino típusokhoz (például Leonardo vagy Esplora) tartozott, de mára elavult, és komoly összeakadásokat okozhat, ha egyszerre van telepítve az újabb IRremote könyvtárral. Bár ugyanazokat a fájlneveket tartalmazza (pl. IRremote.h), a belső felépítése eltérő, ezért a fordítás során hibákhoz, funkcióütközésekhez vezethet.
Ha a program nem fordul le, vagy gyanús hibát dob a decode() vagy resume() függvényeknél, nagy valószínűséggel könyvtárütközésről van szó. Ekkor célszerű megnyitni a Library Managert, rákeresni a RobotIRremote könyvtárra, majd azt eltávolítani vagy letiltani. Ezt követően az IRremote könyvtárat célszerű újratelepíteni, ügyelve arra, hogy valóban a „by shirriff” verzió legyen aktív.
Ha ezeket a lépéseket betartjuk, a példakód minden probléma nélkül fog futni, és az Arduino máris fogadni és értelmezni tudja a távirányító jeleit.
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | /* Program neve: KY-022 IR vevőmodul – távirányító kódolvasás Verzió: 1.0 Dátum: 2025. július 17. Szerző: Cseh Róbert E-mail: avr@tavir.hu Web: https://www.tavir.hu Leírás: Ez a program egy IR vevő tesztelésére szolgál, amely KY-022 modul segítségével fogadja a háztartási távirányítókból érkező infravörös jeleket. A program az IR jeleket dekódolja, majd kiírja a soros monitorra a protokollt, a címkódot, a parancsot és a teljes nyers kódot. Minden sikeres vétel után a beépített D13-as LED röviden felvillan. Hardverkövetelmények: - Arduino UNO - KY-022 IR vevőmodul (VS1838B) - Bármilyen infrás távirányító - Csatlakozások: - KY-022 OUT → Arduino D2 - KY-022 VCC → Arduino 5V - KY-022 GND → Arduino GND - Beépített LED visszajelzés: Arduino D13 Könyvtárak: - IRremote by Armin Joachimsmeyer (verzió: 4.1.0 vagy újabb) Telepítés: Arduino IDE → Library Manager → keresés: "IRremote" Felhasználási feltételek: Szabadon felhasználható és módosítható oktatási célokra. A szerző nevének megőrzése szükséges. */ #include <IRremote.h> const byte IR_PIN = 2; // Ide kötjük az IR modul OUT lábát const byte LED_PIN = 13; // A beépített LED a visszajelzéshez void setup() { pinMode(LED_PIN, OUTPUT); // LED kimenetként beállítása Serial.begin(115200); // Soros kapcsolat indítása IrReceiver.begin(IR_PIN, DISABLE_LED_FEEDBACK); // IR vevő indítása } void loop() { // Ha jön IR jel, akkor azt dekódoljuk if (IrReceiver.decode()) { digitalWrite(LED_PIN, HIGH); // Jelzés: LED felvillan delay(50); // Kis szünet digitalWrite(LED_PIN, LOW); // LED lekapcsol // Kiírjuk a soros monitorra az adatokat Serial.print("Protokoll: "); Serial.print(IrReceiver.decodedIRData.protocol); Serial.print(" | Cím: 0x"); Serial.print(IrReceiver.decodedIRData.address, HEX); Serial.print(" | Parancs: 0x"); Serial.print(IrReceiver.decodedIRData.command, HEX); Serial.print(" | Kód: 0x"); Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX); IrReceiver.resume(); // Felkészülés a következő jelre } } |
A működés rövid leírása
A KY-022 modul képes észlelni azokat az infravörös jeleket, amelyeket egy hagyományos távirányító bocsát ki, amikor megnyomsz rajta egy gombot. Ezek a jelek általában 38 kHz frekvenciájúak, és a modul egy rövid logikai alacsony (0 V-os) impulzust küld a kimenetén, amikor ilyen jelet érzékel. Ezt a rövid jelet az Arduino digitális bemenete fogadja, és szoftveresen értelmezi, hogy mit jelent.
Amikor az Arduino érzékeli ezt az impulzust:
- azonnal felvillan a beépített D13 LED, így rögtön látod, hogy történt jelvétel,
- a háttérben az Arduino dekódolja a kapott IR jelet: megállapítja, hogy milyen protokollt használ, mi a címzett eszköz címe, és milyen parancsot küldött a távirányító,
- ezután minden adatot részletesen kiír a számítógépen futó soros monitorra: látod a protokoll nevét (pl. NEC, RC5), a címzett kódját, a parancs kódját, valamint a teljes nyers IR kódot hexadecimális formátumban.
Ez a folyamat nagyon hasznos például akkor, ha saját IR-alapú vezérlést szeretnél tervezni, és tudni akarod, pontosan milyen jeleket kell értelmezned a későbbiekben.

IR protokollok – mit jelent, ha NEC, RC5 vagy UNKNOWN?
A IRremote könyvtár számos különféle infravörös protokollt ismer fel, és automatikusan azonosítja, hogy a beérkező jel melyikhez tartozik. Ez azért fontos, mert minden protokoll másként építi fel a jeleit – eltérhet az időzítés, a kódolás módja, a cím/parancs szerkezet stb.
- NEC – ez az egyik leggyakoribb IR protokoll, amit sokféle háztartási távirányító, főleg TV-k és set-top boxok használnak. Jellemző rá, hogy hosszabb, ismételhető jeleket küld, ami könnyen dekódolható.
- RC5 – ezt a protokollt a Philips fejlesztette, és főként régebbi audio/video eszközökön fordul elő. Rövidebb jelekkel dolgozik, és tartalmaz egy váltóbitet is, hogy megkülönböztesse az egymás utáni gombnyomásokat.
- UNKNOWN – akkor jelenik meg, ha a könyvtár nem tudja beazonosítani a protokollt. Ez előfordulhat például akkor, ha az IR jel nagyon gyenge, zajos, vagy nem szabványos formátumú. Ilyenkor érdemes másik távirányítót próbálni, vagy megnézni, megfelelő-e a tápellátás és az érzékelő pozíciója.
A protokoll ismerete kulcsfontosságú akkor, ha saját kódokat akarsz értelmezni vagy előállítani – így tudod majd helyesen visszaküldeni ugyanazt a parancsot egy eszköznek, például hangerőnöveléshez vagy csatornaváltáshoz.
Tesztrutin és hibakeresés – mit csinálj, ha valami nem működik?
- Először nyisd meg a Soros monitort az Arduino IDE-ben, és állítsd be 115200 baud sebességre. Ez megmutatja, hogy az Arduino kap-e adatot a vevőtől. Ha semmi nem jelenik meg, az azt jelentheti, hogy a távirányító jele nem jut el az Arduinóhoz.
- Nézd meg a D13 LED-et az Arduino-n. Ha nyomsz egy gombot a távirányítón, és az Arduino tényleg érzékel valamit, akkor a LED-nek rövid időre fel kell villannia. Ha nem villog, lehet, hogy nincs jel, vagy valami nincs jól bekötve.
- Próbáld ki a távirányítót úgy, hogy egy telefon kamerájával nézed. A legtöbb kamera érzékeli az infravörös fényt – ha látod, hogy a LED villog a gombnyomásra, akkor működik.
- Ellenőrizd a bekötést: az IR modul OUT lábát kösd az Arduino D11-ére, a VCC mehet az 5V-ra, a GND pedig az Arduino GND-re. Ha bármelyik nincs jól csatlakoztatva, nem fog működni a rendszer.
- A programot is nézd meg: biztos, hogy a kód fel van töltve az Arduino-ra? A megfelelő port van kiválasztva? Ezek nélkül nem fogsz eredményt látni.
- Néha a könyvtárak okoznak gondot. Ha telepítve van a
RobotIRremotekönyvtár, azt töröld, mert zavarhatja aArduino-IRremote by shirriffműködését. Csak ez utóbbi maradjon, és legyen frissítve. - Ha még mindig nem megy, próbálkozz másik távirányítóval, vagy tartsd közelebb az IR vevőt. Gyenge elemek vagy rossz szög is okozhatja, hogy nem érzékel semmit.
És nálad?
Most, hogy az Arduino képes a távirányítóból érkező infravörös jelek dekódolására, érdemes elgondolkodni azon, milyen gyakorlati alkalmazásokban hasznosítható ez a képesség. Vajon a hardveres menürendszerek vezérlése, a távoli eszközök – például LED-ek vagy relék – kapcsolása, esetleg hangmodulok indítása a legrelevánsabb következő lépés? A dekódolt protokollok és parancsok ismeretében ezek mind megvalósíthatók, akár összetettebb interaktív rendszerek alapjaként is.
Összefoglalás
A bemutatott példa során a KY-022 típusú infravörös vevőmodul és az Arduino mikrokontroller segítségével sikeresen demonstrálható az IR jelek detektálása és szoftveres feldolgozása. A rendszer képes érzékelni a távirányítóból érkező, 38 kHz-es vivőfrekvenciára modulált impulzusokat, és a jelek alapján visszacsatolást adni egy LED villanásával, valamint a dekódolt adatok megjelenítésével a soros porton keresztül.
Ez az elrendezés nemcsak didaktikai céllal alkalmas az IR kommunikáció működésének szemléltetésére, hanem kiindulópontként is szolgálhat komplexebb, többcsatornás vezérlőrendszerek vagy protokollspecifikus eszközinterfészek tervezéséhez, ahol különböző típusú infravörös protokollok felismerése és kezelése szükséges.
Gyakran ismételt kérdések
Kérdés: Mi az a KY-022 IR vevőmodul?
Válasz: Egy infravörös érzékelő, amely a távirányító infravörös jelét érzékeli, és digitális formában küldi az Arduino felé.
Kérdés: Hogyan kell bekötni az IR modult?
Válasz: A VCC megy az 5 V kimenetre, a GND a GND-re, az OUT lábat például a D2-es digitális bemenetre csatlakoztasd.
Kérdés: Melyik könyvtár szükséges az IR jelek értelmezéséhez?
Válasz: Az IRremote könyvtár (minimum 4.1.0 verzió) használható, amely elérhető a Library Manager-ben.
Kérdés: Honnan tudom, hogy működik a vevő?
Válasz: Ha a kód fut, gombnyomásra a D13 LED felvillan, és a soros monitoron megjelenik a dekódolt HEX kód.
Kérdés: Szükséges-e külső tápellátás?
Válasz: Nem – az Arduino 5 V kimenete elegendő, külső táp nem szükséges normál működéshez.
Felhasznált források
– Lángérzékelő szenzor [TavIR]
– Infravörös adó/vevőeszközök a TavIR Shopban
– IR remote control with KY‑022 [Arduino Forum]
– Using VS1838B with Arduino [Arduino StackExchange]
– KY‑022 Receiver Module – működési magyarázat [ElectroThinks]
– IRremote könyvtár dokumentáció [Arduino Docs]
Kapcsolódó cikkek:
– Arduino KY-005 IR LED adó modul bekötése (RC5/RC6 küldés)
– Olcsón, Gyorsan, Jót – a szoftverfejlesztés háromszöge az Arduino világában
– Mi az az Arduino és hol van értelme használni?
– Arduino telepítése IV. – Library/könyvtár telepítése (eszközkezelők)
– Arduino IDE 2.3.4 – Új verzió! Konkrét fejlesztések és hibajavítások





