бортовой компьютер на ардуино своими руками для авто

Бортовой компьютер на ардуино своими руками

3a8aa8as 100

Всем одноклубням приветы!)

Появился как-то неожиданно в гараже Днепр МТ-16 и т.к. я только начал вникать в программирование микроконтроллеров то, руки сразу зачесались что-то заколхозить на него) Мной было принято решение сделать бортовой компьютер. Решил, что на дисплее будет отображаться напряжометр, термометр, тахометр и температура с двух бошек.

6OQAAgBlj A 960

Ну чтож руки в ноги и отправился писать код) Спустя некоторое время макетная плата приобрела вид хаоса из проводов.

wKgAAgHlj A 960

bYQAAgBlj A 960

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

TJQAAgFlj A 960

iegAAgIVj A 960

Вроде бы все настроено и работает как надо. Проверил на аппарате. Надо бы сделать корпус для дисплея.

F1QAAgFlj A 960

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

zQAAgFlj A 960

NdgAAgIVj A 960

pLQAAgFlj A 960

KHgAAgIVj A 960

40QAAgIVj A 960

blAAAgCVj A 960

Сделал вот такую плату. Атмегу взял конечно конскую для таких целей))))) Тут бы и 8 хватило) Но задача была все сделать поскорее, хочется кататься) и на тот момент я в основном писал в ардуино ИДЕ.

D QAAgMVj A 960

K2AAAgCVj A 960

c1AAAgCVj A 960

9HAAAgGVj A 960

#include

    // библиотека для дисплея
    #include «max6675.h» // библиотека для термопары

OLED myOLED(SDA, SCL);

extern uint8_t SmallFont[]; // шрифт термометров
extern uint8_t MediumNumbers[]; // шрифт вольтметра
extern uint8_t BigNumbers[]; // шрифт тахометра
extern uint8_t akb[]; // иконка «Аккумулятор»
//extern uint8_t logo[]; // логотип используемый при запуске
extern uint8_t logo2[]; // логотип используемый при запуске

#define volt A1 // пин для вольтметра
#define R1 199.0 // (+) номенал резистора делителя напряжения кОм
#define R2 9.96 // (-) номенал резистора делителя напряжения кОм
#define TMP36 A0 // пин под датчик наружной температуры LM36

#define tachometer 2 // пин тахометра. INTERUPT0

#define thermoDO 5 // пин SO max6675
#define thermoCS_R 6 // пин CS max6675 правая термопара
#define thermoCS_L 8 // пин CS max6675 левая термопара
#define thermoCLK 7 // пин SCK max6675
MAX6675 thermocouple_R(thermoCLK, thermoCS_R, thermoDO); // инициализация правая термопара
MAX6675 thermocouple_L(thermoCLK, thermoCS_L, thermoDO); // инициализация левая термопара

float V, V1, Voltage = 0; // переменная хранящая данные вольтметра
float temp_out; // переменная для наружной температуры
volatile unsigned int RPM = 0; // переменная тахометра
unsigned long tmr1, timer_imp = 0; // переменные для таймеров

void tacho() // Обработчик прерывания от пина INT0
<
RPM=60/((float)(micros()-timer_imp)/1000000); // расчет оборотов
timer_imp=micros(); // засекаем когда был последний импульс
>

void setup()
<
pinMode(volt, INPUT); // пин для вольтметра
pinMode(TMP36, INPUT); // датчик наружной температуры
pinMode(tachometer, INPUT); // пин тахометра
analogReference(INTERNAL); // мерить будем относительно внутреннего опорного напряжения в 1,1в
V = 1.1 / 1024.0 / (R2 / (R1 + R2)); // расчет коэффициента для вольтметра
temp_out = ((analogRead(TMP36) * 1.1 / 1024.0) — 0.5) * 100; // считываем температуру и переводим в градусы
myOLED.begin(SSD1306_128X64); // подключаем дисплей
myOLED.clrScr(); // очищаем дисплей
// myOLED.drawBitmap(30, 0, logo, 64, 64); // рисуем стартовое лого
myOLED.drawBitmap(12, 0, logo2, 100, 63); // рисуем стартовое лого2
myOLED.update(); // выводим все на экран
attachInterrupt(0, tacho, RISING); // устанавливаем прерывания на пине INT0 (D2)
delay(4000); // задержка для стабильности и показа логотипа
>

void loop()
<
Voltage = analogRead(volt) * V; // Вольтметр
if ((micros() — timer_imp) > 300000) RPM = 0; //если сигнала нет больше 300мсек считаем что RPM 0

if (millis() > tmr1) //считываем окружающую температуру по заданному интервалу
<
temp_out = ((analogRead(TMP36) * 1.1 / 1024.0) — 0.5) * 100 ; // считываем температуру и переводим в градусы
tmr1 = millis() + 30000; // задаем интервал 30мс
>

myOLED.clrScr(); // очищаем экран
myOLED.setFont(MediumNumbers); // задаем шрифт MediumNumbers
myOLED.printNumF(Voltage, 1, 18, 0); // пишем напряжение с 1 знаком после запятой. В х0 у0
myOLED.drawBitmap(0, 1, akb, 18, 15); // рисуем иконку аккумулятора
myOLED.drawLine(0, 18, 128, 18); // рисуем верхнюю линию
myOLED.drawLine(0, 48, 128, 48); // рисуем нижнюю линию
myOLED.setFont(SmallFont); // задаем шрифт SmallFont
myOLED.print(«B», 67, 9); // пишем «В» (вольт)
myOLED.print(«RPM», 0, 38); // пишем RPM
myOLED.printNumI(thermocouple_L.readCelsius(), LEFT, 53); // считываем температуру с левой термопары
myOLED.printNumI(thermocouple_R.readCelsius(), RIGHT, 53); // считываем температуру с правой термопары
myOLED.printNumF(temp_out, 1, 95, 0); // пишем наружнюю температуру
myOLED.print(«C», RIGHT, 0); // пишем С (градусы)
myOLED.setPixel(121, 0); // ставим пиксель для обозначения градусов
myOLED.setFont(BigNumbers); // задаем шрифт BigNumbers
myOLED.printNumI(RPM/2/10*10, RIGHT, 21); // пишем обороты с 0 на конце.
myOLED.update(); // выводим все на экран

delay(150); // задержка для стабильности
>

// Generated by : ImageConverter Mono Online
// Generated from : akb.png
// Time generated : Wed, 18 Jan 17 11:27:44 +0100 (Server timezone: CET)
// Image Size : 18×15 pixels
// Memory usage : 33.75 bytes

imagedatatype akb[] PROGMEM=<
0xFC, 0x04, 0x04, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x85, 0x05, 0x05, 0x04, // 0x0010 (16) pixels
0x04, 0xFC, 0xFF, 0xC0, 0xC0, 0xC1, 0xC1, 0xC1, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC3, 0xC1, // 0x0020 (32) pixels
0xC0, 0xC0, 0xC0, 0xFF,
>;

Прошивка залита. Плата спаяна. Дисплей работает. Да вообще все работает) И вот на этом моменте планы резко поменялись. И проект был заброшен из-за отсутствия самого виновника торжества это мотоцикла.((((

Но все же решил выложить работу. Вдруг кому-то из нее что-то пригодится. Код писал очень подробно весь, разберется даже школьник. Да там вроде и ничего особо сложного и нет. Где-то даже слишком примитивно все сделано.
Сначала все немного тормознулось из-за того, что я захотел сделать систему зажигания на МК, потом инжектор вкорячить, параллельно все переписать на Си. Ну вобщем как на современных тачках сделать мозги. И однажды все к херам пошло)

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

Источник

Бортовой компьютер из ARDUINO

881574u 100

66bdcc6s 960

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

Основные отображаемые параметры бортового компьютера:
— Температура двигателя
— Обороты двигателя
— Напряжение бортовой сети
— Скорость
— Расход топлива в час при нулевой скорости
— Расход топлива на 100 км
— Процент открытия дроссельной заслонки

Кроме параметров двигателя дополнительные функции :
— Управление включением вентилятора печки отопителя
— Управление включением/выключением вентилятора радиатора охлаждения на заданных температурах
— Функция АВТОСВЕТ включением/выключением ближнего света в зависимости от освещения на улице
— Яркость подсветки панели приборов
— Температура в салоне
— Часы

Подробнее о некоторых дополнительных функциях:
Управление автовключением вентилятора печки возможно при двух условиях. Если температура в салоне поднялась выше заданного порога( по умолчанию 20С) или двигатель прогрелся выше заданного порога (по умолчанию 70С). Так же можно отключить автовключение печки.

Управление вентилятором радиатора охлаждения двигателя. Насколько я знаю всем не нравится что на инжекторных двигателях семейства ВАЗ температура включения очень высокая (по моему 101С), что часто приводит к закипанию. Данная функция может включить вентилятор при любой заданной температуре в пределах от 90С до 100С, также и выключить его в пределах от 87С до 99С. (По умолчанию установлено включение при 97С, выключение 93С)

Функция автосвет управляет освещением приборной панели и ближним светом с габаритными огнями.
Так при достижении заданного порога освещенности фоторезистора расположенного на лобовом стекле, включается ближний свет и габариты, также притухает подсветка приборки до заданного порога (чтобы ночью не слепить).

Чтобы не колхозить дополнительных кнопок. Управление и настройки бортового компьютера осуществляются поворотом (по часовой/против часовой) кнопки сброса показаний одометра на панеле приборов.

P. S.
Если кому интересно и хотите повторить могу расписать более подробно и помочь в изготовлении. Да, и в схеме, и в плате есть ошибки, так как это был первый макет.

Источник

Бортовой компьютер на Ардуино для Mitsubishi

avatar

Примерно с год назад возникла идея сделать для своего авто БК. Что из этого получилось судить Вам.
БК работает по протоколу MUT (специализированный протокол диагностики Mitsubishi)
Как и планировалось экран БК установлен в окно приборной панели, где ранее была индикация открытой двери. Соответственно индикатор открытой двери добавлен в БК.
БК построен на основе Arduino Pro Mini. Плата была изготовлена по ЛУТ технологии, элементная база: оптопары PC817, мосфет AO4407, драйвер К-линии mc33290/
Возможности БК.
— расчет мгновенного расхода топлива
— расчет расхода топлива за последние 10 км
— расчет общего расхода топлива
— отображение параметров работы двигателя (скорость, обороты, температура ОЖ, РХХ, ДПДЗ, УОЗ, напряжение …)
— измеряет температуру воздуха (внешний датчик 18b20)
— управление ДХО (плавно включает с началом движения, автоматически выключает при включении основного света, коротким включением света позволяет включить/выключить ДХО)
— управление ЦЗ (запирает двери по достижении скорости 20 км/ч)
— индикация низкого уровня омывающей жидкости в бачке омывателя. (установлен датчик уровня).
Плата односторонняя, перемычек нет. Разведена в Sprint-layout 6.0.

Назначение входов/выходов:
Vbat — постоянный «+» от батареи
GND(слева внизу) — постоянный «-«
IGN — «+» при включении зажигания
Door — «-» при открытии дверей
Light — «+» при включении света
DRL+ — выход «+» на питание ДХО
K-line — к диагностическому разъему
LockDoor — к центральному замку, для запирания дверей
water — к датчику уровня жидкости в бачке омывателя
+5v — 5в для датчика температуры DS18B20
GND(справа внизу) — «-» для датчика температуры DS18B20
temp — шина данных датчика температуры DS18B20

Компоненты:
Экран — 1 шт.
Arduino Pro Mini 5 v — 1 шт.
Модуль часов реального времени — 1 шт.
Драйвер К линии mc33290 — 1шт.
Стабилизатор напряжения 78m05 — 1 шт.
Полевой транзистор ao4407 — 2…4 шт.
Оптопары PC817 — 6 шт.
Резисторы 0.25 Вт
Датчик температуры ds18b20 — 1 шт.

На плате предусмотрено место для параллельного соединения полевых транзисторов управляющих ДХО, в зависимости от мощности нагрузки. У меня установлены ДХО суммарной мощностью 6 Вт, на плате распаян только 1 транзистор. Он не греется.
Экраны бывают с красной или черной платой. Они имеют различие в настройке подключаемых библиотек. Я установил черный экранчик, соответственно в представленной библиотеке настройка под него.
Что касается библиотек Adafruit_mfGFX, TFT_ILI9163C то они сильно мною изменены под мои нужды, поэтому скетч компилировать только с ними.

Ссылка на скачиваниеархива содержащего скетч, библиотеки и файл платы.

Источник

H Бортовой компьютер для авто на Arduino своими руками в черновиках Из песочницы

UPD 27.12.2017: Решил дополнить статью что проект был доработан другим пользователем, улучшен скетч в плане автоматической задержки, восстановления связи в случае разрыва соединения и много других нюансов… спасибо. Oleg его почта для вопросов: 2003shef@gmail.com

Его комментарии к переработке:

1.вся проводка и соединение всех модулей и узлов сохранены из первоначального проекта.(кроме подключения блутуз модуля, он теперь на серийном порте «1»)

2.программа жестко заточена под ардуино МЕГА 2560. на серийном порте «0» присутствует Дебаг при условии раскоментирования дефайна.

3.убран параметр задержки между опросами, задержка полностью интелектуальна и динамична, новый запрос не отправится пока не будет получен ответ на предыдущий с учетом таймаута.

4.добавлена функция восстановления связи в случае разрыва соединения (параметром потери связи служит отсутствие оборотов двигателя).

5.для работы требуется библиотека OBD.h вложенная в архив с проектом, этот экземпляр имеет несколько изменений от оригинала который можно скачать из интернета, и без неё скорее всего проект не будет работать или будет нестабилен.
папку нужно скопировать в папку » \Documents\Arduino\libraries»

Android приложение со всеми нюансами в Google Play: OliviaDrive

Мы сможем сделать бортовой компьютер, умеющий считать расход топлива, показывать температуру охлаждающей жидкости, скорость авто, расстояние поездки, потраченный бензин за поездку, обороты двигателя, давление во впускном коллекторе, температуру впускного коллектора, УОЗ, коррекции топлива, вольтаж датчиков кислорода, нагрузку двигателя и многое другое.

fd14863e6acb8f929360683240335730

b954e499bc36a0d0e756579ece677ab8
e955bac70ece4e532dffd13a7b922b89
28acd2c86cf5578ef9c92b9ba1433aaf
d76ffaef81be8e9030c0a14d4c7ec33b
a06d7973d138086a9143554daef84892
b56c8e61b127955d3e03f930b20bf131
f1e6bb48fd4bbfe4593961a012ba10cf

Список требуемых деталей для сборки БК

f46d6a3f79812d749c388902e98d90d3

2) LCD2004 жк-модуль

ffc07bb9f8d4a553ca43d5fb05f4bcee

3) Модуль Bluetooth HC-05

7ce9a82f4f99405793b5ce1b958177d2

4) OBD ELM327 Bluetooth сканер

aa9ee0a7a6a241b3ae05bf7ded289cbe

5) Резистор 10 кОм подстроечный, бипер для звука, 2 кнопки для смены экранов, провода для соединений, корпус

Настройка блютуз модуля HC-05 для работы

Подпаиваем провода к пинам блютуза: (картинку с выходами смотреть в описании требуемых деталей)

7ce9d1f59c654bcea000043cbc014830

#include
SoftwareSerial BTSerial(6, 7); // TX | RX
void setup()
<
Serial.begin(9600);
Serial.println(‘Enter AT commands:’);
BTSerial.begin(38400);
>

void loop()
<
if (BTSerial.available())
Serial.write(BTSerial.read());
if (Serial.available())
BTSerial.write(Serial.read());
>

После успешной загрузки скетча открываем: Сервис->Монитор порта. Далее снизу ставим скорость 9600 бод и NL+CR вместе.

Далее вводим команды по одной и нажимаем [Послать]. После каждого ввода должен быть ответ ok.

AT // (возможно 1 раз вылетит Error, не пугайтесь… это нормально, повторите опять)
AT+NAME=Car //Присваиваем имя модулю Car
AT+ROLE=1 // Переводим модуль в режим Мастер
AT+PSWD=1234 // Ставим пароль 1234 как на OBD ELM327
AT+BIND=AABB,CC,112233 //Прописываем Mac адрес OBD ELM327.
AT+CMODE=1 // Подключение модуля с фиксированным адресом
AT+UART=9600,0,0 // Скорость работы по UART

Заметьте, что mac-адрес вида: «AA:BB:CC:11:22:33» вводится как «AABB,CC,112233». MAC- адрес своего модуля ELM327 можете посмотреть, подключившись для начала на него со своего мобильника. (Стандартные пароли обычно: 1234, 6789, 0000).

Всё, настройка модуля Bluetooth закончена.

Теперь нужно собрать схему Arduino + блютуз + LCD-экран

Схема:
30a8f03420f34a58a5c0d028e6f1a049

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

3. Подключаем дополнительную кнопку для переключения экранов с данными.

[1 кнопка]: один конец от нормально-открытой кнопки подключаем в GND ардуино, а второй конец в пин 10.
[2 кнопка]: GND + пин 9.

Бипер для звуковых предупреждений подключить по следующей схеме «+» к пину 13, а минус к GND ардуино.

Заливаем скетч в Arduino с помощью Aduino IDE 1.0.6 (использовал эту версию).

Единственное, в скетче присутствуют переменные, которую нужно подправить.

Нужно будет обязательно учесть три переменных:

1) ED=1.998 Например объем двигателя в литрах 1.398;
2) VE_correct=1.0; Корректировка объёмного КПД ДВС по таблице: (если расход реально меньше — то уменьшаем значение в процентном соотношении). Если не хотите калибровать добейтесь чтобы при прогретом двигателе мгновенный расход в л/час был в районе половины обьема двигателя;
5)speed_korrect_val=1; Корректировка скорости машины, смотреть по GPS/

Управление

[Кнопка 1], [кнопка 2] — листать экран вперед назад.
При включении при надписи «Connecting»… держать [кнопку 1] вход в режим показывания технологических экранов и параметров отдаваемых ЭБУ в 16-чном формате. Если будете включать БК не в машине то нужно отключить функцию опроса блютуз, надо продолжать держать две кнопки при надписи «Recovery»… до появлении надписи «All off»… а то экран будет все время пустой.

[Кнопка 1] + [кнопка 2]: 4 секунды — Сброс журнала общего пробега и потраченного бензина на втором экране, также это сброс ошибок на экране информации об ошибках.

Скетч:

Старый скетч был удален в плане многих дефектов в работе… новая версия по ссылке вверху статьи… он был доработан пользователем Oleg, спасибо ему большое. его почта для вопросов: 2003shef@gmail.com

Все, идем в машину, вставляем ELM327 в порт, ардуину в зарядку для авто и проверяем.

Источник

Эксперименты с Arduino. Часть 1. Бортовой компьютер

ce05f2as 100

8b3ga2s 960

Как вы помните, предыдущую запись в своем блоге про круиз-контроль я закончил фотографией, на которой были запечатлены компоненты моей будущей игрушки. Следующие 2 недели я провел за изучением абсолютно новой для себя сферы, и стоит сказать наперед, что давно я так ничем не увлекался…
Не буду кривить душой, я всего несколько раз в своей жизни за 30 лет паял проводки и почти ничего не понимал в электронике на предметном уровне. Сам я по профессии программист, имею прикладное математическое образование. Программирование полюбил еще с детства, когда отец (ведущий инженер-электронщик, работающий на закрытом военном НИИ) принес нам домой собранную собственноручно вариацию популярного в 80-х — 90-х компьютера ZX-Spectrum. Отец подключил его к телевизору и показал простейшие команды на встроенном в Спектрум языке Бейсик — как заливать цветом экран телевизора, как рисовать круги, прямоугольники, овалы и прочее. Мне было 5 лет, был 90-й год и все это казалось безумно интересными вещами. Вот тогда я просто стал бредить компьютерными играми. Кто в теме, тот наверное помнит потрясающую ауру загрузки игр с кассет, помнит незабываемый скрипучий звук и медленно появляющееся изображение заставки игры. А игры… до сих пор скучаю по той атмосфере необычности некоторых игрушек, часы, проведенные за игрой Elite, которая дала огромный толчок к развитию космических симуляторов… Эта сфера так сильно меня очаровала, что свою первую игру я написал в 11 лет на языке Logo, который изучают в младших классах для «вдалбливания» основ программирования малолетним чадам. В то время как остальные рисовали простейшие фигуры, учили циклы, рекурсии меня влекло создание компьютерных игр. На зимних каникулах была написана игра-стратегия «Сечь» о запорожских казаках, которые отбивают землю у поляков и турков ) Потом футбольный симулятор, оболочку наподобие Norton Commander (помните такое? )))). Затем любовь к футбольному клубу Шахтер сподвигла на написание футбольного менеджера клуба и с этой игрой я уже ездил на Всеукраинскую Малую Академию Наук, что помогло затем поступить в универ на бюджет… Уже студентом я выбрал для себя Java как главный язык программирования и узнал, что на нем можно писать мобильные игры. А дальше пошло как по накатанной. Я был молод, у нас с моей будущей женой были общие интересы, она неплохо рисовала, мне хотелось что-то делать, мою игру заметили, позвали работать в большую как для студента компанию в Украине, а уж тем более в Донецке. Спустя год пошла переквалификация в веб-программиста и в данной сфере остаюсь и поныне.

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

Поставив почти все, что можно найти в Украине и не только на нашу машину, стал думать, а что еще можно сделать. И тут мой взгляд зацепился за Ардуино и я понял, это оно )

38aff22s 960

Если вы еще не слышали об Arduino, то вот вам маленький ликбез с офиц. сайта:

Arduino — это платформа с открытым исходным кодом, созданная для быстрой и легкой разработки разнообразных электронных устройств. Ардуино может получать данные об окружающем мире благодаря датчикам и реагировать, управляя светом, моторчиками и другими приводами. Микроконтроллер на плате программируется с помощью языка программирования Arduino и среды разработки Arduino. Для программирования не требуется программатор, программа зашивается через порт USB. Для начала работы понадобится только сама плата Arduino и компьютер с установленной средой разработки Arduino.

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

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

c9ff22s 960

А именно модуль Bluetooth HC-5, LCD экран 20×4, платку Arduino Uno, макетку и кучу перемычек. Ну а потом пошло-поехало ) Нашелся старый паяльник, отец прислал припой, инструменты, на местном радио рынке были куплены корпус, коннекторы, провода, кнопки и прочая хрень, на которую раньше просто не обращал внимания )

Остановимся немного на проекте. Проект представляет собой устройство, которое без проводов подсоединяется к бортовой сети машины через диагностический разъем OBD-II. Вы спросите, а чем родной то не устраивает? ) А я вам отвечу, а вы сможете в родной компьютер запихнуть новые функции, которые ограничиваются лишь вашей фантазией? ) Расход, скорость и пройденный путь это хорошо, но этого мало. Я знаю одного человека, который перепрограммировал родную приборку на пунто и смог выводить туда все, что хочет используя OBD и CAN. Но своим ноу хау он не захотел делиться. Также вы спросите, а как же твоя диагностика по wifi? Будете правы, все тоже самое я могу смотреть со своего айфона. Но вот, а если я хочу добавить что-то свое? Программу на айфоне я не переделаю, а тут свободное поле для творчества. При этом телефон при связи по wifi греется и быстро расходует заряд аккумулятора. А телефон, сами знаете, может сесть в самый неподходящий момент. Поэтому автономное удобно расположенное устройство, которые при необходимости покажет полезную информацию по машине в том виде, в каком я сам захочу — очень полезный в хозяйстве инструмент. А уж тем более — это отличный полигон для изучения новой для меня сферы, а также замечательный плацдарм для дальнейшего тюнинга.

Первой сложностью для меня стала настройка модуля блютуза:

67bga2s 960

Данная модель умеет работать в двух режимах master/slave, и чтобы она без пароля подсоединялась к адаптеру Bluetooth ELM 327 нужно было прописать в нее с помощью AT-команд MAC-адрес адаптера и перевести в режим master. Пару слов о bluetooth адаптере ELM 327. Как вы помните у меня стояла на постоянке wife версия ELM 327. Однако проект был заточен под bluetooth, поэтому встал вопрос поиска донгла. В современных донецких условиях это нереально. Поэтому окольными путями в ближайшем селе Селидово был куплен такой вот красивый донгл:

64080a2s 960

Удобной его фишкой является автоотключение от питания и наличие кнопки включения/выключения. Забегая вперед скажу, что вырезав небольшое отверстие в крышке обшивки удалось очень удобно расположить адаптер в диагностическом разъеме и иметь возможность быстро его включать/выключать:

bc880a2s 960

Далее взяв ноут с виндой удалось найти MAC-адрес адаптера и добавить его в модуль блютуз для ардуино:

c3880a2s 960

Далее пошло подключение экрана и прочих компонентов:

dc480a2s 960

В коробке из-под конфет конструкция была отнесена в машину и был получен первый болт ) Блютузы обиделись друг на друга и не хотели упорно видеть попытки спариться ) Пришлось обратиться к автору проекта, попробовать одну штуку. Однако не помогло. Далее просто повторил инициализацию HC-05 по новой и о чудо, моя шайтан-коробка заработала )))

Пришел момент самого интересного ) Поиск корпуса. На местном радиорынке купил недорогую коробочку. И вот тут началось мучение — как аккуратно вырезать дыру под LCD экран. Сами понимаете опыта у меня нет, инструментов нет, ничего нет ) Пришлось кумекать:

1. Первым делом потренировался «на кошечках» ). Врезал кнопку включения/выключения (будет использоваться во второй части рассказа)

5fc80a2s 960

b6280a2s 960

Но лиха беда начало ) Это были только цветочки. Далее в ход пошла тяжелая артиллерия:

Источник

Поделиться с друзьями
Remonta.top
Добавить комментарий