Naturalmente lo script è scritto in Phyton, linguaggio multipiattaforma e di facile apprendimento. A questo punto è sufficiente scaricare lo script e copiarlo in una directory a scelta, io consiglio
\home\pi\scripts
Di seguito il link per scaricare lo script. Il listato è liberamente scaricabile e modificabile a patto di riportare sempre il banner iniziale e di riportare sempre la fonte se linkato in altri siti WEB. Nella stessa cartella dello script andranno copiati anche due moduli delle librerie Adafruit scaricati precedentemente e pi esattamente i due moduli con i seguenti nomi
Adafruit_CharLCDPlate.py
Adafruit_I2C.py
Il codice sorgente è disponibile su GitHub
RocPiLCD Repository completo
rocpilcd.py Sorgente Python
rocpilcd Script per init.d
All'interno del repository di GitHub troverete anche numerosi script per la gestione della RocPi
Una volta scaricato il tutto copiate lo script rocpilcd in /etc/init.d e aggiornate gli script di avvio con
sudo chmod 755 /etc/init.d/roccontrol
sudo update-rc.d rocpilcdl defaults
Lo script verrà avviato in automatico al boot del sistema operativo.
CONSIDERAZIONI SULLO SCRIPT
Il programma Python è in grado di leggere lo stato di tensione ai binari e stato della modalità automatica, ovviamente è possibile integrare queste informazioni con le innumerevoli messe a disposizione del server mediante lo Scripting RCP (Rocrail Client Protocol), per maggiori informazioni fare riferimento al Wrapper, contenente tutti i riferimenti sl protocollo.
Sulla shield sono presenti anche 5 pulsanti, attualmente vengono utilizzati i primi 3 per ,nell'ordine, abilitare o disabilitare la tensione ai binari, abilitare o disabilitare la modalità automatica, Freno di emergenza (EBREAK).
Ovviamente questa è una base di partenza e il tutto può essere ampliato a piacimento. Di seguito il codice sorgente ed un breve video sul risultato finale
Buon divertimento!
Questo commento è stato eliminato dall'autore.
RispondiEliminaStefano buonasera,
RispondiEliminapremetto che non conosco ancora bene phyton e sto provando ad interpretare lo script.
Alla riga 131:
r_request = s.recv(12288)
il valore 12288 è la lunghezza del pacchetto atteso ?
saluti
Antonino
Ciao Antonino bentrovato.
RispondiEliminaNon propriamente, E' la dimensione del buffer di ricezione, in questo caso circa 12K (1024 x 12), sufficiente per lo scopo, ma potrebbe essere implementato a piacere.
Buongiorno Stefano,
RispondiEliminavorrei realizzare anche io il pannello che descrivi e per questo sto sperimentando gli script per l'on/off. Ho una configurazione con RaspiPI3 dove gira il server RR che controlla un semplice ovale in cui ci sono quattro blocchi, ciascuno con un sensore di assorbimento. La centrale per il controllo della trazione è il lokmaus con la GenLi di Paco mentre per il feedback uso Arduino che emula la centrale Maerklin CS2. Tutto funziona perfettamente, ho anche sue segnali che vengono pilotato in modo corretto quando uso la modalità automatica.
Quello che noto è che a loco ferma gli script on/off funzionano senza problemi, ma se la loco gira e c' è un notevole traffico di messaggi (1-2 al secondo quando si passa da un blocco all'altro) lo script di power-off viene spesso ignorato. E' necessario lanciarlo più volte per avere effetto.
Hai riscontrato un problema simile ?
saluti,
Antonino