Tracker di sensori per moto

Ciao a tutti!

Ho da poco acquistato la mia prima moto (yay!) e sono già a smanettare con i video della dashcam.

Sfortunatamente ho notato che i sensori della stessa lasciano molto a desiderare, ma quanto meno hanno il GPS (e quindi un timestamp abbastanza preciso).

Volevo realizzare un tracker di vari sensori, sia direttamente dalla moto (velocità, RPM), sia esterni (accelerometro, giroscopio, GPS), salvando i dati su scheda microSD.

Stavo cominciando a fare la BOM (più difficile del previsto...) sperando di utilizzare una vecchia board (compatibile Arduino Pro Micro), ma volendo con una più recente Arduino Nano R4.

Ho tante domande, ma cominciamo dalla parte da cui ho cominciato (non è detto che sia la più semplice xD)

  1. La moto ha un connettore a 6 PIN compatibile con lo standard OBD2, quindi per prima cosa ho bisogno di un adattatore per collegarmi ad esso. Ho intenzione di prendere la corrente direttamente dalla presa OBD2 (che è a 12V)
  2. Essendo a 12V, ho bisogno, da quanto ho capito, di un "buck" 12V -> 5V (voltaggio dell'Arduino Nano R4 che vorrei utilizzare). Prima del buck ho capito che sarebbe buona norma mettere un fusibile da 1-2A per evitare di friggere tutto in caso di forti sbalzi.
  3. Se non ho capito male a valle del buck è buona norma mettere un condensatore elettrolitico (qualsiasi cosa essa sia D:) per evitare sbalzi di tensione o rumore della batteria del mezzo
  4. Una volta collegato positivo e negativo dovrei essere a cavallo, se non fosse che non è collegato ancora nulla :smiley:
  5. OBD2: a questo punto vorrei collegarmi ai segnali dell'OBD2. Per fare ciò da quanto ho capito ho bisogno di un modulo txrx CAN, che da quanto ho capito è un protocollo di comunicazione. Da quanto ho capito (correggetemi se sbaglio) l'Arduino di base non supporta un bus CAN, quindi ho bisogno di un modulo apposito -> pensavo ad un chip MCP2515, il quale fortunatamente opera fino ai 5.5V e dialoga con protocollo SPI. Questo chip dovrebbe essere quindi cablato da una parte ai pin dati OBD2, dall'altra all'Arduino.
  6. GPS: questo mi permetterà più che altro di avere un timestamp di riferimento, per coordinare le immagini riprese. Guardando velocemente ho visto il chip TESEO-LIV3R, su protocollo I2C, ma sfortunatamente opera a 3.3V.
  7. Accelerometro / gyro: ho trovato, ancora in produzione, il chip ICM-42670-P che lavora con protocollo I2C e SPI. Di nuovo, il problema principale è che opera a 3.3V.
  8. Slot microSD: come si connettono ad Arduino?

A livello software ci lavorerò in un secondo momento. Per ora volevo capire la circuiteria di base, come risolvere il problema 5V - 3.3V, se l'alimentazione supposta abbia senso, etc.

Come software volevo usare KiCAD, anche se mi trovo già in difficoltà cercando di inserire package generici, o anche solo lo schema di Arduino Nano R4 che non è presente nella libreria standard.

Da totale niubbo, vi chiedo umilmente aiuto :slight_smile:

Alla fine, sempre che riesca ad arrivarci, ho l'intenzione di rilasciare il progetto come opensource.

Grazie mille :slight_smile:

EDIT: ho notato nelle spec del Nano R4 che ha a disposizione un 3.3V OUT. Questo vuol dire che posso anche connettere i segnali dati dei chip a 3.3V direttamente all'Arduino, oppure devo fare qualcosa in più?

Ok ho capito che già il buck, a meno che non si voglia prendere una board, è un circuito degno di se stesso xD

Non fingerò di capire il perchè dei valori, ma questo è uno schema elettrico per un buck 12V -> 5V, compreso di condensatori in ingresso (per il funzionamento del chip) ed in uscita (per mitigare i ripple) e di induttore in uscita (che devo ancora capire il suo funzionamento), oltre che a resistenze varie per pilotare il chip stesso, che ha una tensione d'uscita variabile.

Ora comincerò il mio percorso, che ho l'impressione sarà più lungo del previsto :smiley:

Ok credo, se non ho fatto casini, di aver realizzato il circuito di alimentazione dell'arduinio, a partire da una Vin di 12V.

Vin sarà messo a monte di C1.

La selezione dei componenti l'ho dedotta dalle specifiche dal TI TPS54308 (schema del reply precedente), seguendo i valori raccomandati della tabella 8-2 delle specifiche

Come posso condividervi il progetto, in modo da capire se sto facendo la cosa giusta?

Perché, cosa stai facendo? Hai pubblicato lo schema ... ora chi lo esaminerà potrà fare i suoi commenti :wink:

Da parte mia ... mi sarei ben guardado dal farmi lo step-down ed ho sempre utilizzato modulini gà fatti e collaudati :slight_smile:

Guglielmo

Con l'intenzione di fare un PCB personalizzato, volevo evitare moduli accessori per evitare di aumentare la dimensione del package finale. Mi "permetto" di mantenere solo il PCB dell'Arduino Nano R4, almeno nel primo draft.

Come scrivevo sopra, devo alimentare il circuito con la batteria della moto a 12V e quindi devo adattarlo alla tensione di Arduino (e successivamente tramite un LDO (suppongo) da 5V a 3.3V per i sensori). Volevo capire se ho combinato la "cosa giusta" :smiley:

Ho realizzato nel frattempo un subsheet in kicad. Non posso allegare ancora il progetto (in formato zip), in quanto nuovo utente....

È una DISCUSSIONE di molti anni fa ... ma leggerla tutta NON fa mai male :roll_eyes:

Guglielmo

Sono andato... leggermente avanti :sweat_smile:

In teoria ho piazzato tutti i componenti necessari, a meno del modulo bluetooth, che sto studiando al momento come integrarlo (pensavo ai pin seriali 0 e 1 + 5V e GND utilizzando un modulo "semplificato", al posto di dover connettere i 32 pin dei chip "standalone").

Posso chiedere una review generale del progetto "so far"? È questo il giusto canale?

La scheda Arduino Nano R4 ha già il controller CANbus integrato nel microcontrollore.

L’integrato MCP2515, ti complica inutilmente il circuito in quanto è ridondante. Tutto quello che ti serve è un semplice transceiver ovvero un integrato che si occupa di traslare i livelli di tensione TTL (nel caso della R4 0-5V) nei livelli di tensione previsti dal CANbus (un segnale differenziale che varia da 1.5V fino a 3.5V secondo quanto definito dallo standard) e prelevare dal tuo connettore 6 pin i segnali “CAN high” e “CAN low” oltre all’alimentazione.

I moduli basati su MCP2515 di solito usano l’integrato TJA1050/1 che si trova facilmente. Una seconda scelta potrebbe essere il SN65HVD230 (io ad esempio ho usato questo con un ESP32).

Ciao @cotestatnt

Sì, mi sono informato ed effettivamente nel progetto attuale ho optato per un chip MCP2551.

Ecco lo schema:

Ed ecco il dettaglio del soto-foglio:

Potresti dirmi se lo schema elettrico che ho fatto sia corretto?

Il circuito di verifica e terminazione funziona così:
Durante la fase di avvio (millis() < 1000) viene introdotta una corrente in EN_TERM_CHECKD che attiva il transistor che inietta la tensione su CAN_H, quindi si misura il valore di TERM_CHECKD: se è negativo e stabile da ~200 ms (non terminato), allora si abilita TERMD, diversamente si lascia TERMD spento. Vedi il sorgente qui (è un draft, ma questa logica dovrebbe essere completa): bike-sensors-logger/firmware/draft_obd_transreceiver_check.ino at main · elegos/bike-sensors-logger · GitHub