05.05.2017, 09:51 | #1 |
Новый Пользователь
Регистрация: 29.08.2012
Регион: Беларусь
Машина: BMW E39
Сообщений: 16
|
BMW e39 ibus управление фарами
Сделал управление по шине ibus управление всеми фарами автомобиля BMW E39 рестайлинг. Сделано на Arduino + mcz33290. Управление морганием фар с кнопок руля R/T , Dial и открытие , закрытие. Если будет интерес выложу полный исходник.
Проблема в том что необходимо использовать скорость 9600 и проверку четности 8E1. В некоторых arduino есть хардварные порты и они поддерживают это. Но я использовал arduino nano и софтварный порт. Поэтому пришлось искать выход из ситуации. В результате поиска нашел библиотеку CustomSoftwareSerial которая поддерживала нужный функционал. Код:
Инициализация порта: #include <CustomSoftwareSerial.h> CustomSoftwareSerial* IBusSerial; Serial.begin(9600); IBusSerial = new CustomSoftwareSerial(8, 9); IBusSerial->begin(9600,CSERIAL_8E1); iBus mcz33290 подключена к 8 и 9 pin (Rx,Tx). Далее отправляем полный пакет {0x3F, 0x0F, 0xD0, 0x0C,0x00, 0x00, 0x00, 0x00}; //первая чаcть пакета byte lowBeamRight[5] = {0x00, 0x20, 0x00, 0x00, 0x00}; //Фара ближнего света правая {0xC8, 0xFF, 0x00}; //последняя часть пакета Ну и отправляем пакет в шину: void sendMessage(byte message_data[], byte messageLength) { byte message_cksum = gen_cksum(message_data,messageLength); for (int k = 0; k < messageLength; k++) { IBusSerial->write(message_data[k]); } IBusSerial->write(message_cksum); } byte gen_cksum(byte _PacketData[], int PacketLength) { byte _CheckSumByte = 0x00; for (int i = 0; i < PacketLength; i++) _CheckSumByte ^= _PacketData[i]; return _CheckSumByte; } Пакет который гасит все фары: byte AllOff2[16] = {0x3F, 0x0F, 0xD0, 0x0C,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0xC8, 0xFF, 0x00}; В общем между включением фары и выключение можно ставить необходимую задержку. Пакеты для всех фар (мне не жалко,:bye: все было слоггированно своей прогой): byte AllOff[5] = {0x00, 0x00, 0x00, 0x00, 0x00}; //выключить все фары byte lowBeamRight[5] = {0x00, 0x20, 0x00, 0x00, 0x00}; //Фара ближнего света правая byte lowBeamLeft[5] = {0x00, 0x10, 0x00, 0x00, 0x00}; //Фара ближнего света левая byte highBeamLeft[5] = {0x40, 0x00, 0x00, 0x00, 0x00}; //фара дальнего света левый byte highBeamRight[5] = {0x20, 0x00, 0x00, 0x00, 0x00}; //фара дальнего света правый byte backTurnLeft[5] = {0x00, 0x00, 0x80, 0x00, 0x00}; //Указатель поворота задний левый + боковой byte backTurnRight[5] = {0x00, 0x00, 0x00, 0x02, 0x00}; //Указатель поворота задний правый + боковой byte frontTurnLeft[5] = {0x00, 0x00, 0x00, 0x40, 0x00}; //Указатель поворота передний левый byte frontTurnRight[5] = {0x00, 0x00, 0x40, 0x00, 0x00}; //Указатель поворота передний правый byte StopLeft[5] = {0x08, 0x00, 0x00, 0x00, 0x00}; //Стоп-сигнал левый byte StopRight[5] = {0x10, 0x00, 0x00, 0x00, 0x00}; //Стоп-сигнал правый byte StopCenter[5] = {0x00, 0x00, 0x10, 0x00, 0x00}; //Стоп-сигнал средний byte fogLeft[5] = {0x00, 0x04, 0x00, 0x00, 0x00}; //Противотуманные фара левая передняя byte fogRight[5] = {0x00, 0x40, 0x00, 0x00, 0x00}; //Противотуманные фара правая передняя byte fogLeftBack[5] = {0x00, 0x00, 0x00, 0x04, 0x00}; //Противотуманные фара левая задняя byte fogRightBack[5] = {0x00, 0x80, 0x00, 0x00, 0x00}; //Противотуманные фара правая задняя byte parkingBackLeft[5] = {0x00, 0x00, 0x08, 0x00, 0x00}; //задний габаритный фонарь левый byte parkingBackRight[5] = {0x00, 0x00, 0x00, 0x10, 0x00}; //задний габаритный фонарь правый byte parkingLeft[5] = {0x00, 0x01, 0x00, 0x00, 0x00}; //передний габаритный фонарь левый + (глазки левые) byte parkingRight[5] = {0x00, 0x00, 0x20, 0x00, 0x00}; //передний габаритный фонарь правый + (глазки правые) byte reverseLeft[5] = {0x00, 0x08, 0x00, 0x00, 0x00}; //задний ход левый byte reversRight[5] = {0x00, 0x00, 0x00, 0x80, 0x00}; //задний ход правый byte backlightLeft[5] = {0x00, 0x00, 0x04, 0x00, 0x00}; //подсветка номера byte backlightRight[5] = {0x00, 0x00, 0x00, 0x00, 0x04}; //подсветка номера Последний раз редактировалось admin; 05.05.2017 в 11:15. |
05.05.2017, 09:55 | #2 |
Новый Пользователь
Регистрация: 29.08.2012
Регион: Беларусь
Машина: BMW E39
Сообщений: 16
|
Это аналог modlight или elight bmw. Типа того.(Сделал сам). Видео не мое. Надо,сниму
https://www.youtube.com/watch?v=RjrwodjuqLU https://www.youtube.com/watch?v=UETog7W-0N4 |
13.05.2017, 11:24 | #3 |
Новый Пользователь
Регистрация: 21.10.2010
Возраст: 37
Регион: 63, 163
Сообщений: 12
|
Привет! а мог бы ты как то реализовать несколько функций? Необходимо получить из шины ibus сигнал о состоянии открытых дверей, багажника. и падать сигнал в шину чтобы закрывать и открывать двери?
|
15.05.2017, 12:22 | #4 |
Новый Пользователь
Регистрация: 29.08.2012
Регион: Беларусь
Машина: BMW E39
Сообщений: 16
|
Ну можно
PHP код:
|
21.07.2017, 19:27 | #5 | |
Новый Пользователь
Регистрация: 21.07.2017
Регион: 40
Сообщений: 1
|
Цитата:
Хочу сделать адаптер мультируля для нештатной магнитолы E39, но уже неделю не могу прочитать машину и разобраться где ошибка(чип не так подключён/бракованный или косяк в коде ардуино). |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|