Библиотека irremote h. Библиотека IRremote для Arduino: управление инфракрасными устройствами

Как использовать библиотеку IRremote для отправки и приема ИК-сигналов на Arduino. Какие протоколы поддерживаются. Как настроить ИК-приемник и передатчик. Как декодировать сигналы с пульта ДУ.

Обзор библиотеки IRremote для Arduino

Библиотека IRremote предоставляет широкие возможности для работы с инфракрасными сигналами на платформе Arduino. Она позволяет как отправлять, так и принимать ИК-команды, поддерживая множество популярных протоколов.

Основные возможности библиотеки IRremote:

  • Прием и декодирование ИК-сигналов с пультов ДУ
  • Отправка ИК-команд для управления устройствами
  • Поддержка более 10 распространенных ИК-протоколов
  • Совместимость с большинством плат Arduino и ESP32/ESP8266
  • Простой API для интеграции в проекты

Поддерживаемые ИК-протоколы

IRremote обеспечивает работу со следующими ИК-протоколами:

  • NEC/Onkyo/Apple
  • Sony
  • RC5/RC6 (Philips)
  • Samsung
  • JVC
  • LG
  • Panasonic/Kaseikyo
  • Denon/Sharp
  • BoseWave
  • Lego Power Functions
  • Whynter
  • MagiQuest

Какой протокол использует ваше устройство? Это можно определить экспериментально с помощью скетча, который выводит в монитор порта параметры принятого сигнала. Большинство бытовых пультов ДУ использует протоколы NEC, Sony или RC5/RC6.


Настройка оборудования для работы с ИК

Для приема ИК-сигналов понадобится ИК-приемник, например TSOP38238. Подключите его выход к цифровому пину Arduino. Питание приемника — 5В, земля — GND.

Для передачи сигналов используется ИК-светодиод. Его анод подключается через резистор 100 Ом к цифровому пину Arduino, катод — на землю. Обычно применяются ИК-светодиоды на 940 нм.

Схема подключения:

  • ИК-приемник: OUT -> D2, VCC -> 5V, GND -> GND
  • ИК-светодиод: + -> 100 Ом -> D3, — -> GND

Какие еще компоненты могут понадобиться? Для усиления сигнала передатчика можно использовать транзистор. Это позволит управлять устройствами на большем расстоянии.

Прием и декодирование ИК-сигналов

Для приема сигналов с пульта ДУ используется следующий алгоритм:

  1. Инициализация ИК-приемника
  2. Проверка наличия нового сигнала
  3. Декодирование принятых данных
  4. Обработка команды

Пример кода для приема ИК-сигналов:

«`cpp #include const int IR_RECEIVE_PIN = 2; void setup() { Serial.begin(9600); IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); } void loop() { if (IrReceiver.decode()) { Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX); IrReceiver.resume(); } } «`

Как интерпретировать полученные данные? Каждая кнопка пульта передает уникальный код. Составьте таблицу соответствия кодов и функций, чтобы определять нажатую кнопку.


Отправка ИК-команд

Для управления устройствами с помощью ИК-сигналов выполняются следующие шаги:

  1. Инициализация ИК-передатчика
  2. Подготовка данных для отправки
  3. Отправка команды

Пример кода для отправки ИК-команды:

«`cpp #include const int IR_SEND_PIN = 3; void setup() { IrSender.begin(IR_SEND_PIN, ENABLE_LED_FEEDBACK); } void loop() { IrSender.sendNEC(0x20DF10EF, 32); // Отправка команды включения LG TV delay(5000); // Пауза 5 секунд } «`

Как подобрать правильный код команды? Можно воспользоваться базами данных ИК-кодов для различных устройств или записать нужную команду с оригинального пульта.

Расширенные возможности библиотеки IRremote

Помимо базовой функциональности, IRremote предлагает ряд дополнительных возможностей:

  • Отправка raw IR-данных для нестандартных протоколов
  • Запись и воспроизведение ИК-последовательностей
  • Управление несколькими ИК-передатчиками
  • Настройка частоты модуляции сигнала
  • Поддержка прерываний для эффективного приема

Как использовать эти функции? Обратитесь к документации библиотеки для детальных примеров и описания API.


Применение IRremote в проектах

Библиотека IRremote открывает широкие возможности для создания различных проектов:

  • Универсальный пульт ДУ на базе Arduino
  • Автоматизация домашней техники
  • Управление LED-лентой с ИК-пульта
  • ИК-система безопасности
  • Роботы с ИК-управлением

Какой проект можно реализовать с помощью IRremote? Все зависит от вашей фантазии и потребностей. Библиотека предоставляет надежный фундамент для работы с ИК-технологиями.

Решение проблем при работе с IRremote

При использовании библиотеки IRremote могут возникнуть некоторые сложности. Рассмотрим типичные проблемы и способы их решения:

Не удается принять сигнал

  • Проверьте правильность подключения ИК-приемника
  • Убедитесь, что используется поддерживаемый протокол
  • Попробуйте изменить расстояние до пульта ДУ
  • Исключите влияние внешних источников ИК-излучения

Команды не доходят до устройства

  • Проверьте подключение и исправность ИК-светодиода
  • Убедитесь в правильности отправляемого кода команды
  • Попробуйте усилить сигнал с помощью транзистора
  • Уменьшите расстояние до управляемого устройства

Что делать, если проблема не решается? Обратитесь за помощью на форумы Arduino или в репозиторий проекта на GitHub.


Альтернативы IRremote

Хотя IRremote является одной из самых популярных библиотек для работы с ИК на Arduino, существуют и альтернативные решения:

  • IRLib2 — мощная библиотека с поддержкой множества протоколов
  • IRremoteESP8266 — оптимизированная версия для ESP8266/ESP32
  • TinyIR — облегченная библиотека для ограниченных ресурсов

Какую библиотеку выбрать? Это зависит от конкретных требований проекта, используемого оборудования и личных предпочтений разработчика.

Библиотека IRremote предоставляет надежный и гибкий инструментарий для работы с инфракрасными сигналами на платформе Arduino. Она позволяет легко интегрировать функции ИК-управления в различные проекты, от простых пультов ДУ до сложных систем автоматизации. Широкая поддержка протоколов и обширная документация делают IRremote отличным выбором как для начинающих, так и для опытных разработчиков.


c++ — Двойное подключение h файла

Вопрос задан

Изменён 1 год 8 месяцев назад

Просмотрен 191 раз

Есть сторонняя библиотека IRRemote для Arduino с таким заголовочным файлом IRremote.h

#ifndef IRremote_h
#define IRremote_h
.........
#include "IRremoteInt.h"
/*
 * Include the sources here to enable compilation with macro values set by user program.
 */
#include "irReceive.cpp.h"
#include "irSend.cpp.h"
#include "IRremote.cpp.h"
#endif // IRremote_h
#pragma once

В irReceive.cpp.h есть такой код

IRrecv IrReceiver;
IRrecv::IRrecv() {
    irparams.recvpin = 0;  // 44 строка
    irparams.blinkflag = false;
}

Теперь использование.

В своем main. cpp пишу

#include <IRremote.h>
#include "Controller.h"
......

Все компилируется без ошибок. Но если я в Controller.h тоже добавлю инклуд

#ifndef CONTROLLER_H
#define CONTROLLER_H
#include <IRremote.h>
#include "Settings.h"
class Controller {
.....
}
#endif //CONTROLLER_H

То получаю каскад ошибок линковки

CMakeFiles\Controller.dir\src\main.cpp.obj: In function IRrecv::IRrecv():
C:\PROGRA~2\Arduino\LIBRAR~1\IRremote\src/irReceive.cpp.h:44: multiple definition of IRrecv::IRrecv()
CMakeFiles\Controller.dir\src\Controller.cpp.obj:C:\PROGRA~2\Arduino\LIBRAR~1\IRremote\src/irReceive.cpp.h:44: first defined here
………
CMakeFiles\Controller.dir\src\controller.cpp.obj: In function IRrecv::IRrecv():
C:\PROGRA~2\Arduino\LIBRAR~1\IRremote\src/irReceive.cpp.h:44: multiple definition of IRrecv::decode()
CMakeFiles\Controller.dir\src\AirConditionController. cpp.obj:C:\PROGRA~2\Arduino\LIBRAR~1\IRremote\src/irReceive.cpp.h:44: first defined here

Ошибок очень много, но все они ссылаются на одно место irReceive.cpp.h:44

Controller.h также инклудится в файл Controller.cpp, где находится реализация класса Controller

Как с этим бороться и откуда возникает эта ошибка? Ведь IRremote.h содержит include guard. Да, include guard не содержит файл irReceive.cpp.h, но он инклудится в одном месте в IRremote.h

  • c++
  • c
  • arduino
  • include
  • стандарт

7

Вот этот код, о котором вы пишете —

IRrecv IrReceiver;
IRrecv::IRrecv() {
    irparams.recvpin = 0;  // 44 строка
    irparams.blinkflag = false;
}

оказавшись дважды в разных .cpp-файлах, приводит к появлению объекта IrReceiver и конструктора в двух файлах. Линковщик не знает, какой выбрать.

Если у вас С++ не очень старый — вас спасет просто добавление слова

inline перед каждым из них.

Если старый — то лучше не заморачиваться, а перенести это все в отдельный .cpp-файл в проекте. Это самое разумное решение — чтобы каждый занимался своим делом: заголовочный файл содержал заголовки-объявления, а файл реализации — содержал реализацию.

1

Оформил я баг-репорт. Если кто еще столкнется с этим багом в этой библиотеке, а баг все еще не закроют, то есть такой обходной путь:

  1. Вместо IRremote.h нужно везде инклудить IRremoteInt.h. В этом файле описаны все описания классов.
  2. Ровно в одном cpp файле проекта пишем #include <IRremote.h>. Тогда реализация подтягивается только один раз и проект компилируется.

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

IRremote — ссылка на Arduino

Связь

Отправляйте и получайте инфракрасные сигналы с несколькими протоколами
В настоящее время включены протоколы: Denon/Sharp, JVC, LG/LG2, NEC/Onkyo/Apple, Panasonic/Kaseikyo, RC5, RC6, Samsung, Sony, (Pronto), BoseWave, Lego, Whynter, MagiQuest. Новое: добавлен протокол NEC2 . Улучшенный протокол Magiquest. Добавлена ​​функция sendPulseDistanceWidth(). Примечания к выпуску

Автор: shirriff, z3t0, ArminJo

Сопровождающий: Армин Йоахимсмайер

Прочитать документацию

Перейти в репозиторий

Совместимость

Эта библиотека совместима с avr, megaavr, samd, esp8266, esp32, stm32, STM32F1, mbed, mbed_nano, 0rp2040 архитектуры, так что вы должны быть в состоянии использовать его на следующие платы Arduino:

  • Arduino Micro
  • Ардуино Леонардо
  • Ардуино Мега
  • Ардуино МКР ФОКС 1200
  • Ардуино МКР GSM 1400
  • Ардуино МКР НБ 1500
  • Ардуино МКР ВИДОР 4000
  • Arduino MKR WAN 1300 (подключение LoRa)
  • Ардуино МКР WAN 1310
  • Ардуино МКР Wi-Fi 1010
  • Arduino MKR ZERO (шина I2S и SD для звука, музыки и цифровых аудиоданных)
  • Arduino MKR1000 WI-FI
  • Ардуино Нано
  • Ардуино Нано 33 BLE
  • Ардуино Нано 33 Интернет вещей
  • Ардуино Нано Каждый
  • Ардуино Уно
  • Arduino Uno Wi-Fi REV2
  • Ардуино Юн
  • Ардуино ноль
Примечание о совместимости

Примечание: хотя предполагается, что библиотека правильно компилируется на этих архитектурах, для этого могут потребоваться определенные аппаратные функции, которые могут быть доступны только на некоторых платах.

Выпуски

Чтобы использовать эту библиотеку, откройте Диспетчер библиотек в в Arduino IDE и установите его оттуда.

  • 3.9.0 (последний)
  • 3.8.0
  • 3.7.1
  • 3.7.0
  • 3.6.1
  • 3.6.0
  • 3.5.2
  • 3.5.1
  • 3.5.0
  • 3.4.0
  • 3.3.0
  • 3. 2.0
  • 3.1.0
  • 3.0.3
  • 3.0.2
  • 3.0.1
  • 3.0.0
  • 2.8.1
  • 2.8.0
  • 2.7.0
  • 2.6.1
  • 2.6.0
  • 2.5.0
  • 2.2.3
  • 2.0.1
  • 1. 0.0

IRremote — библиотеки Arduino

Отправка и получение инфракрасных сигналов по нескольким протоколам

Автор
shirriff, z3t0, ArminJo
Сопровождающий
Армин Йоахимсмейер
Веб-сайт
https://github.com/Arduino-IRremote/Arduino-IRremote
Гитхаб
https://github.com/z3t0/Arduino-IRremote
Категория
Связь
Лицензия
НЕТ УТВЕРЖДЕНИЯ
Тип библиотеки
Добавлено
Архитектуры
avr, megaavr, samd, esp8266, esp32, stm32, STM32F1, mbed, mbed_nano, rp2040

В настоящее время включены протоколы: Denon/Sharp, JVC, LG/LG2, NEC/Onkyo/Apple, Panasonic/Kaseikyo, RC5, RC6, Samsung, Sony, (Pronto), BoseWave, Lego, Whynter, MagiQuest.

Новое: добавлен протокол NEC2. Улучшенный протокол Magiquest. Добавлена ​​функция sendPulseDistanceWidth().
Примечания к выпуску

Имя файла Дата выпуска Размер файла
IRremote-3.9.0.zip 2022-08-31 855,39 КиБ
IRremote-3.8.0.zip 2022-08-06 851,84 КиБ
IRremote-3.7.1.zip 2022-06-28 820,52 КиБ
IRremote-3.7.0.zip 2022-06-03 820,71 КиБ
IRremote-3.6.1.zip 20.02.2022 815,57 КиБ
IRremote-3.6.0.zip 2022-02-18 756,50 КиБ
IRremote-3. 5.2.zip 2021-12-23 741,46 КиБ
IRremote-3.5.1.zip 2021-12-15 740,92 КиБ
IRremote-3.5.0.zip 2021-11-24 731,47 КиБ
IRremote-3.4.0.zip 2021-10-08 714,63 КиБ
IRremote-3.3.0.zip 2021-04-30 285,92 КиБ
IRremote-3.2.0.zip 2021-04-22 276,17 КиБ
IRremote-3.1.0.zip 2021-03-28 263,93 КиБ
IRremote-3.0.3.zip 2021-03-03 219,93 КиБ
IRremote-3.0.2.zip 2021-03-01 219,78 КиБ
IRremote-3.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *