Активатор сидений от BMW (E70) для бедных)

Greywolf-27
Offline
Зарегистрирован: 16.12.2013

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

Дано: Аrduino Nano - 1шт., Модуль с MCP2512 и кварцем 16MHz (драйвер TJA1050 заменен на TJA1040 ибо Fault Tolerance) - 1шт., RGB светодиод - 2шт., Кнопка тактовая - 2шт.

Скорость CAN 100kbps

Чтобы водительское сиденье "ожило" нужно в CAN постоянно слать два сообщения:

a)ID:130 DLC:5 Data: 45 FE FC FF XX (XX - инкрементный счетчик, шаг 0x01) с периодичностью 100мс

b)ID:4F8 DLC:8 Data: 00 42 FE FF FF FF FF FF с периодичностью 500мс

Чтобы управлять подогревом водительского сидения нужно отправлять состояние кнопки:

c)ID:1E7 DLC:2 Data: YY FF (YY=F0 кнопка не нажата и YY=F1 кнопка нажата) периодичность 500мс

Статус подогрева возвращается:

d)ID:232 DLC:3 Data: ZZ 40 F0 (ZZ=00 отключено, ZZ=30 максимум, ZZ=20 среднее и ZZ=10 минимум) периодичность 3000мс, но при изменении отправляется сразу

По итогу что должно получиться : постоянно шлем (a), (b), (c) и читаем (d) при нажатии кнопки меняем данные в (c) в зависимости от того что получаем в (d) зажигаем зеленый (минимум) красный (максимум) или вместе(среднее) - это что касается водителя, а для пассажира все должно выглядеть так же, но меняем только значение PWM. Переключение циклично выкл->макс->сред->мин->выкл зажатие кнопки более чем на 2сек. отключает (у водительского блока такой алгоритм уже есть)

По пинам пожелания такие D10 - CS, D9 - кнопка водителя, D8 - красный диод водителя, D7 - зеленый диод водителя, D6 - кнопка пассажира, D5 - красный диод пассажира, D4 - зеленый диод пассажира, D3 - PWM на блок подогрева пассажира, D2 - INT

Кто возьмется и во сколько оцените?

P.S. Сам либо не напишу, либо будет жуткий говнокод)))

P.P.S. Значения ШИМ было бы здорово вынести куда-нибудь где их будет легко менять

Greywolf-27
Offline
Зарегистрирован: 16.12.2013

MCP2515 естественно))) 

чтение и отправка прекрасно работает с библиотекой https://github.com/autowp/arduino-mcp2515

sadman41
Offline
Зарегистрирован: 19.10.2016

CAN, так CAN... wrk.sadman@gmail.com

Greywolf-27
Offline
Зарегистрирован: 16.12.2013

Огромное спасибо Григорию (sadman41) за быстро и качественно выполненную работу! Крайне порадовали сроки и запрошенное вознаграждение.

b707
Offline
Зарегистрирован: 26.05.2017

Greywolf-27 пишет:
Огромное спасибо Григорию (sadman41) за быстро и качественно выполненную работу! Крайне порадовали сроки и запрошенное вознаграждение.

мы в нем и не сомневались :)

Бармалей
Бармалей аватар
Offline
Зарегистрирован: 23.09.2019

Он у нас лучший программист. Всегда всё делает хорошо.

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