Агуулгын хүснэгт:

Машины стерео адаптерийн жолооны хүрдний түлхүүр (CAN Bus -> Key1): 6 алхам
Машины стерео адаптерийн жолооны хүрдний түлхүүр (CAN Bus -> Key1): 6 алхам

Видео: Машины стерео адаптерийн жолооны хүрдний түлхүүр (CAN Bus -> Key1): 6 алхам

Видео: Машины стерео адаптерийн жолооны хүрдний түлхүүр (CAN Bus -> Key1): 6 алхам
Видео: I Went to a RUSSIAN LADA Dealership: What did I Find? 2024, Долдугаар сарын
Anonim
CAN автобусны үнэр үнэртэж байна
CAN автобусны үнэр үнэртэж байна

Түлхүүр1) "src =" https://content.instructables.com/ORIG/F3X/UXCI/KCT3F9KZ/F3XUXCIKCT3F9KZ-p.webp

Стерео руу тушаал илгээх
Стерео руу тушаал илгээх

Түлхүүр1) "src =" {{file.large_url | нэмэх: 'auto = webp & frame = 1 & height = 300' %} ">

Хуучин машин худалдаж авснаас хойш хэд хоногийн дараа би машиныхаа стерео дамжуулалтаар утсаараа хөгжим тоглож чадахгүй байгаагаа олж мэдэв. Машин нь Bluetooth -тэй байсан ч зөвхөн дуут дуудлага хийхийг зөвшөөрдөг байсан нь хөгжим биш харин ч илүү бухимдуулдаг байв. Энэ нь мөн Windows Phone USB порттой байсан боловч 60 долларын түлхүүргүй iPhone -тэй ажиллахгүй.

Өмнөх машинуудынхаа стерео төхөөрөмжийг сольж, нэг их юм бодсонгүй, сайн судлаагүй болохоор сайн мэдэх "хямдхан" вэбсайтаас 40 доллараар солих стерео захиаллаа. Стерео нь ухрах камер, Car Play болон бусад нэмэлт функцуудтай ирсэн бөгөөд энэ нь зөвхөн нэг зүйлийг хийдэг үнэтэй гогцооноос хамаагүй илүү үнэ цэнэтэй юм шиг санагдсан.

Шинэ нүүрний хавтанг худалдаж аваад будаж, бэхэлгээг 3D хэлбэрээр хэвлэж, маш олон нэмэлт ажил хийсний дараа (энэ нь өөрөө сургамжтай байж магадгүй юм) би тааламжгүй нээлт хийв. Жолооны хүрдний түлхүүрүүдийг CAN автобусаар дамжуулдаг боловч стерео нь зөвхөн Key1 оролттой байдаг. Хагас замаар бууж өгөх хүн биш тул би 60 фунт стерлинг адаптер захиалсан нь ажиллахгүй болсон. Энэ үед би өөрөө адаптер хийхээр шийдсэн.

Би цахилгаан инженер биш, би электроникийн анхан шатны мэдлэгтэй бөгөөд энэ бол миний хувьд сурах, судлах төсөл байсан. Миний зөвлөгөө бол эхлээд тээврийн хэрэгслийнхээ онцлогийг шалгаж, тохирох радио захиалах явдал юм, гэхдээ хэрэв та аль хэдийн гацчихсан бол (миний байсан шиг) зааварчилгааг дагаарай.

Хангамж

Адаптер (ойролцоогоор 15 доллар)

  • Arduino Pro Mini 5V (эсвэл нийцтэй самбар)
  • MCP2515 CAN автобусны модуль
  • 60x80 мм хэмжээтэй самбар
  • X9C104 дижитал потенциометр 100K Ом (таны стерео хувилбараас хамаарна)
  • DC-DC доош чиглүүлэгч LM2596S 3-40V 3A
  • Кабелийн гал хамгаалагч + гал хамгаалагч (100-200 Ом)
  • Төслийн хайрцаг эсвэл 3D принтерээр хэвлэх
  • Машины стерео залгуур (эрэгтэй + эмэгтэй)
  • Гагнуурын хангамж, утас гэх мэт.

Туршилтын туслахууд (тийм ч их шаардлагагүй боловч тестийг илүү хялбар болгох болно)

  • Arduino (ямар ч 5V самбар хийх болно)
  • MCP2515 CAN автобусны модуль
  • Талхны самбар + холбогч

Алхам 1: Автобусны үнэр үнэрлэх

Орчин үеийн зарим машинууд машиныхаа дотор талыг тойрч, олон системийг хооронд нь холбож байхын оронд хэсэг бүрийг хос утсаар холбодог. Мэдээллийг эдгээр утсаар дижитал өгөгдлийн пакет болгон илгээдэг бөгөөд бүх систем бүх мессежийг унших боломжтой. Энэ бол CAN автобусны сүлжээ (таны машинд олон сүлжээ байж болох тул бүх мэдээлэл харагдахгүй байж магадгүй).

Бидний хийхийг хүсч буй зүйл бол CAN автобусны сүлжээнд холбогдож, өгөгдлийн урсгалыг "үнэрлэх" явдал юм. Ийм байдлаар бид жолооны хүрдний товчлуурыг дарахад "харж" чадна. Пакет бүрт пакет илгээсэн тээврийн хэрэгслийн дэд систем, системийн төлөвийг илэрхийлсэн өгөгдөл байдаг. Энэ тохиолдолд бид жолооны хүрдний түлхүүрийн мессежийг илгээдэг дэд системийн ID болон түлхүүр бүрийн өгөгдлийн дүрслэлийг олохыг хичээж байна.

Хэрэв та азтай бол та машиныхаа үнэ цэнийг онлайнаар хайж олох боломжтой бөгөөд энэ алхамыг алгасаж болно.

Энэ үйл явц нь бага зэрэг оролцдог бөгөөд бусад газруудад аль хэдийн тайлбарласан байгаа тул би үүнийг тоймлон хэлье.

  • Машин дээрх CAN автобусны харилцааны зөв утгыг олоорой. Миний машины хувьд (2009 оны Fiat Idea) энэ нь 50KBPS хурд, 8MHz цаг хурдтай байв.
  • CAN автобусны сүлжээнд CAN bus модуль болон Arduino ашиглан "sniffer" тохиргоонд холбогдоно уу.
  • Https://github.com/alexandreblin/python-can-monito… гэх мэт хэрэгслийг ашиглан зөөврийн компьютер дээрээ CAN автобусны утгыг уншаарай. Машин юу ч хийхгүй байсан ч гэсэн маш их мессеж илгээдэг тул үүнийг хийхгүйгээр хийх нь маш хэцүү байх болно.
  • Жолооны хүрдний товчлуурыг дарж, утгын өөрчлөлтийг анхаарч үзээрэй. Олон мессеж илгээгддэг тул энэ нь жаахан төвөгтэй байж магадгүй бөгөөд аль нь болохыг ойлгоход хэцүү байж магадгүй юм.

Энд үйл явцыг гүнзгий тайлбарласан хоёр гайхалтай нийтлэл байна:

  • https://medium.com/@alexandreblin/can-bus-reverse-…
  • https://www.instructables.com/id/CAN-Bus-Sniffing-…

Эцэст нь та зөвхөн жолооны хүрдний CAN автобусны мессежийг сонсохын тулд ашигладаг дэд системийн ID, түлхүүр командын арван зургаатын утгуудын жагсаалттай байх ёстой. Миний хувьд өгөгдөл дараах байдлаар харагдаж байна.

ID | ID Hex | Байт 0 | Байт 1 | Товч

-------------------------------------------- 964 | 3C4 | 00 | 00 | Товчлуур байхгүй 964 | 3C4 | 04 | 00 | SRC 964 | 3C4 | 10 | 00 | >> 964 | 3C4 | 08 | 00 | << 964 | 3C4 | 00 | 80 | Утас 964 | 3C4 | 00 | 08 | ESC 964 | 3C4 | 80 | 00 | + 964 | 3C4 | 40 | 00 | - 964 | 3C4 | 00 | 40 | 964 хожих | 3C4 | 00 | 02 | 964 дээш | 3C4 | 00 | 01 | Доош 964 | 3C4 | 00 | 04 | БОЛЖ БАЙНА УУ

Дэд системийн ID нь 3С4 (энэ тохиолдолд) бөгөөд энэ нь арван зургаатын тоо бөгөөд бид үүнийг Arduino -ийн ноорог дээр 0x3C4 шиг бичих ёстой. Бид бас 0 ба 1 байтуудыг сонирхож байна (таны хувьд илүү байт байж магадгүй). Эдгээр нь мөн арван зургаатын утгууд тул тэдгээрийг 0x тэргүүлэгчээр бичих ёстой.

Хэрэв та утгыг хоёртын формат руу хөрвүүлбэл битүүд хоорондоо давхцахгүй байгааг анзаарах болно (жишээлбэл + 0b10000000 ба - 0b01000000), ингэснээр олон товчлуурыг нэгэн зэрэг дарах боломжтой болно.

Би "туршилтын туслах" хэсэгт жагсаасан материалаар үнэртүүлэгч бүтээхийг санал болгож байна, ингэснээр та машинаа дуурайхын тулд үүнийг дараа нь дахин ашиглаж болно. Энэ нь таныг адаптер бүтээх, турших явцад машиндаа байнга суухаас хэмнэх болно. Та симуляторын үүргийг гүйцэтгэхийн тулд ноорог зургийг ашиглаж болно. "SubsystemId", "data0", "data1" -г олж авсан утгуудаараа өөрчилнө үү.

Алхам 2: Стерео руу тушаал илгээх

Стерео руу тушаал илгээх
Стерео руу тушаал илгээх

Адаптер бүтээж эхлэхээсээ өмнө стерео команд хүлээн авах боломжтой эсэхийг шалгах нь зүйтэй.

Надад сэлбэг машины зай байсан болохоор стерео төхөөрөмжийг шууд холбосон. Хэрэв танд 12 В -ийн дээд тэжээлийн эх үүсвэр байгаа бол бүр ч сайн. Харамсалтай нь би төхөөрөмж дээрх Key1 оролтын талаар тийм ч их мэдээлэл олж чадаагүй тул туршилт хийхээр шийдлээ. Стерео нь харьцангуй хямд байгаа тул би шатаахад хэт их санаа зовсонгүй, энэ бол миний машинтай ажиллах хамгийн сүүлчийн оролдлого байсан юм.

Стерео нь команд сурах дэлгэцтэй бөгөөд хоёр эсэргүүцлийн утгын аль нэгийг (1K ба 3.3K) сонгож, "хүчдэл" утгыг (0-255) харах боломжтой. "Хүчдэл" -ийг төөрөгдүүлж байгаа тул иш татсан болно. Би аз завшаангүйгээр Key1 -д өөр өөр хүчдэл ашиглахад маш их цаг зарцуулсан. Би хүчдэлийг ашиглахын тулд янз бүрийн резистор ашиглахыг оролдсон.

Би Key1 утсыг батерейны газар руу хүрэхийг оролдсоны үр дүнд "хүчдэл" 0 болж буурсан. Энэ нь өөр өөр резистортой хослуулан сургалтын дэлгэц дээр "хүчдэл" -ийн утгыг тогтмол өгөх болно.

Одоо би стерео руу оролт хэрхэн илгээхээ мэддэг болсон тул тэдгээрийг Arduino -аас илгээх арга хэрэгтэй болсон. Энэ үед би зарим резистортой хамт илүү хурдан бөгөөд илүү найдвартай шийдэл байж болох мултиплексорын талаар сонсоогүй (энэ нь боломжтой эсэхийг би одоо хүртэл сайн мэдэхгүй байна), тиймээс дижитал потенциометрийг ашигласан. Эхэндээ дижитал тогоог ажиллуулахад асуудалтай байсан бөгөөд хүчдэл хуваагчийн оронд хувьсах эсэргүүцлийн үүрэг гүйцэтгэхийн тулд реостат болгон холбох хэрэгтэйг олж мэдсэн. Үндсэндээ би RH ба RW терминалуудыг холбох ёстой байсан.

Эсэргүүцэхээс гадна цаг хугацаа чухал үүрэг гүйцэтгэсэн. Хэрэв эсэргүүцлийн уналт хэт богино байвал тушаалыг бүртгэхгүй. Хэрэв энэ нь хэтэрхий урт байвал хэд хэдэн удаа бүртгүүлж болно. 240м -ийн уналт, дараа нь дараагийн команд нь миний стерео дээр найдвартай ажиллах хүртэл 240м -ийн саатал. Энэ нь маш бага хугацаа мэт санагдаж байгаа ч энэ нь бид секундэд дээд тал нь 2 командыг илгээх боломжтой гэсэн үг бөгөөд хэрэв та дууны түвшинг хурдан дээшлүүлэхийг хүсч байгаа бол мэдэгдэхүйц юм. Би янз бүрийн цаг, загвараар тоглохыг хичээсэн нь хурдыг нэмэгдүүлсэн боловч тийм ч найдвартай биш байсан. Хэрэв танд үүнийг хэрхэн сайжруулах талаар санаа байгаа бол тэдгээрийг сэтгэгдэл дээр үлдээнэ үү.

Цааш үргэлжлүүлэхийн өмнө би таны стерео ижил төрлийн оролтыг хүлээн авч байгаа эсэхийг шалгахын тулд прототип бүтээхийг санал болгож байна. Өөр өөр хүчдэлийг хүлээн авсан ч адаптер нь утас болон Arduino -ийн ноорог дээр бага зэрэг өөрчлөлт хийх ёстой.

Алхам 3: адаптер бүтээх

Тохируулагчийг бүтээх
Тохируулагчийг бүтээх
Адаптер бүтээх
Адаптер бүтээх
Тохируулагчийг бүтээх
Тохируулагчийг бүтээх

Бүх бүрэлдэхүүн хэсгүүдийг тусад нь туршиж, талхны тавцан дээр туршиж үзсэний дараа тэдэнд илүү байнгын байшин өгөх цаг болжээ. Энэ нь бүрэлдэхүүн хэсгүүдийг байрлуулах, гагнах ажилд хэдэн цаг зарцуулсан.

Зүүн дээд буланд машины батерейгаас 12 В -ийг бусад бүрэлдэхүүн хэсгүүдэд ашиглах боломжтой 5 Вт болгон бууруулдаг зохицуулагч байдаг.

Зүүн доод буланд машины CAN автобусны сүлжээний утгыг уншиж, Arduino руу дамжуулдаг CAN автобусны модуль байдаг.

Баруун дээд буланд дижитал потенциометр (реостатаар холбогдсон) байрладаг бөгөөд энэ нь стерео -ийн Key1 оролтын хооронд хувьсах эсэргүүцэл болдог.

Баруун доод буланд адаптерийн тархи болж ажилладаг CAN автобусны мессежийг стерео уншдаг эсэргүүцэл болгон хувиргадаг Arduino байдаг.

12V оролт дээр 150 мА хэмжээтэй гал хамгаалагч байдаг бөгөөд энэ нь хэлхээг хамгаалахгүй байх магадлалтай боловч богино холболт гарсан тохиолдолд гал гарахаас урьдчилан сэргийлэх боломжтой юм.

Алхам 4: Програм хангамж

Програм хангамж
Програм хангамж

Татаж авсны дараа.ino файлуудыг бүгдийг нь нэг хавтсанд хийнэ. Ингэснээр бүгд нэг ноорогны нэг хэсэг болж, Арудинод хамтдаа байрлуулах болно.

Та мөн шаардлагатай номын санг Arduino IDE дээр нэмэх хэрэгтэй. Үүнийг хийхийн тулд дараах файлуудыг татаж авна уу.

github.com/autowp/arduino-mcp2515/archive/…

github.com/philbowles/Arduino-X9C/archive/…

дараа нь Sketch> Номын сан оруулах> Зип номын сан нэмэх хэсэгт очиж хоёуланг нь нэмээрэй.

CanBusStereoAdapter.ino

Энэ файлд үндсэн тохиргоог хийдэг.

CAN автобусны түлхүүр командыг дээд талд тодорхойлсон болно. Надтай адилхан машингүй л бол та өөрийнхөө үнэ цэнийг оруулах хэрэгтэй болно. Та арван хоёртын утгыг sniffer -аас ашиглаж болно, би хоёртын файлыг ашигласан тул битүүдэд санамсаргүй байдлаар давхцал үүсэхгүй байгааг харахад хялбар болно.

Бүх машинууд жолооны хүрдтэй ижил командтай байдаггүй тул тодорхойлсон утгыг хасах, нэмэх, засах боломжтой.

"STEERING_ID" дэх дэд системийн id -ээ солихоо бүү мартаарай.

CanBus.ino

Энэ файл нь CAN автобусны сонсогчийг тохируулж, пакетуудыг тайлбарлаж, эсэргүүцлийн утгыг дугуй буферт оруулдаг.

CAN автобусны тохиргоог "setupCanBus" функцээр машиндаа тохируулан тохируулна уу.

Өмнө дурьдсанчлан жолооны хүрдний командын оролт нь стерео оролтоос хамаагүй хурдан байдаг тул бид дугуй буфер ашигладаг. Дижитал потенциометр үүргээ гүйцэтгэж байх үед бид ямар ч тушаалыг алдахгүй. Хэрэв бид хэт олон командыг оруулбал хамгийн ахмад нь хамгийн чухал биш тул эхлээд устгагдах болно. Энэ нь стерео оролт нь зөвхөн нэг утгыг хүлээн авдаг тул олон товчлуур дарагдсан тохиолдолд хэргийг зохицуулах боломжийг бидэнд олгодог.

Хэрэв та "CanBusStereoAdapter.ino" дээрх тушаалын тодорхойлолтыг өөрчилсөн бол тэдгээрийг "handleMessageData" функц дээр шинэчлэх шаардлагатай болно. "handleMessageData" нь өгөгдсөн CAN автобусны өгөгдлийн хүрээ нь бит болон AND үйлдлийг ашиглан мэдэгдэж буй командуудын аль нэгийг агуулсан эсэхийг шалгадаг.

Жишээлбэл, хэрэв би >> ба + товчлуурыг нэгэн зэрэг дарсан бол энэ нь бидэнд 0b10010000 утгатай өгөгдлийн хүрээг өгөх болно. >> (миний машины хувьд) хоёртын форматаар 0b00010000, + нь 0b10000000 байна.

--------------- >> -------------- + ------------- << --- - өгөгдөл0 | 0b10010000 | 0b10010000 | 0b10010000 тушаал | БА 0b00010000 | БА 0b10000000 | БА 0b00001000 үр дүн | = 0b00010000 | = 0b10000000 | = 0b00000000

Эндээс харахад хэрэв өгөгдлийн хүрээ дээр тушаал байгаа бол AND үйлдлийн үр дүн 0 -ээс их байх болно. Тиймээс бидний хийх ёстой зүйл бол бидний тодорхойлсон тушаал бүрийн хувьд {data frame} & {command value}> 0 байгаа эсэхийг шалгах явдал юм.

Өгөгдлийн хүрээ бүр өөр өөр команд агуулдаг гэдгийг санаарай, тиймээс бид тэдгээрийг өөрсдийн хүрээгээр шалгаж байгаа тул командын утга ижил байвал зүгээр юм. Миний жишээн дээр << болон ESC хоёулаа хоёулаа ижил утгатай 0b00001000 (0x08), гэхдээ << нь өгөгдөлд 0, ESC нь өгөгдөлд байна1.

Хүрээнд тушаал байгаа гэдгийг тодорхойлсны дараа бид дугуй буферт дижитал тогооны утгыг нэмнэ. Утга нь 0 -ээс 99 хооронд хэлбэлздэг боловч стерео уншдаг "хүчдэл" нь шугаман биш гэдгийг анзаарсан тул утгыг өөртөө туршиж үзээрэй.

DigitalPot.ino

Энэ файл нь дугуй буфераас утгыг гаргаж, тэдгээрийг дижитал саванд илгээдэг. Миний хувьд "pot.setPotMin (худал);" стерео хамгийн их "хүчдэл" гэж унших эсэргүүцлийг хамгийн дээд хэмжээнд хүртэл нэмэгдүүлэх болно. Таны стерео дижитал савыг хамгийн бага хэмжээнд байлгахыг шаардаж магадгүй тул үүнийг туршиж үзээрэй.

Алхам 5: Төслийн хашлага

Төслийн хашлага
Төслийн хашлага

Надад 3D принтер байгаа тул би адаптертаа зориулж хоёр хэсэг бүхий хаалт хэвлэхээр шийдлээ. Би танд засварлаж болох Fusion 360 файл болон 60x80 мм хэмжээтэй перфбордонд тохирох gcode файлуудыг оруулсан.

Хэрэв танд 3D принтер ашиглах боломж байхгүй бол та бэлэн төслийн хашлага эсвэл бат бөх сав ашиглаж болно.

Алхам 6: Эцсийн бодол

Миний машин стерео тасалгаанд гал асаах утас байхгүй тул би адаптерийг тогтмол тэжээлд холбож, CAN автобусны зарим мессежийг сэрээхээр төлөвлөж байсан. Би машинаас хол байхдаа батерейгаа цэнэггүй болгож, адаптерийн талаар санаа зовохыг хүсээгүй тул үүнийг эсэргүүцсэн. Би гал асаах утсыг ажиллуулахын тулд машины гал хамгаалагчийн хайрцгийг задлагч ашиглан адаптерийг улам хүндрүүлэх шаардлагагүй болсон.

Миний туршилтаас харахад эрчим хүчний хэрэглээ 20-30 мА байна. Би үүнийг унтраах горимд 10 мА хүртэл бууруулсан бөгөөд LED -ийг бүрэлдэхүүн хэсгүүдээс нь салгаснаар үүнээс ч доогуур байх болно, гэхдээ энэ нь зөвхөн машин ажиллаж байх үед л ажиллах тул санаа зовохгүй байхаар шийдсэн.

Эцсийн үр дүнд би үнэхээр сэтгэл хангалуун байна. Хариу өгөх хугацаа нь боломжийн бөгөөд команд тушаах нь ховор байдаг.

Хэдийгээр миний цаг хугацааны хөрөнгө оруулалт нь худалдаанд байгаа адаптерийн үнээс хамаагүй их байсан (энэ нь ажиллахгүй байсан), миний олж авсан мэдлэг үнэлж баршгүй юм.

Зөвлөмж болгож буй: