У многих есть старые мобильные телефоны, которые лежат дома без дела. Однако им еще можно найти хорошее применение. Например, установить устаревший смартфон в салон автомобиля, где он будет выполнять функцию бортового компьютера (выводить данные системы управления двигателем, показывать, расшифровывать ошибки, сбрасывать их и пр.). Рассказываем, как доработать конструкцию телефона своими руками.
Советом поделился один из владельцев Lada Granta ( kumaxx ), который решил использовать свой старый смартфон Philips Xenium W3568 в качестве бортового компьютера (БК).
Потребуется:
- Мобильный телефон (на ОС Android) с установленным ПО (например, OpenDiag или Torque Pro ).
- ELM327 адаптер (купить на Ali), который нужно установить в OBD-II разъем машины.
- Плата DC-DC преобразователя, понижающего напряжение до 3.7В.
- Ионистор.
- Кабель питания от USB (выбирайте относительно толстый, т.к. телефон при старте потребляет приличный ток).
Порядок действий:
Бортовой компьютер из смартфона
1. Снять аккумулятор телефона.
2. Определить на смартфоне, какой контакт (+) и какой (-). В данном случае 4 контакта: (+), (-), (датчик температуры) и (ID).
3. Срезать с аккумулятора плату контроллера и подключаются через нее. Если этого сделать не удается, тогда придется имитировать два дополнительных контакта, используя сопротивление. Необходимые сопротивление для подключения к этим контактам было подоброно опытным путем (было замерено сопротивление между доп.контактами и землей).
4. Подать на контакты штатные 3.7 вольта и используем резисторы.
5. На место аккумулятора устанавливаем плату DC-DC преобразователя, понижающего напряжение до 3.7В. К нему же подпаиваем необходимые резисторы.
6. Для того чтобы телефон не выключался в моменты краткосрочного пропадания питания (работа стартера, либо заглушение двигателя), необходимо установить в батарейный отсек ионистор.
7. Выводим наружу уже готовый провод с USB разъемом, который подключим в USB розетку в машине.
8. Смартфон-БК размещаем в удобном месте. Теперь, используя ПО, подключаемся к ЭБУ автомобиля через ELM327.
Бортовой Компьютер Своими Руками
А вы будете использовать смартфон в машине в качестве БК?
- Как сделать сброс и инициализацию ЭБУ, обучить кнопки на руле
- Выбираем лучший бортовой компьютер Лада Гранта, Калина, Приора
Источник: xn--80aal0a.xn--80asehdb
Хакаем CAN шину авто. VAG диагностический бортовой компьютер
С огромным увлечением исследую протоколы CAN шины и разрабатываю устройства взаимодействующие с автомобилем. У меня уже есть голосовое управление центральным замком, виртуальная панель приборов и даже мобильное приложение для моей Skoda Octavia A5.
Теперь я решил разработать диагностический бортовой компьютер для автомобилей группы VAG (VW, Audi, Skoda, Seat). Моими техническими требованиями было: OLED дисплей, лёгкая установка и подключение, множество диагностических параметров. В качестве компонентной базы выбрал:
- STM32F103C8T6 — дешёвый МК с поддержкой CAN шины на отладочной плате
- 2,8″ OLED 256*64 — дисплей с достаточным количеством точек на драйвере SSD1322
- SN65HVD230DR — CAN приёмопередатчик с питанием 3.3 В
- Mini-360 — импульсный регулируемый понижающий DC-DC стабилизатор напряжения на чипе MP2307
Процесс разработки разбил на 3 этапа и каждый из этапов принёс мне кучу нового опыта и удовольствия:
- Разработка печатной платы в Proteus
- Разработка прошивки для STM32
- Разработка корпуса из акрила
▍ Разработка печатной платы в Proteus
Первая рабочая версия была собрана на макетке за один вечер и ещё день потребовался для выяснения, что приёмопередатчику для функционирования нужна перемычка (Rs — GND), которая включает режим HIGH SPEED MODE:
На всякий случай оставлю свои заметки здесь из даташита на SN65HVD230DR.
Убедившись, что на макетной плате всё работает, я перешёл к разработке печатной платы в Proteus 8. Можно было бы все компоненты дисплея и Blue Pill перенести на одну плату, но я поленился так много паять, для первой версии и так сойдёт!
Изготовление печатной платы заказывал в Seeedstudio, потому что дёшево и отличное качество. Помимо напайки компонентов приходится ещё дорабатывать напильником, таков путь.
Конечно в первой версии трудно всё продумать, но не предусмотреть кнопку ВЫКЛЮЧЕНИЯ, для этого нужен талант. Устройство подключается в OBD2 разъём, в котором всегда присутствует напряжение 12 В. Придётся теперь скальпелем дорабатывать печатную плату, чтобы установить тумблер включения. Хотя возможно имеет смысл сделать включение/выключение на программном уровне, определяя, что двигатель заведён по CAN шине или повышенному напряжению бортовой сети.
▍ Разработка прошивки для STM32
Это мой первый опыт работы с STM32, но каких-то сложностей я пока не испытал. Разработку веду в STM32CubeIDE, код решил писать на Си и так как я новичок в этом деле, то отказываться от HAL не стал, хотя в процессе разработки осознал его избыточность. После выпуска стабильной прошивки займусь оптимизацией и погружусь в изучение STM32 более серьёзно, чтобы исключить HAL и уменьшить размер прошивки.
В бортовом компьютере самое главное это отображаемые диагностические параметры. Для компьютерной диагностики моей Skoda Octavia я использую автомобильный сканер VCDS.
Если подслушать сниффером, как VCDS общается с машиной по CAN шине, то можно воспроизвести протокол в моём бортовом компьютере. Более подробно я рассказывал как исследую CAN шину в прошлой статье.
В машинах группы VAG выпущенных с 2004 по 2012 год для диагностики двигателя и коробки передач используется протокол либо TP2.0 (KWP2000), либо UDS, на машинах после 2012 только UDS.
UDS очень удобный для программиста протокол, длина CAN фрейма всегда 8 байт, запрос состоит из одного фрейма и ответ, чаще всего тоже из одного фрейма. А в TP2.0 применяется несколько проверок целостности пакета, но зато TP2.0 обращается к группе параметров и за один запрос можно получить до 4 различных параметров.
На экране бортового компьютера отображаются 4 параметра, это оптимальное количество по нескольким причинам: а) полная группа TP2.0; б) видны пропуски зажигания всех 4-х цилиндров сразу; в) элементы оптимального размера. Точный список параметров, которые будет показывать прибор, я ещё не сформировал, но есть параметры, которые очень важны:
- Уровень масла в двигателе
- Наддув турбины (реальный)
- Наддув турбины (ожидаемый)
- Пропуски зажигания в цилиндрах
- Углы откатов зажигания в цилиндрах
- Температура коробки передач DSG/AISIN
▍ Разработка корпуса из акрила
Пообщавшись с сообществом автолюбителей на drive2.ru поступило предложение сделать бескорпусное устройство, тогда каждый желающий сможет вмонтировать его куда угодно, например в воздуховод. Но я всё-таки решил сделать корпус, мне кажется не все захотят модифицировать салон своей машины:
Первым делом я попытался найти готовую коробочку, но в нужных размерах и близко ничего не было. Напечатанный на 3D принтере корпус из ABS мне не понравился. Я решил попробовать нарезать лазером корпус из чёрного оргстекла, получилось красиво и производство штучных экземпляров недорогое, порядка 500р за корпус:
Корпус легко разборный, поэтому при желании можно извлечь плату с дисплеем и установить её в воздуховод.
В комплекте с бортовым компьютером идёт кабель подключения в OBD2 разъём. На Ali заказал компактный OBD2 штекер, но он оказался не очень удобным. Отверстие для кабеля у штекера сбоку, из-за этого его неудобно вытаскивать из разъёма, но я модифицировал корпус штекера надфилем, чтобы кабель выходил сзади и получилось то что нужно:
К прибору кабель подключается XH2.54 разъёмом. Сначала я припаивал пины к проводам, но после нескольких дней тестирования они благополучно отвалились. Тогда я открыл для себя кримпер с губками SN-2549 (SN28B + SN01BM). Использование этого инструмента принесло множество положительных эмоций, как легко и красиво им можно делать разъёмы! Теперь не понимаю, как я жил без него раньше, это супер удобная и супер необходимая вещь в хозяйстве электронщика:
Как говорит Джорж из «Свинка Пеппа»: Динозаврррррррррр!
▍ Заключение
Разработка ещё продолжается, но 80% работы уже сделано. Есть много идей по функциям устройства, например, пищать при превышении заданных значений, запоминать максимальные значения, активировать скрытые функции. Если вам интересен проект, есть замечания и предложения, то я с удовольствием выслушаю.
Прилагаю видео с демонстрацией работы VAG диагностического бортового компьютера:
ОБНОВЛЕНО 19.12.2021
В статье я задавался вопросом, как лучше организовать функцию включения/выключения. Я рассматривал 3 варианта: физический тумблер, уход в сон при отключении CAN шины, уход в сон при проседании напряжения ниже 12.5В. Но в комментариях мне подсказали, что на ВАГах в OBD2 разъем на контакт №1 заведена «клемма 15», которая дает питание только при заведённом автомобиле. В OBD2 разъёме первый контакт это OEM контакт и каждый производитель сам задаёт его функцию. Для питания бортового компьютера буду использовать «клемму 15».
Скриншот из Wikipedia
ОБНОВЛЕНО 13.01.2022
Настал момент, когда прошивка перестала помещаться в 64Кб. И я решил выяснить нет ли у моего чипа дополнительной недокументированной FLASH памяти. В интернетах пишут, что изначально чип идет со 128Кб, а 64Кб получается в результате отбраковки.
Для проверки запускаем STM32CubeProgrammer и пытаемся сначала записать, а затем прочитать последний байт из 128Кб по адресу 0x801FFF0. Как видно на скриншоте, мне это удалось и я могу попробовать воспользоваться дополнительной FLASH памятью. Нет гарантий, что все блоки памяти рабочие, поэтому после заливки прошивки её нужно заново считать и сравнить с оригиналом.
STM32CubeIDE не знает, что можно использовать 128Кб FLASH памяти и при попытке заливки ругается на избыточный размер прошивки. При сборке проекта в логе я заметил конфигурационный файл STM32F103C8TX_FLASH.ld. В нём я заменил 64K на 128K и чудо! Прошивка залилась и даже работает.
- Блог компании RUVDS.com
- Программирование микроконтроллеров
- Гаджеты
- DIY или Сделай сам
- Автомобильные гаджеты
Источник: habr.com