В последнее время мы уже достаточно привыкли к использованию радиочастотного управления в различных домашних устройствах на базе Arduino / esp32. Тем не менее, иногда использование такой технологии управления может быть неудобным, хотя бы потому, что радиосреда может быть сложной — например, если вы находитесь в густонаселенном районе (на заднем дворе высотного здания). Однако быть полностью неуправляемым часто "либо трудно, либо очень грустно". И в этой статье мы расскажем о том, как можно реализовать альтернативный способ управления бытовой техникой.
Да, радиоуправление довольно удобно и позволяет передавать большие объемы данных, а с появлением семейства карт ESP передача данных на высоких скоростях и на большие расстояния стала доступной и относительно простой. Однако в настоящее время незаслуженно стал упускаться из виду еще один способ управления, который все реже встречается в бытовом применении, — инфракрасный.
Давайте попробуем посмотреть, как можно реализовать нечто подобное! Для этого нам нужно загрузить библиотеку IRremote:
После загрузки перейдите к примерам, приложенным к этой библиотеке, и откройте пример под названием IRrecvDemo:
На мой взгляд, этот код очень избыточен и его можно было бы значительно сократить, но это можно сделать.
Этот код позволяет делать следующее: считывать коды, передаваемые ИК-пультом дистанционного управления.
Сначала подключите ИК-приемник к плате микроконтроллера, загрузите прошивку и только после этого можно нажимать кнопки на пульте дистанционного управления. Для этого можно использовать любой пульт дистанционного управления, который есть у вас под рукой.
Подключите ИК-приемник к контакту, указанному в вашей схеме:
Приведенный выше пример предназначен для подключения к esp32. Но если есть какие-то излишества, потому что контакт 15 дает сигнал ШИМ при запуске esp32, согласно этой таблице, просто переключите сигнальный провод на другой контакт, согласно приведенной выше таблице.
Теперь, если вы направите пульт на приемник и нажмете любую кнопку, вы увидите на мониторе порта шестнадцатеричное число, которое кодирует сигнал для конкретной кнопки, которую вы нажали.
Стоит отметить, что некоторые пульты постоянно меняют алгоритмы передаваемых кодов кнопок. Я с этим не сталкивался, но слышал об этом. Так что если вам не повезло и ваш пульт такой, лучше купить другой. Или вы можете устроить мозговой штурм и найти свой алгоритм изменения кода и внедрить его в свой код (но лично мне было бы лень это делать, и я бы просто купил другой пульт 🙂 ).
Этот код вы можете в дальнейшем использовать в своих проектах. То есть, следуя логике "если у вас есть этот код — сделайте его".
На примере ниже я показал, как будет выглядеть, если мы используем код, полученный от приемника, для мигания встроенного светодиода в esp32 (конечно, вы понимаете, что это всего лишь пример, и в действительности он может управлять чем угодно — включать/выключать двигатели, открывать/закрывать рольставни и т.д.).
Но это еще не все! Инфракрасное управление имеет две опции, которые я считаю наиболее интересными:
- оптический канал не глушится в сложных радиоусловиях (или даже специально затухает);
- возможность собрать действительно миниатюрное и недорогое устройство, которое можно использовать для дистанционного управления, поскольку оно не требует сложных схем, радиосхем;
Ик-управление своими руками.
Думаю, вы уже поняли, к чему я клоню — уйти от популярных плат типа Arduino или esp32 и использовать микроконтроллер напрямую! Конечно, это не совсем корректно, и для стабильности и надежности все еще необходим некоторый интерфейс, но теоретически такое устройство может быть очень крошечным: если мы используем, например, чип Attiny13 и инфракрасный приемник, то все наше устройство может поместиться на кончике пальца! Отличный результат для застройщика — и по размеру, и по цене:
Когда-то концепция использования хранимых процедур, создания библиотек и вообще возможности повторного использования готового программного обеспечения произвела революцию в программировании. Поэтому давайте воспользуемся кодом, любезно предоставленным автором.
Как уже было сказано, код протестирован и оптимизирован для загрузки в очень ограниченную память Attina13.
Более сжатую версию можно найти по этой ссылке.
Код, показанный выше, делает именно это:
В приведенном выше примере используется ИК-приемник из серии TSOP, а именно TSOP4838.
"TSOP4838" — это модуль ИК-приемника для систем дистанционного управления. Он содержит ИК-фильтр, PIN-диод и предусилитель. Демодулированный выходной сигнал от ИК-приемника может быть подан непосредственно на микроконтроллер/микропроцессор".
- Фотодетектор и предусилитель в одном корпусе.
- Внутренний фильтр для частот PCM.
- Улучшенное экранирование для защиты от электромагнитных помех.
- Диапазон напряжения питания от 2,5 В до 5,5 В.
- Дальность передачи 45 м.
- Повышенная устойчивость к внешнему свету.
- Несущая частота 38 кГц.
- Направленность 45°.
- Ток питания 950 мА.
- Диапазон рабочих температур от -25°C до 85°C.
Источник изображения: radioprog.ru
Детали программирования Attiny13 довольно хорошо объяснены здесь, так что вы можете читать дальше.
ИК приемник arduino — управление устройствами с ИК пульта.
Конечно, программирование Attiny13 довольно простое, оно осуществляется на языке C, который может оказаться не совсем "удобным", особенно если вы привыкли работать только в Arduino IDE. С другой стороны, это дает больше возможностей для творчества.
Если все пойдет хорошо, в итоге может получиться что-то вроде корабля с инфракрасным управлением:
Ну, вот и все! Наконец, я хотел бы сказать, что, несмотря на распространение более современных и быстрых способов связи и управления, инфракрасное излучение далеко не устарело и может использоваться во многих областях.
Чтобы получить некоторую информацию, вы можете прочитать эту хорошую обзорную статью о микроконтроллерах AVR.
Еще одну хорошую статью о 4-канальном управлении можно найти здесь.
Удачи вам в строительстве!
P.S. В небольшом отступлении от описываемой темы хочу сказать, что автор рассматривает возможность использования инфракрасного метода связи для создания интересного самодельного "USB-свистка", к которому можно подключить инфракрасный пульт дистанционного управления и который будет управлять переключением видеофайлов в проигрывателе ПК.
UFO прилетел и оставил промо-код для читателей нашего блога здесь:
— 15% скидка на все тарифы VDS (кроме тарифов Warm Up) — HABRFIRSTVDS .