Клон ИК пульта на PIC контроллере

В одной из предыдущих статей я рассказывал о способе считывания кода с ИК-пульта при помощи компьютера и звукового редактора. В этой статье речь пойдет об использовании полученной таким образом информации для создания клона ИК пульта управления.

Передо мной стояла задача построить некий клон пульта для управления кондиционером. Поскольку «родной» пульт был утерян, то пришлось искать аналогичную модель и считывать с нее коды управления. Поскольку особых требований к клону не предъявлялось, то я решил заложить в него всего две команды – включить кондиционер и выключить его. В жаркое лето этого вполне было достаточно.

Итак, мне удалось получить следующие осциллограммы команд пульта. Поскольку пакеты получились «длинные», то для наглядности привожу лишь их фрагменты:

Необходимо было учесть тот факт, что пульт излучает данные команды в инверсной форме, поскольку в отсутствии ИК-сигнала ИК-приемник выдает лог. «1», а при появлении лог. «0». Кроме того для того, что бы ИК-сигнал (по активному фронту) стал излучаться его необходимо промодулировать на частоте порядка 10 – 16 кГц.

Это можно описать следующей схемой:

Таким образом имея осциллограмму команд со всеми временными характеристиками, учитывая то, что команды должны быть инвертированы и их верхний фронт должен быть промодулирован несущей частотой, я решил собрать устройство:

 
   

В основу я заложил пик-контроллер младшего семейства Microchip – PIC12F629. Он вполне мог справиться с поставленной задачей при пониженном напряжении в 3 В .

В процессе анализа пакетов и привязки к ним «0» и «1» битов по их длине, я получил следующие двоичные коды команд:

«Включить»

«Выключить»

00010001

00000001

01000100

01000100

10000000

10000000

01001000

01110000

11011100

00000000

11100000

00010000

00000000

00000000

00000000

00000000

00110000

00110000

Байты следовали друг за другом без интервалов (начиная со старшего разряда), предварялись стартовым кодом – 9 mS высокий фронт-  4,5 mS низкий фронт.

Первой подавалась команда «Включить» затем следовала пауза в 1 S и далее команда «Выключить».

Для простоты реализации устройства я использовал всего одну кнопку – включение питания. Если кондиционер был выключен, первая команда включала его. Если он был включен, первая команда игнорировалась , а следующая выключала его.

Программа для устройства написана без использования прерываний. Обработка байтов команд происходит путем последовательного считывания битов и по результатам вызова подпрограмм соответствующих временных интервалов.

В качестве корпуса для устройства я использовал китайский пульт . Немного доработав его – вырезал в корпусе отверстие для возможности извлечения контроллера :

Изменил схему монтажа, подогнав его под пик:

В сборке он выглядел так:

Программа в MPLAB и саундтреки команд, записанных в звуковом редакторе:

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
МК PIC 8-бит PIC12F629 1
Биполярный транзистор S9013-I 1
ИК-излучатель BL-L314IRBC 1
Конденсатор 1 нФ 2
Конденсатор 10 нФ 1
Резистор 470 Ом 1
Кварц 455 кГц 1
Батарея АА 1.5 В 2