ИК-пульт управления для камер Canon на базе микрокомпьютера Freeduino Through-Hole

Часть первая: генератор сигнала
ИК-пульт из freeduino

В статьях «Универсальный ИК-пульт для камеры Canon. Часть первая: приемник для дешифровки ИК-сигнала» и «Часть вторая: сигналы и пульты» было описано, как с помощью простейших электронных компонентов и доступных программ расшифровать сигналы ИК-пульта управления фотокамерой и изготовить самодельные пульты из звуковоспроизводящих устройств. Для реализации ИК-управления необходим генератор несущей частоты 32—38 кГц и его модулятор. В качестве излучателя сигнала используется ИК-светодиод.

Диапазон воспроизводимых бытовыми аудиоустройствами частот ограничен сверху значением, меньшим необходимых 32—38 кГц, и только трюк с использованием наложения дорожек стереосигнала в противофазе позволяет обойти это ограничение. А вот микрокомпьютеру Freeduino с тактовой частотой в 16 МГц генерировать сигнал 32 кГц вполне под силу. Микрокомпьютер использовался для управления позиционированием камеры в процессе съемки (Установка для съемки панорам на базе контроллера Freeduino, часть 2: контроллер и программирование в среде Arduino.exe), и функциональность этой установки можно расширить, добавив ей возможность беспроводного управления камерой.

Задача состоит в том, чтобы запрограммировать микрокомпьютер на базе микроконтроллера Freeduino Through-Hole для имитации сигналов пульта управления камерами Canon — Canon RC-1. В статьях, ссылки на которые приведены в самом начале, описаны управляющие сигналы пульта. При обычной съемке без предварительной паузы камера запускается последовательностью импульсов и пауз: «пакет 0,7 мс — пауза 7/7,7 мс — пакет 0,7 мс». Второй режим пульта — съемка с двухсекундной задержкой на стабилизацию камеры. Его структура: «пакет 0,7 мс — пауза 5,1/5,7 мс — пакет 0,7 мс». Несущая частота импульсов в пакете — 32—38 кГц.

Реализовать на Freeduino ИК-управление просто — подключаем к соответствующим сигнальным выходам ИК-светодиод, который программно включаем-выключаем в соответствии со структурой сигнала. Для пакета управляющего импульса длительностью ≈0,7 мc на частоте ≈33 кГц нужно 23 раза включить-выключить светодиод на 15 мкс (период несущей будет 2×15 = 30 мкс). Далее добавить паузу 7,3 мс. И снова повторить 0,7-миллисекундный пакет.

Управляющая программа в Arduino Sketchbook выглядит так:

Код управляющей программы

Программа проста и похожа на «учебную» программу для Arduino — «Blink». Главные отличия — в замене функции миллисекундных пауз delay() на микросекундные delayMicroseconds() и добавление цикла. ИК-светодиод подключается к 12-му порту и массе, для ограничения тока в цепь последовательно диоду добавлен резистор (≈50 Ом). Вид установки приведен на фотографии в начале статьи. Так как цикл генерации сигнала помещен в функцию loop(), он будет выполняться с периодичностью около 3 секунд (задается функцией delay(3000)), пока на Freeduino подается питание. Такое функционирование программы позволит легко отследить запуск камеры, если установка работает. Но при указанных в скетче параметрах ИК-пульт на Freeduino не запускает камеру.

Чтобы разобраться, в чем причина неудачи, воспользуемся описанной в статье «Универсальный ИК-пульт для камеры Canon. Часть первая: приемник для дешифровки ИК-сигнала» установкой для регистрации ИК-сигнала. Вот что покажет Audacity:

Audacity

Длительность импульса огибающей управляющего пакета — 45 семплов на частоте оцифровки сигнала 44100 Гц, или ≈1 мс вместо требуемых 0,7 мс. Вероятно, ошибка возникает из-за некорректной работы выполняемых подряд функций delayMicroseconds() при небольших значениях аргумента. Для коррекции ошибки можно попробовать поднять частоту или уменьшить период примерно в пропорции ошибки 1/0,7 раза. Внесем изменения. Но прежде, чтобы дважды не исправлять код, проверим, что пауза между пакетами отрабатывается корректно:

Audacity
Пауза 318 семплов на частоте 44100 Гц при пересчете дает ≈7,2 мс, что не отличается принципиально от желаемой 7,3 мс.

Попробуем изменить программу, и для аргумента frec (полупериод несущей) зададим величину 15/(1/0,7) = ≈10 (мкс), а прочие параметры программы оставим без изменений. Формально, при этом частота несущей будет 50 кГц. Но теперь пульт работает и запускает камеру, однако иногда камера «пропускает» сигнал. На следующем этапе отладки я уменьшил число импульсов в управляющем пакете до 19 (параметр puls=20), и ИК-пульт заработал без сбоев. Проверим, что покажет установка, регистрирующая огибающую ИК-сигнала:

Audacity
Длительность импульса 67 семплов на частоте 96000 Гц, или ≈0,7 мс.

Audacity
Длительность паузы — 709 семплов на частоте 96000 Гц, или ≈7,4 мс.

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




23 сентября 2011 Г.

- Canon Freeduino Through-Hole. , .

- Canon Freeduino Through-Hole

:

-  freeduino

« - Canon. : -» « : » , - . - 32—38 . -.

, 32—38 , . Freeduino 16 32 . ( Freeduino, 2: Arduino.exe), , .

, Freeduino Through-Hole Canon — Canon RC-1. , , . : « 0,7 — 7/7,7 — 0,7 ». — . : « 0,7 — 5,1/5,7 — 0,7 ». — 32—38 .

Freeduino - — -, - . ≈0,7 c ≈33 23 - 15 ( 2×15 = 30 ). 7,3 . 0,7- .

Arduino Sketchbook :

«» Arduino — «Blink». — delay() delayMicroseconds() . - 12- , (≈50 ). . loop(), 3 ( delay(3000)), Freeduino . , . - Freeduino .

, , « - Canon. : -» -. Audacity:

Audacity

— 45 44100 , ≈1 0,7 . , - delayMicroseconds() . 1/0,7 . . , , , :

Audacity
318 44100 ≈7,2 , 7,3 .

, frec ( ) 15/(1/0,7) = ≈10 (), . , 50 . , «» . 19 ( puls=20), - . , , -:

Audacity
67 96000 , ≈0,7 .

Audacity
— 709 96000 , ≈7,4 .

- ZIP- . , , . .