Реверс-инжиниринг шины LIN на системе E-bike
В качестве проекта я пытаюсь "взломать" старый электронный велосипед. Электронная система велосипеда состоит из:
- Датчик крутящего момента, измеряющий деформацию задней части кузова.
- Датчик "вращения" измеряет, крутит ли человек педали.
- Батарейный блок с BMS
- Регулятор скорости внутри ступичного двигателя.
- Дисплей для управления скоростью, освещением и отображением информации о расстоянии и т.д.
Из исследований я пришел к выводу, что датчики, dislay и регулятор скорости взаимодействуют через LIN, потому что у них есть приемопередатчик ATA6661 LIN, и все они подключены параллельно по проводам VS, LIN и GND. Когда я включаю регулятор скорости сам по себе, я вижу некоторую связь LIN на осциллографе:
У меня нет приемопередатчика LIN для регистрации данных, но я подключил приемопередатчик USB-TTL к uart-стороне приемопередатчика LINtransceiver. Из моего осциллографа а сделал вывод, что скорость передачи данных составляет 9600 бод. Я использовал termite для прослушивания моего последовательного порта и установил его на шестнадцатеричный вид. Вот что у меня получилось:
Я не уверен, должен ли я изменить количество битов или битов четности.
Моя цель-понять посылаемые кадры и определить, какой кадр содержит какие сенсорные данные или приводит к определенному действию. Когда я сравниваю это с проектом CANbus, который я делал, было довольно легко, например, определить, какая команда управляет левым окном моего автомобиля, потому что с can-utils (candump) Я мог видеть каждый пакет. Я мог бы фильтровать неизмененные пакеты, и он цветокодировал, какие биты в каждом пакете недавно изменились.
Любые советы/идеи о том, как это сделать для LINbus?
@Sven Onderbeke, 👍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
Если вы используете контроллер "go swissdrive" (я смотрю на картинку), то использовался протокол bikebus (bulls green mover), а в более поздних версиях дисплей linbus (e-technology, Alber и т. Д.) Является ведущим, моторным и bms-ведомым .. Удачи :)
- Как работает последовательная связь на Arduino?
- Можно ли изменить официальную библиотеку шилдов arduino GSM для работы с аппаратным serial на mega?
- Нужен пример того, как отправлять КОМАНДЫ AT на модуль SIm7000E GPS+LTE из ESP32 и читать эти ответы в последовательном мониторе
- Нет данных, полученных на последовательном порту, и невозможно выполнить сброс DFU. Совет?
- Серийный номер аппаратного/программного обеспечения для HC-05
- Arduino Mega Loopback Test с несколькими портами TX/RX
- Что случилось с моим Arduino?
- Как разделить входящую строку?
Я ничего не знаю о ЛИНЕ, но спецификация приемопередатчика должна рассказать вам, как он взаимодействует по последовательному каналу. Затем вы сможете извлечь пакеты 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