Как сделать ик пульт
Перейти к содержимому

Как сделать ик пульт

Делаем ИК-пульт ДУ для фотоаппарата

Как-то недавно мне понадобилось дистанционно управлять затвором зеркалки. Проводной вариант был отброшен, неудобно. Поискав по магазинам, нашел пульт ML-L3. Но отдавать за него тысячу рублей не хотелось, тем более что выполняемая функция на первый взгляд элементарная. Решил сделать сам. А тут, кстати, подоспели выходные и работа закипела…

Теория или как это работает

Вначале была надежда, что в сети можно найти все коды и описание того, как ИК пульт работает. Но в итоге удалось отыскать лишь описание последовательности, которую нужно сгенерировать для срабатывания затвора. Вот рисунок такой посылки для фотоаппаратов Nikon:

Как видно, ничего сложного. Частота заполнения 38,4 кГц.

Для фотоаппаратов Canon последовательность еще проще:

У них частота заполнения – 33 кГц.

Схема, печатная плата и детали

Хотелось не просто повторить пульт, но и снабдить его дополнительным функционалом. В итоге решил добавить таймер для съемки Timelapse видео и возможность управления фотоаппаратами Nikon и Canon. Исходя из имеющихся в запасе деталей, была создана следующая схема:

DD1 – PIC12F629
HL1 – ARL2-5013IRAB-940NM
R1 – 150 Ом
SB1 – Кнопка тактовая FSM4JH
A0 – DIP переключатель DS1040-03RN
C1 – Конденсатор танталовый, 47 мкФ х 10 В, тип B
+ Батарейный отсек BH-624 (1xAAA)

Итоговая стоимость всех деталей – 240 рублей (по ценам на апрель 2015, в не самом дешевом магазине города).

Выбранный микроконтроллер имеет порты ввода-вывода повышенной мощности, что позволяет коммутировать инфракрасный светодиод без дополнительного ключа. Кнопка SB1 генерирует выбранную последовательность. Выключателя питания нет, т.к. микроконтроллер постоянно находится в спящем режиме и потребляет 70 наноампер, «просыпаясь» лишь на время генерации сигнала. Джампер X1 переключает тип фотоаппарата: установлен – Canon, снят – Nikon. Переключатели А0…А2 задают период срабатывания таймера для съемки Timelapse видео:

А2 А1 А0 Период
0 0 0 нет
0 0 1 2 секунды
0 1 0 4 секунды
0 1 1 8 секунд
1 0 0 15 секунд
1 0 1 30 секунд
1 1 0 1 минута
1 1 1 2 минуты

Спроектированная печатная плата, также как и схема, очень проста:

Изготовленная печатная плата стандартным методом ЛУТ и собранная:

__CONFIG _CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT

LED equ 5; ИК-светодиод
CFG equ 4; Nikon (1) / Canon (0)

CBLOCK 0x020
DEL
DEL_MS
IMP
COUNT
ENDC

ORG 0
GOTO START

; Подпрограмма задержки (в микросекундах, 770 мкс max)
;(Перед вызовом поместить величину задержки в W)
DEL_MK MOVWF DEL
M1 DECFSZ DEL, F
GOTO M1
RETLW 0

; Подпрограмма задержки (в миллисекундах, 256 мс max)
;(Перед вызовом поместить величину задержки в W)
DEL_M MOVWF DEL_MS
MOVLW 0xA5
M2 CALL DEL_MK
CALL DEL_MK
DECFSZ DEL_MS, F
GOTO M2
RETLW 0

; Подпрограмма вывода импульса для Nikon (заполнение 38,4 кГц)
;(Перед вызовом поместить длительность импульса в W)
NIK MOVWF IMP
M3 BCF GPIO, LED
MOVLW 0x02
CALL DEL_MK
NOP
BSF GPIO, LED
MOVLW 0x01
CALL DEL_MK
NOP
DECFSZ IMP, F
GOTO M3
RETLW 0

; Подпрограмма вывода сигнала для Nikon
NIKON MOVLW 0x4D
CALL NIK; импульс 2 мс
MOVLW 0x12
CALL DEL_M; пауза 27,8 мс
MOVLW 0x47
CALL DEL_MK
MOVLW 0x0F
CALL NIK; импульс 0,4 мс
MOVLW 0x01
CALL DEL_M; пауза 1,6 мс
MOVLW 0x69
CALL DEL_MK
MOVLW 0x0F
CALL NIK; импульс 0,4 мс
MOVLW 0x02
CALL DEL_M; пауза 3,6 мс
MOVLW 0xFF
CALL DEL_MK
MOVLW 0x0F
CALL NIK; импульс 0,4 мс
RETLW 0

; Подпрограмма вывода импульса для Canon (заполнение 33 кГц)
;(Перед вызовом поместить длительность импульса в W)
CAN MOVWF IMP
M4 BCF GPIO, LED
MOVLW 0x02
CALL DEL_MK
NOP
NOP
NOP
BSF GPIO, LED
MOVLW 0x01
CALL DEL_MK
NOP
NOP
NOP
DECFSZ IMP, F
GOTO M3
RETLW 0

; Подпрограмма вывода сигнала для Canon
CANON MOVLW 0x13
CALL CAN; импульс 0,5 мс
MOVLW 0x05
CALL DEL_M; пауза 7,3 мс
MOVLW 0x13
CALL CAN; импульс 0,5 мс
RETLW 0

; Подпрограмма задержки на 1 секунду 0xA1
DEL_1S MOVLW 0xFF
CALL DEL_M
MOVLW 0xFF
CALL DEL_M
MOVLW 0x88
CALL DEL_M
RETLW 0

START BCF STATUS, RP0; Выбран банк 0
MOVLW B’00000000′
MOVWF INTCON
MOVLW B’00000111′
MOVWF CMCON; Отключаем встроенные компараторы

BSF STATUS, RP0; Выбран банк 1
MOVLW B’00000111′
MOVWF OPTION_REG
CALL 3FFh; Загрузить константу калибровки генератора
MOVWF OSCCAL
MOVLW B’00011111′; Порты (направление)
MOVWF TRISIO
MOVLW B’00010111′; Подтягивающие резисторы
MOVWF WPU

BCF STATUS, RP0; Выбран банк 0

MOVLW B’00100000′; Порты
MOVWF GPIO

MOVLW 0x12
CALL DEL_M

LP1 BTFSS GPIO, CFG
CALL CANON
BTFSS GPIO, CFG
GOTO LP2
CALL NIKON

LP2 MOVF GPIO, W; Считать состояние перемычек
ANDLW B’00000111′
ADDLW B’11111000′
MOVWF COUNT
COMF COUNT, F

BTFSC STATUS, Z; Выключение, если нет
SLEEP

MOVF COUNT, W
XORLW 0x01; Включен 1 тайминг
BTFSC STATUS, Z
GOTO SET2

MOVF COUNT, W
XORLW 0x02; Включен 2 тайминг
BTFSC STATUS, Z
GOTO SET4

MOVF COUNT, W
XORLW 0x03; Включен 3 тайминг
BTFSC STATUS, Z
GOTO SET8

MOVF COUNT, W
XORLW 0x04; Включен 4 тайминг
BTFSC STATUS, Z
GOTO SET15

MOVF COUNT, W
XORLW 0x05; Включен 5 тайминг
BTFSC STATUS, Z
GOTO SET30

MOVF COUNT, W
XORLW 0x06; Включен 6 тайминг
BTFSC STATUS, Z
GOTO SET1M

GOTO SET2M; Включен 7 тайминг

SET2 MOVLW 0x02
GOTO TIME

SET4 MOVLW 0x04
GOTO TIME

SET8 MOVLW 0x08
GOTO TIME

SET15 MOVLW 0x0F
GOTO TIME

SET30 MOVLW 0x1E
GOTO TIME

SET1M MOVLW 0x3C
GOTO TIME

SET2M MOVLW 0x78
GOTO TIME

TIME MOVWF COUNT
LP3 CALL DEL_1S

DECFSZ COUNT, F
GOTO LP3

Проектирование корпуса

Современные технологии 3D печати решили давнюю проблему самоделок – на смену корявым и нелицеприятным корпусам пришли качественно выглядящие конструкции, ничем не уступающие промышленным образцам.

Корпус этого пульта разработан в SolidWorks, с расчетом последующей печати на 3D принтере. Выполнен он в лучших традициях китайского проектирования – ни одного винта, все на защелках.

Получившиеся габариты в большей степени обусловлены выбором источника питания. После непродолжительных раздумий было решено не использовать традиционный в подобных случаях литиевый элемент. Ибо режим Timelapse с постоянной генерацией посылки способен разрядить слабенький элемент довольно быстро. Поэтому используются 2 батарейки типа ААА.

Распечатанный на 3D принтере корпус:

Схему, печатную плату, исходный код и файлы для печати корпуса можно скачать отсюда.

Сборка

Перед началом сборки необходимо аккуратно отрезать ножом от держателей батареек плоские части с контактами:

Получившиеся контакты приклеить к корпусу, соблюдая полярность:

Затем поместить кнопку и вставить плату до упора, проследив, чтобы она зафиксировалась защелками. Осталось подпаять провода от батареек к плате и устройство готово:

Вот так выглядит собранный ИК пульт ДУ:

Настройка фотоаппарата

Перед использованием пульта нужно выполнить несложную настройку фотоаппарата для управления им через ИК пульт. Для каждой модели он разный, привожу алгоритм для своего Nikon D7000: 1) повернуть левое кольцо на иконку пульта, как на фото слева 2) настроить в меню «режим пульта дистанционного управления» необходимое срабатывание.

Дистанционное управление для старого телевизора

Охранная сигнализация на авто ИК датчики

На закате СССР появились и были очень популярны отечественные полупроводниковые телевизоры серии «УСЦТ». Некоторые из них и сейчас в строю. Особенно долговечными были телевизоры с размером экрана 51 см по диагонали (кинескоп был весьма надежным). Конечно, они уже совсем не отвечают современным требованиям, но как «дачный вариант» еще вполне пригодны.

Как сделать простой ИК пульт для телевизора

ik-pult-shema

Как-то, от нечего делать, появилось желание усовершенствовать старенькую, уже давно «дачную» «Радугу- 51ТЦ315», дополнив её системой дистанционного управления. Сейчас уже приобрести «родной» модуль невозможно, поэтому было решено сделать упрощенную однокомандную систему, позволяющую хотя бы переключать программы «по кольцу». Микроконроллеры и спец, микросхемы сразу были отвергнуты по причине нерентабельности, и система была сделана из того, что имелось в наличии.

А именно, интегральный таймер 555, ИК светодиод LD271, интегральный фотоприемник TSOP4838, счетчик К561ИЕ9 и плюс еще по- мелочи. Схема ИК пульта управления показана на сайте www.radiochipi.ru. Он представляет собой генератор импульсов частотой 38 кГц, на выходе которого включен через ключ инфракрасный светодиод. Генератор построен на основе микросхемы «555», так называемого «интегрального таймера». Частота генерации зависит от цепи C1-R1, при налаживании подбором резистора R1 нужно установить на выходе микросхемы (вывод 3) частоту 38 кГц.

Прямоугольные импульсы частотой 38 кГц поступают на базу транзистора VT1 через резистор R2. Диоды VD1 и VD2 вместе с резистором R3 образуют схему контроля тока через ИК-светодиод HL1. При повышенном токе напряжение на R3 увеличивается, соответственно увеличивается и напряжение на эмиттере VT1. И когда напряжение на эмиттере приближается по величине к напряжению падения на диодах VD1 и VD2 происходит снижение напряжения на базе VT1 относительно эмиттера, и прикрывание транзистора.

Схема приемного блока на ИК-излучении

Импульсы ИК-света, следующие с частотой 38 кГц излучаются инфракрасным светодиодом HL1. Управление одной кнопкой S1, которая подает на схему пульта питание. Пока кнопка нажата пультом излучаются инфракрасные импульсы. Схема приемного блока показана на рисунке 2. Он устанавливается внутрь телевизора, на него подается питание + 12V от источника питания телевизора, а катоды диодов VD2-VD9 соединяются с контактами кнопок модуля выбора программ УСУ-1-10. ИК-импульсы, излучаемые пультом, принимаются интегральным фотоприемником HF1 типа TSOP4838.

Данный фотоприемник широко применяется в системах дистанционного управления различной бытовой электронной аппаратурой. При приеме сигнала на его выводе 1 присутствует логический ноль, а при отсутствии принимаемого сигнала единица. Таким образом, когда кнопка пульта нажата на его выходе ноль, а когда не нажата – единица. TSOP4838 должен питаться напряжением 4.5-5.5V. и не более. Но, для управления модулем выбора программ телевизора нужно на кнопки транзисторного 8-фазного триггера подавать напряжение 12V. Поэтому, на микросхему D1 подается напряжение 12V, а на фотоприемник HF1 напряжение 4.7-5V через параметрический стабилизатор на стабилитроне VD10 и резисторе R4.

Согласующим уровни логических единиц каскадом служит транзистор VT1. При этом он инвертирует логические уровни. Напряжение с коллектора VT1 через цепь R3-C2 поступает на счетный вход счетчика D1, рассчитанный на прием положительных импульсов. Цепь R3-C2 служит для подавления ошибок от дребезга контактов кнопки S1 пульта управления. Счетчик D1 К561ИЕ9 представляет собой трехразрядный двоичный счетчик, со схемой десятичного дешифратора на выходе.

Он может находиться в одном из восьми состояний от 0 до 7, при этом логическая единица имеется только на одном, соответствующем его состоянию, выходе. На остальных выходах – нули.При каждом нажатии – отпускании кнопки пульта счетчик переходит на одно состояние вверх, при этом переключается логическая единица по его выходам. Если отсчет начался с нуля, то через восемь нажатий кнопки, на девятое, счетчик вернется в нулевое положение. И далее, процесс переключения логической единицы по его выходам повторится. ИК-светодиод LD271 можно заменить любым ИК-светодиодом. применимым для пультов дистанционного управления бытовой аппаратурой. Фотоприемник TSOP4838 можно заменить любым полным или функциональным аналогом.

Микросхему К561ИЕ9 можно заменить на К176ИЕ9 или зарубежным аналогом. Можно использовать микросхему К561ИЕ8 (К176ИЕ8), при этом будет 10 выходов управления. Чтобы ограничить их до 8-и нужно выход за номером «8» соединить со входом «R» (при этом вход «R» не соединять с общим минусом, как это на схеме). Диоды 1N4148 можно заменить любыми аналогами, например. КД521, КД522. Пульт питается от «Кроны». Помещен в футляр от зубной щетки. Монтаж – объемный на выводах микросхемы А1.

Схема приемника тоже собрана объемным монтажом и приклеена клеем «БФ-4» к деревянному корпусу телевизора изнутри. Для глазка фотоприемника я использовал отверстие для разъема для подключения головных телефонов (отверстие в телевизоре было пустое, закрытое заглушкой, самого разъема не было). Подбором R1 (рис.1) нужно пульт настроить на частоту фотоприемника. Это видно по наибольшей дальности приема. Если схема заинтересовала, но старой «Радуги» нет, её можно использовать и для переключения чего-либо более современного. К выходам микросхемы D1 можно через резисторы подключить транзисторные ключи, с электромагнитными реле на коллекторах или светодиодами мощных оптопар.

Как сделать ик пульт

Универсальный обучаемый пульт

Автор: GoldenAndy
Опубликовано 01.09.2021
Создано при помощи КотоРед.

Когда пультов больше чем рук или как не стать Шивой Многоруким

(картинка из интернета)

Что умеет пульт.

Обучаемый пульт — это пульт, который может запомнить ИК-посылку от другого пульта и потом пытаться ее воспроизвести. Но поскольку форматов команд пультов в мире многое множество — задача становится нетривиальной. Особенно для микроконтроллера ATMEGA8.

Но я надеюсь, что я эту проблему решил хотя бы частично.

Краткие зарактеристики:
Контроллер ATMEGA8A
30 кнопок
Питание 3-5 вольт
Индикация напряжения батарейки, контроль посылки (2 светодиода — красный и зеленый)
Потребление в ждущем режиме

2 мкА (при 3 вольтах)

Пульт распознает несколько распространенных форматов и пытается их эмулировать согласно спецификациям. Неизвестные форматы так же анализируются и пытаются воспроизводиться.

Распознаваемые форматы с эмуляцией согласно спецификаций:

  • SONY (SIRC-12, -15, -20 bit), 40 кГц
  • NEC, 38 кГц
  • SAMSUNG, 38 кГц
  • SHARP, 38 кГц
  • JVC, 38 кГц
  • RC5 (Philips), 36 кГц

Типовые форматы, эмулируются с несущей 38 кГц :

  • Формат с постоянными паузами, кодирование осуществляется длиной импульса, возможен отдельный стартовый импульс (как у SONY). До 64 бит данных.
  • Формат с постоянными импульсами, кодирование осуществляется длиной паузы, возможен отдельный стартовый импульс и стартовая пауза (как у NEC). До 64 бит данных.
  • Формат с постоянными импульсами, кодирование различными длинами пауз (как SHARP). До 64 бит данных.

Нераспознаваемые форматы эмулируются с несущей 38 кГц.

  • Такие форматы посылок пульт так же пытается записать, анализируя длины импульсов и пауз, что бы их потом воспроизвести. В зависимости от сложности формата пульт может сохранить до 16 или до 32 импульсов. Про такое сохранение будет чуть ниже.

Изначально пульт был сделан в 12-кнопочном варианте, в корпус автомобильного пультика на руль. Но потом схема «повзрослела» до 30 кнопок.

К повторению предлагается вариант в 21-кнопочный китайский пульт «IR remote control HX1838 for Arduino» либо макси-версия — 30-кнопочный пульт с тактовыми кнопками — плата размерами 115*40 мм.

Так сложилось, что автомобиль мне достался в «бомж»-комплектации.
Т.е. была минимальная аудиоподготовка, но никакой магнитолы не было.
В качестве головного устройства был выбран Prology DVS-1140.

Основные причины выбора — картинка с камеры заднего вида и поддержка флешки и SD.

В комплекте к этому «комбайну» шел пультик. Такая себе вафелька об 40 кнопках.

Пульт ни разу не эргономичный. На ощупь пользоваться практически невозможно. Что автоматически приводит к невозможности использования пульта в движении. И был куплен на Али универсальный обучаемый пульт с креплением на руль. Вот такой. Цена вопроса — порядка $4.

10 кнопок (кнопки управления громкостью на обратной стороне) + кнопка обучения.

Прекрасно обучился и был очень удобен. Где то год. Потом стал глючить, а после и вовсе перестал работать. Свежая батарейка не помогала. Пульт вроде обучался, при посылке команды что то отправлял (было видно на камере телефона), но никакое устройство не реагировало на эту посылку.
И пульт на долгое время был закинут в долгий ящик. Но мысль о восстановлении пульта осталась.

И вот дошли руки вдохнуть в пульт новую жизнь.

На первом этапе разработки было изготовление новой платы в автомобильный пультик и написание базового функционала для работы пульта в авто. Причем в сжатые сроки, что бы успеть получить работающий пульт до поездки в отпуск. Пульт получился, поездка удалась, было накатано порядка 3800 км. Пульт успешно отъездил всю поездку и показал себя с лучшей стороны.

Второй этап разработки — научить пульт обучаться различным командам различных форматов пультов и использовать полученные знания.

Где то я уже видел процесс перевода процессора в режим обучения.

Почувствуй себя Сарой Коннор 🙂 Тудум-тум-тудум!

«И восстанут пульты из пепла ядерного огня,

и начнется война за управление телевизорами!»

Универсальный обучаемый пульт.

Протоколы ИК-управления бывают разные. Но большинство протоколов сводится к тому, что пульт отправляет данные, шифруя их длительностями импульсов ИК-излучения и/или пауз между импульсами. Так же информационной посылке может предшествовать стартовый импульс индивидуальной длительности. Кроме того, в подавляющем большинстве современных протоколов импульс подразумевает не постоянное свечение инфракрасного светодиода, а модуляцию несущей частоты этими импульсом. И для различных протоколов эта частота тоже отличается.
Например, для RC5 это 36 кГц, для NEC, Samsung — 38 кГц, Sony использует 40 кГц. Есть и другие, более экзотические форматы с несущей аж до 56 кГц.
Модуляция позволяет приемнику более четко отличать посылку от пульта от внешней засветки и помех. Кроме того, это позволяет при сохранении средней мощности увеличить ток через излучающий диод, что способствует увеличению дальности.

В данной конструкции в качестве базовой несущей частоты для неизвестных протоколов используется 38 кГц. Однако для известных форматов частота несущей устанавливается соответственно формату.
Для обучения пульта используется приемник на частоту 38 кГц (типа TSOP1838, HX1838, VS1838, HX1838, VS1838). Он удовлетворительно принимает как 36, так и 40 кГц.

Форматов достаточно много разных. Вот, например, RC5.
Так называемое би-фазное, манчестерское кодирование. Легко распознается, легко декодируется.

Или формат с фиксированной паузой между импульсами (Sony).
Тут четко отслеживается стартовый импульс и далее импульсы различной длины с фиксированными паузами.

Формат с фиксированным импульсом и разными паузами (NEC, туда же JVC, Samsung и т.д.).
Тут тоже есть стартовый импульс, стартовая пауза, дальше идут импульсы, а информация кодируется паузами между импульсами.

Формат с кодированием информации длинами пауз (Sharp). Видно, что в посылке есть три длительности — пауза 1, пауза 2 и импульс.

Еще вариант кодирования. Некий безымянный пульт от вентилятора. Информация кодируется длиной импульса при фиксированном периоде следования импульсов.

На вышеприведенных графиках (кстати реальных, снятых логическим анализатором) видно, что различные длительности импульсов, пауз, стартового импульса и стартовой паузы достаточно сильно отличаются друг от друга по длительности. Как минимум в 2 раза. Зачастую эти все длительности еще и кратны самой короткой.
Это позволяет, записав сигнал в виде длительностей импульсов и длительностей пауз в буферный массив, проанализировать и сгруппировать эти длительности. Допуска ±25% в большинстве случаев достаточно, что бы отличить одну длительность от другой. Ну, во всяком случае, у меня сбоев при корректном приеме посылки не было.
Полученные длительности складываются в массив. Длительностям в буферном массиве проставляются индексы, после чего можно уже работать с массивом индексов. Это легче и, в случае 8-битной ATMEGA8 — еще и быстрее.

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

Из вышеприведенных графиков видно, что количество упорядоченных длительностей — от двух до четырех. Четыре — это хорошо. Ибо кодируется двумя битами.
Неизвестный протокол с двумя длительностями кодируется вообще одним битом на длительность посылки/паузы, с тремя или четырьмя — двумя битами.

В пульте запланировано 30 кнопок. EEPROM в ATMEGA8 — 512 байт. Из них занято служебной информацией 10 байт. Если оставшуюся информацию поделить на 30 кнопок — получится 16 байт данных на кнопку.

Эти 16 байт делятся так:

Тип сохраненной посылки — 1 байт.
Число информационных импульсов — 1 байт
Массив измеренных длительностей — 4 байта
Период тактового генератора — 1 байт
Длительность паузы между посылками — 1 байт.

Остается 8 байт для записи данных. Или 64 бита.

Для распознанных форматов это позволяет сохранить 64 бита данных.

Простая математика показывает, что для нераспознанных форматов, когда сохраняются длительности и посылок, и пауз, при 2-битном кодировании мы можем сохранить максимум 32 индекса длительностей. В реалиях это будет максимум 31 индекс — 16 импульсов и 15 пауз. При 1-битном кодировании (когда длительностей всего две) — можем сохранить до 63 индексов длительностей. (32 импульса, 31 пауза).

В принципе, я считаю, что для большинства техники типа телевизоров, медиаплееров, кабельных/спутниковых декодеров и т.д. — этого достаточно.

Клик на схему откроет ее покрупнее. А кому мало — вот схема в PDF.

Кнопки подключены к контроллеру матрицей 2 х 15. Примененный контроллер из самого энергосберегающего режима может выйти только подачей низкого уровня на вход INT0 или INT1.
INT1 занят фотоприемником. Остается INT0. Соответственно, первый провод — столбец матрицы кнопок подключен ко входу INT0, а второй заведен на него же через диод. К сожалению, такое подключение не позволит распознать одновременное нажатие кнопок в одной строке (SW1 и SW16, например). Приоритетными будут первые 15 кнопок. Но для дистанционки это не критично.

Кнопка SW1 — особая. Длительное её нажатие (более 2.5 сек) вводит пульт в режим обучения.
Соответственно, для этой кнопки програмно отключен автоповтор команд при удержании кнопки. Остальные 29 кнопок — абсолютно равнозначны с точки зрения программы. И при самостоятельном разведении платы их можно разместить как угодно, в каком угодно порядке и конфигурации. К размещению кнопки SW1 тоже требований нет, но для удобства пользования спец-функцией эту кнопку целесообразно разместить где то с краю клавиатурного поля. Например, я в двух версиях платы эту кнопку ставил в левую верхнюю позицию.
При обучении пульта на эту кнопку можно повесить команду, не требующую длительного нажатия и удержания кнопки. Например, включение/выключение, выбор входа, воспроизведение/пауза и т.д.

Если планируется урезанная версия пульта на меньшее число кнопок — можно убирать любые кнопки, кроме SW1 (иначе не получится перевести пульт в режим обучения).

Ко входу прерывания INT1 подключен фотоприемник. Для уменьшения потребляемого тока питание фотоприемника включается только при обучении пульта.

Питание контроллера дополнительно развязано диодом и конденсаторами C2, C3, что бы помехи по питанию при передаче команды не так сильно влияли на работу контроллера. В качестве развязывающего диода применен SS14 — достаточно мощный (40 В, 1 А) диод Шоттки. Как ни странно, на малых токах у него падение напряжения меньше, нежели у изначально запланированного мелкого BAT46.

Разработано 2 варианта печатной платы.

Вариант номер один.
«Сферический пульт в вакууме».
Это просто плата, без подгонки в какой либо корпус.
Размер 115 х 40 мм, на 30 тактовых кнопок. Разводка односторонняя, со сравнительно небольшим количеством перемычек.

Вариант номер два.
Разводка платы сделана под китайский пультик.

Хинт: Если у китайцев брать набор — пульт плюс приемник — то фотоприемник отдельно можно не искать. Если повезет, то на платке приемника еще и красненький светодиод типоразмера 0805 есть.

Особенности платы.
Родная китайская плата имеет толщину около 0.9 мм. Соответственно, свою плату нужно делать тоже на тонком (0.8 — 1.0мм) текстолите. Поскольку верхняя сторона платы по совместительству еще и плоскость для наклейки лицевой плёнки с резинками — на этой стороне не должно быть никаких выступающих элементов.

Переходные в идеале нужно запаять совсем-совсем тонким проводом (волоском из мгтф, например) с минимальным числом припоя. Через переходные ходят только сигналы опроса клавиатуры, силовых цепей там нет. Контактные площадки залудить минимальным количеством припоя и потом, возможно, пройтись по ним потоком воздуха из паяльного фена, что бы все наплывы/бугорки убрались.

Информационные светодиоды типоразмера 0805 запаиваются с обратной стороны платы, вверх ногами, кристаллом в отверстие. Так, что бы линза диода не выступала над лицевой частью платы. Тогда они будут просвечивать через наклейку, но не будут ее приподнимать.

Фотоприемник. Китайский приемник слишком толстый, почти 5.5 мм. А пространство между платой и нижней поверхностью корпуса — 4 мм. Соответственно, что бы не искать дорогие плоские приемники (а такие у Vishay есть), в нижней плоскости корпуса сверлится отверстие под линзу приемника. Можно просверлить 2 мм сверлом, а потом изнутри выбрать фаску более толстым. Так же с приемника можно ободрать его металлический экран. Тоже выиграется минимум 0.5 мм.

Фьюзы и прошивка.

Кому ближе циферки — то вот:
High 0xD1
Low 0xE4

Для прошивки необходимо подпаять к соответствующим контактным площадкам проводки от программатора — Землю (GND), MO(MOSI), MI(MISO), SCK, Reset.
+5 вольт от программатора подключить к «+» контакту отсека батарейки. Батарейку при этом необходимо вынуть.
Если программатор поддерживает логические уровни 3.3 вольта при прошивке, «+» от программатора можно не подключать к пульту, а прошивать при вставленной батарейке.

На версии платы под мелкий китайский пультик я вывел еще отдельно пятачок + питания, что б было легче подать питание от программатора.

В принципе, прошивка отлажена и проверена. Но если вдруг обнаружатся какие то ошибки или будут сделаны дополнения — я буду выкладывать обновленную прошивку тут и у себя в блоге.

Краткая инструкция по обучению пульта и его использованию.

Подача питания на пульт.
Данные о сохраненных командах хранятся в EEPROM контроллера. Для проверки целостности данных используется контрольная сумма.
При подаче питания пульт включает зеленый контрольный диод и проверяет сохраненные в EEPROM данные.
Если данные валидны — через время порядка 0,2 сек светодиод погаснет и пульт перейдет в режим энергосбережения.
Если данных нет или они невалидны — загорится красный светодиод, пульт отформатирует EEPROM под требуемую структуру хранения информации. Через время чуть больше секунды светодиод погаснет, пульт перейдет в режим энергосбережения.

Режим пульта.
В обычном режиме нажатие на кнопку пульта отправляет записанную на эту кнопку команду.

При этом на время отправки команды загорается зеленый контрольный светодиод или, если напряжение батарейки ниже 2.7 вольта — красный. Все кнопки, кроме первой, при удержании отправляют повтор команды, пока нажата кнопка. При нажатии кнопки SW1 «Set» пульт отправит команду и один повтор, далее будет отсчитываться время для перехода в режим обучения.
Если на кнопке нет записанной команды — кратковременно загорается контрольный светодиод, никакой отправки данных не происходит.

Режим обучения.
Длительное удержание (более 2.5 секунд) кнопки SW1 «Set» переводит пульт в режим обучения. При нажатии и удержании кнопки через 2.5 секунды загорается красный светодиод. После отпускания кнопки начинают мигать красный и зеленый светодиоды. В этом режиме пульт включает фотоприемник и ожидает посылку от внешнего пульта.

В течение 6 секунд необходимо направить внешний пульт на фотоприемник и нажать необходимую кнопку.
Если пульт корректно распознал команду — начнет часто мигать зеленый светодиод и необходимо в течение 6 секунд нажать кнопку на пульте, на которую необходимо записать принятую команду. Зеленый светодиод загорается и горит чуть больше секунды. Данные о принятой команде сохраняются в EEPROM.
Если в течение 6 секунд не нажимать никакую кнопку — пульт вернется в режим ожидания.
После сохранения команды пульт вернется в режим обучения и будет ожидать следующую команду от внешнего пульта.
Если пульт команду не распознал — на время порядка секунды загорается красный светодиод, сигнализируя об ошибке, после чего пульт вернется в режим обучения и будет ожидать следующую команду от внешнего пульта.
Если в течение 6 секунд никакая команда пультом не была принята — пульт перейдет в режим ожидания.

Удаление сохраненных команд.
Для удаления с какой либо кнопки сохраненной на ней команды необходимо перевести пульт в режим обучения.
В режиме обучения (мигают красный и зеленый диоды) необходимо нажать кнопку, с которой необходимо удалить сохраненную команду. Красный диод начнет часто мигать и в течение 2 секунд нужно нажать кнопку SW1 «Set» для подтверждения удаления команды.
При успешном удалении сохраненной команды загорится зеленый светодиод на время чуть больше секунды, команда будет стерта из энергонезависимой памяти.
Если в течение этих двух секунд не нажимать ничего или нажать любую другую кнопку (не SW1) — удаления не произойдет, пульт вернется в режим обучения.

Самодельный ИК-пульт дистанционного управления (PIC12F629)

В этой статье описано как самостоятельно изготовить пульт для управления различными устройствами по ИК-каналу. На самом деле это достаточно просто. Для этого нам понадобятся: контроллер PIC12F629, ИК-светодиод, транзистор КТ315, два конденсатора (электролит 100мкФх10В и керамика 0,1мкФ), четыре кнопки и семь резисторов.

То, в каком коде будут передаваться сигналы, зависит только от того, какую программу вы загрузите в контроллер. Можете использовать стандартные протоколы (RC-5, NEC, SIRC…), а можете придумать протокол сами.

Для питания схемы подойдут две батарейки по 1,5В.

Транзистор VT1, в принципе, почти любой. На нём реализован транзисторный ключ, который обеспечивает большой импульсный ток через ИК-светодиод. Если вы используете другой транзистор — подберите R3 так, чтобы транзистор полностью открывался, но при этом порт GP0 не сгорел.

Ток через ИК-светодиод можно увеличивать(уменьшать), уменьшая(увеличивая) номинал резистора R2, соответственно, будет увеличиваться (уменьшаться) дальнодействие пульта.

Когда кнопка не нажата — на соответствующем входе высокий уровень (вход "подтянут" к плюсу через резистор). При нажатой кнопке — на соответствующем входе низкий уровень.

Контроллер рекомендую не припаивать, а устанавливать в кроватку (вдруг потом захотите другой протокол прошить или еще чего-нибудь придумаете).

В итоге получается вот такой пульт:

Эта плата разведена под использование SMD резисторов и кнопок ПКН-150-1 (которые в изобилии встречаются в старой советской технике). Если вы будете использовать другие компоненты, то плату придется переделывать.

P. S. Если линию MCLR сконфигурировать в качестве порта ввода-вывода и включить встроенные подтягивающие резисторы на входах контроллера (для этого нужно чуток изменить программу), то схему пульта можно упростить и уменьшить:

Схема миниатюрного ИК-пульта дистанционного управления

Вот здесь описано как собрать аналогичный ИК-пульт на атмеловском контроллере ATtiny13.

А вот здесь можно скачать схемы и печатки программаторов для прошивки pic-контроллеров.

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

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