-
Notifications
You must be signed in to change notification settings - Fork 0
Home
#Progetto: museum_player
Ettore Chimenti
Introduzione
Il Museo della Mezzadria a Buonconvento (SI) ha richiesto la sostituzione delle unità operative delle postazioni multimediali, gestite attualmente da PC fissi (Tower ATX x86), con schede embedded UDOO e tablet Android.
Nel museo vi sono complessivamente 20 postazioni, di cui:
- 7 solo audio, con UDOO dual
- 10 solo video, con UDOO dual
- 3 multimediali, con Tablet Android
Le postazioni audio sono poste a fianco di una statua, che il visitatore può attivare grazie ad un pulsante. È prevista la riproduzione di un suono casuale al passaggio di una persona. Quelle video consistono nella riproduzione di un video senza interazione.
Soluzione UDOO
È stata messa a punto una distribuzione Linux ad-hoc per tutte le postazioni multimediali UDOO per il museo, comprensiva di tutti i contenuti audio/video.
Essa è basata su Ubuntu 12.04 Precise Minimal armhf.
Sono stati sviluppati 2 servizi separati:
###museum_audio
Si tratta di un sistema client-server che dialoga con la parte µC di UDOO e riproduce suoni.
In particolare è costituito da:
- /opt/museum_player/museum_audio.py : parte server
- /etc/init/museum_audio.conf : script Upstart
- /etc/museum_player.conf : file di configurazione INI
- museum_sketch.ino : sketch Arduino
Il µC è collegato fisicamente ad un pulsante e ad un ping ad ultrasuoni e a seconda dell’interazione invia tramite seriale un messaggio al server in esecuzione su UDOO (avviato in fase di boot dallo script Upstart).
Specifiche protocollo di comunicazione:
Baudrate: 115200
Pin SIGPING : 7
Pin IRPING : 11
Pin BUTTON : 6
Messaggi:
- ‘t’ contenuto principale
- ‘n’ colpo di tosse
Da seriale arrivano 2 eventi:
- Pulsante: si avvia il contenuto principale e non e’ possibile interromperlo fino alla sua terminazione “spontanea”
- Sensore: con probabilità P (deve essere configurabile) si decide se riprodurre o meno un suono di avvertimento. Se si opta per il si, con probabilità 1/n si sceglie tra gli n suoni. Se è in riproduzione il contenuto principale non si possono riprodurre gli altri. Si può anche trasmettere, all’avvio del server:
- Calibrazione: pacchetto di 6 byte contenente valori della sensibilità del ping e del pulsante
Per evitare valori spuri da parte del ping e del pulsante, è stato implementato un sistema di medie su un certo numero di rilevazioni.
È possibile dunque impostare il tempo di attivazione del rumore [sensorTimeUp], del pulsante [buttonTimeUp] e il tempo in cui il sensore non deve rilevare presenze prima di generare nuovamente un rumore in caso di una nuova presenza [sensorTimeDown].
È possibile impostare inoltre anche il numero di letture al secondo [frequency] e la distanza minima di rilevamento [minDistance].
Nel file di configurazione /etc/museum_player.conf è possibile aggiustare questi valori secondo esigenza:
[calibration]
minDistance=120
buttonTimeUp=150
sensorTimeUp=100
sensorTimeDown=5000
frequency=10
irEnable=1
###museum_video
È costituito da:
- /opt/museum_player/museum_video.sh : script Bash
- /etc/init/museum_video.conf : script Upstart
All’avvio viene eseguito lo script e si assicura che venga riprodotto il contenuto assegnato alla data postazione.
Avvio
Nella fase di boot, il sistema controlla l’hostname della macchina (contenuto in /etc/hostname) e avvia il servizio corrispondente alla funzione assegnata secondo la seguente sintassi dell’hostname:
udoo-[funzione]-[postazione]
es.: scrivendo udoo-video-13 in /etc/hostname , si provoca l’avvio del servizio museum_video, riproducendo il contenuto preassegnato della postazione 13.
E` possibile impostare anche entrambe le funzioni, specificando le postazioni nel seguente ordine.
udoo-audiovideo-[pos_audio]-[pos_video]
Contenuti
I contenuti di ogni postazione si trovano nella cartella:
/opt/museum_player/[funzione]/[postazione]
dove [funzione] può essere:
- video file video (in mkv)
- audio/noise file audio wav (rumori casuali)
- audio/track file audio wav (tracce principali)
Se viene specificata nell’hostname una postazione non valida, per ogni funzione vi è una cartella default che verrà assegnata come fallback.
In caso di più contenuti presenti in una singola cartella (eccetto i rumori), verranno eseguiti tutti in ordine alfabetico consecutivamente.
Funzioni aggiuntive:
Per l’amministrazione delle singole schede è stato configurato:
- Server NTP
- Server SSH con X forwarding
- Server RSYNC
- Client DHCP su Ethernet
- Server mDNS/DNS-SD (avahi-daemon)
- Bossac
Da un client Linux è dunque possibile configurare la scheda in SSH tramite la rete eseguendo:
$ ssh root@[ipscheda]
Oppure, se in locale è in uso un servizio di service discovery (es: avahi-daemon) è possibile sostituire [ipscheda] direttamente con l’hostname desiderato (ricordarsi il suffisso .local):
$ ssh root@udoo-[funzione]-[postazione].local
Per creare script SSH senza password root
Se si è in possesso della chiave privata, è sufficiente aggiungere a qualunque comando SSH l’argomento -i [private_key]. Esempio:
ssh -i [private_key] root@[ipscheda]
Eventualmente è disponibile anche il login da seriale (con autologin).
Uploading parte IMX6
Nel caso si voglia alterare il contenuto delle cartelle funzione o modificare i file di configurazione di una scheda da remoto è sufficiente scaricare in locale la struttura delle cartelle pkg, effettuare le modifiche desiderate e nella sua radice avviare:
./rsync_cmd.sh -h [HOST] -k [PRIVATE_KEY]
Flashing parte Arduino
Dentro la cartella /opt/museum_player/sketch/ è stato inserito il tool BOSSAC e lo sketch precompilato per il flashing in-place.
Per il reflashing della scheda è sufficiente eseguire il seguente comando:
ssh root@[ipscheda] /opt/museum_player/sketch/bossac_script.sh