Блуждая однажды по просторам Рунета, я однажды наткнулся на самый банальный блок Яндекс.
Директа.
Но что-то там меня заинтересовало, и я оказался на определенном сайте.
Где продавали управляемые автомобили.
Вроде бы ничего особенного, но в итоге это привело к довольно интересным вещам и к этой теме.
Эти машины называются Takara-Tomy Q-Steer (также известны в США под названиями Microsizers и ZipZap).
Коренное отличие автомобилей Q-steer (а именно на том сайте они продавались) в том, что они маленькие.
Очень маленький.
Очень-очень.
Длина 4 см, ширина 2,7 см, если быть точным.
Но несмотря на это, автомобили полностью управляемы.
Они понимают команды вперед и назад, влево и вправо.
А еще есть форсаж (!) И еще интересный момент - канал управления - ИК.
Инфракрасная радиация.
У них есть что-то вроде радиоуправляемой машинки (чуть больше, но ненамного), но для моих нужд они не подходят. В общем, посидев на этом сайте несколько часов и изучив там почти всё, я решил купить себе печатную машинку.
С управлением по ИК, конечно, потому что появилась одна интересная мысль.
В Москве такие станки найти не удалось, поэтому я заказал их на найденном сайте.
Доставка заняла несколько дней, но с нынешней работы меня уволили в первый же день после заказа, поэтому оставшееся время до прибытия посылки пролетело очень быстро.
Про распаковку говорить не буду - содрал обертку, порвал пластик, достал машинку и пульт. Это просто.
При первом личном контакте с машиной я испытал легкий шок – «она такая маленькая, она правда будет работатьЭ» Правда, сразу пойти не удалось - в комплекте не было батареек.
И батарейки там под стать машинке - тоже маленькие, "часовые" LR44. Лишь спустя некоторое время, прочитав инструкцию и выяснив, что машинку нужно включать поворотом неприметного рычажка, оказалось, что и в пульте, и в машине есть батарейки.
Так что вы можете участвовать в гонках.
Ну и поехал :-) Свой первый опыт микровождения я запечатлел на небольшое видео.
В целом машинка идеальна для офиса - на ней прекрасно можно ездить по столу, по стульям, по ноутбуку.
Короче, можно даже по краю унитаза ездить.
Но управлять машиной вручную банально и неинтересно.
Я хочу контроля со стороны чего-то ИТ (не люблю это слово, но к нему еще надо привыкнуть).
Я уже узнал что для Sony PSP есть программное обеспечение для управления автомобилями Q-steer .
Однако он работает только на старых моделях PSP, имеющих ИК-подсветку.
У меня PSP Slim, но на борту нет ИК-порта :-( Из гаджетов с ИК-портом под рукой у меня на данный момент есть только Nokia N900. Правда, ИК-порт там немного кастрирован - он может только передавать сигналы, но не принимать.
Но для управления машинкой ничего брать не нужно, поэтому N900 подойдет. Готовых программ для N900, которые могли бы управлять моей машиной где угодно, не было, поэтому пришлось делать это самому.
Весь процесс написания программного обеспечения состоял из следующих этапов:
- Определение ИК сигналов управления с родного пульта машины
- Воспроизведение ИК-сигналов управления на N900
- Н написание скрипта для N900, преобразующего некоторые действия с телефоном в управляющие сигналы для аппарата
- Пью бутылку нефильтрованного
- Фото- и видеосъемка всего вождения и водительского безобразия.
- Праздничный пост в блоге о том, как все работает.
- Отправлю ссылку на запись всем знакомым, чтобы они покрасовались
В итоге эти этапы затянулись на два дня (вернее, на две ночи).
Первый был посвящен попыткам декодирования ИК-сигналов пульта.
Я уже давно использую самодельный ИК-приемник для WinLIRC на своем рабочем столе, и он идеально подходил для приема сигналов дистанционного управления.
Но возникла проблема — WinLIRC не хотела запоминать команды удаленного управления.
Перепробовал все настройки - не помогло.
Да и RAW-коды тоже не хотели записываться, поэтому пришлось вручную выдирать их из тестового окна приема RAW-сигналов.
Немного сумбурно, но нам удалось уловить все необходимые коды для основных типов движения.
Только кнопку форсажа я не использовал.
Объединение всех кодов в один конфигурационный файл привело к появлению примерно такого: файл настроек для пульта дистанционного управления Q-steer .
Правда полные настройки есть только для диапазона Б, в диапазон А я еще не заходил, автомат у меня только один :-) В общем, это была первая часть темы после равенства – «первый трах».
Потому что я действительно трахался с кодами.
А сексом нам еще предстоит заняться - пока управление получилось немного дерганым, надо копать дальше.
Проблем с воспроизведением принятых сигналов на N900 не возникло.
Потому что у этого мобильного планшета вполне нормальный лирк, для которого очень подошёл созданный мною файл настроек пульта Q-steer. Остается только подсунуть это лиру.
Добавляем включение нашего конфига в файл /etc/lircd.conf (он у меня в /home/user/MyDocs/DISTR/Q-STEER/qsteer) включить "/home/user/MyDocs/DITR/Q-STEER/qsteer" Перезапустим лирз.
Разумеется, это нужно делать под root. sudo получить root /etc/init.d/lirc перезапустить Итак, демон управления ИК-портом запущен, осталось только послать ему команды.
И вообще, как мы справимся? И мы будем управлять наклоном телефона.
Неужели зря у него есть акселерометр? Наклоняем телефон вперед и машина едет вперед. Наклоняем его немного вперед и он уходит назад. Откидываем его немного назад и машина останавливается.
Примерно то же самое и с поворотами.
Наклон влево – машина едет влево, наклон вправо – машина едет туда.
Почему нельзя было сдвинуть аппарат назад при том же наклоне телефона? Просто сигнал от ИК-передатчика телефона слабее, чем у оригинального пульта, поэтому лучше, чтобы ИК-светодиод был направлен в сторону машины, а это происходит только при наклоне телефона вперед. Кстати, забегая вперед - если расположить телефон вертикально, это выход из программы.
Основой для получения координат вращения телефона послужил достаточно известный скрипт shake.py Никласа Тансканена.
Для примера взаимодействия с lirc - скрипт от некоего Блабби с Форум Маемо .
Я никогда раньше не сталкивался с Python, но это был хороший повод попробовать программировать на этом языке.
Кстати, ух ты, как это необычно после C/C++, PHP, JavaScript и т.п.
ИМХО, условия IF выглядят особенно дико :-) Да, питоновцы меня спрашивают. Короче говоря, что произошло в итоге? И вот что произошло.
Скрипт qsteer.py — управление машиной Q-steer с планшета Nokia N900 путем издевательства над акселерометром.
Это выглядит примерно так.
Одному человеку сложно одновременно контролировать и удерживать камеру.
И я еще не до конца освоил управление.
Движение по-прежнему дерганое, необходимо корректировать сигналы управления.
И устранить мелкие баги (иногда отправка импульсов повторяется, когда они уже отправляются, из-за этого в конце видео видно сообщение об ошибке).
А в целом - все работает!!! Остается только научить маршрут, чтобы можно было задавать команды и телефон сам циклично подавал их на машину.
Но это уже детали; закончить их не составит труда.
Нужна помощь! Управление кодом RAW — отстой.
Потому что едет рывками.
Необходимо эмулировать обычные управляющие сигналы.
Может ли кто-нибудь сказать мне, как узнать параметры протокола управления для LIRC? WinLIRC отказывается запоминать, видимо, нестандартные последовательности импульсов.
UPD> Да, кстати.
Не воспринимайте это как рекламу, этот магазин называется mikrogonki.ru .
Если вы вдруг решите заказать там станок, в поле «Примечания к заказу» напишите «Я из лысого человека».
Вдруг, глядишь, мне машину дадут:-) UPD> Я нашел в чем мой косяк! Думаю с пивом лучше, сейчас машина едет назад без рывков, осталось только выкинуть стартовую биту.
Сейчас исправлю оставшиеся коды и выложу новое проверочное видео.
UPD> Подправил коды, теперь движется без рывков.
Хотя иногда все равно тормозит. Но это связано с тем, что N900 не имеет очень мощного ИК-передатчика и достаточно направленный.
Я повторно загрузил файл конфигурации LIRC. Вот новое видео, примерно демонстрирующее движение с фиксированными управляющими сигналами.
UPD> Q-steer, оказывается, снят с производства.
На смену им пришли машины Choro-Q. Было проведено небольшое вскрытие Прямо здесь .
Управляются они тоже по ИК, но коды другие, щас разбираюсь.
Теги: #python #Сделай сам или Сделай сам #Nokia #IR #n900 #игрушки #tomy #cars #Q-steer
-
Сардинский Язык
19 Oct, 24 -
Imaniac Или Трепанация Алюминиевой Коробки
19 Oct, 24 -
О Пиратстве, Windows И Лжи
19 Oct, 24