Molti dati sono passati sotto i ponti da quando Bosh registrò le specifiche tecniche del CAN bus (Controller Area Network) nel lontano 1986, e da quando questo fu usato per la prima volta nella Mercedes Benz classe S. Con il passare degli anni, il CAN è diventato parte integrante dello sviluppo e della progettazione nel settore automobilistico. Il CAN bus è robusto e particolarmente rilevante per molti altri campi d'applicazione. Un'unità mobile CAN bus è utile per effettuare analisi delle comunicazioni, diagnosi di controllo e per la risoluzione di varie problematiche. Il PiCAN HAT recensito in questo articolo è adatto proprio a questi scopi ed è utilizzabile con la versione più recente di Raspberry Pi. Diamo un'occhiata più da vicino.
I sistemi elettrici dei veicoli sono ambienti ostili per i dispositivi elettronici che, solitamente, sono piuttosto delicati. Ricordo ancora i miei sforzi nell'effettuare la ricerca guasti, nel disporre 40m di cavo per alimentare gli oscilloscopi e testare le condizioni delle apparecchiature del veicolo. Se il tuo interesse consiste nel valutare i dati del CAN bus, PiCAN 3 offre ora una soluzione diagnostica molto interessante, portatile e alternativa.
Perché utilizzare un Raspberry Pi?
Quando si sperimenta con un sistema bus come I2C, SPI, etc., le problematiche più frequenti riguardano principalmente l'organizzazione e la sequenzializzazione dei dati trasmessi, più che essere il risultato di una bassa qualità del segnale a livello fisico. Non c'è da stupirsi se il motore, o qualsiasi altro dispositivo speravi di controllare, non collabora, se esegui la trasmissione dei pacchetti in maniera scorretta o se ti confondi su come andrebbero sequenziati i byte. Strumenti come PiCAN 3 combinati con Raspberry Pi permettono una misurazione mobile. Idealmente, Raspberry Pi e un piccolo monitor è tutto ciò di cui hai bisogno per costruire un dispositivo di prova portatile. Se integri l'ambiente di sviluppo del sistema CAN con la distribuzione del sistema Raspbian sarai pronto per cominciare.
Caratteristiche Hardware
L'ambiente elettrico di un'automobile può rivelarsi piuttosto ostile per i circuiti elettronici. La casa di produzione SK Pang ha tenuto conto di ciò nella progettazione della scheda e ha dunque incorporato un sistema di alimentazione switch-mode (Figura 1) con un ampio range di tensione in ingresso da 6VDC a 20VDC che si connette alla scheda tramite un header a 5 pin. PiCAN HAT dovrebbe essere disponibile senza alimentatore a commutazione - ma non è questo il caso e l'SMPS (Switched-Mode Power Supply) adatto è quello standard. La shield CAN più recente è conosciuta come "scheda PiCAN 3 CAN-Bus per Raspberry Pi 4 con 3 A SMPS & RTC" per distinguerla dalle versioni precedenti. Quest'ultima versione include un'alimentazione a commutazione a 3A al fine di avviare Raspberry Pi 4, molto esigente in termini di energia elettrica. La shield può anche essere avviata direttamente da Raspberry Pi se alimentata attraverso la porta USBC.
Lo schema elettrico della scheda è illustrato nella Figura 1 e mostra che nella progettazione vengono utilizzati dei circuiti integrati standard. Il manuale utente è disponibile al punto [2]. L'interfaccia di segnale CAN bus viene realizzata con MCP2515, che comunica con Raspberry Pi tramite SPI e un pin GPIO di interruzione. L'interfaccia fisica con bus viene fornita tramite il ricetrasmettitore MCP2562 IC CAN. Il diagramma di circuito PiCAN 3 mostra come l'alimentazione a 3.3V utilizzata da alcuni componenti della scheda, viene presa dal regolatore del Raspberry Pi, facendo quindi a meno di un regolatore addizionale. La scheda ha due connettori (Figura 2) utili a collegare PiCAN 3 con un CAN bus esterno. Innanzitutto, c'è una morsettiera multipla a 4 poli con identificazione di segnale stampato su scheda.
Il secondo metodo utilizza un connettore D-sub a 9 poli, il quale verrà riconosciuto dai lettori di una certa età in quanto veniva utilizzato come connettore per comunicazioni standard RS232. Il connettore D-sub a 9 poli accetta lo standard OBD-II su cavo DB9 per connettersi al sistema OBD. Sfortunatamente non esiste un ruolo standard per i pin del connettore e del segnale CAN. Per occuparsi di tutte le possibili eventualità del circuito elettrico, i punti terminali della scheda (Figura 3) dovranno essere collegati attraverso un processo di saldatura. Il piano di assegnazione (Figura 4) ti aiuterà a individuare quali punti terminali andranno collegati in modo che il connettore sia compatibile con il sistema con il quale ti stai connettendo. Tali aree terminali sono aperte alla comunicazione, dunque senza i ponti di saldatura non vi sono collegamenti specifici e dunque il segnale non può essere indirizzato a nessun pin del connettore.
Le applicazioni veicolari necessitano spesso di informazioni orarie precise. Perciò, nel PiCAN 3 viene usato il chip RTC (Real-Time Clock) PCF8523, in grado di comunicare con Raspberry Pi tramite interfaccia I2C. Sulla scheda vi è una sede per batteria a bottone, specificamente per le CR1220, al fine di alimentare l'RTC.
L'Ecosistema CAN
L'OS Linux ha una certa rilevanza nel settore automotive, infatti, vi è un intero ecosistema Linux a supporto delle applicazioni CAN bus. Il range di utility disponibili spaziano dai kernel alle interfacce a riga di comando, assieme a molti altri strumenti utili. Per avviare la comunicazione con PiCAN 3, dobbiamo effettuare qualche modifica al file d'installazione Raspbian /boot/config.txt. Per prima cosa, il bus SPI deve essere abilitato dal seguente blocco:
(notare la chiamata overlay addizionale):
dtparam=spi=on dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25 dtoverlay=spi-bcm2835-overlay
Per l'utilizzo dell'orologio in tempo reale è necessaria la seguente dichiarazione:
dtparam=i2c_arm=on dtoverlay=i2c-rtc,pcf8523
Lo step successivo è quello di scaricare il modulo kernel e qualche altro programma. Per fortuna esiste un pacchetto già pronto disponibile nelle repository:
sudo apt-get install can-utils
Dopo l'installazione dell'utility CAN, l'interfaccia deve essere registrata con il sistema operativo. Per effettuare ciò, sarà sufficiente generare una nuova interfaccia secondo lo schema seguente. Il valore 500,000 indica in questo contesto la velocità massima di trasmissione dati supportata dall'hardware:
sudo /sbin/ip link set can0 up type can bitrate 500000
Una volta che l'interfaccia è pronta, potrà essere usata nello stesso modo in cui si utilizzano prodotti simili, offerti da produttori alternativi, per la comunicazione via CAN bus. Una classica applicazione consiste nell'uso di candump. Tale strumento può essere attivato nella riga di comando inserendo il seguente comando:
candump
Una volta avviato espone tutti i messaggi CAN visibili alla shield continuamente e in maniera automatica. Ciò è, per esempio, particolarmente utile quando si intende decodificare attraverso retro ingegneria le strategie di controllo motore sconosciute nei sistemi esistenti.
Esiste anche una API CAN per Python che può essere installata:
git clone https://github.com/hardbyte/python-can cd python-can sudo python3 setup.py install
Aggiungere l'RTC (Real-Time Clock)
Già da anni il sistema operativo Linux implementa RTC su laptop e PC. I sistemi non idonei all'utilizzo dell'hardware RTC (per motivi economici), fanno uso del modulo emulatore fake-hwclock nell'OS per fornire informazioni sull'ora corrente; è il caso anche di Raspberry Pi.
Al fine di poter utilizzare l'hardware RTC sulla scheda CAN, dobbiamo prima di tutto disabilitare fake hwclock per impedirgli di interferire con l'ora fornita dall'hwclock "reale":
sudo apt-get -y remove fake-hwclock sudo update-rc.d -f fake-hwclock remove sudo systemctl disable fake-hwclock
Dopodiché, dobbiamo accedere al file /lib/udev/hwclock-set (per poter eseguire questo passaggio normalmente si necessita del permesso Superuser) e commentare le linee di codice con i 2 seguenti blocchi:
#if [ -e /run/systemd/system ] ; then # exit 0 #fi #/sbin/hwclock --rtc=$dev --systz --badyear #/sbin/hwclock --rtc=$dev --systz
Le informazioni temporali ottenute dall'orologio hardware possono ora essere lette utilizzando hwclock. Le caratteristiche di questo strumento di amministrazione per l'orologio hardware sono illustrate in Figura 5.
Comunicazione e Controllo CAN Bus
PiCAN3 HAT di SK Pang con i suoi 3A SMPS su scheda è adesso idoneo all'uso con Raspberry Pi 4 per offrire capacità di comunicazione e controllo CAN bus. Assieme a Raspberry Pi, questo costituisce una piattaforma mobile sperimentale compatta e relativamente economica, provvista dell'interfaccia necessaria per la connessione diretta con il CAN bus. L'hardware della scheda è open-source, dunque il sistema può essere integrato nella tua progettazione una volta effettuata la necessaria fase di valutazione e analisi.
Web Link
ARTICOLO ORIGINALE IN INGLESE AL LINK: Yes We CAN with PiCAN 3 | Elektor Magazine