Skip to content
Ettore Chimenti edited this page Sep 18, 2015 · 1 revision

#Progetto: museum_player

Relazione tecnica

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

Clone this wiki locally