Підключіть VCC до 3.3–5V, GND до землі, OUT до цифрового піна Arduino (наприклад, D2). Встановіть бібліотеку IRremote. Завантажте скетч декодера. Натискайте кнопки на пульті — коди з'являться в Serial Monitor. Запишіть коди та використовуйте їх у своєму проєкті.
Як підключити HX1838 до Arduino?
Приймач HX1838 має лише 3 виводи, тому підключення максимально просте. Важливо правильно визначити розпіновку — вона може відрізнятися залежно від виробника.
flowchart LR
subgraph ARDUINO["🔌 Arduino UNO"]
A5V["5V"]
AGND["GND"]
AD2["D2 (або інший)"]
end
subgraph HX1838["📡 HX1838 Приймач"]
VCC["VCC"]
GND["GND"]
OUT["OUT / S"]
end
subgraph REMOTE["🎮 Пульт ДК"]
IR["ІЧ сигнал
940нм / 38кГц"]
end
A5V --> VCC
AGND --> GND
AD2 --> OUT
IR -.->|"до 8м"| HX1838
Розпіновка модуля
- VCC
- Живлення 3.3–5V (підключити до 5V або 3.3V Arduino)
- GND
- Земля (підключити до GND Arduino)
- OUT (S)
- Цифровий вихід сигналу (підключити до будь-якого цифрового піна)
Перевірте розпіновку! На деяких модулях порядок пінів інший (GND-VCC-OUT або OUT-GND-VCC). Маркування зазвичай на платі або на зворотному боці.
-
Визначте розпіновку Знайдіть маркування на платі модуля. Типовий порядок: VCC — GND — OUT (або S).
-
Підключіть живлення VCC → 5V Arduino, GND → GND Arduino. Можна використовувати 3.3V для ESP8266/ESP32.
-
Підключіть сигнальний провід OUT → будь-який цифровий пін (D2, D11 тощо). Запам'ятайте номер — він потрібен у коді.
-
Встановіть бібліотеку IRremote Arduino IDE → Sketch → Include Library → Manage Libraries → пошук "IRremote" → Install.
-
Завантажте тестовий скетч Використайте код декодера (див. нижче) для визначення кодів кнопок вашого пульта.
ESP8266/ESP32: використовуйте 3.3V для живлення. Сигнальний пін підключайте до GPIO з підтримкою переривань (наприклад, GPIO5).
Як дізнатися коди кнопок пульта?
Кожна кнопка пульта надсилає унікальний HEX-код. Щоб використовувати пульт у своєму проєкті, спочатку потрібно записати ці коди.
Типові коди пульта з комплекту HX1838 (NEC протокол)
| Кнопка | HEX код | Кнопка | HEX код |
|---|---|---|---|
| PWR (Power) | 0xFF629D |
0 | 0xFF6897 |
| VOL+ | 0xFFA857 |
1 | 0xFF30CF |
| VOL− | 0xFFE01F |
2 | 0xFF18E7 |
| ▶ (Play) | 0xFFC23D |
3 | 0xFF7A85 |
| ◀◀ (Rewind) | 0xFF22DD |
4 | 0xFF10EF |
| ▶▶ (Forward) | 0xFF02FD |
5 | 0xFF38C7 |
| EQ | 0xFF906F |
6 | 0xFF5AA5 |
| CH (Menu) | 0xFFE21D |
7 | 0xFF42BD |
| 100+ | 0xFF9867 |
8 | 0xFF48B5 |
| 200+ | 0xFFB04F |
9 | 0xFF52AD |
| Repeat (утримання) | 0xFFFFFFFF |
||
Коди можуть відрізнятися! Різні виробники використовують різні коди. Завжди визначайте коди самостійно за допомогою скетчу-декодера.
Як встановити та використовувати бібліотеку IRremote?
Бібліотека IRremote — стандарт для роботи з ІЧ-приймачами на Arduino. Вона підтримує протоколи NEC, Sony, RC5, RC6 та інші.
-
Встановіть бібліотеку Arduino IDE → Sketch → Include Library → Manage Libraries. Введіть "IRremote" у пошук. Оберіть бібліотеку від Arduino-IRremote. Натисніть Install.
-
Важливо для Arduino IDE Якщо виникає конфлікт — видаліть папку "RobotIRremote" з директорії бібліотек Arduino (зазвичай Documents/Arduino/libraries).
-
Версія бібліотеки Рекомендована версія 3.x або новіша. Старі туторіали (для версії 2.x) можуть не працювати — API змінилося.
Сучасний API (v3+): використовуйте IrReceiver.begin(pin) замість старого irrecv.enableIRIn(). Перевіряйте приклади в самій бібліотеці.
Як керувати LED за допомогою пульта?
Після визначення кодів кнопок можна використовувати їх для керування пристроями. Ось приклад вмикання/вимикання LED.
flowchart LR
subgraph REMOTE["🎮 Пульт"]
BTN1["Кнопка 1"]
BTN2["Кнопка 2"]
end
subgraph ARDUINO["🔌 Arduino"]
CODE["Декодування
HEX коду"]
LOGIC["switch/case
логіка"]
end
subgraph OUTPUT["💡 Результат"]
LED_ON["LED ON"]
LED_OFF["LED OFF"]
end
BTN1 -->|"0xFF30CF"| CODE
BTN2 -->|"0xFF18E7"| CODE
CODE --> LOGIC
LOGIC -->|"case 1"| LED_ON
LOGIC -->|"case 2"| LED_OFF
Розширення: замість LED можна керувати реле (освітлення, вентилятори), сервоприводами (роботи), або надсилати команди через Wi-Fi (ESP8266/ESP32 + MQTT).
Усунення проблем та поширені питання
Приймач не реагує на пульт
Перевірте: 1) Правильність підключення (особливо VCC та GND — не переплутайте). 2) Батарейку в пульті (CR2025). 3) Чи вказано правильний пін у коді. 4) Чи встановлена бібліотека IRremote. 5) Спробуйте подивитися на ІЧ-діод пульта через камеру телефону — має блимати при натисканні.
Отримую код 0xFFFFFFFF замість нормального
Це repeat-код. Він надсилається при утриманні кнопки. Перший натиск дає реальний код, наступні — 0xFFFFFFFF. У коді ігноруйте цей код: if (results.value != 0xFFFFFFFF) { ... }
Приймач працює нестабільно, хибні спрацювання
Причини завад: 1) Пряме сонячне світло — ІЧ-шум від сонця. 2) Флуоресцентні/LED лампи з ШІМ-регулюванням. 3) Інші ІЧ-пристрої поруч. Рішення: затінити приймач, додати конденсатор 0.1 мкФ між VCC та GND, використовувати екранування.
Мала дальність прийому (менше 2 метрів)
Перевірте: 1) Батарейку в пульті — розряджена дає слабкий сигнал. 2) Кут — приймач має конус прийому ±45°, цільтеся прямо. 3) Перешкоди — ІЧ не проходить через непрозорі матеріали. 4) Завади від освітлення.
Чи можна використовувати пульт від телевізора?
Так! Більшість побутових пультів (TV, DVD, кондиціонери) працюють на частоті 38 кГц і сумісні з HX1838. Визначте коди кнопок за допомогою декодера і використовуйте їх. Це зручно — не потрібен окремий пульт.
Помилка компіляції "no member named 'blink13'" або "decode is deprecated"
Проблема версії бібліотеки. Старі туторіали написані для IRremote v2.x, а ви маєте v3.x+. Використовуйте сучасний API: IrReceiver.begin(pin, ENABLE_LED_FEEDBACK) та IrReceiver.decode(). Дивіться приклади в самій бібліотеці (File → Examples → IRremote).
Рекомендації для надійної роботи
-
Додайте фільтруючий конденсатор Керамічний конденсатор 0.1 мкФ між VCC та GND приймача зменшить завади від живлення та покращить стабільність.
-
Уникайте прямого сонячного світла Сонце — потужне джерело ІЧ-випромінювання. Розміщуйте приймач у затіненому місці або використовуйте козирок.
-
Використовуйте debounce для кнопок Додайте затримку 100–200 мс після обробки команди, щоб уникнути подвійних спрацювань.
-
Перевіряйте протокол Якщо ваш пульт не NEC — визначте протокол (Sony, RC5, RC6) і використовуйте відповідну функцію декодування.