Реверс-инжиниринг шины LIN на системе E-bike

В качестве проекта я пытаюсь "взломать" старый электронный велосипед. Электронная система велосипеда состоит из:

  • Датчик крутящего момента, измеряющий деформацию задней части кузова.
  • Датчик "вращения" измеряет, крутит ли человек педали.
  • Батарейный блок с BMS
  • Регулятор скорости внутри ступичного двигателя.
  • Дисплей для управления скоростью, освещением и отображением информации о расстоянии и т.д.

Из исследований я пришел к выводу, что датчики, dislay и регулятор скорости взаимодействуют через LIN, потому что у них есть приемопередатчик ATA6661 LIN, и все они подключены параллельно по проводам VS, LIN и GND. Когда я включаю регулятор скорости сам по себе, я вижу некоторую связь LIN на осциллографе: LIN communication

У меня нет приемопередатчика LIN для регистрации данных, но я подключил приемопередатчик USB-TTL к uart-стороне приемопередатчика LINtransceiver. Из моего осциллографа а сделал вывод, что скорость передачи данных составляет 9600 бод. Я использовал termite для прослушивания моего последовательного порта и установил его на шестнадцатеричный вид. Вот что у меня получилось:

serial communication

Я не уверен, должен ли я изменить количество битов или битов четности.

Моя цель-понять посылаемые кадры и определить, какой кадр содержит какие сенсорные данные или приводит к определенному действию. Когда я сравниваю это с проектом CANbus, который я делал, было довольно легко, например, определить, какая команда управляет левым окном моего автомобиля, потому что с can-utils (candump) Я мог видеть каждый пакет. Я мог бы фильтровать неизмененные пакеты, и он цветокодировал, какие биты в каждом пакете недавно изменились.

Любые советы/идеи о том, как это сделать для LINbus?

, 👍2

Обсуждение

Я ничего не знаю о ЛИНЕ, но спецификация приемопередатчика должна рассказать вам, как он взаимодействует по последовательному каналу. Затем вы сможете извлечь пакеты LIN из последовательного потока., @chrisl

пожалуйста, разместите захваченную последовательную связь в виде текста, а не в виде картинки, @jsotola

Где в этом Arduino?, @Majenko

это может вам помочь ... в 1:32 ... https://m.youtube.com/watch?feature=youtu.be&t=92&v=tu8Ow6fJm1g, @jsotola

@chrisl Ну, трансивер-это как переводчик, он переводит uart в LIN и наоборот. Я не понимаю разговора и не выбираю, насколько быстрым будет общение (baudrate). Кроме того, я проверил данные (http://www.farnell.com/datasheets/1678261.pdf). В любом случае спасибо, что приложили усилия, чтобы помочь мне!, @Sven Onderbeke

@jsotola Да, вы правы, это было бы более полезно. Однако мне не удалось зарегистрировать шестнадцатеричные значения трафика (кажется, он всегда регистрирует значения ascii). Но завтра я скопирую его из программы в программу и изменю здесь :), @Sven Onderbeke

@Majenko Действительно, я понимаю, что это еще не проект "Arduino". Моя цель-в конце концов прикрепить Arduino, чтобы посылать определенные команды LIN для подделки моих датчиков., @Sven Onderbeke

@jsotola Да, спасибо, я видел видео. К сожалению, у меня нет доступа к осциллографу с декодированием does LIN. Но это хорошее видео, чтобы узнать, что имеет значение (LIN version, baudrate, ...), @Sven Onderbeke

мой комментарий касается трассировки сигнала на экране осциллографа, а не самого осциллографа, @jsotola

@SvenOnderbeke Mhh, из того, что я только что прочитал, LIN, по крайней мере, похож на UART с разными уровнями напряжения и протоколом, наложенным на поток данных. Я бы попытался найти отдельные пакеты в потоке данных, который вы захватили. Глядя на захваченные данные, байты `0xfdfe " кажутся мне подозрительными., @chrisl

Вы добились какого-либо прогресса с этим проектом? Я знаю, что мы возвращаемся на несколько лет назад. Поскольку дисплеи Go SwissDrive становятся редкими, я изучаю обратную разработку коммуникаций bikebus. Я думаю, что это уже было сделано раньше, YouMo взяли на себя поддержку SwissDrive, и они рекламируют блок приемопередатчика для взаимодействия с альтернативными дисплеями bafang, такими как SW-102, но они не будут их продавать. Надеюсь, мне удастся заснять часть трансляции с работающего мотоцикла., @Ryan Sieber


2 ответа


2

В качестве стартового пункта я бы подключил ваш rigol ds1054z через usb к sigrok https://sigrok.org/wiki/PulseView это позволит вам регистрировать дамп и анализировать кадры lin . Он имеет декодер кадров для протокола LIN. Это должно дать вам отличное представление о том, что проходит по шине lin и какой ведомый PID вызывать . Оттуда вы можете использовать macchina.cc для связи через lin или использования https://github.com/macchina/LIN с arduino due и трансивером lin. Чирз

,

Спасибо, Бернард! Похоже, это именно тот ответ, на который я надеялся! Я пойду и опробую их. Спасибо за вашу помощь!, @Sven Onderbeke


2

Если вы используете контроллер "go swissdrive" (я смотрю на картинку), то использовался протокол bikebus (bulls green mover), а в более поздних версиях дисплей linbus (e-technology, Alber и т. Д.) Является ведущим, моторным и bms-ведомым .. Удачи :)

,