Этот сайт полноценный и регулярно пополняемый ресурс о handmade, то есть о ручной работе. Он всегда полон актуальной и эксклюзивной информации, в том числе репортажами, интервью, активными ссылками, мастер-классами, конкурсами, обзорами магазинов и студий.
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 путём издевательств над акселерометром.
Выглядит это примерно вот так. Сложно одному одновременно и управлять и камеру держать. И с управлением я ещё не до конца освоился.
Движение пока дёрганое, это надо управляющие сигналы корректировать. И мелкие косяки устранить (иногда повторяется посылка импульсов, когда они уже посылаются, из-за этого в конце ролика сообщение об ошибке видно). Но в целом — всё работает!!!
Осталось сделать обучение маршруту — чтоб можно было задать команды и телефон сам бы в цикле их машинке скармливал. Но это уже детали, доделать труда не составит.
Да, кстати. Не сочтите за рекламу, тот магазинчик находится тут.
Версия для печати | Эта запись была опубликована admin 12.12.2010 в 19:06, в категории Электроника. Вы можете следить за комментариями через RSS 2.0. Вы можете оставить комментарий или трэкбэк с вашего сайта. |
12 лет назад
Это очень, Очень сильно!
А реально сделать подобное управление для большой машинки, есть же внешние Ик. Я читал что у ИК проблемы на свету, и от присутствия рядом пультов от телека и других похожих источников