Interfaccia NMEA2000 con Arduino due

Tutti quelli che bazzicano nel settore meccanico,avranno sicuramente sentito parlare di Can Bus, esso è un tipo di comunicazione seriale con una percentuale di errore così bassa durante la trasmissione che viene classificato come uno dei più sicuri mezzi di trasmissione dati, tantevvero che tutte le auto,pale meccaniche,navi,macchinari industriali,ecc... ne fanno uso, usando però tipologie di protocolli diversi (Gestiti via firmware)a seconda delle esigenze del costruttore.

In questo articolo non spiegherò cosa sia il canBus in particolare(Magari più avanti farò un articolo in cui ne descriverò il funzionamento) mi concentrerò solo su una parte di esso ovvero l' Extended Can o come lo chiama microchip ECAN. Per poter iniziare dovete sapere che qualunque messaggio ECAN è basato su alucuni punti fondamentali:

Priorità del messaggio() composto da 3bit

Indirizzo di chi trasmette "ID" composto da 8bit

Tipo di dato trasmesso "PGN" composto da ben 18bit

Numero di Byte che verranno trasmessi"DLC" (da 0 a 8) composto da 4bit

Byte di dati secondo la lunghezza trasmessa con DLC e vanno da 0 a 64bit

In particolare quì sotto allego un immagine con la descrizione completa di un messaggio inviato su di una linea CAN

Come si può vedere dall'immagine una stringa di un messaggio Can è ben diversa dalla stringa di un messaggio seriale che è composta da solo 8bit utili, sun un messaggio can esteso abbiamo 29bit solo per l'indirizzo... Altra partilìcolarità del protocollo Can è la priorità del messaggio,cioè la capacità di un messaggio di priorità più alta di avere la precedenza su un messaggio di priorità più bassa.Altra cosa fondamentale è che al contrario dell'i2c,di una seriale quì tutti sono considerati nodi e quindi tutti possono ricevere ed inviare messaggi a tutti senza bisogno di un"arbitro" che faccia da vigile fra i vari messaggi

Nell'immagine c'è un esempio di collegamento, come si vede per un bus can servono solo due cavi a cui poi tutti i nodi si appoggiano per leggere e scrivere messaggi. La bellezza di questo tipo di connessioni è che chi ascolta non si deve per forza presentare ma se vuole può anche solo ascoltare senza che nessuno dica niente... Quindi se ammettiamo io sia uno stereo e voglia alzare il volume in base ai giri ed alla velocità dell'auto lo potrei tranquillamente fare ascoltando dal bus solo i messaggi che parlano della velocità e dei giri motore... Ma potrei contemporaneamente dire al cambio automatico di rimanere in folle perchè il pilota sta visualizzando sullo stereo un film...

Come faccio a sapere quali messaggi mi indicheranno i giri motore? Per conoscere i giri motore ho bisogno di sapere due cose fondamentali, devo conoscere il PGN del messaggio che li trasporta (ad esempio in mare sulle imbarcazioni questo PGN è "127488") e la formattazione con cui vengono inviati(nel caso del messaggio 127488 i giri motore sono composti dall'unione del secondo e del terzo byte inviato, con una risoluzione di 0.25, quindi avremo un massimo di circa 16000 giri al minuto)

Arriviamo finalmente all'NMEA2000 delle nostre imbarcazioni

Prima di addentrarci nell'NMEA2k era doveroso dare a chi non le possiede qualche nozione di base sul protocollo ECAN e sulle sue funzioni.

L'NMEA2k altro non è che una sottocategoria di un protocollo creato in precedenza per i mezzi pesanti,quali camion,trattori,mezzi movimento terra,... chiamato J1939.

Dal j1939 l'NMEA2k eredita tutta la struttura del messaggio,il tipo di collegementi e la velocità di trasmissione(250Kbps) ed alcuni PGN fra cui quelli utilizzati per la gestione di periferiche identiche sulla stessa linea che trasmettono sotto lo stesso PGN ma con due informazioni separate(ad esempio due sonde carburante di due serbatoi diversi utilizzeranno ambedue il PGN127505 ma nel messaggio precisamente sul primo byte verra indicato il tipo di serbatoio carburante,acqua,olio... e se è il serbatoio 1,2,3...)

Oppure altro PGN utilizzati in comune al j1939 saranno quelli riguardanti la tipologia e l'identificazione di una periferica da parte delle altre periferiche...

Altra cosa Fondamentale dello satndard NMEA2000 è la standardizzazione dei connettori ,quindi la facile connessioni di tutti gli apparecchi che ne rispettano lo standard,e la presenza nel connettore oltre ai due cavi dati un alimentazione non stabilizzata dai 9 ai 32Vdc e di un cavo di schermatura sempre collegato a massa. In totale su ogni connettore troveremo 5 pin

Ogni periferica verra collegata al bus mediante degli "T" che faranno da connessioni.

Una volta creata la serie di "T" bisognerà mettere una resistenza all'inizio e alla fine del bus. Esso viene spesso chiamato "terminator resistor" senza di esso il CanBus non funzionerebbe!

Non è importante per questo articolo sapere con precisione la sua funzione, ci basti sapere che senza di esso il bus non funzionerebbe...