Как стать автором
Обновить

Nokia n900 управляем бытовой техникой

Началось все с покупки n900. Когда я только осваивался с ним, я установил половину пакетов с репозиториев и обнаружил программу irreco, с помощью которой можно управлять, техникой через IrDA порт. Это же давняя мечта, ну может не мечта, но я всегда думал классно будет с телефона управлять, например телевизором! Тем более, сейчас инфракрасные приемники ставят куда надо и не надо, в телевизоры, dvd, в ноутбуки, кондиционеры, вентиляторы. С предыдущими телефонами реализовать это толком не получалось. Но это же n900, на нем можно все, что позволит железо.
image
Можно скачать готовые настройки прямо из этой программы, но для моего лампового кубического небольшого телевизора у них конфига не нашлось, для вентилятора тем более. Значит, сделаем это сами! Самому даже интереснее.


Что понадобится?
1. Пульт от телевизора/холодильника или того чем вы собрались управлять
2. Компьютер с любой звуковой картой
3. Провода; 3,5 штекер, как от наушников
4. Какой-нибудь аудио редактор
5. Сама программа для N900
6. Терпения понадобится много…

Что будем делать?
Подключим пульт к компьютеру, запишем его команды в звуковой файл, переведем в формат, который понимает irreco.

Вперед!
Подключаем пульт к звуковой карте.
Устанавливаем на телефон программу через диспетчер приложений.

Очевидных варианта лишь два:
1. Проводами
2. С помощью фотодиода

Если идти по первому пути, то нужно вскрыть пульт, затем параллельно IrDA диоду припаять/примотать провода, а другие их концы припаять их к миниджеку.
А если с помощью фотодиода, то нужно припаять фотодиод к миниджеку, а потом «светить» ИК диодом пульта в наш фотодиод.

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

Как это выглядит:
image

Первый контакт штекера (самый большой) к одной ножке, второй и третий можно спаять вместе и подсоединить ко второй ножке.
В случае с проводами все аналогично: первый контакт штекера к одному контакту диода в пульте, второй и третий ко второму контакту диода.

Запись
Будем считать что у нас все получилось подключить. Теперь нужен звуковой редактор. Главное чтоб умел рисовать так:
image

Я сижу под Ubuntu так что у меня нет выбора, я использую audacity. Под windows есть soundforge, впрочем audacity кроссплатформенный, можно установить и его.
Процесс записи затруднений не должен вызвать.

Распознование
Это очень долгая часть, но никто не заставляет записывать сканкоды всех кнопок пульта, можно обойтись standby, громкостью и каналами (следующий, предыдущий).

Общий вид конфига irreco такой:
# комментарий
begin remote
name samsung
flags RAW_CODES
eps 0
aeps 0
ptrail 0
repeat 0 0
gap 35714
begin raw_codes
name POWER
900 900 1770 900 900 900
900 900 900 900 900 900
900 900 900 900 900 1770
900 900 1770 900 900
name команда
коды коды
коды коды
end raw_codes
end remote


Подробнее про конфиг тут.
Нас интересуют «коды» ну и название команды. В примере фигурирует число 900 и 1770, что почти 1800 (900*2). На самом деле 900 это что то от 890 до 920, но 900 мой теливизор понял это. Получается точность не кретична.

Эти самые коды записываются в виде:
длинна_единичного_сигнала длинна_нулевого_сигнала длинна_1_сигнала длинна_0_сигнала(пауза)
Их число должно быть нечетное, т.к. бестолку в конце дописывать нулевой сигнал.

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

Открываю записанный аудиофайл в audacity и увеличиваю:
image

Еще зумм к любой одиночной единичке (чтобы определить длительность):
image

Начало где-то на 2.84465, конец примерно на 2.84557
Длительность: 2.84557-2.84465=0,00092 сек = 0,92 мс = 920 мкс
В конфиге записывается длительность в микросекундах.

Теперь переведем единички/нули в длительности:
image

Если до сих пор не понятно как все это устроено, то представляйте, что программа думает когда читает такой конфиг:
name POWER
900 900 1770 900 900

Команда называется POWER.
Шлю сигнал 900мкс, жду 900мкс, шлю 1700мкс, жду 900мкс, шлю 900мкс, все.

Когда ваш конфиг, пусть только с одной командой, готов, отправляйте его в /home/user/MyDocs/irreco/InternalLircDevices/
Затем нужно указать lirc'y где брать конфиг (irreco — лишь интерфейс для lirc, а сам lirc есть и под nix и под винду(WinLirc)), для этого в файл /etc/lircd.conf добавьте строчку
include "/home/user/MyDocs/irreco/InternalLircDevices/smsng"
где smsng — имя конфига.

После этого в irreco > edit remote > add new button должны появится эти команды.

Готово!
image

Все было проделано ради интереса, пользуюсь редко, но на расстоянии метров пять телевизором можно управлять, вентилятором почему-то немного дальше.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.