Sadržaj:

Ključevi upravljača na stereo adapteru za automobil (CAN sabirnica -> ključ1): 6 koraka
Ključevi upravljača na stereo adapteru za automobil (CAN sabirnica -> ključ1): 6 koraka

Video: Ključevi upravljača na stereo adapteru za automobil (CAN sabirnica -> ključ1): 6 koraka

Video: Ključevi upravljača na stereo adapteru za automobil (CAN sabirnica -> ključ1): 6 koraka
Video: Opel key Programming - Sync remote key Opel - Repair remote key 🚗🔑 2024, Srpanj
Anonim
CAN Bus njuškanje
CAN Bus njuškanje

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

Slanje naredbi u stereo uređaj
Slanje naredbi u stereo uređaj

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

Nekoliko dana nakon što sam kupio rabljeni automobil, otkrio sam da ne mogu reproducirati glazbu sa svog telefona putem stereo uređaja u automobilu. Još je više frustriralo to što je automobil imao bluetooth, ali je dopuštao samo glasovne pozive, a ne i glazbu. Također je imao USB port za Windows Phone, ali ne bi radio s iPhoneom bez ključa od 60 USD.

Nakon što sam zamijenio stereo uređaje na svojim prethodnim automobilima, bez mnogo razmišljanja i istraživanja, naručio sam zamjenski stereo uređaj od 40 USD s poznate "jeftine" web stranice. Stereo je došao s kamerom za vožnju unatrag, Car Playom i hrpom dodatnih funkcija, koje su se činile puno boljom vrijednošću od skupljeg ključa koji čini samo jednu stvar.

Nakon što sam kupio i slikao novu prednju ploču, 3D ispis nosača i puno dodatnog rada (koji bi sam po sebi mogao biti poučan), došao sam do neugodnog otkrića. Naredbe s ključem na upravljaču poslane su putem CAN sabirnice, ali je stereo imao samo ulaz Key1. Budući da nisam odustao na pola puta, naručio sam adapter od 60 £, za koji se pokazalo da ne radi. U ovom trenutku sam odlučio sam napraviti adapter.

Nisam inženjer elektrotehnike, imam samo osnovno znanje o elektronici i ovo je za mene bio projekt učenja i istraživanja. Moj bi savjet bio da prvo provjerite specifikacije svog vozila i naručite kompatibilan radio, ali ako ste već zaglavili (kao što sam i ja), slijedite upute na vlastitu odgovornost.

Pribor

Adapter (oko 15 USD)

  • Arduino Pro Mini 5V (ili kompatibilna ploča)
  • MCP2515 Modul CAN sabirnice
  • Perxboard 60x80 mm
  • X9C104 digitalni potenciometar 100K Ohm (ovisi o vašem stereo uređaju)
  • DC-DC Regulator stepenastog pada LM2596S 3-40V 3A
  • Držač osigurača kabela + osigurač (100-200 Ohm)
  • Okvir projekta ili 3D pisač za ispis
  • Stereo utičnice za auto (muški + ženski)
  • Pribor za lemljenje, žice itd.

Test pomagači (nisu strogo potrebni, ali će znatno olakšati testiranje)

  • Arduino (svaka 5V ploča će odgovarati)
  • MCP2515 Modul CAN sabirnice
  • Oglasna ploča + skakači

Korak 1: CAN Bus njuškanje

Umjesto da gomila žica prolazi po unutrašnjosti vašeg automobila i povezuje hrpu sustava, neka moderna vozila imaju parove žica koje vode do svake komponente. Tim se žicama informacije šalju kao digitalni paketi podataka, a svi sustavi mogu čitati sve poruke. Ovo je mreža CAN sabirnice (u vašem automobilu može biti više mreža pa svi podaci možda neće biti vidljivi).

Ono što želimo učiniti je spojiti se na mrežu CAN sabirnica i "njušiti" promet podataka. Na taj način možemo "vidjeti" kada se pritisne tipka na upravljaču. Svaki paket ima ID koji predstavlja podsustav vozila koji je poslao paket i podatke koji predstavljaju stanje sustava. U ovom slučaju pokušavamo pronaći ID podsustava koji šalje poruke ključeva na upravljaču i prikaz podataka svakog ključa.

Ako imate sreće, možda ćete negdje na internetu pronaći vrijednosti za svoj automobil, a ovaj korak možete preskočiti.

Ovaj proces je malo uključen i već je objašnjen na drugim mjestima, pa ću ga samo sažeti:

  • Pronađite ispravne vrijednosti za komunikaciju putem CAN sabirnice na vašem vozilu. Za moj automobil (Fiat Idea iz 2009.) to je bila brzina prijenosa od 50KBPS i brzina takta 8MHz.
  • Povežite se na mrežu CAN sabirnice pomoću modula CAN sabirnice i Arduina u konfiguraciji "njuškala".
  • Pročitajte vrijednosti CAN sabirnice na svom prijenosnom računalu pomoću alata poput https://github.com/alexandreblin/python-can-monito…. Bez toga će biti jako teško učiniti, jer se puno poruka šalje čak i kad automobil ne radi ništa.
  • Pritisnite gumb na upravljaču i zabilježite promjene vrijednosti. To može biti pomalo zeznuto jer se šalje mnogo poruka i možda će biti teško shvatiti koja je koja.

Evo dva sjajna članka koji detaljno objašnjavaju proces:

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

Na kraju biste trebali imati ID podsustava koji ćemo koristiti za osluškivanje samo poruka CAN sabirnice upravljača i popis heksadecimalnih vrijednosti za naredbe tipki. U mom slučaju podaci su izgledali ovako:

ID | ID Hex | Bajt 0 | Bajt 1 | Dugme

--------------------------------------------- 964 | 3C4 | 00 | 00 | Bez gumba 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 | Osvojite 964 | 3C4 | 00 | 02 | Gore 964 | 3C4 | 00 | 01 | Dolje 964 | 3C4 | 00 | 04 | u redu

ID podsustava je 3C4 (u ovom slučaju), što je heksadecimalni broj pa bismo ga trebali zapisati poput 0x3C4 u skicama Arduina. Također nas zanimaju bajtovi 0 i 1 (u vašem slučaju moglo bi biti više bajtova). To su također heksadecimalne vrijednosti, pa ih također treba napisati s početnim 0x.

Ako vrijednosti pretvorite u binarne, primijetit ćete da se bitovi ne preklapaju (na primjer + 0b10000000 i - 0b01000000), pa se više tipki može pritisnuti istovremeno.

Predlažem da izradite njuškalo od materijala navedenih u odjeljku "pomagač za testiranje", tako da ga kasnije možete ponovno koristiti za simulaciju vašeg automobila. To bi vas spasilo od toga da morate sjediti u automobilu cijelo vrijeme dok gradite i testirate adapter. Pomoću priložene skice možete djelovati kao simulator. Izmijenite "subsystemId", "data0" i "data1" s vrijednostima koje ste nanjušili.

Korak 2: Slanje naredbi u stereo uređaj

Slanje naredbi u stereo uređaj
Slanje naredbi u stereo uređaj

Prije početka izrade adaptera, najbolje je prvo testirati može li stereo primati naredbe.

Imao sam rezervnu bateriju za automobil, pa sam stereo spojio izravno na njega. Ako imate 12V stolni izvor napajanja, još bolje. Nažalost, na internetu nisam mogao pronaći mnogo informacija o unosu Key1 na svojoj jedinici, pa sam pribjegao eksperimentiranju. U ovom trenutku nisam bio pretjerano zabrinut oko spaljivanja stereo uređaja, budući da je relativno jeftin, a ovo je bio moj posljednji pokušaj da ga natjeram da radi s mojim autom.

Stereo ima zaslon za učenje naredbi, gdje je moguće odabrati jednu od dvije vrijednosti otpora (1K i 3,3K) i vidjeti vrijednost "napona" (0-255). "Napon" se citira jer dovodi u zabludu. Proveo sam mnogo vremena primjenjujući različite napone na Key1 bez sreće. Također sam pokušao koristiti različite otpornike za primjenu napona bez sreće.

Do otkrića je došlo kada sam pokušao dodirnuti žicu Key1 sa masom baterije, što je rezultiralo padom "napona" na 0. To bi u kombinaciji s različitim otpornicima proizvelo dosljedne vrijednosti "napona" na zaslonu za učenje.

Sad kad sam znao slati ulaze u stereo, trebao mi je način da ih pošaljem s Arduina. U ovom trenutku nisam čuo za multipleksere koji bi, uz neke otpornike, mogli biti brže i pouzdanije rješenje (još uvijek nisam siguran je li to izvedivo), pa sam upotrijebio digitalni potenciometar. U početku sam imao problema s uključivanjem digitalnog lonca, dok nisam shvatio da ga moram spojiti kao reostat da djeluje kao promjenjivi otpornik umjesto razdjelnika napona. U osnovi sam morao spojiti RH i RW terminale.

Osim otpora, vrijeme je bilo presudno. Ako je pad otpora prekratak, naredba se neće registrirati. Ako je predug, mogao bi se registrirati više puta. Pad od 240 ms, nakon čega je uslijedilo kašnjenje od 240 ms do sljedeće naredbe koja je za moj stereo radila prilično pouzdano. Iako se to čini kao jako malo vremena, znači da možemo poslati najviše 2 naredbe u sekundi, što je zamjetno ako pokušavate brzo pojačati ili smanjiti glasnoću. Pokušao sam se poigrati s različitim terminima i uzorcima, što je povećalo brzinu, ali nije bilo pouzdano. Ako imate ideje kako to poboljšati, ostavite ih u komentarima.

Prije nego nastavite, predlažem izradu prototipa koji će provjeriti prihvaća li vaš stereo uređaj istu vrstu ulaza. Čak i ako prihvaća različite napone, adapter bi trebao raditi s malim izmjenama na ožičenju i Arduino skici.

Korak 3: Izrada adaptera

Izrada adaptera
Izrada adaptera
Izrada adaptera
Izrada adaptera
Izrada adaptera
Izrada adaptera

Nakon što smo zasebno testirali sve komponente i isprobali ih zajedno na ploči, došlo je vrijeme da im pružimo stalniji dom. To je trajalo nekoliko sati postavljanja komponenti i lemljenja.

U gornjem lijevom kutu nalazi se regulator prema dolje, koji pretvara 12 V iz akumulatora u automobil, u 5 V koje mogu koristiti ostale komponente.

U donjem lijevom kutu nalazi se modul CAN sabirnice koji čita vrijednosti iz mreže CAN sabirnica automobila i prosljeđuje ih na Arduino.

U gornjem desnom kutu nalazi se digitalni potenciometar (ožičen kao reostat) koji djeluje kao promjenjivi otpornik između tla i stereo Key1 ulaza.

U donjem desnom kutu nalazi se Arduino, koji djeluje kao mozak adaptera, pretvarajući poruke CAN sabirnice u otpore koje čita stereo.

Na 12V ulazu je 150mA osigurač, koji najvjerojatnije neće zaštititi krug, ali postoji kako bi spriječio požar u slučaju kratkog spoja.

Korak 4: Softver

Softver
Softver

Nakon preuzimanja, sve tri.ino datoteke stavite u jednu mapu. Na taj će način svi biti dio iste skice i zajedno će biti raspoređeni u Arudinu.

Također morate dodati potrebne knjižnice u Arduino IDE. Da biste to učinili, preuzmite sljedeće datoteke:

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

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

zatim ih oboje dodajte tako da odete na Sketch> Include Library> Add. Zip Library …

CanBusStereoAdapter.ino

U ovoj se datoteci izvodi osnovno postavljanje.

Vrijednosti CAN sabirnice naredbe ključa definirane su pri vrhu. Osim ako nemate isti automobil kao ja, najvjerojatnije ćete morati unijeti vlastite vrijednosti. Možete koristiti heksadecimalne vrijednosti iz njuškala, ja sam koristio binarne pa je lakše vidjeti da nema slučajnih preklapanja u bitovima.

Svi automobili nemaju iste naredbe na upravljaču, pa slobodno uklonite, dodajte ili uredite definirane vrijednosti.

Ne zaboravite zamijeniti svoj ID podsustava u "STEERING_ID".

CanBus.ino

Ova datoteka postavlja slušatelja CAN sabirnice, tumači pakete i stavlja vrijednosti otpora u kružni međuspremnik.

Podesite konfiguraciju CAN sabirnice u funkciji "setupCanBus" tako da odgovara vašem automobilu.

Koristimo kružni međuspremnik jer je, kao što je ranije spomenuto, unos naredbe na upravljaču mnogo brži od stereo ulaza. Na ovaj način ne propuštamo nijednu naredbu dok digitalni potenciometar radi svoje. Ako unesemo previše naredbi, najstarije će se prvo odbaciti, jer su najmanje važne. To nam također omogućuje rješavanje slučaja kada se pritisne više gumba, jer stereo ulaz prihvaća samo jednu vrijednost odjednom.

Ako ste promijenili neku od definicija naredbi u "CanBusStereoAdapter.ino", morat ćete ih ažurirati i u funkciji "handleMessageData". "handleMessageData" provjerava sadrže li isporučeni okviri podataka CAN sabirnice bilo koju od poznatih naredbi pomoću bitovne operacije AND.

Na primjer, ako sam istovremeno pritisnuo >> i + koji će nam dati okvir podataka s vrijednošću 0b10010000. >> (za moj automobil) je 0b00010000 u binarnom obliku, a + je 0b10000000.

--------------- >> -------------- + ------------- << --- - podaci0 | 0b10010000 | 0b10010000 | 0b10010000 naredba | I 0b00010000 | I 0b10000000 | AND 0b00001000 rezultat | = 0b00010000 | = 0b10000000 | = 0b00000000

Ovdje možemo vidjeti da će rezultat operacije AND biti veći od 0 ako je naredba prisutna u okviru podataka. Dakle, sve što moramo učiniti je provjeriti ima li {data frame} & {command value}> 0 za svaku naredbu koju smo definirali.

Imajte na umu da svaki okvir podataka sadrži različite naredbe, pa je u redu ako su vrijednosti naredbi iste, jer ih provjeravamo u odnosu na vlastite okvire. U mom primjeru << i ESC imaju istu vrijednost 0b00001000 (0x08), ali << je u data0, a ESC u data1.

Nakon što smo utvrdili da je naredba prisutna u okviru, kružnom međuspremniku dodajemo vrijednost digitalnog pot. Vrijednosti se kreću od 0 do 99, ali primijetio sam da "napon" koji čita stereo nije linearan pa sami provjerite vrijednosti.

DigitalPot.ino

Ova datoteka iskače vrijednosti iz kružnog međuspremnika i šalje ih u digitalni spremnik radi izvršavanja. U mom slučaju "pot.setPotMin (false);" će povećati otpor do maksimuma, što će stereo pročitati kao maksimalni "napon". Vaš stereo uređaj može zahtijevati da digitalni lonac postavite na minimum, pa ga isprobajte.

Korak 5: Prilog projekta

Prilog projekta
Prilog projekta

Imam 3D pisač pa sam odlučio ispisati dvodijelno kućište za svoj adapter. Uključio sam datoteku Fusion 360 koju možete uređivati i datoteke gcode koje odgovaraju perfboard -u dimenzija 60x80 mm.

Ako nemate pristup 3D pisaču, možete upotrijebiti gotov projektni okvir ili čvrsti spremnik.

Korak 6: Završne misli

U početku sam planirao da adapter bude spojen na stalno napajanje i da se probudi na određenim porukama CAN sabirnice, jer moj automobil nema žicu za paljenje u stereo odjeljku. Kasnije sam se odlučio protiv toga jer nisam želio riskirati pražnjenje baterije i brinuti se o adapteru dok sam daleko od auta. Koristio sam razdjelnik kutije s osiguračima u automobilu za pokretanje žice za paljenje i nisam morao dodatno komplicirati adapter.

Prema mojim testovima, potrošnja energije je 20-30 mA. Spustio sam ga na 10 mA u stanju mirovanja, a mogao bih ići i niže uklanjanjem LED dioda sa komponenti, ali odlučio sam se ne zamarati time jer će raditi samo dok auto radi.

Zadovoljan sam krajnjim rezultatom. Vrijeme odziva je razumno i rijetko propušta naredbe.

Iako je moje vremensko ulaganje bilo daleko veće od cijene komercijalno dostupnog adaptera (koji nije uspio), znanje koje sam stekao je neprocjenjivo.

Preporučeni: