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.

sabato 8 febbraio 2014

Aggiornamento decoder ESU Switchpilot V2





E' stata rilasciata da ESU una nuova versione (V2) per il software degli ottimi decoder della serie Switchpilot.
Esteticamente non si nota nessuna differenza con i predecessori, attenzione però perchè cambia il codice:



Art. 51822 Switchpilot Servo (ex art 51802)

Art. 51820 Switchpilot (ex art 51800)






ESU Switchpilot
Il sito non riporta le differenze tra i due software ma ci sono eccome e sono sostanziali anche se riguardano principalmente la gestione dei servocomandi. Anche lo Switchpilot normale è coinvolto in questo aggiornamento in quanti possiede due uscite per il pilotaggio di due servocomandi.
Vediamo le caratteristiche principali dell'aggiornamento.

Innanzitutto è ora possibile mediante la CV50 definire come pilotare elettricamente i servocomandi ovvero se mantenerlo anche a posizione raggiuntao ancora se alimentare il servo solo per effettuare il movimento (verosimilmente questa funzionalità ha dovuto coinvolgere anche i progettisti hardware per realizzare una nuova versione dell'elettronica)

Altra nuova funzionalità è il mapping delle uscite, ovvero la possibilità di comandare più di un servo alla ricezione di un singolo comando (es. muovo i servo 3 e 4 se ho un comando sul servo 4) sia in arrivo dal DCC o mediante i pulsanti manuali. Questo si imposta mediante le CV 51-52-53-54. (solo le prime due per lo Swichpilot normale)


ESU Switchpilot Servo

Caratteristica riservata al solo Switchpilot Servo è la possibilità di impostare altre due posizioni per ogni servo raggiungibili mediante un comando diretto all'indirizzo secondario, quindi ogni servo ha una coppia di indirizzi, comandando il primo il servo va da pos A a pos B, mentre comandando il secondo indirizzo va da poc C a pos D.

Direi che tutto sommato non è male considerando che sicuramente con la nuova versione sono stati corretti bug ed è stato ottimizzato il codice, inoltre il tutto allo stesso prezzo (o quasi) di listino della versione precedente.

Brava ESU!


domenica 1 dicembre 2013

Decoder spec per RocPro

Per chi utilizza RocPro, l'ottimo addon di RocRail che permette di programmare tutti i decoder DCC in modo grafico, spero di fare cosa gradita rendendo disponibili i file xml relativo ai decoder Khuen N045 e Khuen N025, due ottimi decoder del noto produttore tedesco.
Ricordo che per attivare RocPro è necessario effettuare una donazione di 10€ agli autori che dà diritto anche di utilizzare le connessioni con AndRoc o iRoc per interfacciare RocRail con i Tablet o cellulari Android/iOS




Per utilizzare i file non bisogna far altro che posizionarli nella cartella decspecs che si trova (per la versione Windows) nella cartella Documenti\Rocrail dell'utente corrente.
Il file può essere tuttavia copiato in qualsiasi cartella e aperto mediante il pulsante "Open"
Insieme ai decspecs allego anche il link per lo scaricamento delle immagini del decoder già in formato corretto.


Immagini 




domenica 13 ottobre 2013

Gestire un cappio di ritorno in digitale con con Arduino (parte I)

Quando per esigenze di scena o semplicemente di percorso nel nostro tracciato ferroviario si viene a creare un cappio di ritorno, il nostro sistema digitale rileverà necessariamente un corto circuito quano un rotabile lo impegnerà.
Questo succede perchè una fase (in digitale non si ragiona in poitivo-negativo) del segnale DCC vene in contatto con l'altra quando il rotabile raggiunge il deviatoio che crea il loop.

Per poter gestire questo evento straordinario bisogna innanzitutto a livello di cablaggio isolare completamente la tratta del loop dal deviatoio mediante scarpette isolanti. L'azione da svolgere è semplicemente quella di invertire le due fasi tra loro quando il rotabile è completamente nel tratto sezionato.

Esistono numerosi dispositivi che svolgono questa funzione automaticamente il più famoso è il Lenz LK-200.

In questo articolo tuttavia illustrerò un metodo per gestire i loop in maniera totalmente automatizzata mediante Arduino.

Le principali funzionalità del sistema sono:


  • Comando dello scambio motorizzato mediante servocomando.
  • Rilevazione dell'occupazione del loop mediante barriera IR
  • Possibilità di utilizzare pulsanti esterni per movimentare il deviatoio.
  • Possibilità di utilizzare il DCC per movimentare il deviatoio.
Il principio di funzionamento è semplicissimo. Quando la barriera IR viene interrotta (quindi il treno stà ancora transitando) il sistema attenda che la barriera venga liberata (quindi il treno è completamente nel loop). Dopo un ritardo impostabile il sistema predispone il deviatoio per l'uscita al loop e commuta un relè che inverte le fasi del segnale DCC.
Mediante pulsanti esterni o mediante un comando DCC è quindi possibile scegliere il verso di percorrenza nel loop.

Ecco un piccolo video per illustrare il funzionamento del sistema