Nokia N900 Q-steer Машинка через ИК управление

Nokia N900 Q-steer Машинка через ИК управление

Nokia N900 + Q-steer = Машинка через ИК управление своими руками

Бродя однажды по рунетовским просторам, наткнулся я как-то раз на самый банальный блок яндекс.директа. Но что-то меня там заинтересовало, и попал я на некий сайт. Где торговали управляемыми машинками. Вроде бы ничего особенного, но в итоге это привело к довольно интересным вещам и к этому топику.

Называются эти машинки Takara-Tomy Q-Steer (известные так-же в США под именами Microsizers и ZipZap). Радикальное отличие машинок Q-steer (а именно ими торговали на том сайте) в том что они маленькие. Очень маленькие. Очень-очень. Длина 4 см, ширина 2.7 см, если быть точным. Но, не смотря на это, машинки полностью управляемые. Понимают команды вперёд-назад, влево-вправо. И ещё форсаж есть (!) А ещё интересный момент — канал управления — ИК. Инфракрасное излучение. Есть у них вроде машинки (чуть побольше размером, но ненамного) на радиоуправлении, но для моих надобностей они не подходят.

В общем, просидев на том сайте несколько часов и проштудировав там практически всё, решил себе купить машинку. С управлением через ИК, само собой, ибо появилась одна интересная мыслишка.

В Москве такие машинки найти не удалось, так что заказал на найденном сайте. Доставка заняла несколько дней, но меня в первый же день после заказа уволили с моей нынешней работы, так что в беготне оставшееся время до прибытия посылки пролетело очень быстро. Про unboxing рассказывать не буду — сорвал обёртку, разорвал пластик, достал машинку и пульт. Всё просто.

При первом личном контакте с машинкой испытал небольшой шок — «такая мелкая, неужели поедет?». Правда, сразу поехать не удалось — в комплекте не было батареек. А батарейки там под стать машинке — тоже мелкие, «часовые» LR44. Только через некоторое время, прочитав инструкцию и выяснив что машинку надо включить поворотом незаметного рычажка, оказалось что батарейки есть и в пульте и в машинке. Так что можно гонять.

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

В общем, машинка идеальна для офиса — можно прекрасно гонять по столу, по стульям, по ноутбуку… Короче, даже по ободу унитаза можно гонять.


Но ручное управление машинкой — это банально и неинтересно. Хочется управления с чего-нибудь айтишного (не люблю я это слово, но всё-таки приходится привыкать). Я уже успел узнать что для Sony PSP есть софтина для управления машинками Q-steer. Однако работает только на старых моделях PSP, где есть ИК. У меня же PSP Slim, а там ИК-порта нет на борту :-(

Из гаджетов с ИК-портом под рукой у меня сейчас есть только Nokia N900. Правда, там ИК-порт немного кастрированый — умеет только передавать сигналы, но не получать. Но для управления машинкой принимать-то ничего и не надо, так что N900 подходит. Готовых программ для N900, которые могли бы управлять моей машинкой, нигде не нашлось, так что пришлось делать самому.

Весь процесс написания софтинки состоял из этапов:

  • Определение управляющих ИК-сигналов из родного пультика машинки
  • Воспроизведение управляющих ИК-сигналов на N900
  • Написание скрипта для N900, преобразующего какие-то действия с телефоном в управляющие сигналы для машинки
  • Распитие бутылочки нефильтрованного
  • Фотографирование и видеосъёмка всего ездящего и управляющего безобразия
  • Торжественная запись в блоге о том что всё заработало
  • Рассылка ссылки на запись всем знакомым дабы похвастаться

ИК машинка

В итоге эти этапы затянулись на два дня (а точнее, на две ночи). Первая была посвящена попыткам раскодировки ИК-сигналов пульта. У меня на десктопе давно уже используется самодельный ИК-приёмник для WinLIRC, вот для приёма сигналов пульта он подошёл идеально. Но всплыла проблемка — WinLIRC не хотел обучаться командам пульта. Перепробовал все варианты настроек — не помогло. И RAW-коды тоже не захотели записываться, так что пришлось вручную выдирать их из тестового окна приёма RAW-сигналов.

Немного не айс, но удалось поймать все нужные коды для основных типов движения. Только вот кнопочку форсажа я не использовал. Сведение всех кодов в один настроечный файл привёл к появлению вот такого — файл настроек для пульта Q-steer. Правда, полностью настройки есть только для диапазона B, в диапазон A я пока не лез, у меня ведь всего одна машинка :-)

В общем, это и была первая часть сабжа после равенства — «сначала Fuck». Ибо потрахался с кодами реально. И ещё предстоит потрахаться — пока немного дёрганое управление получилось, надо ковырять дальше.

С воспроизведением полученных сигналов на N900 проблем не было. Ибо на этой мобило-таблетке стоит вполне себе обычный lirc, для которого очень даже подошёл сформированный мною файлик настроек пульта Q-steer. Осталось только подсунуть его лирцу.

В файл /etc/lircd.conf дописываем инклуд нашего файлика с конфигом (у меня он лежит в /home/user/MyDocs/DISTR/Q-STEER/qsteer)

include "/home/user/MyDocs/DISTR/Q-STEER/qsteer"

Рестартуем лирц. Само собой, это надо проделывать под рутом.

sudo gainroot
/etc/init.d/lirc restart

Итак, демон управления ИК-портом запущен, осталось чем-то передавать ему команды. И вообще, как будем управлять?

А управлять будем наклонами телефона. Зря что-ль в нём акселерометр есть? Наклоняем телефон сильно вперёд — машинка едет вперёд. Наклоняем слегка вперёд — едет назад. Наклоняем слегка назад — машинка останавливается. Почти то же самое с поворотами. Наклон влево — машинка влево, наклон вправо — машинка туда же. Почему было не сделать движение машинки назад при таком же наклоне телефона — просто сигнал ИК-передатчика телефона послабее чем у родного пульта, так что лучше чтоб ИК-светодиод был направлен в сторону машинки, а так получается только когда наклон телефона вперёд. Кстати, забегая вперёд — если телефон вертикально поставить — это выход из программы.

За основу получения координат поворота телефона взял довольно известный скрипт shake.py by Niklas Tanskanen. Для образца взаимодействия с lirc — скрипт некоего Blubbi с форума Maemo. Я раньше ни разу не сталкивался с Python, а тут вот хороший повод появился попробовать покодить на этом языке. Кстати, ппц как непривычно после C/C++, PHP, JavaScript, etc. IMHO, особенно дико условия IF выглядят :-) Да просят меня питоновцы.

Короче, что в итоге получилось? А получилось вот что.

Скрипт qsteer.py — управление машинкой Q-steer с таблетки Nokia N900 путём издевательств над акселерометром.

Выглядит это примерно вот так. Сложно одному одновременно и управлять и камеру держать. И с управлением я ещё не до конца освоился.


 

Движение пока дёрганое, это надо управляющие сигналы корректировать. И мелкие косяки устранить (иногда повторяется посылка импульсов, когда они уже посылаются, из-за этого в конце ролика сообщение об ошибке видно). Но в целом — всё работает!!!

Осталось сделать обучение маршруту — чтоб можно было задать команды и телефон сам бы в цикле их машинке скармливал. Но это уже детали, доделать труда не составит.

Да, кстати. Не сочтите за рекламу, тот магазинчик находится тут.

Машинка по ик управлению своими руками 192
Nokia N900 Q-steer Машинка через ИК управление 989
Схема дистанционного управления различными
Nokia N900 Q-steer Машинка через ИК управление 24
Nokia N900 Q-steer Машинка через ИК управление 97
Nokia N900 Q-steer Машинка через ИК управление 94
Nokia N900 Q-steer Машинка через ИК управление 50
Nokia N900 Q-steer Машинка через ИК управление 77
Nokia N900 Q-steer Машинка через ИК управление 39

Похожие статьи