Sadržaj:

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

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

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

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

Slanje komandi na stereo
Slanje komandi na stereo

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 muziku 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 muziku. Takođe je imao USB port za Windows Phone, ali ne bi radio sa iPhone -om 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 sa poznate "jeftine" web stranice. Stereo je dobio kameru za vožnju unatrag, Car Play i gomilu dodatnih funkcija, koje su se činile mnogo boljom vrijednošću od skupljeg ključa koji radi 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. Komande na upravljaču su poslane preko CAN magistrale, 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 savjet bi 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.

Supplies

Adapter (oko 15 USD)

  • Arduino Pro Mini 5V (ili kompatibilna ploča)
  • MCP2515 Modul CAN sabirnice
  • Perxboard 60x80mm
  • X9C104 digitalni potenciometar 100K Ohm (zavisi od vašeg stereo uređaja)
  • DC-DC Regulator stepenastog pada LM2596S 3-40V 3A
  • Držač osigurača kabela + osigurač (100-200 Ohm)
  • Projektna kutija ili 3D štampač za štampanje
  • Stereo priključci za automobile (muški + ženski)
  • Lemilice, žice itd.

Pomoćnici za testiranje (nisu strogo potrebni, ali će znatno olakšati testiranje)

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

Korak 1: Njuškanje CAN magistrale

Umjesto da vam gomila žica prolazi po unutrašnjosti automobila povezujući hrpu sistema, neka moderna vozila imaju parove žica koje vode do svake komponente. Ove se žice šalju kao digitalni paketi podataka i 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 povezati se na mrežu CAN sabirnica i "njušiti" promet podataka. Na ovaj način možemo "vidjeti" kada se pritisne tipka na upravljaču. Svaki paket ima ID koji predstavlja podsistem vozila koji je poslao paket i podatke koji predstavljaju stanje sistema. U ovom slučaju pokušavamo pronaći ID podsistema koji šalje poruke ključeva na upravljaču i prikaz podataka svakog ključa.

Ako imate sreće, vrijednosti vašeg automobila možete pronaći negdje na internetu, 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čunaru pomoću alata poput https://github.com/alexandreblin/python-can-monito…. Bez toga će biti jako teško to učiniti, jer se puno poruka šalje čak i kada automobil ne radi ništa.
  • Pritisnite dugme na upravljaču i zabilježite promjene vrijednosti. Ovo 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 podsistema 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 dugmadi 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 | Win 964 | 3C4 | 00 | 02 | Gore 964 | 3C4 | 00 | 01 | Dolje 964 | 3C4 | 00 | 04 | uredu

ID podsistema je 3C4 (u ovom slučaju), što je heksadecimalni broj pa bismo ga trebali zapisati kao 0x3C4 u Arduino skicama. Također nas zanimaju bajtovi 0 i 1 (u vašem slučaju može biti više bajtova). Ovo su također heksadecimalne vrijednosti, pa ih također treba pisati 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 ponovo koristiti za simulaciju vašeg automobila. Ovo 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 na stereo

Slanje komandi na stereo
Slanje komandi na stereo

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 direktno na njega. Ako imate 12V izvorni izvor napajanja, još bolje. Nažalost, na internetu nisam mogao pronaći mnogo informacija o unosu Key1 na svojoj jedinici, pa sam pribjegao eksperimentisanju. U ovom trenutku nisam bio pretjerano zabrinut oko spaljivanja stereo uređaja, budući da je relativno jeftin, i ovo je bio moj posljednji pokušaj da ga natjeram da radi sa mojim autom.

Stereo ima ekran za učenje komandi, 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 dosta 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 konzistentne vrijednosti "napona" na ekranu za učenje.

Sad kad sam znao kako 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, može se registrirati više puta. Pad od 240 ms, nakon čega je uslijedilo kašnjenje od 240 ms do sljedeće naredbe koja je radila prilično pouzdano za moj stereo. Iako to izgleda kao jako malo vremena, znači da možemo poslati najviše 2 naredbe u sekundi, što je primjetno ako pokušavate brzo pojačati ili smanjiti glasnoću. Pokušao sam se poigrati s različitim terminima i obrascima, š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 da provjerite prihvaća li vaš stereo 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 testirali sve komponente zasebno i isprobali ih zajedno na ploči, došlo je vrijeme da im pružimo stalniji dom. To je trajalo nekoliko sati polaganja komponenti i lemljenja.

U gornjem lijevom kutu nalazi se stepenasti regulator koji transformira 12V iz akumulatora automobila u 5V 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 osigurač od 150mA, 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, stavite sve tri.ino datoteke u jednu mapu. Na taj način će svi biti dio iste skice i zajedno će biti raspoređeni u Arudinu.

Također morate dodati potrebne biblioteke 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

Osnovno podešavanje se izvodi u ovoj datoteci.

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

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

Ne zaboravite zamijeniti svoj ID podsistema u "STEERING_ID".

CanBus.ino

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

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

Koristimo kružni tampon 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. Ovo nam također omogućava da rješavamo slučaj kada se pritisne više tipki, 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 dostavljeni 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.

--------------- >> -------------- + ------------- << --- - data0 | 0b10010000 | 0b10010000 | 0b10010000 naredba | AND 0b00010000 | AND 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} & {value 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 njihove okvire. U mom primjeru i << i ESC imaju istu vrijednost 0b00001000 (0x08), ali << je u data0 i ESC u data1.

Nakon što smo utvrdili da je naredba prisutna u okviru, dodajemo vrijednost digitalnog pot u kružni bafer. 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 izbacuje 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 postavite digitalni lonac na minimum, pa ga isprobajte.

Korak 5: Prilog projekta

Prilog projekta
Prilog projekta

Imam 3D štampač pa sam odlučio da odštampam 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 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 da ispraznim bateriju i brinem se o adapteru dok sam daleko od auta. Koristio sam razdjelnik kutije osigurača u automobilu za pokretanje žice za paljenje i nisam morao dodatno komplicirati adapter.

Prema mojim testovima, potrošnja energije je 20-30 mA. Smanjio 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 radio), znanje koje sam stekao je neprocjenjivo.

Preporučuje se: