La parte tecnica del progetto riguarda la programmazione di alcuni Raspberry Pi per la proiezione di filmati, audio ed immagini in alcuni locali dell'abbazia di San Salvatore Maggiore (RI).
Gli script sono realizzati in Python.
Nella stanza dell'installazione sono presenti i seguenti dispositivi:
- 2x Raspberry Pi 3 Model B
- 2x Proiettori
- 1x Switch di rete
Ad ogni Raspberry Pi è collegato un proiettore tramite HDMI. Risoluzione impostata sui raspberry: 1280x720 CEA Mode.
Sul primo Raspberry (1) verrà eseguito lo script sensore.py che rileverà eventuali movimenti. E' stato preferito un sensore ad ultrasuoni in quanto un sensore IR potrebbe non funzionare correttamente in quanto la stanza potrebbe non essere illuminata a sufficienza. Sul secondo Raspberry (2) viene avviato lo script server.py che rimane in attesa di messaggi da parte di 1. Al rilevamento di un movimento, la fase di ascolto del sensore viene interrotta e vengono lanciati due script:
- inizio.py che comunica a 2 di avviare la riproduzione di un file video
- video.py che avvia la riproduzione di un secondo file video
Entrambi i file video saranno di uguale lunghezza. In particolare il video riprodotto da 1 è formato da una clip ripetuta tante volte fino a raggiugnere la lunghezza del file desiderata. Il video riprodotto da 2, invece, comprende 30 secondi iniziali di vuoto (schermo nero) per permettere ai visitatori di entrare nella stanza. Al termine di entrambi i video, lo script sensore.py riprenderà a rilevare movimenti.
Lo script fine.py non viene mai utilizzato. Serve per terminare il processo del server.
Avviando gli script sensore.py e server.py occorre specificare un argomento di avvio (una lettera, sostanzialmente). Se come argomento viene specificato "d" allora questi saranno avviati in modalità debug, ovvero lo schermo non diventerà nero, rendendo visibili sulla finestra del terminale eventuali messaggi di errori.
- Raspberry Pi 3 Model B
- Proiettori vari
- Sensore di prossimità HC-SR04 (Schema elettrico solo sensore) oppure (Schema elettrico con LED) (Collegamenti su breadbord)
- LED e altri componenti elettrici (resistenze, cavi)
- Python/Python 3
- Libreria Pygame
- Libreria RPi.GPIO