Отправка ИК-сигнала
- Войдите на сайт для отправки комментариев
Добрый день!
Вопрос по библиотеке Arduino-IRremote: решил я с помощью этой библиотеки управлять офисным кондиционером. Купил приемник (TSOP31238) пару ИК-диодов (TSAL6100 и L-7113F3C) и начал пробовать. Сигнал с пульта я принял без проблем, для этого загрузил скетч из примеров библиотеки IRrecvDump (и еще пробовал IRrecvDumpV2), направил пульт в приемник и считал код. Результат чтения: код кнопки 0xC3120700 (32 бита) и протокол NEC.
Дальше я взял из примеров библиотеки код для отправки и немного его модернизировал:
#include <IRremote.h> #define BUTTON 7 IRsend irsend; void setup() { } void loop() { if (digitalRead(BUTTON)) { irsend.sendNEC(0xC3120700, 32); delay(40); Serial.println("SEND"); } delay(500); //5 second delay between each signal burst }
То есть по нажатию кнопки я отправляю этот самый код при помощи функции sendNEC, вторым аргументом она принимает разрядность кода (32 бита). Схема простая: на 3 пине Arduino Uno висит ИК-диод, последовательно с резистором на 220 Ом, а на 7 пине - кнопка с подтяжкой на массу резистором 10К. И вроде бы все хорошо, ИК-диод моргает (проверял глядя через камеру телефона), но кондиционер никак не реагирует. Пробовал подносить всю конструкцию ближе - тоже безрезультатно (хрен пойми где спрятан ИК приемник в этом кондиционере, но подносил со всех возможных сторон к нему свое устройство - толку ноль). Посмотрел через камеру телефона в родной пульт - там ИК-диод моргает поярче. Тогда подцепил параллельно первому - второй токоограничивающий резистор на 220 Ом (других под рукой не было) - моргает чуть ярче, но результата нет. Напрямую без резисторов еще ярче светит, но результат тоже нулевой.
Подскажите пожалуйста, что я делаю не так? Может ИК-диод помощнее взять, на 60мВт, например, вместо 30? Насколько критична длина волны, например 940 и 950 нм - есть какая-нибудь разница для приемника в кондиционере?
Извиняюсь, но я немного не понял чем это поможет? Я подключал диод практически напрямую к выходу ардуины (надо конечно токоограничивающий резистор туда воткнуть чтобы порту не поплохело), но по-идее он получал 5 вольт через такой же ключ-транзистор встроенный в микросхему.
kost82, (1)обычные ИК-светодиоды потребляют порядка 100мА, и напрямую к ноге мк их никто не включает. Только через ключевой транзистор.(2) у кондиционеров бывают очень длинные пачки импульсов, поспрашивайте гугля, на тему захвата и эмуляции пультов от кондея очень много написано.
на ИК-диоды часто до 1А в импульсе подается, см. даташит.
лень разбираться, что там за параметр 32, но если это частота модуляции в килогерцах, так у вас приемник на 38, а не 32.
И прямой или инверсный сигнал для ИКМ имеет значение, потому транзистор лучше включать через схему фиксации, чтобы не спалить ИК-диод при ошибках в программе или зависании проца
Управление кондиционерами очень сильно различается. Зачастую они отправляют несколько посылок подряд, в зависимости от передаваемой команды. Например у меня у Электролюкса длина посылки изменяется от 72 до 500 символов. Стандартная программа принимает кажется до 255 символов. Поэтому Вы можете увидеть не все, и соответственно не все передаете. Не помню где, но в интернете нашел вариант программы приинимающий посылки неограниченной длины. Записал в RAW формате и его-же передаю. Недостаток - невозможность изменить команду т.к. алгоритм формирования команд у производителей отличается, а разбираться с ним лень. В настоящий момент работает только включение на фиксированной температуре, скорости вентилятора ну и прочее, и выключение. В принципе для удаленного управления достаточно. Для некоторых моделей есть вполне вменяемое управление, где-то на ГИТхабе встречал.
Да, действительно, я почитал что с кондиционерами много заморочек, что они могут передавать, например, настройку температуры, закодированную. Но меня пока интересует только кнопка вкл/выкл, а она вроде бы всегда передает один и тот же код, без дополнительных параметров.
Да, действительно, я почитал что с кондиционерами много заморочек, что они могут передавать, например, настройку температуры, закодированную. Но меня пока интересует только кнопка вкл/выкл, а она вроде бы всегда передает один и тот же код, без дополнительных параметров.
Ошибаетесь, чаще при включении передаются все настройки запомненные в пульте (температура, положение шторок и т.д. и т.п.), сам кондиционер ничего не помнит. Поищите в инете - ИК управление сплит системами. Начните хотя-бы с этого: https://habr.com/ru/company/iridiummobile/blog/389049/ Не помню есть-ли у меня ссылки. Вечером посмотрю дома.
Вот кое-что откопал:
https://github.com/z3t0/Arduino-IRremote/tree/master/examples/IRrecvDumpV2
https://github.com/ToniA/arduino-heatpumpir
https://github.com/adafruit/Raw-IR-decoder-for-Arduino