https://carpc-project.ru

C благодарностью к коллегам по форумам  PCCar.ru Compcar.ru Pinin.ru

- Ну как, больной? Извращениями какими-нибудь страдаете?
- Ну что Вы, доктор?!  Я ими наслаждаюсь... 
Последние новости
Архив новостей
Наша география
 

 

  Радар-детектор Stinger S650:  доработка под скрытую установку

 

 

    Идея интегрировать в систему радар-детектор бродила давно: не то, чтобы манера вождения сильно располагала к необходимости в этом девайсе - просто сама по себе задача представлялась достаточно интересной, да и возможность узнать заранее о наличии потенциальных проблем все же штука не лишняя. Из возможного многообразия подобного рода устройств был выбран РД Stinger S650 - не самый дорогой, но и не самый дешевый аппарат, набравший массу весьма неплохих отзывов от юзавших его.

 

 Объект издевательств - РД Stinger S650

 

 

     Но поскольку идея заключалась именно во встраивании его в авто, использовать его в товарном виде не предполагалось: инсталляция планировалась скрытая. Это предполагало изменение схемы управления девайсом, а так как лишние кнопки в салоне действительно лишние - вполне логично было подцепить его к компу и осуществлять управление через фронт-энд.

     Помимо этого, обнаружился еще один существенный момент, подтолкнувший к глобальной пределке - дело в том, что при начальном включении девайс попадает в режим самотестирования и начинает в течении минуты примерно назойливо бубнить об обнаруженных якобы радарах во всех возможных диапазонах. Отрубить эту мантру можно только нажатием пары кнопок, но согласитесь, что необходимость каких-то телодвижений каждый раз при включении зажигания (а как и все системы автомобиля, он тоже запитан от бортсети и включается по сигналу АСС) - это, мягко скажем, не изящно...

     По сему, в дело пошел микроконтроллер Arduino - чудный аппарат, позволяющий творить массу всего. Экскурсия в богатый мир его возможностей вполне может начаться для интересующихся с этой ссылки ,  в данной же статье ограничимся лишь описанием конкретного проекта.

 

 Arduino

 

    Итак, в задачах стояло:

- эмуляция длинных и коротких нажатий двух кнопок управления РД

- возможность включения/выключения девайса

- регулировка громкости динамика

- отключение режима самотестирования при подаче питания

     Описание реализации программной части этого проекта будет приведено в конце этого материала (вообще по сути, это наверное следовало бы изложить в отдельной статье...), пока же - про железную часть.

Подопытный был безжалостно раскурочен:

 

 Внутренности Stinger S650

 

 

 Рупор антенны, фотоприемник лазерного диапазона

 

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

 

 

 Места доработки

 

      Далее - обратная сторона платы в месте установки штатного разъема питания РД:

 

 Заводим питание

 

      Здесь земля идет на землю, плюсовой провод - на выход оптрона, коммутирующего питание (вход его - на +12 V, управление - с выхода МК). Сама Ардуина была смонтирована на отдельной плате с минимальной обвязкой:

 

 Плата Arduino

 

     Некоторая избыточность элементов объясняется тем, что в дальнейшем есть планы озадачить девайс некоторыми другими функциями. Схему в привычном ее виде приводить не буду - в листинге скетча вся необходимая информация по электрическим связям есть.

     Предполагавшиеся первоначально проблемы с размещением РД были благополучно обойдены (в который уже раз в процессе построения этой системы восхищаюсь конструкцией этого автомобиля!) - не пришлось не только ничего лепить, но и даже резать - как будто хитрые самураи просчитали все мои шаги на десять лет вперед:

 

 Примеряемся к месту установки

 

 Жить будем здесь

 

     Места за монитором вполне хватило для бескорпусного варианта исполнения девайса. Индикатор по понятным причинам был вынесен наружу (он, кстати, к плате крепится через разъем, так что откусывать его в случае чего не обязательно). Законченный вид после монтажа:

 

 Ну и где же РД?

 

     Фотоприемник лазерного диапазона пока не при делах, но это временно: просверлить дырку в колпаке и вставить туда световод (возможно, с линзой) - задача ерундовая.

     Со стороны салона все это выглядит так:

 

 Индикатор РД - внизу под монитором TPMS

 

 

     Задняя часть корпуса РД была отпилена и интегрирована в напольную консоль.

 

 Общий вид

 

     Некоторые проблемы возникли со встраиванием программы управления РД в скин фронт-энда: дело в том, что это java-приложение, а оно ведет себя несколько своеобразно... В конце-концов получилось следующее:

 

 Скин управления режимами РД

 

 

      Скин управления РД. Сама программа находится в автозагрузке (на случай холодного старта системы), в остальное время - развернута под оболочкой (на рабочем столе). На кнопке вызова соответствующего скина висит конструкция:

 ..."LOAD;STINGER.skin||ACTIVATE;STINGER_S650",""

     Ей окно программы поднимается поверх фронт-энда, делая доступным управление радар-детектором.

 

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

 

 

     Ну а теперь - о программной части.

     Для облегчения пути последователей, коротенько приведу алгоритм действий.

1. Заказываете и приобретаете собственно  Carduino nano v.4

2. Качаете компилятор из раздела "Файлы" (вес у него не детский, но разве это остановит истинных ценителей извращений Подмигивающий )

3. Устанавливаете его на диск С:\

4. Подключаете контроллер к компьютеру USB-шнуром.

5. Для обнаруженного нового устройства указываете путь к драйверам: C:\arduino-0018\drivers\FTDI USB Drivers. Если все прошло удачно - в диспетчере устройств появиться новая позиция USB Serial Port.

6. Запускаем компилятор, в меню Tools\Serial Port выставляем  номер СОМ-порта (в п.5 он будет указан в соответствующей позиции), в меню Tools\Board - Arduino Diecimila ( и не умничайте, выбрав в последнем случае Arduino ATmega328 - хоть контроллер и построен на нем, залить прошивку при таких настройках не получится).

Добавление от 22.07.2011

    Вот тут, как выяснилось, не все так просто: экземпляр, который прошивался для этого конкретного проекта (хоть и построен был на ATMega328), шился почему-то именно как Arduino Diecimila. Второй контроллер, с которым экспериментирую сейчас, напротив, с такими установками не работает, и требует выбрать в настройках именно ATMega328. И это при том, что на вид они совершенно идентичны.Так что экспериментируйте - вариантов всего два, и в любом случае ничего фатального не произойдет: если не прошьется с одной настройкой, значит, прошьется с другой...

 

      Ну, собственно, теперь вы можете делать с девайсом все, что можете. То есть либо писать для него прошивки самостоятельно, заливая их посредством компилятора и отлаживая их с его помощью, либо заливать чужие,  желательно заведомо рабочие Подмигивающий

      Внешний вид программы (версия 0017 от 0018 в этом не отличается) каких либо комментариев не требует:

 

 Окно программы Arduino

 

     Закачиваем из раздела "Файлы" архив Stinger_full.rar, распаковываем его, через меню File/Open открываем файл Stinger_full.pde и если все приведенные выше инструкции были выполнены исправно - результат не заставит себя ждать. Первая слева кнопка - проверка кода, предпоследняя - заливка прошивки в контроллер. Изучение кода оставляю для фанатов программирования, тем же, кого больше интересует результат - достаточно просто залить прошивку в контроллер.

 

      На данном этапе мы уже сопрягли РД с Ардуиной, но пока в таком виде эта связка способна выполнять лишь одну из поставленных перед ней задач - гасить режим самотестирования при подаче питания. Для полноценного же управления нам необходима еще программа, которая работала бы на компьютере под Windows, посылая при нажатии на виртуальные кнопки вполне реальные команды в СОМ-порт, на котором у нас живет Ардуина. Займемся ее изготовлением. Поможет нам в этом другой компилятор - Processing (там же, в "Файлах", и тоже достаточно увесист):

 

 Окно программы Processing

 

      Так же для работы понадобится установить Java  (причем не только на том компьютере, на котором будете компилить прогу, но и на том, на котором будете ее юзать)

      Вот здесь надо иметь в виду вот что - если в первом случае необходимо было указать правильный номер CОМ-порта в настройках самого компилятора, то здесь уже надо указывать его в тексте скетча, из которого будет скомпилирована требуемая программа. Т.е. для прошивки контроллера не имеет значения, на каком СОМ-порту он будет в дальнейшем работать (на какой посадят, на том и будет - ему без разницы). Там важно лишь указать компилятору куда ему лить эту прошивку. В случае же с Processing`ом все иначе - здесь формируется программа, которая будет обращаться к одному конкретному порту, и если на нем не окажется требуемого устройства (пусть даже оно и висит на соседнем) - прога просто повиснет, увы... Конечно, сие не есть хорошо. Конечно, наверное можно было бы написать на Си что-нибудь более универсальное и изящное, но учитывая то, что крайний раз перед этим я программировал лет двадцать пять назад в Универе... Да и программа-то это крайне прикладная, так что бороться за ее универсальность было бы нелепо.

     Итак - отметили для себя самое важное: по завершению экспериментов/отладок/доводок перед компиляцией финальной версии программы, выясняем, на каком именно порту будет висеть Ардуина в условиях боевого применения и номер именно этого порта забиваем в строку

port = new Serial(this, "COM4", 115200);

     Еще один существенный момент - программе необходим графический интерфейс. Вдаваться в тонкости его создания здесь - смысла не имеет: особо пытливые по представленной здесь информации могут разобраться в этом сами, для тех  же, кому важен лишь результат - в "Файлах" выложены  исходники (STINGER_S650.rar).

(Небольшую наводку все же дам: эти файлы, RRSkinEditor и листинг скетча - и понять, как все это работает не составит труда Подмигивающий)

      При создании прошивки Арду достаточно было просто скопировать текст скетча в окно компилятора - причем это мог был быть именно текст, хоть из "Блокнота". В случае с компиляцией программы для компа советую все же воспользоваться файлами из архива (откройте Processing`ом файл STINGER_S650.pde - в этом случае графические файлы не будут утеряны программой).

      Ну и наконец - при работе на этом этапе Ардуина должна быть подключена к компу - иначе проверить работоспособность будущей программы не получится. Крайняя левая кнопка запускает программу без компиляции exe`шника, для получения последнего необходимо воспользоваться опцией File/Export Application. В появившемся после этого окне выбирайте ту ОС, под которой будет трудится программа, жмите Ок и после завершения компиляции откроется директория со сформированным исполняемым файлом.

      

 

     P.S. Функцию регулировки громкости динамика РД (на аппаратном уровне) до конца не доделал: с первоначальным замыслом возникли некоторые проблемы, а впоследстви выяснилось, что и не сильно-то она и нужна: посему, вероятнее всего, и заброшу ее реализацию.

 

     Так же необходимо отметить несколько побочных эффектов, возникших в результате работы над этим проектом: при наличии в системе других устройств с мостом FTDI возможны некоторые проблемы... Подозреваю, что в моей подобными оказались адаптер TPMS, OBD-II, и возможно - что-то еще. Во всяком случае, на двух тестовых компах, на которых система писалась и отлаживалась, процесс инитсалляции драйверов Арду прошел без задева. На CarPC же, после аналогичной процедуры, МК не только не подцепился, но еще и перекосил работу БТ-донгла, TPMS и диагностики. Первый и последнюю удалось восстановить, к системе же измерения давления/температуры есть очень серьезные вопросы и по сию пору - с этим предстоит разбираться.

      Так же (не знаю уж, с какого перепугу) что-то нагнулось в работе CityGuide. Связано ли это с понаделанным в рамках этого проекта или нет - будем посмотреть...   Посмотрел - не связано.

 

      P.P.S. Мои благодарности Chip`у и AlexNS с compcar`а - без их помощи и деятельного участия мне едва бы удалось разрулить программные вопросы этого проекта.

 

P.P.P.S. Для тех, кому лень качать все необходимое, но интересно посмотреть на код - приведу пару картинок (к сожалению, осилить корректное встраивание в эту страницу кода с подсветкой синтаксиса и форматированием мне не удалось...):

 Скетч для Arduino:

 

 Скетч для Arduino

 

 

Скетч для Processing`а

 

 Скетч для Processing`а

 

 
Вход/регистрация




Забыли пароль | Регистрация
Регистрация
 
 
 
 
 
Кто на сайте?
Опрос:
Регистрация на сайте

Дорогие друзья! В связи с возросшей активностью забугоргых спаммеров, регистрация на сайте временно приостановлена навсегда. Если по какой-то необъяснимой причине (основной функционал сайта доступен без регистрации) Вы все-таки хотите зарегистрироваться - обращайтесь в личку к админу (админ-собака-название сайта).

  Ну и ладно - не больно-то хотелось
  А зачем вообще нужна регистрация?
  Фига се - методы борьбы со спамом...
 
Содержание сайта © 2008-2024 | При использовании материалов сайта прямая ссылка обязательна!