BMW Serie 1 E81/E82/E87/E88 - Soluzione aggiunta Bluetooth Arduino + KCAN | BMWpassion forum e blog
  1. Questo sito utilizza i cookies. Continuando a navigare tra queste pagine acconsenti implicitamente all'uso dei cookies. Scopri di più.

BMW Serie 1 E81/E82/E87/E88 Soluzione aggiunta Bluetooth Arduino + KCAN

Discussione in 'BMW Serie 1 E81/E82/E87/E88' iniziata da DaIceMan, 3 Marzo 2019.

Tag (etichette):
  1. DaIceMan

    DaIceMan Kartista

    100
    44
    22 Ottobre 2018
    Milano
    Reputazione:
    7.726.187
    116i Futura E81
    Ci sono varie soluzioni per aggiungere la funzionalità Bluetooth per questi modelli della serie E che ne sono sprovvisti, dall'andare a sostituire la radio Business mettendone una Professional originale (va anche aggiunto il kit microfono e adattatore USB per completare il tutto - costo sui 450-500Euro per un kit completo nuovo) e codificata, oppure prendere un modulo completo aftermarket Cinese con schermo HD con motore Android 7 o 8 ad prezzo simile che offre decisamente di più, mantenendo i comandi al volante e sensori di parcheggio (anche se il suono è emesso da un cicalino e non più dalle casse perdendo la direzionalità dell'oggetto, se sul lato dx che sx). La soluzione più immediata a basso costo è quella di aggiungere una interfaccina BT che si collega allo spinotto AUX alimentata a batteria lipo. Il problema è che i comandi al volante non funzionano comunque e va controllato tutto dal telefono. Ho quindi deciso di creare una soluzione intermedia, implementando il supporto dei comandi al volante interfacciandomi al bus CAN (KCAN) preso da dietro la stessa radio usando un Arduino pro mini con modulo CAN bus MCP2515 il tutto collegato ad un modulo bluetooth preso da AliExpress a ca 3 Euro con tasti di controllo. L'Arduino pro mini costa qualche Euro assieme al modulo MCP2515 - costo totale dei pezzi ca 10Euro. Ho installato il tutto nello spazio disponibile tra la radio ed i comandi del clima (ampio spazio). Tutti i collegamenti li ho fatti direttamenti sui pin della radio (connettore quadlock) ove ho collegato l'audio in (AUX), CAN H e L e alimentazione (temporizzata 30min dopo aver spento il quadro e/o chiuso l'auto). L'arduino pro mini ed il modulo CAN-interface li ho attaccati con il biadesivo direttamente dietro al PCB del modulo Bluetooth e poi saldato i collegamenti come da foto (si vede anche l'adattatore USB-Seriale per programmare l'Arduino che ovviamente non serve una volta programmato):
    https://www.bmwpassion.com/forum/attachments/kcan_bt_handsfree_26-12-2020-zip.59724/
    (Aggiornamento del 26/12/2020 con callback fix)
    Il tutto è alimentato dal regolatore 78L05 dell'Arduino Pro Mini. Consumo totale in funzione da 30 ai 60mA in base all'uso (se con chiavetta USB collegata o solo BT, in comunicazione e non) ben al di sotto del limite di 100mA del 78L05. Ho inserito in serie al positivo una resistenza da 1/4 di watt da 10Ohm per limitare la caduta sul 78L05 e limitare il calore dissipato. Inoltre se ci fossero problemi con il regolatore la resistenza limita la corrente assorbita. In serie inoltre per sicurezza c'è un piccolo fusibile da PCB da 250mA il tutto nascosto in termoretaribile.
    Questo è il lato sopra del modulo BT:
    Arduino-CAN-BT-top-s.jpg
    Questo è il sub-connettore rimosso dal quadlock dove arrivano i 3 fili (massa canale DX e SX) dello spinotto AUX:
    AUX-IN-s.jpg
    Processo di collegamento ai vari pin con aggiunta di termoretraibile:
    20190210_185903s.jpg
    Foto del vano ove ho installato il tutto (che poi ho coperto con un poi di materiale spugnoso):
    20190210_193613s.jpg
    Il microfono (dato in dotazione con il modulo BT) l'ho nascosto tra il portacenere e la placca nera di chiusura subito sotto. L'audio si sente benissimo sia in movimento che da fermi quindi non ho ritenuto di dover togliere la fascia laterale e profilo per far passare il filo fino a sopra ove va installato di serie. I comando al volante funzionano praticamente come al solito: frecce su e giù comandano i brani, tenendo premuto più a lungo controllate il volume BT del telefono (non della radio che rimane controllato con i tasti + e -) mentre con il tasti cornetta fate partire o fermate i brani oppure rispondete alle chiamate o mettete giù. Tenendo premuto il tasto cornetta un po' più a lungo richiamate l'ultimo numero. La pressione sul tasto cornetta deve essere molto veloce (meno di 1 secondo) o effettuate la richiamata. Il tasto Voce invece cambia ingresso del modulo da BT a USB (se avete inserito una chiavetta con prolunga USB, anche se non la uso mai). Il codice per arduino lo trovate allegato. Dentro ci sono tutti i dettagli dei collegamenti ed i filtri impostati sul bus CAN transceiver MCP2515 per chi fosse intaressato con i comandi che ho decodificato per pilotare il modulo.
    Qui c'è il link del modulo BT in questione:
    https://www.aliexpress.com/item/5V-...ereo-Amplifier-Headphone-USB/32809733834.html

    Il modulo ha un ingresso AUX, uscita, connettore per MicroSD e chiavetta USB. Ha 3 modalità di funzionamento: riproduzione da AUX (quindi da fonte esterna), USB/MicroSD (esclusive) e BT. Io non ho connesso nulla alla porta USB dato che non mi interessa (ascolto dal telefono). Inoltre se si è in modalità USB il BT viene interrotto quindi non è utile ai fini del hands-free. Il modulo usa un chip largamente diffuso della dragon (il link l'ho messo nel codice per chi volesse approfondire - se avete domande dato che ho scritto tutto in inglese vi spiego).

    Questo è il modulo CANbus (basta cercare arduino MCP2515 CAN bus module):
    https://www.aliexpress.com/item/Fre...eiver-SPI-Module-For-arduino/32709839532.html
    Per l'arduino pro mini ne trovate quanti ne volete:
    https://www.aliexpress.com/item/1pc...Arduino-Compatible-With-Nano/32672852945.html

    Comprendo che non sia proprio una passeggiata per chi non è pratico di elettronica ma per chi volesse cimentarsi e non spendere una cifra più significativa ritengo sia un progettino a portata. Lo uso da qualche settimana e dopo qualche fine tuning sono abbastanza soddisfatto anche se il codice si può ottimizzare (ma di spazio sull'AT328p ce n'è che cresce). Ho notato solo che se sto ascoltando musica dal telefono e mi arriva una chiamata quando rispondo ogni tanto l'audio risulta distorto da chi ci sente e quindi è necessario mettere giù, fermare la musica e richiamare. Questo problema l'ho già riscontrato su altri dispositivi BT usando anche altri telefoni (anche sistemi BT originali di auto) ed è dovuto al fatto che la connessione Multimediale è fatta con un certo protocollo mentre la connessione "hands free" per chiamare in altro e sono entrambe attive e quando arriva una chiamata non viene correttamente preparata la "commutazione" (buffer underruns). Inoltre se avete un altro adattatore (tipo Carly) BT che usate per monitorizzare i parametri sconsiglio di tenerli tutti attivi contemporanemente per evitare che accada quanto sopra (anche se sono connessioni di tipo diverso).
    Buon divertimento ;)
     

    Files Allegati:

    Ultima modifica: 26 Dicembre 2020
    A maledrac, 070, 118Danio e ad altre 2 persone piace questo elemento.
  2. Fede84

    Fede84 Primo Pilota

    1.460
    1.291
    27 Maggio 2016
    Genova
    Reputazione:
    529.210.683
    BMW 216d Grand Tourer
    =D>=D>=D>
    Complimenti per l’operazione!
     
    A DaIceMan piace questo elemento.
  3. mangost

    mangost Amministratore Delegato BMW

    2.557
    1.455
    11 Agosto 2016
    Modena
    Reputazione:
    220.380.063
    bmw 130i msport bmw m135i xdrive
    Complimenti per il lavoro e per il contributo..=D>
     
    A DaIceMan piace questo elemento.
  4. kamilo58638

    kamilo58638 Aspirante Pilota

    1
    0
    22 Aprile 2019
    Düsseldorf
    Reputazione:
    0
    e87
    Hello, do you have a schematic for me for connection between all parts?
    Best regards.

    Very nice project
     
  5. 118Danio

    118Danio Aspirante Pilota

    43
    7
    14 Aprile 2019
    Napoli
    Reputazione:
    0
    118D E87 520D F11
    wow è una genialata! se fattibile vorrei provare anche io! sulla mia ho un sistema navi prof con bt solo chiamate, per ora ho risolto per i media con un modulo bt collegato alla presa aux sotto il bracciolo, utilizzando però per le chiamate quello integrato. Secondo te puo essere fattibile per me fare questa modifica e continuare ad utilizzare il bt integrato per le chiamate?
     
  6. DaIceMan

    DaIceMan Kartista

    100
    44
    22 Ottobre 2018
    Milano
    Reputazione:
    7.726.187
    116i Futura E81
    Certamente, basta che dopo che hai fatto il pairing con il modulo BT, disattivi dalle opzioni BT del tuo telefono le opzioni "chiamate" dal collegamento verso il modulo e lasci solo l'audio multimedia (ora hai 2 connessioni separate ma di tipo diverso mentre il modulo te ne da 2 verso lo stesso dispositivo). In questo modo rimane connesso al tuo BT integrato solo per le chiamate e per l'audio streaming/musica invece si collega al modulo (praticamente come hai ora, solo che ti colleghi al modulo BT invece che al tuo esterno collegato al jack AUX). Quando rispondi alle chiamate il tuo BT integrato comunque ha precedenza quindi muterebbe la musica come fa ora (alla pressione breve del tasto chiamata ora l'arduino mette in pausa la musica e risponde alla chiamata).
     
  7. 118Danio

    118Danio Aspirante Pilota

    43
    7
    14 Aprile 2019
    Napoli
    Reputazione:
    0
    118D E87 520D F11
    Ciao, sto provvedendo ad acquistare i componenti da te proposti, volevo chiederti se l'adattatore USB-Seriale per programmare l'Arduino fosse compreso con la scheda oppure da comprare? Nel caso sia da comprare potresti indicare quello più adatto, è la prima volta che mi cimento con Arduino e prima di iniziare vorrei essere sicuro di avere tutto. Grazie
     
  8. DaIceMan

    DaIceMan Kartista

    100
    44
    22 Ottobre 2018
    Milano
    Reputazione:
    7.726.187
    116i Futura E81
    No - il convertitore lo devi prendere a parte. In teoria puoi usare qualsiasi adattatore USB-seriale per programmare l'arduino pro mini (anche senza segnale DTR ma poi devi resettare l'arduino manualmente per programmarlo) ma ti consigilio di usarne uno che ha i pin "corrispondenti" con quello dell'arduino in modo che basta infilarlo nei fori (anche senza saldarli a patto che faccia contatto tenendo la basetta convertitore leggermente premuta ed inclinata una volta inserita mentre lo programmi). Prendi un convertitore USB-Seriale come questo (anche su ebay):

    https://www.aliexpress.com/item/Fre...dapter-Module-forArduin-Mini/32519490747.html

    Se osservi il pinout noti che parte con DTR e procede con RX, TX, VCC, CTS e GND. Questa sequenza corrisponde con quella dell'Arduino Pro Mini quindi puoi infilare direttamente il convertitore sulla basetta una volta allineato dal verso giusto (DTR con DTR etc). Inoltre ha su un ponticello con 3 pin per selezionare la tensione di esercizio: devi prendere un Arduino Pro Mini da 5Volt (non 3.3) in modo da essere compatibile con le varie schede (BT e MCP) con cui lo colleghi - quindi il ponticello deve essere su 5V quando programmi fai debug con l'Arduino. Inoltre è comodo perchè se vuoi riprogrammare l'Arduino *quando è alimentato dai 12V esterni* quindi dall'auto quando lo colleghi puoi semplicemente togliere il ponticello per evitare un ritorno di alimentazione verso il convertitore. Se lo programmi solo collegato al portatile (senza 12V esterni) devi solo assicurarti che sia impostato sui 5V.
    P.S. molti convertitori con chip FTDI232 sono dei "cloni" e con i driver nativi in Windows 7 o 10 non si attiva il driver e viene riportato un punto esclamativo giallo sulla porta in gestione periferiche (l'FTDI ha bloccato tramite un controllo interno i chip contraffatti). Basta però scaricare il driver precedente ed aggiornarlo e tutto fila liscio. I driver precedenti (il 2.08.24 sicuramente funziona) puoi trovarli sul sito FTDI stesso sotto la sezione "no longer supported" qui: https://www.ftdichip.com/Drivers/D2XX.htm. Ripeto questo serve solo se dopo aver collegato il convertitore USB seriale al PC vedi che sotto gestione dispositivi "Porte COM e LPT" la porta ha un punto esclamativo giallo (Windows 7 e 10 hanno di base i driver ultimi aggiornati per questo convertitore)
     
    Ultima modifica: 26 Dicembre 2020
    A 118Danio piace questo elemento.
  9. 118Danio

    118Danio Aspirante Pilota

    43
    7
    14 Aprile 2019
    Napoli
    Reputazione:
    0
    118D E87 520D F11
    Grazie mille!!! Sei stato super preciso!
     
  10. Rob69

    Rob69 Aspirante Pilota

    3
    0
    3 Giugno 2019
    poland
    Reputazione:
    0
    E87
    Ciao
    Ho un problema con la programmazione di arduino

    mcp_can.h: No such file or directory
    'MCP_CAN' does not name a type
     
  11. wewwo

    wewwo

    20.733
    3.316
    19 Febbraio 2016
    Mediolanum
    Reputazione:
    1.379.970.204
    BMW X3 G01 20i Msport Carbonblack
    Ciao :biggrin: @Rob69

    prima di iniziare a postare sul forum è sempre gradita la presentazione nell'apposita sezione:
    https://www.bmwpassion.com/forum/forums/mi-presento-io-e-la-mia-bmw.17/
    Abbiamo anche a disposizione un facsimile per agevolare i nuovi utenti:
    https://www.bmwpassion.com/forum/threads/facsimile-mi-presento-io-e-la-mia-bmw.328544/
    Ti sarà dato il gentile benvenuto e sarai messo a conoscenza del Regolamento, Condizioni d'uso, la funzione "cerca", il tutorial per inserire le foto ecc.
    Dopodiché sposteremo il tuo thread nella sezione tecnica ;)

    Buona permanenza su BMWpassion Forum :biggrin:
     
  12. DaIceMan

    DaIceMan Kartista

    100
    44
    22 Ottobre 2018
    Milano
    Reputazione:
    7.726.187
    116i Futura E81
    Assicurati di avere aggiunto le relative librerie al tuo ambiente Arduino (la libreria del MCP2515). La libreria che ti serve aggiungere la trovi qui:
    https://github.com/coryjfowler/MCP_CAN_lib
    Scaricati tutto lo ZIP poi estrailo, togli "lib-master" dal nome e sposta la cartella principale sotto Arduino\Libraries nella tua cartella Documenti. Se hai dubbi ci sono molte guide che spiegano il processo di aggiunta libreria manuale (ci sono 2 metodi).
     
    Ultima modifica: 26 Dicembre 2020
    A Rob69 piace questo elemento.
  13. Rob69

    Rob69 Aspirante Pilota

    3
    0
    3 Giugno 2019
    poland
    Reputazione:
    0
    E87

    Grazie, l'ho già fatto
     
  14. DaIceMan

    DaIceMan Kartista

    100
    44
    22 Ottobre 2018
    Milano
    Reputazione:
    7.726.187
    116i Futura E81
    Volevo avvisarvi che ho rilasciato la versione con il fix per il problema del callback indesiderato (cioè richiamare l'ultimo numero chiamato); questo accadeva se si teneva premuto il tasto "cornetta" per più di un attimo (quindi spesso) e quindi invece di far partire un brano faceva partire l'ultima chiamata effettuata in coda (come il doppio click sul tasto della cuffia). Questa versione elimina questo inconveniente.
    https://www.bmwpassion.com/forum/attachments/kcan_bt_handsfree_26-12-2020-zip.59724/
     
    A maledrac, BlueMW, CarMons e 1 altro utente piace questo messaggio.
  15. Mini98

    Mini98 Aspirante Pilota

    7
    1
    7 Febbraio 2022
    Modena
    Reputazione:
    0
    Mini COOPER R56
    Salve, vorrei chiedere due cose, i due cavi can H e L posso prenderli anche da qualsiasi altra parte a parte sotto la radio, e inoltre l'alimentazione dell'arduino come l'hai fatta? Hai collegato direttamente l'arduino ai 12V il pro mini ha già il regolatore incorporato giusto? Grazie
     
  16. DaIceMan

    DaIceMan Kartista

    100
    44
    22 Ottobre 2018
    Milano
    Reputazione:
    7.726.187
    116i Futura E81
    Ciao, è tutto descritto nel file .ino e nel primo post in alto del thread. L'alimentazione è presa dal +12 della radio e uso il regolatore stesso dell'Arduino con in serie una resistenza per limitare la caduta sul regolatore stesso. Il bus CAN usato è il K-CAN, più lento e dedicato alle periferiche (queste serie hanno 3 Bus CAN in base alla priorità dei dati). Non è possibile usare il bus CAN presente sulla OBD dato che questo è quello ad alta velocità collegato alle centraline motore (FRM/CAS etc). La posizione più semplice da dove agganciare il K-CAN è appunto dietro la radio stessa (occhio anche alla polarità del bus K-CAN). Ricordati anche di tenere la distanza dall'ultima periferica meno do 10cm nel caso non ti agganciassi dietro alla radio (ma è il posto più comodo).
     
    Ultima modifica: 8 Febbraio 2022
  17. Mini98

    Mini98 Aspirante Pilota

    7
    1
    7 Febbraio 2022
    Modena
    Reputazione:
    0
    Mini COOPER R56
    Il mio problema è che non devo installarlo su un BMW ma su una mini r56, dove per arrivare allo stereo tocca smontare mezzo cruscotto, per questo dicevo se fosse possibile prenderlo da altre parti, quindi in caso dovessi riuscire a prenderlo da un altra parte devo stare attento a prenderlo a meno di 10 cm da una periferica qualsiasi.
     
  18. DaIceMan

    DaIceMan Kartista

    100
    44
    22 Ottobre 2018
    Milano
    Reputazione:
    7.726.187
    116i Futura E81
    Si certo: dato che il bus CAN è sempre terminato sulla prima ed ultima periferica nella catena, non puoi estendere il bus oltre per troppo o si creano delle riflessioni di segnale che interferiscono con tutta la catena. Il massimo che ho esteso senza problemi è 20cm ma questo dipende molto anche da quanto è lungo il bus - devi provare e vedere se il tutto funziona quando connesso. Se vedi che il cruscotto ti segnala errori o altre stranezze scollega e accorcia. Altra cosa è che essendo su un modello diverso, dovrai quasi sicuramente analizzare i messaggi inviati dal volante usando il debug seriale per capire se arrivano con lo stesso header di quelli preimpostati perchè su modelli diversi può variare anche se leggermente e devi quindi adattare il codice per riconoscerli correttamente.
     
  19. Mini98

    Mini98 Aspirante Pilota

    7
    1
    7 Febbraio 2022
    Modena
    Reputazione:
    0
    Mini COOPER R56
    Capito perfettamente, quindi mi conviene sempre restare molto vicino alla periferica, in ogni modo dovrei riuscire al massimo mi posso agganciare sulla plancia in alto che comanda anche le luci e il tetto apribile. Per il codice immaginavo si dovesse adattare il codice ma per quello non è un problema, ho scritto varie volte in C e ho realizzato parecchie cose già con arduino, ma per fare un log che strumenti dovrei usare?
     
  20. ndk

    ndk Presidente Onorario BMW

    7.545
    3.274
    19 Gennaio 2016
    Italia
    Reputazione:
    672.467.776
    e46
    Interessante!
    Sto proprio valutando di togliere la cinesata Eonon per tornare all'autoradio di serie, ma mantenendo il BT in qualche modo.

    Secondo te devo fare qualche adattamento per E46? Devo solo cercare uno schema per intercettare i comandi al volante. E forse i valori dei segnali.. immagino tu li abbia trovati premendo il pulsante e "stampando" su seriale
     

Condividi questa Pagina