Mündəricat:
- Təchizat
- Addım 1: CAN Avtobus Qoxusu
- Addım 2: Stereoya əmr göndərmək
- Addım 3: Adapterin qurulması
- Addım 4: Proqram təminatı
- Addım 5: Layihənin Mühafizəsi
- Addım 6: Son Düşüncələr
Video: Avtomobil Stereo Adaptörünün Sükan Açarları (CAN Bus -> Açar1): 6 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:43
Açar1) "src =" https://content.instructables.com/ORIG/F3X/UXCI/KCT3F9KZ/F3XUXCIKCT3F9KZ-p.webp
Açar1) "src =" {{file.large_url | əlavə et: 'auto = webp & frame = 1 & height = 300' %} ">
Köhnə maşın aldıqdan bir neçə gün sonra, telefon stereo vasitəsilə telefonumdan musiqi çala bilməyəcəyimi kəşf etdim. Maşında bluetooth olması, ancaq musiqiyə deyil, yalnız səsli zənglərə icazə verilməsi daha da sinir bozucu idi. Windows Phone USB portu da var idi, ancaq 60 dollarlıq dongle olmadan iPhone ilə işləməzdi.
Əvvəlki maşınlarımdakı stereoları çox düşünmədən və araşdırmadan dəyişdirərək, tanınmış "ucuz" bir veb saytından 40 dollarlıq bir stereo sifariş etdim. Stereo, geri çəkilən bir kamera, Car Play və yalnız bir şey edən daha bahalı dongle -dan daha yaxşı bir dəyər kimi görünən bir çox əlavə xüsusiyyətlə gəldi.
Yeni bir üzlük lövhəsi aldıqdan və rənglədikdən, montajı 3D çap etdikdən və bir çox əlavə iş gördükdən sonra (öz -özünə öyrədilə bilər) xoşagəlməz bir kəşfə gəldim. Sükan düymələri əmrləri CAN avtobusu vasitəsilə göndərildi, ancaq stereo yalnız Key1 girişinə sahib idi. Yarım yoldan vaz keçə bilməyəcəyim üçün işləmədiyi ortaya çıxan 60 funt sterlinqlik bir adapter sifariş etdim. Bu nöqtədə özüm bir adapter etmək qərarına gəldim.
Mən elektrik mühəndisi deyiləm, yalnız elektronika haqqında ilkin məlumatlara sahibəm və bu mənim üçün bir öyrənmə və kəşfiyyat layihəsi idi. Məsləhətim, əvvəlcə nəqliyyat vasitənizin xüsusiyyətlərini yoxlamaq və uyğun bir radio sifariş etmək olardı, amma əgər artıq ilişib qalmısınızsa (mənim kimi) öz riski ilə təlimatları izləyin.
Təchizat
Adapter (təxminən 15 $)
- Arduino Pro Mini 5V (və ya uyğun bir lövhə)
- MCP2515 CAN avtobus modulu
- 60x80 mm ölçülü lövhə
- X9C104 rəqəmsal potensiometr 100K Ohm (stereodan asılıdır)
- DC-DC LM2596S 3-40V 3A aşağı tənzimləyicisi
- Kabel qoruyucu tutucu + qoruyucu (100-200 Ohm)
- Çap etmək üçün layihə qutusu və ya 3D printer
- Avtomobil stereo prizləri (kişi + qadın)
- Lehim materialları, tellər və s.
Test köməkçiləri (ciddi ehtiyac yoxdur, amma testi çox asanlaşdıracaq)
- Arduino (istənilən 5V lövhə edəcək)
- MCP2515 CAN avtobus modulu
- Çörək taxtası + tullananlar
Addım 1: CAN Avtobus Qoxusu
Bir dəstə sistemi bir -birinə bağlayan avtomobilinizin içərisində bir dəstə tel keçmək əvəzinə, bəzi müasir avtomobillərdə hər bir komponentə gedən cüt tel var. Məlumat bu tellər vasitəsilə rəqəmsal məlumat paketləri olaraq göndərilir və bütün sistemlər bütün mesajları oxuya bilir. Bu CAN avtobus şəbəkəsidir (avtomobilinizdə birdən çox şəbəkə ola bilər, buna görə də bütün məlumatlar görünə bilməz).
Etmək istədiyimiz, CAN avtobus şəbəkəsinə qoşulmaq və məlumat trafikini "iyləmək". Bu şəkildə sükan düyməsinə basıldığında "görə bilərik". Hər bir paketin, paketi göndərən avtomobilin alt sistemini və sistemin vəziyyətini əks etdirən məlumatları əks etdirən bir identifikatoru var. Bu vəziyyətdə, sükan düymələri mesajlarını göndərən alt sistemin kimliyini və hər bir açarın məlumat təqdimatını tapmağa çalışırıq.
Şanslıysanız, avtomobilinizin dəyərlərini onlayn bir yerdə tapa bilərsiniz və bu addımı atlaya bilərsiniz.
Bu proses bir az əlaqəlidir və artıq başqa yerlərdə izah edilmişdir, buna görə onu ümumiləşdirəcəyəm:
- Avtomobilinizdə CAN avtobus əlaqəsi üçün doğru dəyərləri tapın. Avtomobilim üçün (2009 -cu il Fiat Idea) 50KBPS baud dərəcəsi və 8MHz saat sürəti idi.
- CAN bus modulundan və "sniffer" konfiqurasiyasında bir Arduino istifadə edərək CAN avtobus şəbəkəsinə qoşulun.
- Https://github.com/alexandreblin/python-can-monito… kimi bir vasitədən istifadə edərək dizüstü kompüterinizdəki CAN avtobus dəyərlərini oxuyun. Onsuz bunu etmək çox çətin olacaq, çünki avtomobil heç nə etməsə belə bir çox mesaj göndərilir.
- Sükan düyməsini basın və dəyər dəyişikliyini qeyd edin. Bir çox mesaj göndərildiyindən bu bir az çətin ola bilər və hansının olduğunu anlamaq çətin ola bilər.
İşi dərindən izah edən iki böyük məqalə:
- https://medium.com/@alexandreblin/can-bus-reverse-…
- https://www.instructables.com/id/CAN-Bus-Sniffing-…
Sonda yalnız sükan çarxının CAN avtobus mesajlarını dinləmək üçün istifadə edəcəyimiz alt sistem identifikatoruna və əsas əmrlər üçün onaltılıq dəyərlərin siyahısına sahib olmalısınız. Mənim vəziyyətimdə məlumatlar belə görünür:
ID | ID Hex | Bayt 0 | Bayt 1 | Düymə
--------------------------------------------- 964 | 3C4 | 00 | 00 | Düymələr yoxdur 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 | Qazan 964 | 3C4 | 00 | 02 | Yuxarı 964 | 3C4 | 00 | 01 | Aşağı 964 | 3C4 | 00 | 04 | tamam
Alt sistem identifikatoru 3C4 -dir (bu vəziyyətdə), onaltılıq bir rəqəmdir, buna görə də Arduino eskizlərində 0x3C4 kimi yazmalıyıq. 0 və 1 baytları ilə də maraqlanırıq (sizin vəziyyətinizdə daha çox bayt ola bilər). Bunlar da onaltılıq dəyərlərdir, buna görə də lider 0x ilə yazılmalıdır.
Dəyərləri ikiliyə çevirsəniz, bitlərin üst -üstə düşmədiyini görəcəksiniz (məsələn + 0b10000000 və - 0b01000000), buna görə də eyni anda birdən çox düyməyə basıla bilər.
"Test köməkçisi" bölməsində sadalanan materiallarla sniffer qurmağı təklif edirəm, buna görə də daha sonra avtomobilinizi simulyasiya etmək üçün yenidən istifadə edə bilərsiniz. Bu, adapteri qurarkən və sınaqdan keçirərkən avtomobilinizdə daim oturmaq məcburiyyətindən xilas edəcək. Simulyator kimi çıxış etmək üçün təqdim olunan eskizdən istifadə edə bilərsiniz. "SubsystemId", "data0" və "data1" i kəşf etdiyiniz dəyərlərlə dəyişdirin.
Addım 2: Stereoya əmr göndərmək
Adapteri qurmağa başlamazdan əvvəl, stereonun əmr ala biləcəyini yoxlamaq daha yaxşıdır.
Ehtiyat maşının akkumulyatoru var idi, buna görə stereonu birbaşa ona bağladım. 12V tezgahlı bir güc mənbəyiniz varsa, daha da yaxşıdır. Təəssüf ki, vahidimdəki Key1 girişi ilə bağlı çox məlumat tapa bilmədim, buna görə də təcrübəyə müraciət etdim. Nisbətən ucuz olduğu üçün bu anda stereo yandırmaqdan çox narahat deyildim və bu mənim maşınımla işləmək üçün sonuncu cəhdim idi.
Stereoda iki müqavimət dəyərindən birini (1K və 3.3K) seçmək və "gərginlik" dəyərini (0-255) görmək mümkün olan bir komanda öyrənmə ekranı var. "Gərginlik" aldadıcı olduğu üçün sitat gətirilir. Şanssız olaraq Key1 -ə müxtəlif gərginliklər tətbiq etmək üçün çox vaxt sərf etdim. Şanssız olaraq gərginliyi tətbiq etmək üçün fərqli rezistorlardan istifadə etməyə çalışdım.
Key1 telini batareyanın torpağına toxundurmağa çalışdığım zaman "sıçrayış" 0 -a düşdü. Bu, fərqli rezistorlar ilə birlikdə öyrənmə ekranında ardıcıl "gərginlik" dəyərləri yaradacaq.
İndi stereoya girişləri necə göndərəcəyimi bildiyim üçün onları Arduinodan göndərmək üçün bir yola ehtiyacım var idi. Bu nöqtədə, bəzi müqavimətçilərlə birlikdə daha sürətli və daha etibarlı bir həll ola bilən multiplekserlər haqqında eşitmədim (bunun mümkün olub -olmadığını hələ də bilmirəm), buna görə rəqəmsal bir potensiometrdən istifadə etdim. Əvvəlcə rəqəmsal qazanı işə salmaqda problemlər yaşadım, anladım ki, gərginlik ayırıcı əvəzinə dəyişən bir rezistor kimi çıxış etmək üçün onu reostat kimi bağlamalıyam. Əsasən RH və RW terminallarını bağlamalı oldum.
Müqavimətdən başqa, vaxt çox vacib idi. Müqavimət düşməsi çox qısa olarsa, əmr qeydə alınmayacaq. Çox uzun olarsa, dəfələrlə qeydiyyatdan keçə bilər. 240ms düşmə, sonrakı komanda stereo üçün olduqca etibarlı işləyənə qədər 240ms gecikmə. Bu, çox az vaxt kimi görünsə də, demək olar ki, saniyədə maksimum 2 əmr göndərə bilərik ki, bu da səsi sürətlə artırmağa və ya azaltmağa çalışırsınızsa nəzərə çarpır. Fərqli vaxt və modellərlə oynamağa çalışdım, bu da sürəti artırdı, amma çox etibarlı deyildi. Bunu necə yaxşılaşdıracağınızla bağlı fikirləriniz varsa bunları şərhlərdə buraxın.
Başqa bir işə davam etməzdən əvvəl, stereonun eyni cür girişi qəbul edib -etmədiyini yoxlamaq üçün bir prototip yaratmağı təklif edirəm. Fərqli gərginliklər qəbul etsə belə, adapter kabellərdə və Arduino eskizində kiçik dəyişikliklərlə işləməlidir.
Addım 3: Adapterin qurulması
Bütün komponentləri ayrı -ayrılıqda sınadıqdan və çörək taxtasında birlikdə sınadıqdan sonra onlara daha daimi bir ev verməyin vaxtı gəldi. Komponentlərin qoyulması və lehimlənməsi bir neçə saat çəkdi.
Sol yuxarıda, avtomobilin akkumulyatorundan 12V -u digər komponentlər tərəfindən istifadə oluna bilən 5V -ə çevirən aşağıya doğru tənzimləyici var.
Sol altda, avtomobilin CAN avtobus şəbəkəsindəki dəyərləri oxuyan və Arduinoya yönləndirən CAN avtobus modulu var.
Sağ üstdə, yer və stereonun Key1 girişi arasında dəyişən bir müqavimət rolunu oynayan rəqəmsal potansiometr (reostat kimi bağlanmışdır) var.
Sağ altda CAN avtobus mesajlarını stereo tərəfindən oxunan müqavimətlərə çevirən adapterin beyni rolunu oynayan Arduino var.
12V girişdə, çox güman ki, dövrəni qorumayacaq, ancaq qısa bir vəziyyətdə yanğının qarşısını almaq üçün bir 150mA sigorta var.
Addım 4: Proqram təminatı
Yüklədikdən sonra hər üç.ino faylını bir qovluğa qoyun. Bu yolla hamısı eyni eskizin bir hissəsi olacaq və birlikdə Arudinoya yerləşdiriləcək.
Arduino IDE -yə lazım olan kitabxanaları da əlavə etməlisiniz. Bunu etmək üçün aşağıdakı faylları yükləyin:
github.com/autowp/arduino-mcp2515/archive/…
github.com/philbowles/Arduino-X9C/archive/…
sonra Sketch> Kitabxanaya Daxil Et> Zip Kitabxanasına gedərək hər ikisini əlavə edin.
CanBusStereoAdapter.ino
Əsas sənəd bu faylda aparılır.
Açar əmri CAN avtobus dəyərləri yuxarıda təyin olunur. Mənimlə eyni maşına sahib deyilsinizsə, çox güman ki, öz dəyərlərinizi qoymalı olacaqsınız. Onaltılıq dəyərlərini snifferdan istifadə edə bilərsiniz, ikili istifadə etdim, buna görə bitlərdə təsadüfən üst -üstə düşmədiyini görmək daha asandır.
Bütün avtomobillərdə eyni sükan əmrləri yoxdur, buna görə də müəyyən edilmiş dəyərləri silmək, əlavə etmək və ya redaktə etməkdən çəkinməyin.
"STEERING_ID" alt sistem idinizi dəyişdirməyi unutmayın.
CanBus.ino
Bu fayl CAN avtobus dinləyicisini qurur, paketləri şərh edir və müqavimət dəyərlərini dairəvi bir tampona qoyur.
CAN avtobus konfiqurasiyasını "setupCanBus" funksiyasında avtomobilinizə uyğun olaraq tənzimləyin.
Dairəvi bir tampondan istifadə edirik, çünki əvvəllər qeyd edildiyi kimi, sükan çarxının əmr girişi stereo girişdən daha sürətlidir. Bu şəkildə rəqəmsal potensiometr öz işini görərkən heç bir əmri əldən vermirik. Çox əmr daxil etsək, ən qədimləri əvvəlcə atılacaq, çünki onlar ən az əhəmiyyətlidir. Bu, eyni zamanda birdən çox düyməyə basıldığında işi idarə etməyimizə imkan verir, çünki stereo giriş bir anda yalnız bir dəyəri qəbul edir.
"CanBusStereoAdapter.ino" da hər hansı bir əmr tərifini dəyişdirmisinizsə, bunları "handleMessageData" funksiyasında da yeniləməlisiniz. "handleMessageData", verilən CAN avtobus məlumat çərçivələrində bitli VƏ əməliyyatı istifadə edərək məlum əmrlərdən hər hansı birinin olub olmadığını yoxlayır.
Məsələn, >> və + düymələrini eyni anda basmış olsam, bu bizə 0b10010000 dəyərində bir məlumat çərçivəsi verəcək. >> (mənim avtomobilim üçün) ikili olaraq 0b00010000, + isə 0b10000000 -dir.
--------------- >> -------------- + ------------- << --- - data0 | 0b10010000 | 0b10010000 | 0b10010000 əmri | VƏ 0b00010000 | VƏ 0b10000000 | VƏ 0b00001000 nəticə | = 0b00010000 | = 0b10000000 | = 0b00000000
Burada görürük ki, məlumat çərçivəsində əmr varsa AND əməliyyatının nəticəsi 0 -dan çox olacaq. Beləliklə, etməmiz lazım olan hər şey, təyin etdiyimiz hər bir əmr üçün {data frame} və {command value}> 0 yoxlamaqdır.
Unutmayın ki, hər bir məlumat çərçivəsinin fərqli əmrləri var, buna görə də onları öz çərçivələri ilə yoxlayarkən əmr dəyərləri eyni olsa yaxşıdır. Mənim nümunəmdə həm <<, həm də ESC hər ikisi eyni 0b00001000 (0x08) dəyərinə malikdir, lakin << data1 -də və ESC 1 -dədir.
Bir çərçivədə bir əmrin mövcud olduğunu təyin etdikdən sonra, dairəvi tampona rəqəmsal bir qazan dəyəri əlavə edirik. Dəyərlər 0 ilə 99 arasında dəyişir, amma gördüm ki, stereo tərəfindən oxunan "gərginlik" xətti deyil, özünüz üçün dəyərləri sınayın.
DigitalPot.ino
Bu fayl, dəyərləri dairəvi tampondan çıxarır və yerinə yetirmək üçün rəqəmsal qazana göndərir. Mənim vəziyyətimdə "pot.setPotMin (yanlış);" stereonun maksimum "gərginlik" olaraq oxuyacağı müqaviməti maksimuma qaldıracaq. Stereo rəqəmsal qazanı minimuma endirməyinizi tələb edə bilər, buna görə də sınayın.
Addım 5: Layihənin Mühafizəsi
3D printerim var, buna görə adapterim üçün iki hissədən ibarət bir korpus çap etməyə qərar verdim. Redaktə edə biləcəyiniz bir Fusion 360 faylı və 60x80 mm perfor taxtasına uyğun gcode faylları daxil etdim.
3D printerə çıxışınız yoxdursa, hazır bir layihə korpusundan və ya möhkəm bir konteynerdən istifadə edə bilərsiniz.
Addım 6: Son Düşüncələr
Əvvəlcə avtomobilin stereo bölməsində alovlanma teli olmadığı üçün sabit enerjiyə qoşulmağı və müəyyən CAN avtobus mesajlarında oyanmağı planlaşdırdım. Maşından uzaqlaşdığımda batareyanı boşaltmaq və adapter haqqında narahat olmaq istəmədiyim üçün sonradan buna qərar verdim. Bir alovlanma telini çəkmək üçün adapteri daha da çətinləşdirməmək üçün bir avtomobil qoruyucu qutusu ayırıcıdan istifadə etdim.
Testlərimdən sonra enerji istehlakı 20-30 mA-dır. Yuxu rejimində 10 mA -ya endirdim və LED -ləri komponentlərdən çıxarıb daha da aşağı düşə bilərdim, ancaq maşın işləyərkən işləyəcəyi üçün narahat olmamağa qərar verdim.
Son nəticədən olduqca məmnunam. Cavab müddəti məqbuldur və nadir hallarda əmrləri qaçırır.
Vaxt sərmayəm, satışda olan adapterin (işləməyən) qiymətindən qat -qat çox olsa da, əldə etdiyim biliklər əvəzolunmazdır.
Tövsiyə:
Yeni! Servo FUTABA 3003 SINONING tərəfindən Sükan Smart Robot Avtomobil Şassisi: 3 addım
Yeni! Servo FUTABA 3003 SINONING tərəfindən Sükan Edilən Ağıllı Robot Avtomobil Şassisi: Dizayn və SINONING RO BOT tərəfindən hazırlanan bu ağıllı avtomobil şassisidir, PCB lövhənizi bu cür Arduino üzərinə quraşdıra və kod yaza bilərsiniz, bir robot avtomobil olacaq. İstəsəniz, Sükan robot şassisindən satın ala bilərsiniz
Təkər və Pedallarla Sükan Edilən RC Avtomobil? ️: 6 Addım
Təkər və Pedallarla idarə olunan RC Avtomobil? ️: Həyat xəyallarınızı gerçəkləşdirməkdən ibarətdir. Mənimki RC Car -ı PC oyun təkəri ilə idarə etmək idi. Ümid edirəm ki, kimsə üçün faydalı olacaq. Suallarınız olarsa, şərh yazın
I2C LCD Adaptorunun Təfərrüatları və Bağlantıları: 5 addım
I2C LCD Adaptorunun Təfərrüatları və Bağlantıları: I2C lcd adapteri, mikro nəzarətçi PCF8574 çipi olan bir cihazdır. Bu mikro nəzarətçi, iki telli rabitə protokolu ilə digər mikro nəzarətçi çipi ilə əlaqə quran bir I/O genişləndiricisidir. Bu adapterdən istifadə edərək hər kəs 16x2 ölçüsünü idarə edə bilər
Arduino üçün Servo Sükan Robotu Avtomobil: 6 Addım (Şəkillərlə birlikdə)
Arduino üçün Servo Sükan Robotu Avtomobil: Bu avtomobil arduino platforma dizaynına əsaslanır, nüvəsi ön sükanı, arxa təkəri və digər funksiyaları həyata keçirə bilən Atmega - 328 p -dir. Yalnız tək oynasanız, yalnız simsiz moduldan istifadə edin; tətbiq etmək istəyirsinizsə
Xüsusi Arduino, CAN Sükan düymələrini Yeni Avtomobil Stereo ilə saxlayacaq: 9 Addım (Şəkillərlə birlikdə)
Xüsusi Arduino, Yeni Avtomobil Stereo ilə CAN Sükan Düymələrini Tutacaq: Volvo V70 -02 -dəki orijinal avtomobil stereosunu yeni bir stereo ilə əvəz etmək qərarına gəldim ki, mp3, bluetooth və səs ucaldan kimi şeylərdən zövq alım. Avtomobilimdə hələ də istifadə etmək istədiyim stereo üçün bəzi sükan idarəetmə elementləri var