ИК-приёмник для Arduino: TSOP, VS1838B и как читать команды пульта
Инфракрасный приёмник позволяет управлять проектом с обычного пульта от телевизора. Внутри чёрной капельки фотодиод, усилитель и демодулятор: приёмник ловит инфракрасный свет, отсеивает всё лишнее и отдаёт на выход готовую последовательность нулей и единиц.
Ключевое слово здесь — демодулятор. Пульт не просто светит, он мигает с частотой около тридцати восьми килогерц, а приёмник настроен именно на эту частоту. Так он отличает команду от солнца, ламп и тепла батареи.
Разборы конкретных моделей
Что выбрать
Чёрная капелька на три ноги, несущая 38 кГц, дальность до восьми метров. Лежит в каждом стартовом наборе, стоит копейки. Чувствителен к помехам от энергосберегающих ламп, но для домашних проектов этого хватает с запасом.
То же назначение, но фирменного производства Vishay. Лучше отсекает помехи и стабильнее держит дальность. Разница заметна там, где рядом мигают светодиодные лампы или работает второй пульт.
Тот же VS1838B, но распаянный на плату с резистором и светодиодом индикации. Удобнее втыкать провода и видно, что команда принята. Функционально ничем не отличается от голого приёмника.
Частота несущей: почему 38 килогерц
Приёмники выпускают под разные несущие: 36, 38, 40, 56 килогерц. Подавляющее большинство бытовых пультов работает на тридцати восьми, поэтому по умолчанию берут именно такой приёмник.
Если приёмник и пульт настроены на разные частоты, связь всё равно будет — но дальность упадёт в несколько раз, и команды начнут теряться. Это частая причина жалоб «работает, только если поднести пульт вплотную».
Протоколы и коды кнопок
Приёмник отдаёт лишь последовательность импульсов, а превращает её в номер кнопки библиотека. Протоколов много: NEC, Sony SIRC, RC5, Samsung. Библиотека IRremote распознаёт большинство автоматически, поэтому знать протокол своего пульта заранее не нужно.
Коды кнопок не универсальны: у каждого пульта свои. Порядок работы всегда один — сначала загрузить скетч, который печатает принятые коды в монитор порта, нажать нужные кнопки и записать их номера, а уже потом подставить эти числа в программу.