Satura rādītājs:
- Piegādes
- 1. darbība: CAN autobusu šņaukšana
- 2. darbība. Komandu sūtīšana stereo
- 3. darbība: adaptera izveide
- 4. solis: programmatūra
- 5. solis: projekta norobežojums
- 6. solis: pēdējās domas
Video: Stūres taustiņi uz automašīnas stereo adapteri (CAN kopne -> 1. atslēga): 6 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:52
Key1) "src =" https://content.instructables.com/ORIG/F3X/UXCI/KCT3F9KZ/F3XUXCIKCT3F9KZ-p.webp
Key1) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">
Dažas dienas pēc lietotas automašīnas iegādes es atklāju, ka nevaru atskaņot mūziku no sava tālruņa caur automašīnas stereo. Vēl vairāk sarūgtināja tas, ka automašīnā bija Bluetooth, bet atļauti tikai balss zvani, nevis mūzika. Tam bija arī Windows Phone USB ports, taču tas nedarbotos ar iPhone bez 60 USD dongle.
Nomainot stereosistēmas savās iepriekšējās automašīnās, daudz nedomājot un nepētot, es pasūtīju 40 USD nomaiņas stereo no labi zināmas "lētas" vietnes. Stereo iekārta bija aprīkota ar atpakaļgaitas kameru, automašīnas atskaņošanu un virkni papildu funkciju, kas šķita daudz izdevīgāka nekā dārgākā dongle, kas dara tikai vienu.
Pēc jaunas priekšējās plāksnes iegādes un krāsošanas, 3D stiprinājuma drukāšanas un daudz papildu darba (kas pats par sevi varētu būt pamācāms), es nonācu pie nepatīkama atklājuma. Stūres taustiņu komandas tika nosūtītas caur CAN kopni, bet stereosistēmai bija tikai Key1 ieeja. Tā kā es nepadevos pusceļā, es pasūtīju 60 £ adapteri, kas izrādījās nedarbojas. Šajā brīdī es nolēmu pats izgatavot adapteri.
Es neesmu elektroinženieris, man ir tikai elementāras zināšanas elektronikā, un šis man bija mācību un izpētes projekts. Mans padoms būtu vispirms pārbaudīt sava transportlīdzekļa specifikācijas un pasūtīt saderīgu radio, bet, ja jūs jau esat iestrēdzis (kā es biju), sekojiet instrukcijām uz savu risku.
Piegādes
Adapteris (aptuveni 15 ASV dolāri)
- Arduino Pro Mini 5V (vai saderīga tāfele)
- MCP2515 CAN kopnes modulis
- 60x80mm perforators
- X9C104 digitālais potenciometrs 100K omi (atkarīgs no jūsu stereo)
- DC-DC pazemināšanas regulators LM2596S 3-40V 3A
- Kabeļa drošinātāju turētājs + drošinātājs (100-200 omi)
- Projekta kaste vai 3D printeris, lai to izdrukātu
- Automašīnas stereo ligzdas (vīrieši + sievietes)
- Lodēšanas piederumi, vadi utt.
Pārbaudes palīgi (nav absolūti nepieciešami, bet ievērojami atvieglos testēšanu)
- Arduino (derēs jebkura 5V plate)
- MCP2515 CAN kopnes modulis
- Maizes dēlis + džemperi
1. darbība: CAN autobusu šņaukšana
Tā vietā, lai vadu ķekars ritētu ap jūsu automašīnas iekšpusi, savienojot virkni sistēmu, dažos mūsdienu transportlīdzekļos katram komponentam ir vadu pāri. Informācija tiek nosūtīta kā digitālās datu paketes, izmantojot šos vadus, un visas sistēmas var nolasīt visus ziņojumus. Šis ir CAN kopnes tīkls (jūsu automašīnā var būt vairāki tīkli, tāpēc visa informācija var nebūt redzama).
Tas, ko mēs vēlamies darīt, ir izveidot savienojumu ar CAN kopņu tīklu un "šņaukt" datu plūsmu. Tādā veidā mēs varam "redzēt", kad tiek nospiesta stūres atslēga. Katrai paketei ir ID, kas attēlo transportlīdzekļa apakšsistēmu, kas nosūtīja paketi, un dati, kas attēlo sistēmas stāvokli. Šajā gadījumā mēs cenšamies atrast apakšsistēmas ID, kas nosūta stūres atslēgas ziņojumus, un katras atslēgas datu attēlojumu.
Ja jums veicas, jūs, iespējams, atradīsit savas automašīnas vērtības kaut kur tiešsaistē un varat izlaist šo darbību.
Šis process ir nedaudz iesaistīts un jau ir izskaidrots citās vietās, tāpēc es to tikai apkopoju:
- Atrodiet pareizās CAN kopnes sakaru vērtības jūsu automašīnā. Manai automašīnai (2009. gada Fiat Idea) tas bija 50 KBB pārraides ātrums un 8 MHz pulksteņa ātrums.
- Izveidojiet savienojumu ar CAN kopņu tīklu, izmantojot CAN kopnes moduli un Arduino “sniffer” konfigurācijā.
- Lasiet CAN kopnes vērtības savā klēpjdatorā, izmantojot tādu rīku kā https://github.com/alexandreblin/python-can-monito…. Bez tā būs ļoti grūti to izdarīt, jo daudz ziņojumu tiek nosūtīti pat tad, ja automašīna neko nedara.
- Nospiediet stūres pogu un atzīmējiet vērtību izmaiņas. Tas var būt nedaudz sarežģīti, jo tiek nosūtīts daudz ziņojumu, un var būt grūti saprast, kurš ir kurš.
Šeit ir divi lieliski raksti, kas izskaidro šo procesu:
- https://medium.com/@alexandreblin/can-bus-reverse-…
- https://www.instructables.com/id/CAN-Bus-Sniffing-…
Galu galā jums vajadzētu būt apakšsistēmas ID, kuru mēs izmantosim, lai klausītos tikai stūres rata CAN kopnes ziņojumus, un sarakstu ar heksadecimālajām vērtībām galvenajām komandām. Manā gadījumā dati izskatījās šādi:
ID | ID Hex | 0 baits 1. baits | Poga
-------------------------------------------- 964 | 3C4 | 00 | 00 | Bez pogām 964 | 3C4 | 04 | 00 | SRC 964 | 3C4 | 10 | 00 | >> 964 | 3C4 | 08 | 00 | << 964 | 3C4 | 00 | 80 | Tālrunis 964 | 3C4 | 00 | 08 | ESC 964 | 3C4 | 80 | 00 | + 964 | 3C4 | 40 | 00 | - 964 | 3C4 | 00 | 40 | Win 964 | 3C4 | 00 | 02 | Līdz 964 | 3C4 | 00 | 01 | Uz leju 964 | 3C4 | 00 | 04 | labi
Apakšsistēmas ID ir 3C4 (šajā gadījumā), kas ir heksadecimāls skaitlis, tāpēc mums tas Arduino skicēs jāraksta kā 0x3C4. Mūs interesē arī 0 un 1 baiti (jūsu gadījumā var būt vairāk baitu). Tās ir arī heksadecimālās vērtības, tāpēc tās arī jāraksta ar 0x sākumdaļu.
Ja konvertējat vērtības uz bināro, pamanīsit, ka biti nepārklājas (piemēram, + 0b10000000 un - 0b01000000), tāpēc vienlaicīgi var nospiest vairākus taustiņus.
Es iesaku veidot snifferi no materiāliem, kas uzskaitīti sadaļā "testa palīgs", lai vēlāk varētu to atkārtoti izmantot, lai simulētu savu automašīnu. Tas ietaupītu jūs no nepieciešamības visu laiku sēdēt automašīnā, kamēr veidojat un testējat adapteri. Jūs varat izmantot pievienoto skici, lai darbotos kā simulators. Modificējiet “subsystemId”, “data0” un “data1” ar vērtībām, kuras esat izšņaukājis.
2. darbība. Komandu sūtīšana stereo
Pirms sākt veidot adapteri, vislabāk ir vispirms pārbaudīt, vai stereo iekārta var saņemt komandas.
Man bija rezerves automašīnas akumulators, tāpēc stereo pieslēdzu tieši pie tā. Ja jums ir 12 V strāvas avots, tas ir vēl labāk. Diemžēl internetā nevarēju atrast daudz informācijas par Key1 ievadi savā ierīcē, tāpēc ķēros pie eksperimentiem. Šajā brīdī es nebiju pārāk noraizējies par stereo sadedzināšanu, jo tas ir salīdzinoši lēts, un tas bija mans pēdējais mēģinājums panākt, lai tas darbotos ar manu automašīnu.
Stereo sistēmai ir komandu mācīšanās ekrāns, kurā ir iespējams izvēlēties vienu no divām pretestības vērtībām (1K un 3,3K) un redzēt "sprieguma" vērtību (0-255). "Spriegums" ir citēts, jo tas ir maldinošs. Es pavadīju daudz laika, piemērojot Key1 dažādus spriegumus, neveicoties. Es arī mēģināju izmantot dažādus rezistorus, lai pielietotu spriegumu bez veiksmes.
Izrāviens notika, kad es mēģināju pieskarties Key1 vadam pie akumulatora korpusa, kā rezultātā "spriegums" samazinājās līdz 0. Tas kombinācijā ar dažādiem rezistoriem mācību ekrānā radītu nemainīgas "sprieguma" vērtības.
Tagad, kad es zināju, kā nosūtīt ievadi stereo, man bija nepieciešams veids, kā tos nosūtīt no Arduino. Šajā brīdī es neesmu dzirdējis par multipleksoriem, kas kopā ar dažiem rezistoriem varētu būt bijis ātrāks un uzticamāks risinājums (es joprojām neesmu pārliecināts, vai tas ir iespējams), tāpēc es izmantoju digitālo potenciometru. Sākumā man bija problēmas ar digitālā katla darbību, līdz es sapratu, ka man tas ir jāpievieno kā reostats, lai darbotos kā mainīgs rezistors sprieguma dalītāja vietā. Būtībā man bija jāpieslēdz RH un RW termināļi.
Papildus pretestībai izšķirošs bija laiks. Ja pretestības kritums ir pārāk īss, komanda netiks reģistrēta. Ja tas ir pārāk garš, tas var tikt reģistrēts vairākas reizes. 240 ms kritums, kam seko 240 ms aizkavēšanās, līdz nākamā komanda manai stereo sistēmai darbojās diezgan uzticami. Lai gan tas šķiet ļoti maz laika, tas nozīmē, ka mēs varam nosūtīt ne vairāk kā 2 komandas sekundē, kas ir pamanāms, ja mēģināt strauji palielināt vai samazināt skaļumu. Es mēģināju spēlēties ar dažādiem laikiem un modeļiem, kas palielināja ātrumu, bet nebija ļoti uzticams. Ja jums ir idejas, kā to uzlabot, lūdzu, atstājiet tos komentāros.
Pirms turpināt, iesaku izveidot prototipu, lai pārbaudītu, vai stereo iekārta pieņem tāda paša veida ievadi. Pat ja adapteris pieņem dažādus spriegumus, adapterim vajadzētu strādāt ar nelielām izmaiņām elektroinstalācijā un Arduino skicē.
3. darbība: adaptera izveide
Pēc visu sastāvdaļu atsevišķas pārbaudes un kopīgas izmēģināšanas uz maizes dēļa bija pienācis laiks piešķirt tām pastāvīgāku māju. Tas prasīja dažas stundas, lai izkārtotu komponentus un pielodētu.
Augšējā kreisajā stūrī ir atkāpšanās regulators, kas pārveido 12V no automašīnas akumulatora uz 5V, ko var izmantot citas sastāvdaļas.
Apakšējā kreisajā stūrī ir CAN kopnes modulis, kas nolasa vērtības no automašīnas CAN kopņu tīkla un pārsūta tās uz Arduino.
Augšējā labajā stūrī ir digitālais potenciometrs (savienots kā reostats), kas darbojas kā mainīgs rezistors starp zemi un stereo atskaņotāja Key1 ieeju.
Apakšējā labajā stūrī ir Arduino, kas darbojas kā adaptera smadzenes, pārveidojot CAN kopnes ziņojumus pretestībās, kuras nolasa stereo.
12 V ieejā ir 150 mA drošinātājs, kas, visticamāk, neaizsargās ķēdi, bet ir paredzēts, lai novērstu ugunsgrēku īssavienojuma gadījumā.
4. solis: programmatūra
Pēc lejupielādes ievietojiet visus trīs.ino failus vienā mapē. Tādā veidā visi būs daļa no vienas skices un kopā tiks izvietoti Arudino.
Jums arī jāpievieno nepieciešamās bibliotēkas Arduino IDE. Lai to izdarītu, lejupielādējiet šādus failus:
github.com/autowp/arduino-mcp2515/archive/…
github.com/philbowles/Arduino-X9C/archive/…
pēc tam pievienojiet abus, dodoties uz Skice> Iekļaut bibliotēku> Pievienot. Zip bibliotēku …
CanBusStereoAdapter.ino
Šajā failā tiek veikta pamata iestatīšana.
Taustiņu komanda CAN kopnes vērtības ir definētas augšpusē. Ja vien jums nav tādas pašas automašīnas kā man, visticamāk, jums būs jāievieš savas vērtības. Jūs varat izmantot heksadecimālās vērtības no sniffer, es izmantoju bināro, tāpēc ir vieglāk redzēt, ka bitos nav nejaušu pārklāšanos.
Visām automašīnām nav vienādas stūres komandas, tāpēc noteikti noņemiet, pievienojiet vai rediģējiet noteiktās vērtības.
Neaizmirstiet aizstāt apakšsistēmas ID sadaļā “STEERING_ID”.
CanBus.ino
Šis fails izveido CAN kopnes klausītāju, interpretē paketes un ievieto pretestības vērtības apļveida buferī.
Pielāgojiet CAN kopnes konfigurāciju funkcijā "setupCanBus", lai tā atbilstu jūsu automašīnai.
Mēs izmantojam apļveida buferi, jo, kā minēts iepriekš, stūres rata komandu ievade ir daudz ātrāka nekā stereo ieeja. Tādā veidā mēs nepalaižam garām nevienu komandu, kamēr digitālais potenciometrs dara savu. Ja ievadīsim pārāk daudz komandu, vispirms tiks atmestas vecākās, jo tās ir vismazāk svarīgās. Tas arī ļauj mums rīkoties, ja tiek nospiestas vairākas pogas, jo stereo ieeja vienlaikus pieņem tikai vienu vērtību.
Ja esat mainījis kādu no komandu definīcijām sadaļā "CanBusStereoAdapter.ino", tās būs jāatjaunina arī funkcijā "handleMessageData". "handleMessageData" pārbauda, vai nodrošinātie CAN kopnes datu rāmji satur kādu no zināmajām komandām, izmantojot operāciju bitu veidā.
Piemēram, ja vienlaicīgi esmu nospiedis >> un +, tas mums dos datu rāmi ar vērtību 0b10010000. >> (manai automašīnai) binārā ir 0b00010000, un + ir 0b10000000.
--------------- >> -------------- + ------------- << --- - dati0 | 0b10010000 | 0b10010000 | 0b10010000 komanda | UN 0b00010000 | UN 0b10000000 | UN 0b00001000 rezultāts | = 0b00010000 | = 0b10000000 | = 0b00000000
Šeit mēs redzam, ka AND darbības rezultāts būs lielāks par 0, ja komanda būs datu rāmī. Tātad viss, kas mums jādara, ir pārbaudīt, vai katrai mūsu definētajai komandai nav {data frame} un {command value}> 0.
Paturiet prātā, ka katrā datu rāmī ir dažādas komandas, tāpēc ir labi, ja komandu vērtības ir vienādas, jo mēs tās pārbaudām, salīdzinot ar to ietvariem. Manā piemērā gan <<, gan ESC ir vienāda vērtība 0b00001000 (0x08), bet << ir datos0 un ESC datos1.
Pēc tam, kad esam noteikuši, ka rāmī ir komanda, apļveida buferim pievienojam digitālā katla vērtību. Vērtības svārstās no 0 līdz 99, bet esmu ievērojis, ka stereo nolasītais "spriegums" nav lineārs, tāpēc pārbaudiet vērtības paši.
DigitalPot.ino
Šis fails izvelk vērtības no apļveida bufera un nosūta tās izpildei uz digitālo podu. Manā gadījumā "pot.setPotMin (false);" palielinās pretestību līdz maksimālajam, ko stereo uztver kā maksimālo "spriegumu". Jūsu stereo sistēmai var būt nepieciešams iestatīt digitālo katlu līdz minimumam, tāpēc pārbaudiet to.
5. solis: projekta norobežojums
Man ir 3D printeris, tāpēc es nolēmu savam adapterim izdrukāt divu daļu korpusu. Esmu iekļāvis Fusion 360 failu, kuru varat rediģēt, un gcode failus, kas derēs 60x80 mm perforatoram.
Ja jums nav piekļuves 3D printerim, varat izmantot gatavu projekta korpusu vai izturīgu konteineru.
6. solis: pēdējās domas
Sākotnēji es plānoju, ka adapteris tiks pievienots pastāvīgai strāvai un pamodos pēc noteiktiem CAN kopnes ziņojumiem, jo manai automašīnai nav aizdedzes stieples stereo nodalījumā. Vēlāk es nolēmu pret to, jo negribēju riskēt izlādēt akumulatoru un uztraukties par adapteri, kamēr esmu prom no automašīnas. Es izmantoju automašīnas drošinātāju kārbas sadalītāju, lai vadītu aizdedzes vadu, un man nav vēl vairāk jāapgrūtina adapteris.
Pēc maniem testiem enerģijas patēriņš ir 20-30 mA. Miega režīmā es to samazināju līdz 10 mA, un, noņemot gaismas diodes no komponentiem, varētu samazināties vēl zemāk, taču es nolēmu ar to neuztraukties, jo tas darbosies tikai automašīnas darbības laikā.
Esmu diezgan apmierināts ar gala rezultātu. Atbildes laiks ir saprātīgs, un tas reti palaiž garām komandas.
Lai gan mans laika ieguldījums bija daudz lielāks nekā komerciāli pieejamā adaptera izmaksas (kas nedarbojās), iegūtās zināšanas ir nenovērtējamas.
Ieteicams:
Rover-One: RC kravas automašīnas/automašīnas prāta piešķiršana: 11 soļi
Rover-One: Smadzeņu piešķiršana RC kravas automašīnai/automašīnai: šī pamācība ir iekļauta manā projektētajā PCB ar nosaukumu Rover-One. Rover-One ir risinājums, ko es izstrādāju, lai ņemtu rotaļlietu RC automašīnu/kravas automašīnu un dotu tai smadzenes, kas ietver komponentus, lai sajustu tās vidi. Rover-One ir 100 mm x 100 mm PCB, kas izstrādāts EasyED
Jauna! Stūres viedā robotu automašīnas šasija ar servo FUTABA 3003 SINONING: 3 soļi
Jauna! Stūres viedā robotu automašīnas šasija, ko servo FUTABA 3003 SINONING: Dizains un izgatavojis SINONING RO BOT. Šī ir viedā automašīnas šasija, uz tās varat uzstādīt savu PCB plāksni, piemēram, Arduino, un uzrakstīt kodu, tā kļūs par robotu. ja vēlaties, varat iegādāties no stūres robota šasijas
FinduCar: viedā automašīnas atslēga, kas ved cilvēkus uz automašīnu novietošanas vietu: 11 soļi (ar attēliem)
FinduCar: viedā automašīnas atslēga, kas ved cilvēkus uz automašīnu novietošanas vietu: Lai atrisinātu iepriekš minētās problēmas, šis projekts piedāvā izstrādāt viedo automašīnas atslēgu, kas varētu novirzīt cilvēkus uz vietu, kur viņi novietoja automašīnu. Un mans plāns ir integrēt GPS automašīnas atslēgā. Nav nepieciešams izmantot viedtālruņa lietotni, lai izsekotu
Pielāgots Arduino, lai saglabātu CAN stūres pogas ar jaunu automašīnas stereo: 9 soļi (ar attēliem)
Pielāgots Arduino, lai saglabātu CAN stūres pogas ar jaunu automašīnas stereo: Es nolēmu nomainīt oriģinālo automašīnas stereo sistēmu savā Volvo V70 -02 ar jaunu stereo, lai es varētu baudīt tādas lietas kā mp3, Bluetooth un brīvroku sistēma. Manai automašīnai ir dažas stereosistēmas stūres vadības ierīces, kuras es vēlos joprojām izmantot
Oranžais PI ceļvedis: iestatiet to lietošanai ar automašīnas atpakaļskata displeju un HDMI un RCA adapteri: 15 soļi
Orange PI HowTo: iestatiet to lietošanai kopā ar automašīnas atpakaļskata displeju un HDMI un RCA adapteri: PRIEKŠVĀRDS. Šķiet, ka ikviens cits izmanto lielu un pat lielāku televizoru vai monitoru ar muļķīgu oranžu PI plāksni. Un tas izskatās kā mazliet pārspīlēts, ja tas ir paredzēts iegultām sistēmām. Šeit mums ir nepieciešams kaut kas mazs un kaut kas lēts. Tāpat kā