Подключите 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) и используйте соответствующую функцию декодирования.