venerdì 17 ottobre 2014

Arduino e SRCP server - Installazione e configurazione

Nel precedente articolo avevo promesso una guida per la configurazione di un semplice SRCP server mediante Arduino.
Diamo ormai per scontato di avere attivo e configurato sul nostro PC l'ambiente di sviluppo di Arduino (nel caso si possono avere maggiori informazioni QUI.)
Il passo successivo è ottenere una copia del codice sorgente per Arduino, quindi rechiamoci sul repository di microSRCP ospitato nei server di GitHub. Per chi non è pratico di repository e Git, a questo link è possibile avere una copia di tutto il necessario compressa in un file zip.
Estraiamo il file ottenuto in una cartella temporanea. A questo punto dobbiamo copiare il contenuto della cartella


microSRCP-0.92\microSRCP\arduino\libraries

nella cartella libraries dell'IDE di Aduino

A questo punto occore aprire nell'IDE il file 

microSRCP-0.92\microSRCP\arduino\microSRCPServer\microSRCPServer.ino


Di default il server è configurato per restar in ascolto sul canale seriale, per modificarlo in modo da utilizzare una rete Ethernet modificare la riga 34

#define SRCP_PROTOCOL SRCP_SERIAL

editarla in

#define SRCP_PROTOCOL SRCP_ETHERNET

inoltre l'autore ha inserito un ulteriore controllo per no configurare nulla se si sceglie il server ethenet in quanto ogni tipo di shield inserita potrebbe interferire co la Ethernet Shield. Eliminare quindi le righe 127 e 170 per cancellare IF condizionale. 

Il passo successivo è configurare la scheda come una scheda di tipo FB, per fare questo editare la riga 46

#define BOARD  BOARD_STANDARD

editarla in 

#define BOARD BOARD_FB

Configuriamo anche l'indirizzo IPdel server editando questa line di codice inserendo un indirizzo adatto alla nostra rete 


A questo punto occorre configurare gli ingressi di Arduino da utilizzare come ingressi di feedback. 

localizzate il seguente codice all'interno del sorgente:


Notate che vengono create due istanze di Feedback, a prima considera gli ingressi da D2 a D9 ed il primo indirizzo di feedback esposto avrà' indirizzo 1 lato Rocrail, mentre la seconda considera gli ingressi da 10 a 17 e il primo degli 8 ingressi avrà indirizzo 9. Ricordo che per ingresso 14 si intende il primo ingresso analogico avendo la Board UNO solo 13 ingressi digitali.

A questo punto possiamo compilare il sorgente e caricarlo in Arduino, quindi connettiamo la Ethernet Shield alla nostra rete.

Per configurare Rocrail occorre aggiungere nelle proprietà di Rocrail una nuova centrale di tipo SRCP con ID univoco configurata come segue, ovviamente inserite l'indirizzo IP del vostri microSRCP


Configuriamo quindi i sensori ricordandoci di assegnare come interfaccia quella del server SRCP e gli indirizzi che avete inserito nel sorgente.


A questo punto riavviate il server Rocrail, tenete d'occhio la finestra di  output e noterete una serie di informazioni relative all'handshaking e alla connessione al server SRCP, alla fine dei quali avrete il vostro sistema di feedback collegato a Rocrail!

Alla prossima!






Arduino e SRCP Server

Nell'utilizzo di Rocrail mi sono imbattuto spesso in questo acronimo che subito mi ha incuriosito per le sue possibilità. Come detto SRCP è un acronimo di Simple Railroad Command Protocol e in sostanza è un protocollo di comunicazione tra sistemi diversi atto alla gestione ed al comando di un plasico ferroviario.
SRCP è un protocollo, quindi non si occupa della trasmissione fisica del segnale, di fatto è implementabile sia su linea seriale su CAN bus, su RS485 e su Ethernet. Questo ultimo layer fisico è molto interessante in quanto già implementato da Rocrail.
SRCP è un protocollo Client/server, in questo caso Rocrail agisce da Client, il quale si interfaccia ad un server per comunicare azioni od ottenere informazioni. Per maggiori informazioni è disponibile un documento PDF con le specifiche del protocollo 

Navigando in rete mi sono imbattuto in questo progetto : microSRCP
Si tratta sostanzialmente di un server SRCP scritto per Arduino. Al momento la versione disponibile e' la 0.92.

Il server sostanzialmente può assumere diverse funzioni in base a come compiliamo il sorgente.
Attualmente la mia attenzione si e' concentrata sulla compilazione di unA board di tipo FB (feedback) da collegare via TCP/IP a Rocrail.
Naturalmente per realizzare un layer fisico di questo tipo dovremo dotarci oltre ad una board di tipo Arduino UNO R3 anche di una Ethernet Shield



Nel prossimo articolo vediamo come configurare il sistema.