• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
come porta video usando eseguire file gpio input la

Eseguire file video usando come input la porta GPIO.
#1
Come da presentazione dichiaro di essere un neofita per quanto riguarda il Raspy (che uso con Kodi al posto del TV) ma mi diletto un pochino a 360° anche con un po' di elettronica e altro.

Ecco quindi la mia richiesta.
Avrei la necessità di usare un Raspy che proietti un file video (video1) in loop appena viene acceso.
Mentre premendo un pulsante (o sensore di prossimità) deve avviarsi un file video diverso. Finito tale file dovrebbe ripartire il video 1 in automatico (o mediante pressione pulsante/prossimità).

So che è possibile mediante la porta GPIO dare comandi specifici al Raspy ma non ho quasi alcuna conosocenza di programmazione se non il vecchio Basic o l'Arexx di Amiga ormai andati nel dimenticatoio.

Avete consigli da darmi per attuare tale progetto?

Grazie
Flavio
Risposta
#2
beh, come mettere dei video in loop con Raspberry è un argomento che trova molti tutorial in rete, perchè si può effettivamente fare in molti modi fdifferenti.
SI può fare anche con OSMC, e relativi add-om, ma è un po' macchinoso.

Le opzioni più popolari sono
-creare uno script che lanci i video e controlli l'evento gpio
- una distribuzione dedicata ai video in loop o al digital signage
- usare OSMC

Io userei la prima soluzione, con una distribuzione priva di desktop (com Raspberry pi OS Lit (Buster) o Raspberry Pi OS Lite (Legacy) o DietPI
abiliterei l'SSH, perchè una volta che i viedeo sono in loop, posso collegarmi da remoto e fare manutenzione.
c'è un comodo toll fatto appositamente, si chiama pi video looper, che usa OMXplayer per mettere in loop dei video (anche se il suggerimento è quello di unire tra loro i video e farne uno solo, per non avere pause tra essi).
Si installa entrando nel terminale e digitando:
Codice:
sudo apt-get update
sudo apt-get install  git
git clone https://github.com/adafruit/pi_video_looper.git
poi
Codice:
cd pi_video_looper
sudo ./install.sh
Ora Raspberry è pronto, quando lo riavvieri, partirà il programma pi video looper in automatico e mostrerà i video che trova su una chiavetta USB collegata, in loop.
Ma non farlo ora, prepariamo la questione del video comandato da GPIO.
io farei uno script Python, da lanciare anch'esso all'avvio, che monitora se un tasto GPIO viene premuto (o il sensore di movimento viene attivato) e quando questo avviene:
-ferma pi video looper (lanciano il comando sudo supervisorctl stop video_looper)
-lancia il play di un altro filmato con omxplayer , lo stess oplayer usato da pi video looper,
-quando termina, fa ripartire pi video looper (lanciando il comando udo supervisorctl start video_looper)

SI potrebbero mettere queste tre azioni in uno script bash (un banale file di testo)
che si può creare con
Codice:
sudo nano videoOnDemand.sh
e copiarci all'interno questo
Codice:
sudo supervisorctl stop video_looper &&
omxplayer -p -o hdmi percorsodetuovideo.mp4 &&
sudo supervisorctl start video_looper
Una volta usciti da Nano e salvato il file (CTRL+X ecc), dobbiamo renderlo eseguibile con il comando
Codice:
sudo chmod +x videoOnDemand.sh


occorre fare un po' di prove, ma per comodità farei lo script in Python
Codice:
from gpiozero import Button
from subprocess import check_call
from signal import pause

def play_video():                                                                    # definisco una funzione che richiama lo script bash di prima
    check_call(['.\videoOnDemand.sh'])
    

pulsante = Button(2)        # pulsante collegato tra il pin GPIO2 e massa


button.when_pressed = play_video                # quando premuto richiama l'esecuzione della funzione

pause()

che dovrebbe lanciare lo script quando viene premuto un pulsante collegato al pin gpio 2.
in alternativa, con il sensore di movimento diventa qualcosa tipo

Codice:
from gpiozero import MotionSensor
from subprocess import check_call
from signal import pause

def play_video():                                                                    # definisco una funzione che richiama lo script bash di prima
    check_call(['.\videoOnDemand.sh'])
    

pir = MotionSensor(2)        # Sensore di movimento collegato al GPIO2

pir.when_motion = play_video                # quando rileva un movimento richiama l'esecuzione della funzione

pause()
Risposta
#3
Grazie mille per ora e ti disturberò senz'altro appena ne avrò bisogno.
Quali potrebbero essere delle distro fatte apposta? usano il GPIO?
Se al posto dell'OS senza interfaccia usassi Raspberry OS normale potrei farlo comunque, giusto?
Risposta
#4
non lo so, praticamente tutte le distribuzioni di digital signage lo fanno, ma poi vanno personalizzate con l oscript per usare un input dal GPIO
Si, puoi anche usare Raspberry Pi OS competo, in quel caso, però, devi ricordarti di disabilitare lo screen saver
Risposta
  


Vai al forum:


Navigazione: 1 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect