giovedì 18 dicembre 2014

Rocrail e Raspberry Pi - Configuriamo Rocrail Server

Ci siamo lasciati con una Raspberry Pi pronta all'utilizzo con Raspbian e Rocrail Server installati.

La directory di installazione di Rocrail è /opt/rocrail. Alla prima installazione noterete che non è presente nessun plan.xml e nemmeno il file rocrail.ini. Questi file vengono creati in automatico all'avvio se non vengono trovati, quindi lanciamo il server per farglieli creare:


cd /opt/rocrail 
sudo ./rocrail

Dovrebbe apparire l'output standard (notate anche il numero di versione e la data di build). Per terminare il server premere CTRL+C. Ricontrollate la directory e troverete i file mancanti.
Come ogni server nel mondo Linux è preferibile lanciare l'applicazione come demone ovvero come esecuzione on background vediamo come procedere:

Innanzitutto copiamo il demone nella cartella di systema di Linux (attenzione alle maiuscole e minuscole)

sudo cp /home/pi/rrsources/sources/rocrail/package/rocraild /etc/init.d/
sudo cp /home/pi/rrsources/sources/rocrail/package/rocraild.sh /opt/rocrail/

Quindi rendiamo eseguibili i file sopra citati ed aggiorniamo la lista dei demoni da avviare al boot.


sudo su
chmod 755 /etc/init.d/rocraild
chmod 755 /opt/rocrail/rocraild.sh
update-rc.d rocraild defaults

Se abbiamo già una cartella con il file di progetto già pronto possiamo impostare la directory di lavoro nel file "rocraild" appena copiato, basta modificare la variabile WORKING_DIR all'interno del file stesso. Il demone può essere avviato con il comando

sudo service rocraild start

Sostituire start con stop per fermare il demone. A questo punto avete il vostro sistema operativo. Per le configurazioni del server potrete utilizzare Rocview in esecuzione su un altro PC per accedere a in modalità grafica al file di configurazione.

E' tutto!

Rocrail e RaspberryPi - Installiamo Rocrail Server

Ora che abbiamo il Nostro RaspberryPi funzionante (vedi puntata precedente) possiamo installare finalmente Rocrail.
Innanzitutto prepariamo l'ambiente per il download

cd /home/pi  
mkdir rrsources

Questi comandi creeranno le directory per i download dei vari componenti. Questi comandi sono riferiti all'utente di default pi, se volete potete crearne tranquillamente un'altro.

INSTALLAZIONE wXWidgets

La procedura di prevede anche l'installazione dei vxWidgets per far funzionare anche Rocview. Il mio consiglio è di saltare questo passaggio in quanto, dopo numerose prove, Rocview si è dimostrato di fatto inutilizzabile sul Raspberry a causa di una viscerale lentezza di tutto il sistema. Quindi, in virtù del fatto che l'obbiettivo è l'installazione di Rocrail Server, ci risparmieremo un paio d'ore di compliazione di questo componente.

ROCRAIL

Al momento della scrittura di questo articolo, gli sviluppatori di Rocrail prevedono due modi per installare il server sulla piattaforma Raspberry.
La prima consiste nello scaricare i sorgenti da GitHub mediante il tool Git, per procedere poi con l'installazione, oppure mediante i pacchetti precopilati (i famosi Nightly Builds) disponibili QUI.
Il vantaggio del primo metodo è quello di avere sempre l'ultima versione disponibile pronta da compilare, il secondo ovviamente la semplicità di installazione ma bisogna accontentarsi dell'ultima release disponibile.
Noi prenderemo la prima strada in quanto preferisco avere sempre tutto aggiornato.

Il primo passo è quello di installare Git e le librerie USB per permettere di riconoscere eventuale hardware aggiuntivo. In funzione della distribuzione che utilizzate il pachetto Git potrebbe essere già installato.

sudo apt-get install git
sudo apt-get install libusb-1.0.0-dev

Spostiamoci della directory per i sorgenti di Rocrail precedentemente creata 


cd /home/pi/rrsources

a questo punto siamo pronti per effettuare un clone del repository di Rocrail sulla nostra SDcard.

git clone --depth 1 https://github.com/rocrail/Rocrail.git sources

la procedura creerà una sottodir di nome 'sources' riempiendola con il contenuto del repository
Siamo pronti per lanciare la compilazione. Nel nostro caso vogliamo installare solo il server escludendo Rocview, quindi lanciamo i comandi:

cd ./sources 
sudo make server fromtar 

Terminate le operazione di making (potete tranquillamente andare a fare qualcosa d'altro, la compilazione richiederà parecchi minuti) installiamo il prodotto della compilazione con

sudo make install

A questo punto Rocrail server è correttamente installato. Per effettuare un aggiornamento quando disponibili nuove build sarà necessario lanciare il comando

cd home/pi/rocrail/Rocrail git pull

Questo scaricherà i sorgenti aggiornati dal repository alla direcotry locale, quindi con

sudo make server

verrà lanciata la compilazione della nuova versione, Quindi con

sudo make install

si procederà all'aggiornamento fisico degli eseguibili.
Per questa puntata è tutto, prossimamente vedremo come configurare Rocrail per il primo utilizzo e soprattutto come eseguire il server come demone.

lunedì 15 dicembre 2014

Rocrail e Raspberry PI - Installazione Raspbian

Come promesso nel precedente post vediamo come installare e configurare RocRail su un sistema basato su Raspberry PI. Questa guida fa riferimento all'ottimo Walktrough scritto da Manolo Serrano reperibile a http://tren.enmicasa.net

Innanzitutto occorre installare il vero sistema operativo sul nostro RasPI, quindi procuriamoci la Distro Raspbian scaricabile dal sito di Raspberry PI da questa pagina. Il download è "importante" (circa 800 MB) quindi viene offerta la possibilità di scaricare il file sia in formato .zip che nel più performante formato torrent.
Salviamo il file e scompattiamo l'archivio in una cartella a nostro piacimento.

A questo punto procuriamoci un scheda SD almeno da 4 GB. Al vero la Distro Raspbian necessita di 2 GB ma consiglio di avere un certo margine di sicurezza per installare eventuali altri software.
Ovviamente se il vostro PC non lo integra è necessario un lettore per schede SD esterno. Molti consigliano sui sistemi RasPI di utilizzare SDHC classe 10 per velocizzare gli accessi in lettura e scrittura, ma per questo uso può andare bene anche una qualunque scheda SD.

Una volta scaricata la distro Raspbian inseriamo la SD card nel lettore, quindi scarichiamo ed installiamo Win32DiskImager. Una volta terminato il processo di installazione lanciamo il programma e selezioniamo l'immagine della distro Raspbian precedentemente scaricata, selezioniamo la lettera di dispositivo rappresentante la SD e clicchiamo su scrivi. Il processo potrebbe durare anche qualche decina di minuti.



Al termine dell'operazione rimuoviamo la SD dal lettore ed inseriamola nel RasPI e godiamoci la fase di boot al termine della quale viene lanciato raspi-config, un tool che permette di configurare la nostra distribuzione.

Naturlamente se non disponiamo di monitor e tastiera da collegare al Raspberry possiamo utilizzare Putty (www.putty.com) o un qualsiasi emulatore di terminale per collegarci via SSH al nostro Raspberry Pi.

Le informazioni di login di default sono

user: pi
password: raspberry

utilizziamole per effettuare il login e come prima operazione lanciamo raspi-config con il comando

sudo raspi-config


Lanciamo la prima voce per estendere la dimensione della partizione di root a tutto lo spazio disponibile nella nostra SD.
Opzionalmente è anche possibile cambiare la password dell'utente pi
Consiglio anche di effettuare il boot non in desktop ma rimanere nel terminale. (opzione4).
Con l'opzione 5 infine settiamo su italiano le opzioni internazionali

Terminate le operazioni cliccando su Finish verrà effettuato un reboot.

CAMBIAMO L'INDIRIZZO IP

Risulta conveniente cambiare anche l'indirizzo IP della nostra Box da dinamico con DHCP a statico.

per fare questo effettuare prima una copia del file delle interfacce

sudo cp /etc/network/interfaces /etc/network/interfaces.sav

Editiamo il file


sudo nano /etc/network/interfaces

Il file aperto dovrebbe avere una riga simile a questa

iface eth0 inet dhcp

Aggiungere il simbolo di cancelletto all'inizio per disabilitarla

#iface eth0 inet dhcp

Modificare per aggiungere un IP fisso

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
#your static IP
address 192.168.1.118
#your gateway IP
gateway 192.168.1.1
netmask 255.255.255.0
#your network address "family"
network 192.168.1.0

broadcast 192.168.1.255

Editare il file degli hosts DNS


sudo nano /etc/resolv.conf

Aggiungere gli eventuali infirizzi IP dei DNS se non corrispondono con il default gateway

Arrivati a questo punto dopo un reboot avrete il vostro Raspberry pienamente funzionante e pronto a ricevere Rocrail.



domenica 14 dicembre 2014

Rocrail e Raspberry Pi

Un naturale complemento ad Arduino è rappresentato attualmente da Raspberry PI, un piccolissimo PC embedded ideato e costruito nel Regno Unito dalla omonima fondazione. Di dimensioni ridottissime (poco più di una carta di credito) ha una sucita HDMI per il collegamento con monitor o televisori, due porte USB, uscita Video composito e naturalmente una porta Ethernet per il collegamento in rete.
Raspberry PI è stato progettato per ospitare sistemi Linux o RiscOS ed è dotato di una buona capacità di calcolo che lo rende adatto anche alla visualizzazione di filmati HD a 1920x1080.


Sono disponibili anche numerosi involucri per proteggere la scheda di numerose forme e colori.


Bene, dopo questa breve descrizione del sistema vediamo come si può applicare al fermodellismo.
L'idea è installare su questo miniPC una versione appositamente realizzata dagli sviluppatori di RocRail per poter automatizzare il nostro plastico senza avere l'ingombro e l'onere di dover accendere sempre  il PC ogni volta che abbiamo voglia di far girare i nostri trenini. Nelle numerose prove che ho effettuato a dire la verità l'hardware del RasPi permette di far girare solo Rocrail Server, Rocview mostra dei limiti a mio parere insormontabili per un uso degno di questo hobby. Sarò però lieto di essere smentito da chi avesse voglia di provarci... Per accedere al server Rocrail quindi avremo bisogno di un comune tablet o cellulare sia Android che Ios.

Per maggiori informazioni potete visitare il sito della RaspberryPI Foundation

Maggori informazioni su Rocrail per Raspberry PI possono essere ottenute sul sito di RocRail per RaspberryPI

Nei prossimi post vedremo come installare e configurare il nostro sistema di controllo per plastici su questa meraviglia.



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!