Mundarija:

Avtomobil stereo adapterining Rulda kaliti (CAN Bus -> Key1): 6 qadam
Avtomobil stereo adapterining Rulda kaliti (CAN Bus -> Key1): 6 qadam

Video: Avtomobil stereo adapterining Rulda kaliti (CAN Bus -> Key1): 6 qadam

Video: Avtomobil stereo adapterining Rulda kaliti (CAN Bus -> Key1): 6 qadam
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Iyul
Anonim
Avtobus hidlashi mumkin
Avtobus hidlashi mumkin

Kalit 1) "src =" https://content.instructables.com/ORIG/F3X/UXCI/KCT3F9KZ/F3XUXCIKCT3F9KZ-p.webp

Stereoga buyruq yuborish
Stereoga buyruq yuborish

Key1) "src =" {{file.large_url | qo'shish: 'auto = webp & frame = 1 & height = 300' %} ">

Eski mashinani sotib olganimdan bir necha kun o'tgach, men telefon stereo orqali telefonimdan musiqa ijro qila olmasligimni aniqladim. Mashinada bluetooth borligi, lekin musiqaga emas, faqat ovozli qo'ng'iroqlarga ruxsat berilgani yanada asabiylashtirdi. Bundan tashqari, u Windows Phone USB portiga ega edi, lekin u 60 dollarlik donglesiz iPhone bilan ishlamaydi.

Oldingi mashinalarimdagi stereolarni almashtirganimdan so'ng, ko'p o'ylamasdan va izlanmasdan, men taniqli "arzon" veb -saytidan 40 dollarlik stereoga buyurtma berdim. Stereo orqaga burilish kamerasi, Car Play va boshqa qo'shimcha funktsiyalar bilan birga kelgan, bu faqat bitta narsani bajaradigan qimmatroq donglega qaraganda ancha yaxshi ko'rinardi.

Yangi old panelni sotib olish va bo'yash, montajni 3D formatida bosib chiqarish va qo'shimcha ishlarni bajarish (o'z -o'zidan ko'rsatma bo'lishi mumkin), men yoqimsiz kashfiyotga keldim. Rulda tugmachalari buyruqlari CAN avtobusi orqali yuborilgan, lekin stereo faqat Key1 kirishiga ega edi. Yarim yo'ldan voz kechish uchun men 60 funtlik adapterga buyurtma berdim, u ishlamay qoldi. Shu payt men o'zim adapter yasashga qaror qildim.

Men muhandis -elektrchi emasman, men faqat elektronika haqida oddiy bilimga egaman va bu men uchun o'rganish va o'rganish loyihasi edi. Mening maslahatim, avvalambor, sizning mashinangizning texnik xususiyatlarini tekshirish va mos keladigan radioga buyurtma berishdir, lekin agar siz hali ham tiqilib qolsangiz (men kabi) o'zingizni xavf -xataringiz bilan ko'rsatmalarga amal qiling.

Ta'minotlar

Adapter (taxminan 15 $)

  • Arduino Pro Mini 5V (yoki mos keladigan taxta)
  • MCP2515 CAN avtobus moduli
  • 60x80 mm kenglikdagi taxta
  • X9C104 raqamli potentsiometr 100K Ohm (sizning stereoingizga bog'liq)
  • DC-DC LM2596S 3-40V 3A pastga tushadigan regulyator
  • Bolal sug'urta ushlagichi + sug'urta (100-200 Ohm)
  • Chop etish uchun loyiha qutisi yoki 3D printer
  • Avtomobil stereo uyasi (erkak + ayol)
  • Lehimlash materiallari, simlar va boshqalar.

Test yordamchilari (kerak emas, lekin testni ancha osonlashtiradi)

  • Arduino (har qanday 5V kuchlanishli karta ishlaydi)
  • MCP2515 CAN avtobus moduli
  • Non paneli + o'tish joylari

1 -qadam: avtobusni hidlash mumkin

Bir nechta tizimlar bir -biriga ulangan holda, sizning mashinangiz ichidan bir nechta simlar o'tishi o'rniga, ba'zi zamonaviy transport vositalarida har bir komponent uchun simlar juftligi bor. Ma'lumotlar ushbu simlar orqali raqamli ma'lumotlar to'plami sifatida yuboriladi va barcha tizimlar barcha xabarlarni o'qiy oladi. Bu CAN avtobus tarmog'i (sizning mashinangizda bir nechta tarmoq bo'lishi mumkin, shuning uchun barcha ma'lumotlar ko'rinmasligi mumkin).

Biz qilmoqchi bo'lgan narsa - CAN avtobus tarmog'iga ulanish va ma'lumotlar oqimini "hidlash". Shunday qilib, biz rulda tugma bosilganda "ko'rishimiz" mumkin. Har bir paketda identifikator mavjud bo'lib, u paketni yuborgan avtomobilning quyi tizimini va tizim holatini bildiruvchi ma'lumotlarni ko'rsatadi. Bunday holda, biz rulda kalit xabarlarini yuboradigan quyi tizim identifikatorini va har bir kalitning ma'lumotlarini topishga harakat qilmoqdamiz.

Agar omadingiz bo'lsa, siz mashinangizning qiymatini Internetdan topishingiz mumkin va bu bosqichni o'tkazib yuborishingiz mumkin.

Bu jarayon biroz ishtirok etadi va boshqa joylarda allaqachon tushuntirilgan, shuning uchun men uni qisqacha bayon qilaman:

  • Avtomobilingizdagi CAN avtobus aloqasi uchun to'g'ri qiymatlarni toping. Mening mashinam uchun (2009 yildagi Fiat Idea) bu 50 kbit / s tezlikda va 8 MGts soat tezligida edi.
  • CAN avtobus moduli va "sniffer" konfiguratsiyasida Arduino yordamida CAN avtobus tarmog'iga ulaning.
  • Noutbukda CAN avtobus qiymatlarini o'qing, masalan, https://github.com/alexandreblin/python-can-monito…. Busiz buni qilish juda qiyin bo'ladi, chunki mashina hech narsa qilmasa ham ko'p xabarlar yuboriladi.
  • Rulda tugmachasini bosing va qiymat o'zgarishiga e'tibor bering. Bu juda qiyin bo'lishi mumkin, chunki ko'plab xabarlar yuboriladi va qaysi biri ekanligini aniqlash qiyin bo'lishi mumkin.

Mana bu jarayonni chuqur tushuntirib beradigan ikkita ajoyib maqola:

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

Oxir -oqibat, biz faqat Rul g'ildiragining CAN avtobus xabarlarini tinglash uchun foydalanadigan quyi tizim identifikatoriga va kalit buyruqlar uchun o'n oltilik qiymatlar ro'yxatiga ega bo'lishingiz kerak. Mening holatimda ma'lumotlar quyidagicha ko'rinardi:

ID | ID Hex | Bayt 0 | Bayt 1 | Tugma

--------------------------------------------- 964 | 3C4 | 00 | 00 | Tugmalar yo'q 964 | 3C4 | 04 | 00 | SRC 964 | 3C4 | 10 | 00 | >> 964 | 3C4 | 08 | 00 | << 964 | 3C4 | 00 | 80 | Telefon 964 | 3C4 | 00 | 08 | ESC 964 | 3C4 | 80 | 00 | + 964 | 3C4 | 40 | 00 | - 964 | 3C4 | 00 | 40 | G'olib 964 | 3C4 | 00 | 02 | Yuqoriga 964 | 3C4 | 00 | 01 | 964 pastda | 3C4 | 00 | 04 | OK

Kichik tizim identifikatori 3C4 (bu holda), bu o'n oltilik raqam, shuning uchun biz uni Arduino eskizlarida 0x3C4 kabi yozishimiz kerak. Bizni 0 va 1 baytlar ham qiziqtiradi (sizning holatingizda ko'proq bayt bo'lishi mumkin). Bu ham o'n oltilik qiymatlar, shuning uchun ular etakchi 0x bilan yozilishi kerak.

Agar siz qiymatlarni ikkilikka aylantirsangiz, bitlar bir -biriga mos kelmasligini sezasiz (masalan + 0b10000000 va - 0b01000000), shuning uchun bir vaqtning o'zida bir nechta tugmachalarni bosish mumkin.

Men "sinov yordamchisi" bo'limida sanab o'tilgan materiallar yordamida snifferni qurishni taklif qilaman, shuning uchun uni keyinchalik mashinangizni simulyatsiya qilish uchun qayta ishlatishingiz mumkin. Bu sizni adapterni qurishda va sinovdan o'tkazishda mashinangizda o'tirishdan qutqaradi. Simulyator vazifasini bajarish uchun taqdim etilgan eskizdan foydalanishingiz mumkin. "SubsystemId", "data0" va "data1" ni siz aniqlagan qiymatlar bilan o'zgartiring.

2 -qadam: Stereoga buyruqlar yuborish

Stereoga buyruq yuborish
Stereoga buyruq yuborish

Adapterni qurishni boshlashdan oldin, stereo buyruqlarni qabul qila oladimi -yo'qligini sinab ko'rish yaxshidir.

Menda zaxira avtomobil akkumulyatori bor edi, shuning uchun men stereoni to'g'ridan -to'g'ri unga uladim. Agar sizda 12V quvvat manbai bo'lsa, undan ham yaxshiroq. Afsuski, men qurilmamdagi Key1 kiritish haqida ko'p ma'lumot topa olmadim, shuning uchun men tajriba o'tkazdim. Men hozircha stereo yoqib yuborilishidan juda xavotirlanmadim, chunki bu nisbatan arzon va bu mening mashinam bilan ishlashga oxirgi urinishim edi.

Stereo buyruqni o'qish ekraniga ega, bu erda ikkita qarshilik qiymatidan birini tanlash mumkin (1K va 3.3K) va "kuchlanish" qiymatini ko'rish (0-255). "Voltaj" chalg'ituvchi bo'lgani uchun keltirilgan. Men ko'p vaqtni Key1 -ga omadsiz har xil kuchlanishni qo'lladim. Men ham omadsiz kuchlanishni qo'llash uchun turli rezistorlardan foydalanishga harakat qildim.

Key1 simini akkumulyator batareyasiga tegizishga urinishim natijasida yutuq paydo bo'ldi, natijada "kuchlanish" 0 ga tushdi. Bu turli rezistorlar bilan birgalikda o'quv ekranida doimiy "kuchlanish" qiymatlarini beradi.

Endi men stereoga kirishni qanday yuborishni bilganim uchun, ularni Arduino -dan yuborish kerak edi. Shu nuqtada, ba'zi rezistorlar bilan bir qatorda, tezroq va ishonchli echim bo'lishi mumkin bo'lgan multipleksorlar haqida eshitmaganman (men buni amalga oshirish mumkinligiga hali amin emasman), shuning uchun men raqamli potentsiometrdan foydalandim. Avvaliga men raqamli qozonni ishga tushirishda muammolarga duch keldim, toki men uni kuchlanish taqsimlagichi o'rniga o'zgarmaydigan qarshilik vazifasini bajarish uchun reostat sifatida ulashim kerakligini tushundim. Men asosan RH va RW terminallarini ulashim kerak edi.

Qarshilikdan tashqari, vaqt juda muhim edi. Agar qarshilik pasayishi juda qisqa bo'lsa, buyruq ro'yxatdan o'tkazilmaydi. Agar u juda uzun bo'lsa, u bir necha bor ro'yxatdan o'tishi mumkin. 240 millimetr pasayish, so'ngra keyingi buyruq mening stereo uchun juda ishonchli ishlaguncha 240 ms kechikish. Bu juda oz vaqtdek tuyulsa -da, biz sekundiga maksimal 2 ta buyruq yuborishimiz mumkin, degani, agar siz ovoz balandligini tezda pasaytirishga harakat qilsangiz. Men turli vaqt va naqshlar bilan o'ynashga harakat qildim, bu tezlikni oshirdi, lekin unchalik ishonchli emas edi. Agar siz buni qanday yaxshilash haqida fikringiz bo'lsa, ularni sharhlarda qoldiring.

Davom etishdan oldin, men sizning stereoingiz bir xil ma'lumotni qabul qilishini tekshirish uchun prototip yaratishni taklif qilaman. Agar u turli xil kuchlanishlarni qabul qilsa ham, adapter simlar va Arduino eskiziga ozgina o'zgartirish kiritib ishlashi kerak.

3 -qadam: Adapterni yaratish

Adapterni qurish
Adapterni qurish
Adapterni qurish
Adapterni qurish
Adapterni qurish
Adapterni qurish

Barcha komponentlarni alohida sinovdan o'tkazib, ularni non panelida sinab ko'rganimizdan so'ng, ularga doimiyroq uy berish vaqti keldi. Komponentlarni yotqizish va lehimlash uchun bir necha soat kerak bo'ldi.

Chap yuqori burchakda avtomobil akkumulyatoridan 12Vni boshqa komponentlar uchun ishlatilishi mumkin bo'lgan 5V ga tushiradigan regulyator joylashgan.

Pastki chapda CAN avtobus moduli joylashgan bo'lib, u avtomobilning CAN avtobus tarmog'idagi qiymatlarni o'qiydi va ularni Arduino -ga uzatadi.

O'ng yuqori burchakda er va stereoning Key1 kirishi o'rtasida o'zgaruvchan qarshilik vazifasini bajaradigan raqamli potansiometr (reostat sifatida simli) joylashgan.

Pastki o'ng burchakda adapterning miyasi vazifasini bajaruvchi Arduino joylashgan bo'lib, u CAN avtobus xabarlarini stereo o'qiladigan qarshiliklarga aylantiradi.

12V kirishda 150mA sigortasi mavjud, bu, ehtimol, kontaktlarning zanglashiga olib kelmaydi, lekin qisqa tutashuvda yong'inni oldini oladi.

4 -qadam: dasturiy ta'minot

Dasturiy ta'minot
Dasturiy ta'minot

Yuklab olgandan so'ng, uchta.ino faylini bitta papkaga joylashtiring. Shunday qilib, hamma bir xil eskizning bir qismi bo'ladi va birgalikda Arudinoga joylashadi.

Arduino IDE -ga kerakli kutubxonalarni qo'shishingiz kerak. Buning uchun quyidagi fayllarni yuklab oling:

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

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

keyin Sketch> Kutubxonani qo'shish> Zip kutubxonasini qo'shish -ga o'ting.

CanBusStereoAdapter.ino

Asosiy sozlash ushbu faylda amalga oshiriladi.

CAN avtobusining asosiy buyrug'i yuqori qismida belgilanadi. Agar sizda meniki bilan bir xil mashina bo'lmasa, o'z qadriyatlaringizni kiritishingizga to'g'ri keladi. Siz o'n oltinchi qiymatlarni snifferdan foydalanishingiz mumkin, men ikkilikni ishlatardim, shuning uchun bitlarda tasodifiy bir -biriga o'xshashlik yo'qligini ko'rish osonroq.

Hamma mashinalarda Rulda -osiyolik buyruqlari bir xil emas, shuning uchun belgilangan qiymatlarni olib tashlash, qo'shish yoki o'zgartirish mumkin.

"STEERING_ID" dagi kichik tizim identifikatorini almashtirishni unutmang.

CanBus.ino

Bu fayl CAN avtobus tinglovchisini o'rnatadi, paketlarni sharhlaydi va qarshilik qiymatlarini dumaloq buferga qo'yadi.

"CANBUS" konfiguratsiyasini "setupCanBus" funktsiyasida mashinangizga moslashtiring.

Biz dumaloq buferdan foydalanamiz, chunki ilgari aytib o'tganimizdek, rul g'ildiragi buyrug'i stereo kirishga qaraganda ancha tezroq. Shunday qilib, biz raqamli potentsiometr o'z vazifasini bajarayotganda hech qanday buyruqni o'tkazib yubormaymiz. Agar biz juda ko'p buyruqlar kiritadigan bo'lsak, eng eskisi bekor qilinadi, chunki ular ahamiyatsiz. Bu bizga bir nechta tugma bosilganda ishni ko'rib chiqish imkonini beradi, chunki stereo kirish bir vaqtning o'zida faqat bitta qiymatni qabul qiladi.

Agar siz "CanBusStereoAdapter.ino" da biron bir buyruq ta'rifini o'zgartirgan bo'lsangiz, ularni "handleMessageData" funktsiyasida ham yangilashingiz kerak bo'ladi. "handleMessageData" CAN avtobusi ma'lumotlar ramkasida bitli VA operatsiyalari yordamida ma'lum buyruqlar mavjudligini tekshiradi.

Misol uchun, agar men bir vaqtning o'zida >> va + tugmalarini bosgan bo'lsam, bu bizga 0b10010000 qiymatli ma'lumotlar ramkasini beradi. >> (mening mashinam uchun) ikkilikda 0b00010000, + esa 0b10000000.

--------------- >> -------------- + ------------- << --- - ma'lumotlar0 | 0b10010000 | 0b10010000 | 0b10010000 buyrug'i | VA 0b00010000 | VA 0b10000000 | VA 0b00001000 natijasi | = 0b00010000 | = 0b10000000 | = 0b00000000

Bu erda, agar ma'lumotlar ramkasida buyruq mavjud bo'lsa, AND operatsiyasining natijasi 0 dan katta bo'lishini ko'rishimiz mumkin. Shunday qilib, biz belgilagan har bir buyruq uchun {data frame} va {command value}> 0 ni tekshirish kifoya.

Shuni yodda tutingki, har bir ma'lumotlar ramkasi turli xil buyruqlarni o'z ichiga oladi, shuning uchun buyruq qiymatlari bir xil bo'lsa, biz ularni o'z ramkalari bo'yicha tekshiramiz. Mening misolimda << va ESC ikkalasi ham bir xil qiymatga ega 0b00001000 (0x08), lekin << ma'lumotlar0da va E1 ma'lumotlar1da.

Buyruq ramkada mavjudligini aniqlagandan so'ng, biz dumaloq buferga raqamli pot qiymatini qo'shamiz. Qiymatlar 0 dan 99 gacha, lekin men stereo tomonidan o'qiladigan "kuchlanish" chiziqli emasligini payqadim, shuning uchun o'zingiz uchun qiymatlarni sinab ko'ring.

DigitalPot.ino

Bu fayl qiymatlarni dumaloq buferdan chiqaradi va ularni bajarish uchun raqamli idishga yuboradi. Mening holatimda "pot.setPotMin (noto'g'ri);" qarshilikni maksimal darajaga ko'taradi, uni stereo maksimal "kuchlanish" deb o'qiydi. Sizning stereo raqamli qozonni minimal darajaga qo'yishingizni talab qilishi mumkin, shuning uchun uni sinab ko'ring.

5 -qadam: Loyihaning yopilishi

Loyihaning yopilishi
Loyihaning yopilishi

Menda 3D printer bor, shuning uchun men adapterim uchun ikki qismli korpusni chop etishga qaror qildim. Men siz tahrir qilishingiz mumkin bo'lgan Fusion 360 faylini va 60x80 mm perfboardga mos keladigan gcode fayllarini qo'shdim.

Agar sizda 3D printerdan foydalanish imkoni bo'lmasa, siz loyihaning tayyor korpusidan yoki mustahkam idishdan foydalanishingiz mumkin.

6 -qadam: Yakuniy fikrlar

Men dastlab adapterni doimiy quvvatga ulanishni rejalashtirganman va CAN avtobusining ba'zi xabarlarida uyg'onishni rejalashtirgandim, chunki mening mashinamda stereo bo'linmasida yonish simlari yo'q. Keyinchalik men bunga qarshi qaror qabul qildim, chunki men mashinadan uzoqda bo'lganimda batareyani zaryadsizlantirish va adapter haqida qayg'urishni xohlamadim. Men otash simini ishga tushirish uchun avtomobil sug'urta qutisi ajratgichidan foydalanardim va adapterni yanada murakkablashtirmasdim.

Mening sinovlarimdan quvvat sarfi 20-30 mA. Men uni uyqu rejimida 10 mA ga tushirdim va LEDlarni komponentlardan olib tashlashim mumkin edi, lekin men bu bilan bezovta qilmaslikka qaror qildim, chunki u faqat mashina ishlayotganda ishlaydi.

Men yakuniy natijadan juda mamnunman. Javob vaqti oqilona va u kamdan -kam buyruqlarni o'tkazib yuboradi.

Vaqt sarmoyam sotiladigan adapterning narxidan ancha katta bo'lsa ham (u ishlamadi), men olgan bilimlar bebahodir.

Tavsiya: