Подключил ИК-фотодиод (940 нм) к ESP32 (катодом к пину, который настроен как INPUT с подтяжкой к питанию, анод на землю). Направляю пульт, получаю сигнал. В цикле записываю в буфер тайминги в микросекундах между переходами уровней. Потом пытаюсь воспроизвести этот же сигнал из буфера на ИК-светодиоде (940 нм), направляя его в телевизор. Но телевизор не реагирует. Узнал, что пульт выдаёт сигнал не постоянно, а ШИМом с некоторой частотой в десятки килогерц. Попробовал передавать высокий/низкий уровень не так: digitalWrite(LED_IR, HIGH); digitalWrite(LED_IR, LOW); а так: ledcWrite(0, FREQ / 2); ledcWrite (0, 0); предварительно настроив канал: ledcSetup(0, FREQ, 16); ledcAttachPin(LED_IR, 0); pinMode(LED_IR, OUTPUT); Не помогло. Телевизор не реагирует. Пробовал менять #define FREQ 36000 на разные константы, тоже не помогло. Если направить пульт в камеру телефона, то вспышка ярче, чем когда я смотрю камерой на свой ИК-светодиод в момент передачи. Где у меня может быть ошибка? П.С. я просто экспериментирую, для себя.

Комментарии: 12

  1. Sergy

    не с ШИМ-ом, а с несущей. там около 36 или 38 кГц должно быть возьмите ИК приёмник от ТВ и т.п., там сразу фильтр встроен. вот есть готовая библиотека даже с разными протоколами https://github.com/Arduino-IRremote/Arduino-IRremote лучше её, т.к. в протоколах часто есть всякие сигналы повтора (это когда кнопку зажали, оно не один и тот же код шлёт)

    • Andre

      С фотодиодом вообще каши не сваришь?

      • Sergy

        Возможно можно управиться, или самому сделать фильтр-детектор. Например, из RC-цепочки. И, по идее сигнал фотодиода лучше усилить, или транзистором, или компаратором, или схемой на операционном усилителе. готовый ИК приёмник (tsop38238 и аналогичные) по идее должен не дорого стоить. либо выпаять из чего-то старого ненужного с пультом Подробно обсудить лучше в анархии.

      • Andrej

        его будет забивать светом , и дальность будет минимальной

        • Andre

          Осциллографа настоящего нет. Подключал к АЦП STM32F411, там видно, что сигнал от пульта есть. Но при помощи digitalRead на ESP32 сигнал регистрируется даже лучше, получаются прямоугольные импульсы. Усилителей не имею. Если буду ради этого дела что-то докупать, то сразу фотодатчики, которые работают с библиотеками вроде IRemote. днём в комнате он постоянно регистрирует ложные срабатывания, много раз в секунду. От солнца. Вечером уже без ложных срабатываний.

  2. Nikolay

    Причин может быть много. По-идее фотодиодом ты должен "захватывать" сигнал вместе с несущей, но! 1. Контроллер может не успевать захватить всё. 2. Из-за кривого захвата результирующий сигнал (несущая) может отличаться на 5% и вместо 36кГц контроллер выдает 38кГц. 3. Из-за неправильного согласования фотодиода и входа контроллера (завал фронтов, сильная засветка, т.д.) сигнал может быть сильно искажен. В принципе существуют обучаемые пульты, в которых сигнал считывается самим ИК светодиодом (да-да, он может работать и в обратную сторону), но чтобы разобраться как это правильно реализовать - нужно понимать принцип работы пультов и иметь какие-нибудь измерительные приборы чтобы посмотреть что происходит в схеме.

  3. Dmitriy

    С фотодиодов каши не сварить. Нужен усилитель для фотодиодов. Чтобы не морочить яйца нужно взять ИК приемник из телевизора/магнитолы/радио/Ду ленты светодиодной и подсоединить. Смотреть что по питанию, подходит или нет. Там и усилитель и фильтр и тп...

  4. Artur

    Посмотреть сигнал осциллографом вообще нет возможности? Фотодиоды обычно требуют правильного усилителя, к цифровому входу можно попробовать подключить фототранзистор.

  5. Danil

    ИК светодиод в пульте накачивается импульсным током в сотни мА, с обычного пина контроллера телек если и поймает что то, то только в упор

Не нашли ответ?

Вам также может быть интересно

Я тут подумал о том, что связка китай катритжи +китай блок возможно могут быть даже лучше, чем ориг катритж+китай блок. Ориг... Читать далее