Активатор сидений от BMW (E70) для бедных)
- Войдите на сайт для отправки комментариев
Есть некоторые владельцы разных корчей, которые себе ставят сидения от 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. Значения ШИМ было бы здорово вынести куда-нибудь где их будет легко менять
MCP2515 естественно)))
чтение и отправка прекрасно работает с библиотекой https://github.com/autowp/arduino-mcp2515
CAN, так CAN... wrk.sadman@gmail.com
Огромное спасибо Григорию (sadman41) за быстро и качественно выполненную работу! Крайне порадовали сроки и запрошенное вознаграждение.
мы в нем и не сомневались :)
Он у нас лучший программист. Всегда всё делает хорошо.
Там у нас есть книга благодарностей. Напишите и туда, чтобы все знали.