Page 1 of 2

Programmare avvio video su display

Posted: Thu Jan 19, 2017 7:41 pm
by Gagge89
Buona sera,
il mio progetto è il seguente (utilizzero 2 GPIO numerate a caso in modo da farmi capire) :
1) usare un GPIO 24 come OUTPUT sempre alimentato e collegarlo ad un'estremità di un interruttore
2) collegare l'altra estremità dell'interruttore ad un altro GPIO 25 utilizzato come INPUT
3) programmare il raspberry : - quando l'interruttore è aperto -> non fare niente
- quando interruttore è chiuso (ossia quando il GPIO 25 vede una corrente) -> il raspberry deve caricare uno dei video presenti sulla micro SD e mostrarlo sul Display 5" 800x480 che gli collego via HDMI.
4) Finito il video (oppure dopo un tempo pari a 30 sec) disalimentare la GPIO 25.
5) se richiudo l'interruttore nuovamente sulla GPIO 25 rivede una corrente e quindi nuovamente avvierà un video presente sulla Micro SD ma in maniera RANDOM.
(ossia io caricherò diversi video sulla micro SD e il raspberry vorrei che mi avviasse in maniera random ogni volta che apro o chiudo l'interruttore, un video diverso, non in ordine di come sono nella scheda ma con un ordine casuale)

Qualcuno riesce ad aiutarmi a produrre un codice e a darmi le basi con cui partire essendo abbastanza inesperto ancora?
Grazie in anticipo a tutti !

Vi allego sotto uno schema semplificato di quello che voglio fare
Image

Re: Programmare avvio video su display

Posted: Sun Jan 22, 2017 11:34 pm
by willy_pinguino
secondo me togliere corrente al pin 24 (detto a caso) per fermare il video è poco conveniente
tu devi semplicemente far partire un video ogni volta che il contatto viene chiuso o devi far girare il video fino a che il contatto resta chiuso e poi alla riapertura "riarmare il meccanismo" in modo che alla prossima pressione venga fatto partire un nuovo video a random?

a prescindere da questo hai bisogno di un'interruttore e 3 parti software che collaborino assieme:

1) una parte che legga lo stato del GPIO
- a seconda del linguaggio che vuoi usare, esistono librerie in pyton ed altri linguaggi o anche da shell con cui puoi leggere lo stato del GPIO, quindi questa è probabilmente la più facile
2) una parte che riproduca il video
- il riproduttore migliore per RPi è da sempre OMXplayer, ma ne puoi usare anche altri, diciamo che dipende dal formato in cui sono compressi i video che vuoi riprodurre, comunque OMX player ha il vantaggio di essere facilmente comandabile da shell ed anche da remoto quindi io userei quello
3)una parte che dica al riproduttore quale video riprodurre (anche random)
- quello che devi costruire tu (oltre al bottone che chiude il contatto) che è lo script che fa partire il video

grossomodo questo script o programma dovrebbe essere diviso in questi 4 blocchi:
- un blocco che periodicamente (diciamo ogni 0,05 secondi) controlla se sul pin 25 c'è corrente e che quindi tramite la libreria legge lo stato del pin 25
- un blocco che quando interpellato, legge il numero di video nella cartella dove li hai caricati, genera un numero random da 1 al numero di video presenti e ricava il nome del video corrispondente a quel numero
- un blocco che quando il primo blocco legge che lo stato del pin 25 è chiuso, prima fermi il primo blocco fino a che il video è in esecuzione, poi avvii il secondo blocco e riceva da questo il nome del file da riprodurre, e poi avvii il comando che lancia il video player, passando come argomento il nome del file scelto a caso dal secondo blocco.
- infine un blocco che controlli se il video è ancora in esecuzione e se lo è, decida a seconda di come vuoi che funzioni la tua idea, se far fermare il video, se farlo cambiare o se lasciarlo finire e solo dopo che è finito il video in corso eseguire una delle altre operazioni

Nel caso invece tu voglia far interrompere il video appena il contatto viene aperto, la programmazione risulta solo un attimino più complessa perchè dovrai fare in modo che invece che alla fine del video, il video si fermi alla riapertura del contatto, quindi invece che fermare il primo blocco, devi continuare a controllare lo stato del pin 25 e quando questo viene riaperto, bloccare il player. Se invece vuoi che tutti i video durino x secondi o meno, il quarto blocco deve fare da interruttore temporizzato e riabilitare il primo blocco solo dopo x secondi.
puoi anche fare in modo che il video parta (o che inizi un nuovo video) solo se l'interruttore cambia stato, indifferentemente se parte da chiuso o da aperto, perchè appena avviato lo script, al primo ciclo di esecuzione il primo blocco controllerà lo stato e ne conserverà memoria, poi appena lo stato cambia invierà un messaggio al terzo blocco che innescherà il tutto


non posso essere più preciso se non indichi con quale linguaggio vuoi effettuare la programmazione, ma è talmente semplice che puoi farlo anche scrivendo uno script per la shell, usando chron come temporizzatore e salvando in un semplice file di testo tutte le variabili per le scelte da fare, da far partire all'avvio del sistema, così appena avviato e caricato il sistema, subito sarà attivo, qualunque altra funzione tu stia svolgendo e potendo girare anche senza interfaccia grafica

attento solo che attraverso i pin del GPIO passa corrente a 3,3 volt e che è facile "friggere" il RPi anche solo con una scintilla di corrente elettrostatica, quindi fai ben attenzione a cosa ci colleghi (no, un interruttore casalingo per corrente 220 e un microswitch da scheda elettrica non sono la stessa cosa...)

spero di esser stato utile

Re: Programmare avvio video su display

Posted: Tue Jan 24, 2017 9:10 am
by Gagge89
Ciao.. grazie per la risposta!
willy_pinguino wrote:secondo me togliere corrente al pin 24 (detto a caso) per fermare il video è poco conveniente
tu devi semplicemente far partire un video ogni volta che il contatto viene chiuso o devi far girare il video fino a che il contatto resta chiuso e poi alla riapertura "riarmare il meccanismo" in modo che alla prossima pressione venga fatto partire un nuovo video a random?
Per quanto riguardo il tuo suggerimento, c'è un problema, gli interruttori di cui io ti parlo sono o a pressione o magnetici e capiterà spesso, anzi sempre, che su 4 circuiti, tutti e 4 abbiano interruttori aperti in continuazione. Ti spiego meglio quello di cui ti parlo :
parlo di una basetta da gioco di tavolo con diverse caselle, ciascuna con sotto un Reed Normalmente Aperto. I 4 circuiti saranno percorsi da 4 pedine (aventi sotto dei magneti che chiuderanno i circuiti una volta appoggiati sulle caselle).

Ovviamente le pedine restano sempre sulle caselle , quindi i circuiti rimarrebbero sempre chiusi ( a meno che nel momento in cui non muovi la pedina , che la allontani da una casella, si apre quindi il circuito e la posi su un'altra casella chiudendo di nuovo il circuito).
Ecco, quello che intendevo era, se muovo una pedina che mi chiude il circuito su una casella vorrei che partisse un video; finito il video si stoppasse tutto. La pedina resta dove è. Muovo un'altra pedina e anche questa chiude un circuito e fa partire un altro video (sebbene il circuito della pedina 1 sia ancora chiuso), disalimentando proprio la GPIO del primo interruttore non appena ne subentra un nuovo input e dopo 3 turni ( al 4o) si riabiliti.

Ti inoltro uno schema
Image

Poi ti chiedo anche riguardo alle tue risposte :
willy_pinguino wrote: 1) una parte che legga lo stato del GPIO
- a seconda del linguaggio che vuoi usare, esistono librerie in pyton ed altri linguaggi o anche da shell con cui puoi leggere lo stato del GPIO, quindi questa è probabilmente la più facile
1) essendo ancora novello non saprei quali linguaggi scegliere per leggere lo stato GPIO (pensavo C oppure altri se mi dici che sono più semplici)
willy_pinguino wrote: 2) una parte che riproduca il video
- il riproduttore migliore per RPi è da sempre OMXplayer, ma ne puoi usare anche altri, diciamo che dipende dal formato in cui sono compressi i video che vuoi riprodurre, comunque OMX player ha il vantaggio di essere facilmente comandabile da shell ed anche da remoto quindi io userei quello
2) ok per il player

Per la "disalimentare" il PIN rialimentarlo dopo 4 turni si potrebbe fare una cosa di questo tipo anche se non ho idea di come programmarla...

Se : Pin 25 viene chiuso dopo che sono stati chiusi gi altri 3 (per esempio PIN 26 , 27 ,28 corrispondenti agli altri circuiti) (ossia nel caso in cui uno muova la pedina e chiuda il PIN 25 dopo che hanno mosso tutti gli altri, quindi con un contatore che leggere che prima devono chiudersi 1 volta tutti gli altri 3 circuiti in seguito ad un movimento delle altre 3 pedine )

allora : invia segnale al video di far partire video a caso.
willy_pinguino wrote: Nel caso invece tu voglia far interrompere il video appena il contatto viene aperto, la programmazione risulta solo un attimino più complessa
La riproduzione va bene che finisca quando il video finisce, anche perchè tra 1 pedina e l'altro senno l'interruttore resterebbe chiuso


Gli articoli che ho pensato di utilizzare per il progetto sono i seguenti :
- LCD 5" con ingresso HDMI così avrei a disposizione più PIN per il mio progetto perchè mi ci vorrebbero minimo 8 PIN liberi giusto? 2 per ogni circuito (il touch non mi serve, ma mi verrebbe comunque comodo posizionare RPi e LCD uno sopra l'altro
per questioni di spazio)
https://www.amazon.it/Makibes-Resistive ... E95EP&th=1
oppure
- LCD 3.5" con incastro solo con PIN , ma non so se in questo caso i PIN lasciati liberi sarebbero sufficienti al mio scopo.
https://www.amazon.it/Raspberry-Tablet- ... 5+lcd+hdmi
Migliore forse sarebbe LCD con HDMI
- Raspberry Pi 3 model B
https://www.amazon.it/Raspberry-Model-S ... QRQCA6Q560
- Tstiera/mouse
https://www.amazon.it/gp/product/B00ATD ... FX4OTROI2O

Grazie ancora

Re: Programmare avvio video su display

Posted: Tue Jan 24, 2017 6:43 pm
by willy_pinguino
Quello che ora presenti è uno scenario molto più complesso...

io non capisco alcuni punti:

- come fai a fare in modo che più interruttori siano chiusi dalla stessa pedina?
- i percorsi si sovrappongono?
- cosa fa si che una singola pedina possa essere riconosciuta per quello che è se i percorsi si sovrappongono?
- perchè parli di interruttori magnetici e cosa sarebbero??
- cosa succede se una pedina viene mossa mentre un video è in esecuzione?

scusami ma con questi dubbi non riesco a capire se ti stò aiutando o portando fuori strada e fuori dalle mie scarse competenze

Re: Programmare avvio video su display

Posted: Wed Jan 25, 2017 12:51 am
by Gagge89
Ciao ti rispondo punto per punto
willy_pinguino wrote: - come fai a fare in modo che più interruttori siano chiusi dalla stessa pedina?
Non si tratta di 1 stessa pedina ma si 4 pedine distinte che si muovono su 4 percorsi per giungere tutte nello stesso punto.
Ogni pedina, con incastrato sotto a lei un magnete, verrà mossa a seconda del numero che uscirà con i dadi di un certo numero di caselle; la pedina A si muoverà lungo il suo percorso A fino ad una certa casella, e arrivatavi partirà un video random.
Al termine del suo turno la pedina A resterà sulla casella dove è arrivata (ed essendovi sopra con il magnete continuerà a mantenere chiuso il circuito con il REED [ spiego dopo alla tua domanda specifica di cosa si tratta]; successivamente lancerà il giocatore B che muoverà la pedina B su una casella del percorso B e posandosi su una casella chiuderà un interruttore ( quindi al momento avremo l'interruttore della casella sopra cui c'è A chiuso xchè vi è sopra la sua pedina e l'interruttore della casella sopra cui c'è B anch'esso chiuso) e vorrei partisse un nuovo video random. Stessa cosa per le pedine C e D con i loro corrispettivi percorsi, trovandosi quindi anch'essi nella situazione che gli interruttori delle lettere precedenti sono ancora rimasti tutti chiusi causa della presenza ferma della pedina su una casella del proprio percorso.
Arrivato al percorso D, si riparte ciclicamente con la pedina A, poi B, poi C....
willy_pinguino wrote: - i percorsi si sovrappongono?
Sì in alcuni punti sì ed in quei punti introdurrò video particolari ( ma una volta capito come metterne uno poi sarà solo lavoro di fantasia :) )
willy_pinguino wrote: - cosa fa si che una singola pedina possa essere riconosciuta per quello che è se i percorsi si sovrappongono?
Nulla, o meglio nulla di così preciso. avevo inizialmente pensato ad una soluzione NFC ma oltre che essere molto complessa è anche costosissima!
No semplicemente nei punti in cui si sovrappongono metterò semplicemente che se RPi riceve 2 input ( ossia di 2 REED invece che di 1 solo, allora " FARA USCIRE UNA CERTA COSA DIVERSA DAI NORMALI VIDEO")
willy_pinguino wrote: - perchè parli di interruttori magnetici e cosa sarebbero??
sì quì forse ho usato un termine non del tutto appropriato.. sono degli interruttori e pure magnetici ,ma è meglio chiamarli REED. Sono questi : http://3.bp.blogspot.com/_91Pbzfw5648/T ... 5l3_01.gif
Sono dei micro interruttori con i 2 capi distanti decimi di mm che se sottoposti ad un campo magnetico si chiudono o si aprono a seconda che di natura questi siano NO ( normalmente aperti , e che con in campo magnetico si chiudono) oppure NC ( normalmente chiusi e con il campo magnetico si chiudono).
willy_pinguino wrote: - cosa succede se una pedina viene mossa mentre un video è in esecuzione?
Direi che il video si interrompe di netto. Oppure la soluzione più semplice qual'è? Diciamo che non mi importa molto cosa succede se si muove la pedina al max si blocca il video e rimettendolà uscirà un altro video; oppure che se cade e quindi apre il circuito mentre il video è in riproduzione parte un "VIDEO DI PENITENZA" , tipo "torni indietro di 2 caselle e in bocca al lupo" :)

Ma figurati...anzi grazie dell'interessamento ed aiuto!

Re: Programmare avvio video su display

Posted: Wed Jan 25, 2017 11:26 am
by willy_pinguino
ok, faccio un riassunto a modo mio così capiamo se ho capito :P

- i percorsi son diversi ma si intersecano
- i video sono comuni, cioè non serve stabilire se su una delle caselle con interruttore ci va una pedina rossa, gialla blu o verde, parte semplicemente uno dei video random
- essendo quel tipo di interruttori magnetico, ci sarà comunque un momento in cui l'interruttore si apre, perchè passando da una casella all'altra, il campo magnetico si dovrebbe allontanate abbastanza da aprire il contatto (penso che la cosa più facile sia usare interruttori NO)
- gli interruttori non sono su tutte le caselle ma solo su alcune, e può capitare che i in alcuni momenti tutti gli interruttori sono aperti, cioè tutte le pedino NON sono su una casella con interruttore ed altri in cui tutti gli interruttori sono chiusi perchè tutte le pedine sono su una casella con interruttore
- i punti di intersezione tra i percorsi sono interruttori e quando una pedina ci finisce sopra deve partire un diverso tipo di video che normalmente non parte sui movimenti normali


se questo che ho riassunto è tutto corretto, io vedo una incongruenza:

secondo me i percorsi si possono incrociare, ma i punti di intersezione devono essere considerati come se fossero una situazione alternativa, considerandoli come un quinto percorso, altrimenti se ogni percorso ha un suo interruttore in quella casella, ovviamente il magnete di una singola pedina li chiuderà tutti e 4 gli interruttori, ma anche se tutte e 4 le pedine sono su un interruttore si verifica la stessa situazione, e il computer non può capire la differenza.

a quel punto gli altri percorsi sarebbero a tutti gli effetti divisi e potresti anche far si che per ogni singolo percorso i video siano personalizzati


comunque non c'è ragione di alimentare e disalimentare gli interruttori, e non servono dei relé, a meno che questi interruttori non abbiano bisogno di corrente per funzionare. mi puoi dare un riferimento di oggetto fisico per gli interruttori per capire se sono compatibili con gli stati logici del GPIO del raspberry?

quando i percorsi si intersecano, se come hai detto

Re: Programmare avvio video su display

Posted: Wed Jan 25, 2017 2:10 pm
by Gagge89
willy_pinguino wrote: - i percorsi son diversi ma si intersecano
willy_pinguino wrote: - i video sono comuni, cioè non serve stabilire se su una delle caselle con interruttore ci va una pedina rossa, gialla blu o verde, parte semplicemente uno dei video random
willy_pinguino wrote: - essendo quel tipo di interruttori magnetico, ci sarà comunque un momento in cui l'interruttore si apre, perchè passando da una casella all'altra, il campo magnetico si dovrebbe allontanate abbastanza da aprire il contatto (penso che la cosa più facile sia usare interruttori NO)
willy_pinguino wrote: - gli interruttori non sono su tutte le caselle ma solo su alcune, e può capitare che i in alcuni momenti tutti gli interruttori sono aperti, cioè tutte le pedino NON sono su una casella con interruttore ed altri in cui tutti gli interruttori sono chiusi perchè tutte le pedine sono su una casella con interruttore
Più o meno.. Ossia le uniche caselle senza interruttore sotto sono le 4 di partenza delle pedine; tutte le altre caselle del gioco sotto avranno questi interruttori.
Per il resto corretto
willy_pinguino wrote: - i punti di intersezione tra i percorsi sono interruttori e quando una pedina ci finisce sopra deve partire un diverso tipo di video che normalmente non parte sui movimenti normali
Esatto, ma più precisamente per farlo capire sotto queste caselle (4 in totale perchè 4 saranno i punti di incontro tra i vari percorsi) ci metterei 2 REED sotto ogni incrocio, in modo che quando al RPi arrivino 2 segnali contemporanei 2 input diversi ( dovuti alla chiusura di 2 interruttori ciascuno su un percorso differente) allora parta un video particolare , che sia uguale per tutti e 4 gli incroci)
willy_pinguino wrote: secondo me i percorsi si possono incrociare, ma i punti di intersezione devono essere considerati come se fossero una situazione alternativa, considerandoli come un quinto percorso, altrimenti se ogni percorso ha un suo interruttore in quella casella, ovviamente il magnete di una singola pedina li chiuderà tutti e 4 gli interruttori, ma anche se tutte e 4 le pedine sono su un interruttore si verifica la stessa situazione, e il computer non può capire la differenza.
uhm..no attenzione. Gli incroci sono max tra 2 percorsi per volta ( es incrocio tra A-B , B-C , C-D , D-A), quando come dicevo sopra il RPi riceve invece che 1 solo input ne riceve contemporaneamente 2 allora parte un video particolare. (questo però con la mia considerazione che potessi creare una situazione ciclica affinche tra la mossa della pedina A e il suo turno successivo prima debbano passare i 3 turni delle altre 3 pedine, disalimentando quindi proprio il circuito di A)
willy_pinguino wrote: comunque non c'è ragione di alimentare e disalimentare gli interruttori, e non servono dei relé, a meno che questi interruttori non abbiano bisogno di corrente per funzionare. mi puoi dare un riferimento di oggetto fisico per gli interruttori per capire se sono compatibili con gli stati logici del GPIO del raspberry?
Quà hai una spiegazione dei REED https://it.wikipedia.org/wiki/Reed_(dispositivo)
No i REED non necessitano di corrente per funzionare, con un magnete tu chiudi lo spazio tra le linguette del REED anche se non vi sono collegati cavi.

Re: Programmare avvio video su display

Posted: Wed Jan 25, 2017 2:55 pm
by willy_pinguino
ok, a quel link ero arrivato anche io per capire cosa diavolo erano questi REED :-P, ma a me serve sapere di preciso quale REED vuoi usare perchè non tutti sono adatti all'uso con RPi direttamente connessi al GPIO, per via del voltaggio e vorrei verificare che la sensibilità e le dimensioni siano tali da permettere comunque l'apertura degli interruttori con il passaggio da una casella all'altra, perchè in questo modo non è necessario il meccanismo di riarmo, ma basta lo spostamento da una casella alla successiva per (almeno per un momento) avere l'apertura di tutti gli interruttori di quella linea. Viceversa, il meccanismo di riarmo è necessario ma la situazione si complica, perchè dovresti riaprire fisicamente l'interruttore che magneticamente hai chiuso, quindi servirebbe un controinterruttore comandato da RPi in corrispondenza di ogni casella...

i percorsi sono diversi e si incrociano solo uno alla volta, ok, ma per come li hai disegnati nel primo e secondo schema, non c'è modo di sapere quale degli interruttori è chiuso, visto che sono in parallelo sulla stessa linea, quindi metterne 2 di 2 linee diverse sotto l'incrocio non serve ad identificare che c'è una pedina sull'incrocio.
Facciamo un esempio:
percorsi rosso e blu, entrambi di 10 caselle, compresa partenza, che è senza interruttore, quindi avremo gli interruttori da 1 a 9 che identificano le 9 caselle con interruttore. Incrocio sulla casella 5 di entrambi i 2 percorsi.
Quando la pedina rossa è sulla casella di partenza (casella 0) e la blu è sulla casella 3, hai un percorso con tutti gli interruttori aperti ed uno con un solo interruttore chiuso. Per il RPi il circuito rosso è aperto e quello blu è chiuso.
Quando anche la pedina rossa si muove, sicuramente andrà su una casella con interruttore e lo chiuderà, quindi avremo che sia la linea rossa che quella blu risulteranno chiuse, ANCHE SE LA ROSSA SI FERMA SULLA CASELLA 5 CHE é LA CASELLA DI INCROCIO! perchè per il raspberry la linea della blu è già chiusa dalla pedina sulla casella 3.
Per questo dico che serve una linea diversa di interruttori in parallelo sulle caselle di intersezione, perchè non c'è altro modo di capire quando proprio quelle caselle sono interessate dal movimento della pedina.

Re: Programmare avvio video su display

Posted: Wed Jan 25, 2017 4:49 pm
by Gagge89
willy_pinguino wrote:ok, a quel link ero arrivato anche io per capire cosa diavolo erano questi REED :-P, ma a me serve sapere di preciso quale REED vuoi usare perchè non tutti sono adatti all'uso con RPi direttamente connessi al GPIO, per via del voltaggio e vorrei verificare che la sensibilità e le dimensioni siano tali da permettere comunque l'apertura degli interruttori con il passaggio da una casella all'altra, perchè in questo modo non è necessario il meccanismo di riarmo, ma basta lo spostamento da una casella alla successiva per (almeno per un momento) avere l'apertura di tutti gli interruttori di quella linea. Viceversa, il meccanismo di riarmo è necessario ma la situazione si complica, perchè dovresti riaprire fisicamente l'interruttore che magneticamente hai chiuso, quindi servirebbe un controinterruttore comandato da RPi in corrispondenza di ogni casella...

Ho trovato abbastanza economici questi dato ke si parlerebbe per le varie caselle di circa 120 reed :D https://it.aliexpress.com/item/100pcs-l ... 161fcc8b7e
willy_pinguino wrote: i percorsi sono diversi e si incrociano solo uno alla volta, ok, ma per come li hai disegnati nel primo e secondo schema, non c'è modo di sapere quale degli interruttori è chiuso, visto che sono in parallelo sulla stessa linea, quindi metterne 2 di 2 linee diverse sotto l'incrocio non serve ad identificare che c'è una pedina sull'incrocio.
Facciamo un esempio:
percorsi rosso e blu, entrambi di 10 caselle, compresa partenza, che è senza interruttore, quindi avremo gli interruttori da 1 a 9 che identificano le 9 caselle con interruttore. Incrocio sulla casella 5 di entrambi i 2 percorsi.
Quando la pedina rossa è sulla casella di partenza (casella 0) e la blu è sulla casella 3, hai un percorso con tutti gli interruttori aperti ed uno con un solo interruttore chiuso. Per il RPi il circuito rosso è aperto e quello blu è chiuso.
Quando anche la pedina rossa si muove, sicuramente andrà su una casella con interruttore e lo chiuderà, quindi avremo che sia la linea rossa che quella blu risulteranno chiuse, ANCHE SE LA ROSSA SI FERMA SULLA CASELLA 5 CHE é LA CASELLA DI INCROCIO! perchè per il raspberry la linea della blu è già chiusa dalla pedina sulla casella 3.
Per questo dico che serve una linea diversa di interruttori in parallelo sulle caselle di intersezione, perchè non c'è altro modo di capire quando proprio quelle caselle sono interessate dal movimento della pedina.
Hai perfettamente ragione...non ci pensavo! Quindi sì quelle degli incroci li dovrei mettere su un circuito separato quindi alla fine sarebbero 5 circuiti e quindi 10 GPIO occupate..cavolo forse giuste giuste se prendo un monitor che si colleghi con PIN al RPi... Anzi forse vado sotto pure di 1 GPIO, perchè fino al 26 compreso me li occuperebbe l' LCD https://i.stack.imgur.com/RILry.png e la 27 e la 28 non le potrei usare ne come input ne come output giusto?

Re: Programmare avvio video su display

Posted: Wed Jan 25, 2017 11:26 pm
by willy_pinguino
come ho avuto modo di dirti già, non ti servono 10 pin per leggere 5 stati,
se un pin viene configurato come input, per fargli leggere lo stato 0 il voltaggio a lui connesso deve essere prossimo allo 0, per fargli leggere lo stato 1, il voltaggio a lui connesso deve essere superiore a 2 volt...

il numero massimo di pin necessari per leggere 5 stati diversi, è 6 pin più un'alimentazione (o 7 pin se hai la possibilità di prelevare corrente dal pin 1 o dal 17, ma per questo devi verificare se lo schermino che vuoi prendere usa entrambe le alimentazioni a 3,3 o se almeno una di queste è inutilizzata) e sono rispettivamente:
- l'alimentazione a 3,3 volt, che è collegata a tutti i pin di cui vorrai leggere lo stato tramite una resistenza da 47k
- i 5 pin di cui via software leggerai lo stato, che sono da una parte collegati alla resistenza da 47k e dall'altro al REED
- 1 massa a cui collegherai l'altro capo di tutte le linee di REED

ti rimando a questo articolo che mi pare abbastanza chiaro e ricco di disegni ed esempi

https://www.element14.com/community/doc ... -explained
(devi scorrere fino a metà pagina per trovare la configurazione dei pin come input)

quando un pin è collegato solo ai 3,3 volt dell'alimentazione di base (previa resistenza) il suo stato è 1, quando il pin viene connesso alla massa, il suo stato diventa 0.
nel disegno dello schema elettrico usano i pin :
1 - che dà i 3,3 volt necessari a far funzionare il tutto, che sono presenti anche al pin 17, ma tu secondo me dovresti usare un'alimentazione esterna per non sovraccaricare l'alimentatore del raspberry
6 - che è una delle tante masse del GPIO ma puoi anche usare i pin 9,14,20,25,30,34 e 39 che sono tutte altre masse (o al limite usare una massa esterna, ma questo è consigliabile solo se hai una massa di provenienza certa e che resterà sempre 0 altrimenti rischi di bruciare tutto...)
29 - che corrisponde al pin GPIO5, che nel loro esempio è l'unico pin GPIO di cui leggono lo stato
(NB...nel darti i nomi dei pin GPIO disponibili a leggere gli input, faccio riferimento all'immagine ad inizio pagina, ma so che esistono 2 mappe diverse per la distribuzione dei pin sul GPIO, quindi tu dovrai far riferimento alla mappa giusta per il modello che acquisterai)

Supponendo quindi, che tu abbia i primi 26 pin occupati da uno schermino connesso direttamente al GPIO, ti restano ancora liberi i pin 29,31,32,33 e 37 che corrispondono ai pin GPIO 5,6,12,13 e 26, quindi tu hai a disposizione esattamente 5 pin GPIO e una qualunque tra i pin 30, 34 e 39 per la massa (so che è confuso ma purtroppo i numeri dei pin non corrispondono ai -diciamo- nomi dei pin che vai a interpellare quando ne leggi lo stato) liberi a disposizione. L'alimentazione, come dicevo o la rubi allo schermino usando il pin 1 o il pin 17, o la porti dall'esterno (basterebbero anche 2 pile stilo o ministilo in serie o una batteria a bottone, ma la durata della carica poi è tutta da verificare, o un alimentatore esterno capace di fornire i 3,3 volt necessari o anche poco meno - non di più o bruci il RPi)

ora prendi in considerazione che tu non puoi dare corrente a tutti gli interruttori e leggere quando uno di questi si apre, perchè comunque seguendo il tuo schema di interruttori in parallelo (che è assolutamente corretto e legittimo), se anche uno di questi è aperto, ai 2 capi del circuito, lo stesso risulterà comunque chiuso (perchè la corrente passerà dagli altri interruttori chiusi) quindi tu sei obbligato ad usare dei REED NO (normalmente aperti) così da poter chiudere il circuito solo con una pedina su uno dei REED.

quindi seguendo lo schema tu avrai che i 5 pin del GPIO che tu userai in lettura sono tutti allo stato di 1 quando le pedine non sono sopra a un REED ed appena una di queste si sposta sopra una casella, chiude un circuito e il pin ad esso collegato passa dallo stato alto (1) allo stato basso (0)

quello che il software che andrai a programmare farà, sarà leggere lo stato dei 4 pin dei 4 percorsi ogni x millisecondi, e appena uno di loro passerà a 0, avvierà il video e dirà a se stesso che fino a che lo stato non torna a 1, anche solo per un momento, il meccanismo non verrà riarmato, quindi a video finito non succederà nulla.
Se invece la pedina verrà mossa durante la riproduzione del video o dopo, il meccanismo software si riarmerà, aspettando che nuovamente un interruttore di quella linea venga chiuso per far partire un nuovo video.

Puoi a questo punto inserire una regola per cui se dopo x millisecondi la pedina è ancora staccata dalla base di gioco, parta un'altro video che chieda al giocatore di rimettere la pedina su una delle caselle di gioco, ma dovrai eseguire un controllo sull'eccezione delle caselle di intersezione e delle caselle di partenza, per cui se non è necessario ti sconsiglio di pensare a questa eventualità perchè complicheresti di molto il tutto. (ne parlo perchè in uno dei primi post hai accennato a questa possibilità)

Quando una pedina finisce sopra una delle intersezioni, semplicemente lascia aperti tutti i REED del suo percorso per più tempo, ma se non lo devi gestire (vedi sopra), questo non cambierà assolutamente nulla nella programmazione del resto del meccanismo, perchè la riapertura del REED quando la pedina lascia il percorso per andare sull'intersezione, semplicemente riarmerà il meccanismo software che resterà in attesa della prossima chiusura del REED di quel percorso, quindi è una condizione legata al percorso e non all'intersezione.
Devi però gestire il caso in cui 2 pedine siano su uno stesso incrocio o se finiscono su 2 incroci differenti nello stesso momento, e questo è già più complicato, perchè se si può determinare facilmente quando una pedina è da sola su una delle caselle di intersezione, semplicemente verificando che non è più su una delle caselle del suo percorso, il caso di 2 pedine contemporaneamente su due delle sei caselle di intersezione è impossibile da determinare con 5 soli pin di lettura, ne servirebbero 10 di pin (i 4 legati ai 4 percorsi e altri 6 uno per ogni casella di incrocio), mentre il caso in cui 2 pedine finiscano sulla stessa casella contemporaneamente non è proprio risolvibile in nessun modo con i REED, quindi saresti obbligato a mettere una regola forse non prevista al gioco, in cui quando 2 pedine si scontrano nella stessa casella di intersezione, una delle 2 viene spinta fuori, o si ferma una casella prima o viene spinta alla casella dopo del suo percorso.

-------------------------------------------

Ora affrontiamo il problema dei REED e della loro sensibilità...

quello che potrebbe capitare se tu non distanziassi abbastanza i REED tra loro rispetto alla potenza dei magneti delle pedine, è che avvicinare le pedine alle caselle anche senza appoggiarvele dentro, o peggio, con la presenza di una pedina di un'altro percorso troppo vicina (nei casi delle intersezioni), venga attivato un REED confinante, causando così un mancato riarmo del meccanismo software (ricordati che il meccanismo si riarma quando tutti gli interruttori di un percorso sono aperti, quindi una pedina di un'altro percorso troppo vicina potrebbe comportare un REED chiuso anche se la pedina di quel percorso è lontana dal piano di gioco o su una delle intersezioni)

quindi questo tipo di interruttori ti obbligano ad usare REED a bassa o bassissima sensibilità, o a ingrandire di molto le dimensioni di caselle e pedine, fino a escludere meccanicamente la possibilità di interferenze tra pedine diverse e caselle addiacenti (senza parlare delle possibili interferenze di altri oggetti magnetici sul gioco)


Devi affrontare anche il problema di impedire ad una pedina di chiudere il REED di un'altro percorso, perchè per un REED un magnete è un magnete, quindi non può distinguere da solo tra le varie pedine, devi quindi aiutarlo meccanicamente, per esempio facendo le pedine di forme diverse e non scambiabili tra loro sui diversi percorsi, e facendo in modo che tutte le caselle dedicate al percorso di una data pedina abbiano un incastro della forma adatta ad accogliere quella e solo quella pedina (le caselle di intersezione avranno incastri per entrambe le pedine che si possono incontrare lì, e se te la giochi bene con forme e distanze puoi anche ottenere meccanicamente l'incompatibilità di 2 pedine nella stessa casella di intersezione di cui parlavo sopra).

in questo caso, l'uso dei REED ti ostacola costringendoti a un lavoro piuttosto complicato di incastri, ma anche usando altri sistemi meccanici di chiusura degli interruttori non semplificheresti di molto il lavoro



Spero che tutto questo non ti scoraggi e spero di essermi spiegato con chiarezza sufficente, se qualche punto è oscuro dimmi e cercherò di spiegarmi meglio

Willy

Re: Programmare avvio video su display

Posted: Wed Jan 25, 2017 11:39 pm
by willy_pinguino
dimenticavo, il modello di REED che hai segnalato sembra adatto a tensioni alte (300 VDC), ed ho il sospetto che non si comporti poi così bene con le microtensioni che usiamo noi (3,3 VDC), ti conviene verificare se puoi trovare REED costruiti per lavorare a tensioni molto più basse, se non direttamente a 3,3 VDC, ma può essere che siccome sono collegati alla massa e non devono davvero far passare corrente, possano andar bene lo stesso... però quà serve almeno un perito elettrotecnico, io invece sono uno poco addentro alla materia :P

Re: Programmare avvio video su display

Posted: Thu Jan 26, 2017 4:16 pm
by Gagge89
willy_pinguino wrote:come ho avuto modo di dirti già, non ti servono 10 pin per leggere 5 stati,
se un pin viene configurato come input, per fargli leggere lo stato 0 il voltaggio a lui connesso deve essere prossimo allo 0, per fargli leggere lo stato 1, il voltaggio a lui connesso deve essere superiore a 2 volt...

il numero massimo di pin necessari per leggere 5 stati diversi, è 6 pin più un'alimentazione (o 7 pin se hai la possibilità di prelevare corrente dal pin 1 o dal 17, ma per questo devi verificare se lo schermino che vuoi prendere usa entrambe le alimentazioni a 3,3 o se almeno una di queste è inutilizzata) e sono rispettivamente:
- l'alimentazione a 3,3 volt, che è collegata a tutti i pin di cui vorrai leggere lo stato tramite una resistenza da 47k
- i 5 pin di cui via software leggerai lo stato, che sono da una parte collegati alla resistenza da 47k e dall'altro al REED
- 1 massa a cui collegherai l'altro capo di tutte le linee di REED
Ciao. Grazie per l'esaustiva e precisa risposta.
Per alimentare i circuiti dei vari percorsi ho 2 scelte a seconda di mettere un Display con PIN o uno alimentato dell'esterno e collegato con il solo HDMI.
Sotto ti posto 2 schemi con le mie 2 soluzioni:
- la prima prevede il Display con i PIN ( che ho letto esser essenziali per il touch screen, cosa che a me non servirebbe moltissimo) e quindi ho pensato di alimentare il tutto con 5 pile stilo in serie per una tensione di 7.5 V e di alimentare l' RPi con un regolatore di tensione a 5V con assorbimento max 3A.
Per alimentare i circuiti invece ho pensato di prendere l'alimentazione direttamente da una presa USB di RPi a 5V e collegarvi un regolatore di tensione a 3.3V con assorbimento max 800 mA ( più ke sufficienti dato che 3.3V su una resistenza da 47 k ohm farebbero passare su ogni circuito una corrente di 70 microA, ossia 0,07 mA!!! e per 5 circuiti anche in contemporanea non sarebbero più di 0,5 mA! quindi direi che andrebbe bene come carico)
- la seconda invece prevede l'alimentazione esterna del Display collegato solo con l'HDMI al RPi e quindi il regolatore di ingresso del RPi alimenterà anche il Display ( tanto se ha assorbimento max 3A tra RPi e Display che assorbe 200mA non dovremmo superare nemmeno i 2A!) e i circuiti dei percorsi verranno alimentati direttamente dai 3.3V del PIN 1.
Image

Inoltre ho un dubbio : io ho sempre pensato che l'alimentazione derivasse anche dai PIN messi come OUTPUT, ossia che se io mettessi collegati tra loro 2 PIN (con in mezzo una resistenza) uno come OUTPUT e uno come INPUT, quello come OUTPUT desse una tensione in uscita che verrebbe poi letta da quello in INPUT e quindi generasse un segnale.
Ma dallo schema della pagina web che mi hai indicato come esempio invece ho visto che devono prendere l'alimentazione dai 3.3V o 5V, E' quindi così che va fatta?
Image

Cosa consiglieresti tu? Display con PIN o quello con alimentazione esterna con relative conseguenze sul circuito a seconda dell'una o dell'altra scelta?
willy_pinguino wrote: 1 - che dà i 3,3 volt necessari a far funzionare il tutto, che sono presenti anche al pin 17, ma tu secondo me dovresti usare un'alimentazione esterna per non sovraccaricare l'alimentatore del raspberry
Vedi sopra gli schemi postati
willy_pinguino wrote: 6 - che è una delle tante masse del GPIO ma puoi anche usare i pin 9,14,20,25,30,34 e 39 che sono tutte altre masse (o al limite usare una massa esterna, ma questo è consigliabile solo se hai una massa di provenienza certa e che resterà sempre 0 altrimenti rischi di bruciare tutto...)
la mia paura è una anche se potrebbe non essere così.. Ho letto su dei forum che per modelli vecchi la max corrente sui PIN GPIO era di 3 mA. Non essendo la GND di sezione molto più grande penso che anch'essa avrà la stessa limitazione, solo che allora mi chiedo, come può un Display che assorbe 200mA a scaricare sulle GND? Sì che il Display copre fino al pin 26 e quindi comprende diverse GND, ma cmq anche se sono 5 sono sempre 40 mA a PIN... La GND non ha una limitazione di corrente? Alla fine tanta è la corrente che entra tanto quella che ritorna su massa!
willy_pinguino wrote: Supponendo quindi, che tu abbia i primi 26 pin occupati da uno schermino connesso direttamente al GPIO, ti restano ancora liberi i pin 29,31,32,33 e 37 che corrispondono ai pin GPIO 5,6,12,13 e 26, quindi tu hai a disposizione esattamente 5 pin GPIO e una qualunque tra i pin 30, 34 e 39 per la massa (so che è confuso ma purtroppo i numeri dei pin non corrispondono ai -diciamo- nomi dei pin che vai a interpellare quando ne leggi lo stato) liberi a disposizione. L'alimentazione, come dicevo o la rubi allo schermino usando il pin 1 o il pin 17, o la porti dall'esterno (basterebbero anche 2 pile stilo o ministilo in serie o una batteria a bottone, ma la durata della carica poi è tutta da verificare, o un alimentatore esterno capace di fornire i 3,3 volt necessari o anche poco meno - non di più o bruci il RPi)
Come alimentazione non sarebbe un problema perchè come ti dicevo sopra metterei 5 pile in serie con un regolatore di tensione 5V come il LM2596 con assorbimento max di 3A ed un regolatore di tensione AMS1117 3.3 a 3.3V con assorbimento max 800 mA.
willy_pinguino wrote: tu sei obbligato ad usare dei REED NO (normalmente aperti) così da poter chiudere il circuito solo con una pedina su uno dei REED.
Sì sì userei gli NO in modo che il magnete sotto le pedine chiuda i contatti.
willy_pinguino wrote: quindi seguendo lo schema tu avrai che i 5 pin del GPIO che tu userai in lettura sono tutti allo stato di 1 quando le pedine non sono sopra a un REED ed appena una di queste si sposta sopra una casella, chiude un circuito e il pin ad esso collegato passa dallo stato alto (1) allo stato basso (0)
Aspetta, da quel che ho capito stato 1 equivale ad " ho tensione" e stato 0 a " non ho tensione". Quindi, dimmi se mi sbaglio, ma secondo me dovrei mettere 1 quando il circuito è chiuso, xchè passa una corrente che mi crea una caduta di tensione sulla Resistenza, mentre mettere stato 0 quando il circuito viene aperto perchè non passando più corrente non ho più caduta sulla resistenza, giusto?
willy_pinguino wrote: quello che il software che andrai a programmare farà, sarà leggere lo stato dei 4 pin dei 4 percorsi ogni x millisecondi, e appena uno di loro passerà a 0, avvierà il video e dirà a se stesso che fino a che lo stato non torna a 1, anche solo per un momento, il meccanismo non verrà riarmato, quindi a video finito non succederà nulla.
Se invece la pedina verrà mossa durante la riproduzione del video o dopo, il meccanismo software si riarmerà, aspettando che nuovamente un interruttore di quella linea venga chiuso per far partire un nuovo video.

eh....esatto...e come glielo dico? :)
willy_pinguino wrote: Puoi a questo punto inserire una regola per cui se dopo x millisecondi la pedina è ancora staccata dalla base di gioco, parta un'altro video che chieda al giocatore di rimettere la pedina su una delle caselle di gioco, ma dovrai eseguire un controllo sull'eccezione delle caselle di intersezione e delle caselle di partenza, per cui se non è necessario ti sconsiglio di pensare a questa eventualità perchè complicheresti di molto il tutto. (ne parlo perchè in uno dei primi post hai accennato a questa possibilità)
No, vabbeh questo lo potrei anche evitare!
willy_pinguino wrote: Quando una pedina finisce sopra una delle intersezioni, semplicemente lascia aperti tutti i REED del suo percorso per più tempo, ma se non lo devi gestire (vedi sopra), questo non cambierà assolutamente nulla nella programmazione del resto del meccanismo, perchè la riapertura del REED quando la pedina lascia il percorso per andare sull'intersezione, semplicemente riarmerà il meccanismo software che resterà in attesa della prossima chiusura del REED di quel percorso, quindi è una condizione legata al percorso e non all'intersezione.
quindi in questo caso si comporterebbe come una normalissima azione su uno degli altri circuiti corretto?
il problema sorgerà per quello che dici dopo ne caso ci siano 2 pedine sulla stessa casella o se 2 o + pedine si troveranno su 2 punti di intersezioni differenti.
willy_pinguino wrote: Devi però gestire il caso in cui 2 pedine siano su uno stesso incrocio o se finiscono su 2 incroci differenti nello stesso momento, e questo è già più complicato, perchè se si può determinare facilmente quando una pedina è da sola su una delle caselle di intersezione, semplicemente verificando che non è più su una delle caselle del suo percorso, il caso di 2 pedine contemporaneamente su due delle sei caselle di intersezione è impossibile da determinare con 5 soli pin di lettura, ne servirebbero 10 di pin (i 4 legati ai 4 percorsi e altri 6 uno per ogni casella di incrocio), mentre il caso in cui 2 pedine finiscano sulla stessa casella contemporaneamente non è proprio risolvibile in nessun modo con i REED, quindi saresti obbligato a mettere una regola forse non prevista al gioco, in cui quando 2 pedine si scontrano nella stessa casella di intersezione, una delle 2 viene spinta fuori, o si ferma una casella prima o viene spinta alla casella dopo del suo percorso.
Ho avuto 2 idee a riguardo
1) avendo io evitato di far uscire il messaggio " riposizionare la pedina" se questa esce fuori dalla casella, basterebbe che se vi fossero 2 pedine sullo stesso punto di incrocio quella che ormai ha già giocato viene un attimo sollevata in modo che la nuova agisca sulla casella
2) dato che quelle caselle di intersezione avranno degli imprevisti particolari potrei far sì tipo che una pedina venga scambiata di posizione con un'altra , oppure che deve arretrare, oppure avanzare, in modo da avere libere sempre le caselle di intersezione, ci potrebbe stare come cosa?

willy_pinguino wrote: Ora affrontiamo il problema dei REED e della loro sensibilità...
quello che potrebbe capitare se tu non distanziassi abbastanza i REED tra loro rispetto alla potenza dei magneti delle pedine, è che avvicinare le pedine alle caselle anche senza appoggiarvele dentro, o peggio, con la presenza di una pedina di un'altro percorso troppo vicina (nei casi delle intersezioni), venga attivato un REED confinante, causando così un mancato riarmo del meccanismo software (ricordati che il meccanismo si riarma quando tutti gli interruttori di un percorso sono aperti, quindi una pedina di un'altro percorso troppo vicina potrebbe comportare un REED chiuso anche se la pedina di quel percorso è lontana dal piano di gioco o su una delle intersezioni)
quindi questo tipo di interruttori ti obbligano ad usare REED a bassa o bassissima sensibilità, o a ingrandire di molto le dimensioni di caselle e pedine, fino a escludere meccanicamente la possibilità di interferenze tra pedine diverse e caselle addiacenti (senza parlare delle possibili interferenze di altri oggetti magnetici sul gioco)
Ho cercato di affrontare il problema a cui è già da un pò che ci penso e attualmente sono arrivato ad una sola soluzione che però teoricamente potrebbe funzionare ma è da provare prima.
Un magnete crea un campo magnetico omnidirezionale, ma se io posiziono il magnete sotto una pedina questo lo genera a partire dal punto in cui lui è posto.
Ora se io riprendessi la forma delle caselle al di sotto del piano creando dei lamierini di forma perimetrale pari a quella delle caselle sopra il campo magnetico rimbalzerebbe sulle pareti metalliche e rimarrebbe orientato all'interno dello spazio della casella proprio, e se proprio ne passasse un pò verso le caselle adiacenti sarebbe una quota parte talmente piccola probabilmente da non influenzare gli altri REED perchè la maggior parte del campo magnetico verrebbe "attratta" dall'area compresa tra le pareti metalliche sottostanti.
Oppure forse ancora meglio con pareti di legno sottile sottile ,anche 1 mm , che invece che convogliare le onde al centro non le fa proprio passare
Dovrebbe essere così
Image
willy_pinguino wrote:dimenticavo, il modello di REED che hai segnalato sembra adatto a tensioni alte (300 VDC), ed ho il sospetto che non si comporti poi così bene con le microtensioni che usiamo noi (3,3 VDC), ti conviene verificare se puoi trovare REED costruiti per lavorare a tensioni molto più basse, se non direttamente a 3,3 VDC, ma può essere che siccome sono collegati alla massa e non devono davvero far passare corrente, possano andar bene lo stesso... però quà serve almeno un perito elettrotecnico, io invece sono uno poco addentro alla materia :P
Per i REED scelti i valori segnati sono quelli massimi ammissibili oltre i quali l'interruttore non riesce più ad aprirsi e per arco elettrico dovuta a troppa tensione rimarrebbe sempre chiuso. So che funzionano a 12V (non quelli in particolare, ma ho visto che sono tutti uguali) xchè li avevo provati in auto :) e per la corrente...beh 500mA non ci arriverò nemmeno in un corto circuito, penso salterebbero prima i cavi ^_^
Ecco magari ci dovrei mettere a monte un bel fusibile di 3 A, tanto per non saper ne leggere ne scrivere.

Grazie per tutti i consigli e tranquillo che non mi demoralizzi anzi, mi sproni, quando il gioco si fa duro sono i duri a giocare :D
Vediamo cosa riusciamo a combinare.

Re: Programmare avvio video su display

Posted: Mon Feb 06, 2017 2:10 pm
by willy_pinguino
Per alimentare i circuiti dei vari percorsi ho 2 scelte a seconda di mettere un Display con PIN o uno alimentato dell'esterno e collegato con il solo HDMI.
Sotto ti posto 2 schemi con le mie 2 soluzioni:
- la prima prevede il Display con i PIN ( che ho letto esser essenziali per il touch screen, cosa che a me non servirebbe moltissimo) e quindi ho pensato di alimentare il tutto con 5 pile stilo in serie per una tensione di 7.5 V e di alimentare l' RPi con un regolatore di tensione a 5V con assorbimento max 3A.
Per alimentare i circuiti invece ho pensato di prendere l'alimentazione direttamente da una presa USB di RPi a 5V e collegarvi un regolatore di tensione a 3.3V con assorbimento max 800 mA ( più ke sufficienti dato che 3.3V su una resistenza da 47 k ohm farebbero passare su ogni circuito una corrente di 70 microA, ossia 0,07 mA!!! e per 5 circuiti anche in contemporanea non sarebbero più di 0,5 mA! quindi direi che andrebbe bene come carico)
- la seconda invece prevede l'alimentazione esterna del Display collegato solo con l'HDMI al RPi e quindi il regolatore di ingresso del RPi alimenterà anche il Display ( tanto se ha assorbimento max 3A tra RPi e Display che assorbe 200mA non dovremmo superare nemmeno i 2A!) e i circuiti dei percorsi verranno alimentati direttamente dai 3.3V del PIN 1.
delle 2 soluzioni quella con i pin ha bisogno dei connettori sia per il touch che per il monitor, per cui togliere il connettore non è possibile.
quella via hdmi sembra più logica ma ti costringe ad usare schermi più grandi e costosi, e dubito che lo schermo assorba solo 200 mA, credo che tra elettronica di controllo e schermo si sia più vicini ai 2A o più, tant'è vero che sono anche uscite schede di controllo con anche una porta usb per alimentare il raspberry con un unico alimentatore, e se ricordo bene (non ho link da fornirti, mi spiace) l'alimentatore che doveva reggere tutto mi pare fosse addirittura da 4A
Inoltre ho un dubbio : io ho sempre pensato che l'alimentazione derivasse anche dai PIN messi come OUTPUT, ossia che se io mettessi collegati tra loro 2 PIN (con in mezzo una resistenza) uno come OUTPUT e uno come INPUT, quello come OUTPUT desse una tensione in uscita che verrebbe poi letta da quello in INPUT e quindi generasse un segnale.
Ma dallo schema della pagina web che mi hai indicato come esempio invece ho visto che devono prendere l'alimentazione dai 3.3V o 5V, E' quindi così che va fatta?
Quella che vedi nel secondo dei 2 schemi della tua immagine è il modo più "economico" di gestire il GPIO se deve rilevare degli stati, visto che occupa solo 1 pin "dati" per ognuno degli stati da monitorare. la tua idea del primo schema può funzionare (se possono accendere un led, i pin del GPIO possono anche alimentare un REED, ma tutto il carico va a gravare sull'alimentazione del RPi e non è buona pratica perchè per un qualunque funzionamento anomalo o cortocircuito dei tuoi interruttori metti a rischio l'integrità e la stabilità di funzionamento del raspberry visto che anche un consumo anomalo di corrente può far si che il RPi abbia comportamenti fuori linea) ma comunque ti costringerebbe in questo caso a rinunciare a priori alla soluzione con lo schermo a pin, perchè altrimenti non hai abbastanza pin liberi.
Cosa consiglieresti tu? Display con PIN o quello con alimentazione esterna con relative conseguenze sul circuito a seconda dell'una o dell'altra scelta?
dipende dal budget e da quanto hai voglia di essere "pulito" e standard nella programmazione/realizzazione. Con lo schermo a pin e usando meno pin possibili risparmi e progetti bene, con hdmi e uso artistico dei pin spendi di più e sprechi risorse.

Ciò non toglie che se a te dovessero servire filmati più grandi (la risoluzione massima di uno schermo a pin è 480x320 e la dimensione non supera i 4 pollici di diagonale) e un domani prevedi di aumentare il numero di percorsi, usare la porta hdmi affiancata ad un uso "economico" dei pin, ti lascia la maggior flessibilità possibile, a prezzo di un costo di realizzazione maggiore
la mia paura è una anche se potrebbe non essere così.. Ho letto su dei forum che per modelli vecchi la max corrente sui PIN GPIO era di 3 mA. Non essendo la GND di sezione molto più grande penso che anch'essa avrà la stessa limitazione, solo che allora mi chiedo, come può un Display che assorbe 200mA a scaricare sulle GND? Sì che il Display copre fino al pin 26 e quindi comprende diverse GND, ma cmq anche se sono 5 sono sempre 40 mA a PIN... La GND non ha una limitazione di corrente? Alla fine tanta è la corrente che entra tanto quella che ritorna su massa!
non consideri che lo schermo ha anche un assorbimento e una dissipazione, per cui quello che torna sulla massa è ben poca cosa rispetto a quello che viene assorbito dallo schermo su GPIO.
I vecchi modelli di cui hai sentito parlare sono le prime versioni del modello B con uscita video analogica su pin rca giallo, GPIO a 26 pin e solo 2 porte usb fatti costruire in cina. Già nella stessa versione costruita in UK dalle fabbriche Sony soffrivano molto meno di questo problema, che alla fine era di economia sulla componentistica e sulla larghezza delle piste. Ti devi porre il problema solo se hai uno di quei primissimi raspberry, ma siccome parliamo di usare i pin di un connettore a 40, parliamo già della versione B+ che può fornire un alimentazione ben maggiore.

Come alimentazione non sarebbe un problema perchè come ti dicevo sopra metterei 5 pile in serie con un regolatore di tensione 5V come il LM2596 con assorbimento max di 3A ed un regolatore di tensione AMS1117 3.3 a 3.3V con assorbimento max 800 mA.
Considera che il regolatore di tensione ha comunque un assorbimento, quindi non consuma quello che emette, ma di più.
willy_pinguino wrote: tu sei obbligato ad usare dei REED NO (normalmente aperti) così da poter chiudere il circuito solo con una pedina su uno dei REED.
Sì sì userei gli NO in modo che il magnete sotto le pedine chiuda i contatti.
willy_pinguino wrote: quindi seguendo lo schema tu avrai che i 5 pin del GPIO che tu userai in lettura sono tutti allo stato di 1 quando le pedine non sono sopra a un REED ed appena una di queste si sposta sopra una casella, chiude un circuito e il pin ad esso collegato passa dallo stato alto (1) allo stato basso (0)
Aspetta, da quel che ho capito stato 1 equivale ad " ho tensione" e stato 0 a " non ho tensione". Quindi, dimmi se mi sbaglio, ma secondo me dovrei mettere 1 quando il circuito è chiuso, xchè passa una corrente che mi crea una caduta di tensione sulla Resistenza, mentre mettere stato 0 quando il circuito viene aperto perchè non passando più corrente non ho più caduta sulla resistenza, giusto?
no, guardando lo schema che ti ho linkato io, tu fornisci i 3,3 volt al pin di lettura e l'interruttore è dopo, per cui il pin riceve sempre i 3,3 fino a che tu non chiudi il circuito e scarichi a massa la corrente, che va verso la massa invece che verso il pin perchè ha maggiore differenza di potenziale quindi il pin legge lo stato 1 fino a che l'interruttore è aperto e diventa 0 quando lo chiudi, ma onestamente non sono un elettronico e potrei aver capito fischi per fiaschi, quindi una semplice prova empirica dirimerà tutti i dubbi, ma a livello di programmazione cambia davvero poco, devi solo mettere 0 o 1 come valore booleano da verificare.
willy_pinguino wrote: quello che il software che andrai a programmare farà, sarà leggere lo stato dei 4 pin dei 4 percorsi ogni x millisecondi, e appena uno di loro passerà a 0, avvierà il video e dirà a se stesso che fino a che lo stato non torna a 1, anche solo per un momento, il meccanismo non verrà riarmato, quindi a video finito non succederà nulla.
Se invece la pedina verrà mossa durante la riproduzione del video o dopo, il meccanismo software si riarmerà, aspettando che nuovamente un interruttore di quella linea venga chiuso per far partire un nuovo video.

eh....esatto...e come glielo dico? :)
tu non devi fare nulla, il software già lo fa perchè legge il cambio di stato della pedina e ignora se il video è in esecuzione o se è già finito
willy_pinguino wrote: Puoi a questo punto inserire una regola per cui se dopo x millisecondi la pedina è ancora staccata dalla base di gioco, parta un'altro video che chieda al giocatore di rimettere la pedina su una delle caselle di gioco, ma dovrai eseguire un controllo sull'eccezione delle caselle di intersezione e delle caselle di partenza, per cui se non è necessario ti sconsiglio di pensare a questa eventualità perchè complicheresti di molto il tutto. (ne parlo perchè in uno dei primi post hai accennato a questa possibilità)
No, vabbeh questo lo potrei anche evitare!
Meglio!
willy_pinguino wrote: Quando una pedina finisce sopra una delle intersezioni, semplicemente lascia aperti tutti i REED del suo percorso per più tempo, ma se non lo devi gestire (vedi sopra), questo non cambierà assolutamente nulla nella programmazione del resto del meccanismo, perchè la riapertura del REED quando la pedina lascia il percorso per andare sull'intersezione, semplicemente riarmerà il meccanismo software che resterà in attesa della prossima chiusura del REED di quel percorso, quindi è una condizione legata al percorso e non all'intersezione.
quindi in questo caso si comporterebbe come una normalissima azione su uno degli altri circuiti corretto?
no, io quà forse ti ho confuso allungando il discorso.

Quello che è importante capire è che le intersezioni non possono essere trattate come la somma di 2 percorsi (2 interruttori di 2 percorsi diversi sotto la stessa casella) perchè non c'è modo con i REED di capire a quale dei 2 percorsi appartenga la pedina. se si chiudessero entrambi avreisti 2 percorsi chiusi dalla stessa pedina e il movimento dell'altra pedina (quella del percorso che non è sull'intersezione) non sarebbe più letto perchè l'azione del sollevare la pedina e provocare la riapertura del REED non sarebbe letta visto che comunque il REED sotto l'intersezione sarebbe ancora chiuso e quindi non vi sarebbe azione di riarmo del meccanismo software
il problema sorgerà per quello che dici dopo ne caso ci siano 2 pedine sulla stessa casella o se 2 o + pedine si troveranno su 2 punti di intersezioni differenti.
il problema si verifica in ogni caso in cui un interruttore di un singolo percorso possa essere chiuso da pedine diverse di percorsi diversi, in pratica devi essere sicuro che 1 solo interruttore di ogni percorso sia chiuso alla volta.

willy_pinguino wrote: Devi però gestire il caso in cui 2 pedine siano su uno stesso incrocio o se finiscono su 2 incroci differenti nello stesso momento (...)
Ho avuto 2 idee a riguardo
1) avendo io evitato di far uscire il messaggio " riposizionare la pedina" se questa esce fuori dalla casella, basterebbe che se vi fossero 2 pedine sullo stesso punto di incrocio quella che ormai ha già giocato viene un attimo sollevata in modo che la nuova agisca sulla casella
2) dato che quelle caselle di intersezione avranno degli imprevisti particolari potrei far sì tipo che una pedina venga scambiata di posizione con un'altra , oppure che deve arretrare, oppure avanzare, in modo da avere libere sempre le caselle di intersezione, ci potrebbe stare come cosa?
a me come giocatore pare più lineare la seconda opzione, alzare una pedina per poi rimetterla allo stesso posto è una cosa che si dimentica, mentre una punizione (mandarla indietro) o un premio (mandarla avanti) è una cosa che si fa con più motivazione e non si dimentica
willy_pinguino wrote: Ora affrontiamo il problema dei REED e della loro sensibilità...(...)
Ho cercato di affrontare il problema a cui è già da un pò che ci penso e attualmente sono arrivato ad una sola soluzione che però teoricamente potrebbe funzionare ma è da provare prima.
Un magnete crea un campo magnetico omnidirezionale, ma se io posiziono il magnete sotto una pedina questo lo genera a partire dal punto in cui lui è posto.
Ora se io riprendessi la forma delle caselle al di sotto del piano creando dei lamierini di forma perimetrale pari a quella delle caselle sopra il campo magnetico rimbalzerebbe sulle pareti metalliche e rimarrebbe orientato all'interno dello spazio della casella proprio, e se proprio ne passasse un pò verso le caselle adiacenti sarebbe una quota parte talmente piccola probabilmente da non influenzare gli altri REED perchè la maggior parte del campo magnetico verrebbe "attratta" dall'area compresa tra le pareti metalliche sottostanti.
Oppure forse ancora meglio con pareti di legno sottile sottile ,anche 1 mm , che invece che convogliare le onde al centro non le fa proprio passare
Dovrebbe essere così
Image
non ne so molto nemmeno di fisica e magnetismo, ma secondo me o il lamierino è magneticamente influenzabile, e quindi propaga il campo e lo inoltra, o è magneticamente neutro e quindi non fa nulla per incanalarlo, non mi risulta che tu possa deviare un campo magnetico a meno di non usare flussi magnetici di origine diversa, quindi ho paura che tu debba gestire il tutto con distanze adeguate e prove empiriche (dubito che il legno fermi le onde magnetiche, non lo fa nemmeno la pietra a meno che non contenga minerali ferrosi... si tratta solo di spessori)
Per i REED scelti i valori segnati sono quelli massimi ammissibili oltre i quali l'interruttore non riesce più ad aprirsi e per arco elettrico dovuta a troppa tensione rimarrebbe sempre chiuso. So che funzionano a 12V (non quelli in particolare, ma ho visto che sono tutti uguali) xchè li avevo provati in auto :) e per la corrente...beh 500mA non ci arriverò nemmeno in un corto circuito, penso salterebbero prima i cavi ^_^
Ecco magari ci dovrei mettere a monte un bel fusibile di 3 A, tanto per non saper ne leggere ne scrivere.
ok, come dicevo non è il mio campo quindi sai meglio tu, ma un fusibile da 3A su che corrente? sui 3,3volt del circuito??? mi mostri una foto che non ne ho mai visti?

Grazie per tutti i consigli e tranquillo che non mi demoralizzi anzi, mi sproni, quando il gioco si fa duro sono i duri a giocare :D
Vediamo cosa riusciamo a combinare.
Prego

Re: Programmare avvio video su display

Posted: Mon Feb 13, 2017 4:15 pm
by Gagge89
willy_pinguino wrote: delle 2 soluzioni quella con i pin ha bisogno dei connettori sia per il touch che per il monitor, per cui togliere il connettore non è possibile.
quella via hdmi sembra più logica ma ti costringe ad usare schermi più grandi e costosi, e dubito che lo schermo assorba solo 200 mA, credo che tra elettronica di controllo e schermo si sia più vicini ai 2A o più, tant'è vero che sono anche uscite schede di controllo con anche una porta usb per alimentare il raspberry con un unico alimentatore, e se ricordo bene (non ho link da fornirti, mi spiace) l'alimentatore che doveva reggere tutto mi pare fosse addirittura da 4A
Ciao, scusa il ritardo, ma ho atteso qualche gg la tua risposta, poi sono partito e sono tornato oggi. Partiamo con una domanda relativa al quote che ho fatto sopra : se io prendessi un display con HDMI (e quindi con alimentazione esterna) davvero avrei bisogno di un'alimentazione di 4A ( o circa 4A) ? Scusa se io utilizzassi uno stesso display ( prendiamo il caso di un 3.5" sia caso collegato con i PIN sia caso collegato con l'HDMI) e un Raspberry, vuol dire che questo avrebbe più bisogno di corrente nel caso in cui lo collegassi direttamente all'alimentazione e meno nel caso in cui lo collegassi al Raspberry con i PIN? Perchè mi suona strano dato che ho letto che l'alimentazione massima del Raspberry ( e già ho visto test in cui dicono che si tengono davvero larghi) è 2.4A con schermi o altri shield collegati!
willy_pinguino wrote:Quella che vedi nel secondo dei 2 schemi della tua immagine è il modo più "economico" di gestire il GPIO se deve rilevare degli stati, visto che occupa solo 1 pin "dati" per ognuno degli stati da monitorare. la tua idea del primo schema può funzionare (se possono accendere un led, i pin del GPIO possono anche alimentare un REED, ma tutto il carico va a gravare sull'alimentazione del RPi e non è buona pratica perchè per un qualunque funzionamento anomalo o cortocircuito dei tuoi interruttori metti a rischio l'integrità e la stabilità di funzionamento del raspberry visto che anche un consumo anomalo di corrente può far si che il RPi abbia comportamenti fuori linea) ma comunque ti costringerebbe in questo caso a rinunciare a priori alla soluzione con lo schermo a pin, perchè altrimenti non hai abbastanza pin liberi.
Ok quindi però dovrei mettere un regolatore che dalle mie pile mi porta a 3.3V la tensione..vabbe, poco male.. quindi con il sistema di collegamento 2, io avrei un'alimentazione a 3.3 per tutti i circuiti, ma in serie ad ognuno di essi dovrei mettere una resistenza 47kohm per limitare la corrente che mi va nel PIN ( collegando quindi tutti gli estremi di un interruttore tra di loro e poi collegare questo nodo con il PIN che leggerà un INPUT) successivamente tutti i miei REED in parallelo normalmente aperti e quando questi si chiuderanno, la corrente passerà per il REED e il PIN cesserà di vedere corrente e quindi sarà il segnale per fare quello che gli dirò io corretto?

Image
willy_pinguino wrote:dipende dal budget e da quanto hai voglia di essere "pulito" e standard nella programmazione/realizzazione. Con lo schermo a pin e usando meno pin possibili risparmi e progetti bene, con hdmi e uso artistico dei pin spendi di più e sprechi risorse.
Ciò non toglie che se a te dovessero servire filmati più grandi (la risoluzione massima di uno schermo a pin è 480x320 e la dimensione non supera i 4 pollici di diagonale) e un domani prevedi di aumentare il numero di percorsi, usare la porta hdmi affiancata ad un uso "economico" dei pin, ti lascia la maggior flessibilità possibile, a prezzo di un costo di realizzazione maggiore.
Beh, la parte economica incide certo, però ho trovato anche qualcosina di abbastanza conveniente sul sito Aliexpress anche sui 5" in HDMI, ora più che altro è la decisione tra se prendere quello con i PIN oppure quello solo HDMI (dato che tanto il touch non lo uso).
2 sono le cose che mi legano :
1) le dimensioni di dove andranno inseriti : io ho a disposizione di circa 3 cm in altezza e display + raspberry e non so quanto occupino in altezza se entrambi connessi tra di loro; se sono con i PIN ad incastro mi devono stare entro quelle dimensioni, mentre se con HDMI prenderei un cavetto HDMI e mi metterei il display in un punto e il Raspberry in un altro in modo da riuscire a stare nei 3 cm di spazio
2) come dimensione la migliore per il mio progetto sarebbe un modello da 4" o 4.3" con risoluzione 800x480 perchè dato che ci finiranno anche dei testi che potrebbero anche assere lunghi 7-8 righe se la risoluzione fosse troppo bassa, guardandoli da giusto 30-40 cm non vorrei che schermi con risoluzione 480x320 rendessero la leggibilità difficile, invece mettendoci un display con risoluzione maggiore potrebbero essere più definiti.
- Avevo pensato a qualcosa tipo questo (lo sto cercando anche più economico) che essendo 4" con risoluzione 800x480 sarebbe perfetto sia per dimensioni che per risoluzione.
http://www.ebay.it/itm/282233749669
avrebbe l'HDMI e il collegamento PIN per il touch, ma nn utilizzando il touch potrei anche non collegare i PIN, giusto?
- Altrimenti c'è questo 5" solo HDMI in quando in descrizione dice che i PIN per il touch con il RPi ossia il mio non funzionano
http://www.ebay.it/itm/112272886028
- Senno un modello 3.5" con collegamento solo attraverso i PIN però così non so se in altezza sotto il gioco mi ci starebbe il RPi+display collegato (in quanto come detto prima ho massimo 3cm di altezza in cui farli stare) e avrei meno PIN disponibili per i collegamenti ( non li implementerò mai dopo averci lavorato ora ma di sicuro mi renderebbe più semplice il collegamento dei jumper ai percorsi dei REED)
willy_pinguino wrote: Considera che il regolatore di tensione ha comunque un assorbimento, quindi non consuma quello che emette, ma di più.
Sìsì ma il problema del consumo al max poi dipenderà da che tipo di alimentazione ci metterò e questo poi comporterà una durata minore al max delle batterie, ma questo sarà forse il minore di tutti i problemi, in qualche modo una soluzione per l'alimentazione la troveremo ( con batterie Li-Po o serie di stilo...insomma qualcosa inventiamo :D
willy_pinguino wrote: no, guardando lo schema che ti ho linkato io, tu fornisci i 3,3 volt al pin di lettura e l'interruttore è dopo, per cui il pin riceve sempre i 3,3 fino a che tu non chiudi il circuito e scarichi a massa la corrente, che va verso la massa invece che verso il pin perchè ha maggiore differenza di potenziale quindi il pin legge lo stato 1 fino a che l'interruttore è aperto e diventa 0 quando lo chiudi, ma onestamente non sono un elettronico e potrei aver capito fischi per fiaschi, quindi una semplice prova empirica dirimerà tutti i dubbi, ma a livello di programmazione cambia davvero poco, devi solo mettere 0 o 1 come valore booleano da verificare.
Hai perfettamente ragione tu! mi ero perso in un bicchier d'acqua con la chiusura dell'interruttore. Giusto!
willy_pinguino wrote: tu non devi fare nulla, il software già lo fa perchè legge il cambio di stato della pedina e ignora se il video è in esecuzione o se è già finito
Saprai aiutarmi quando arriveremo al punto della programmazione vero? :D Sarò pienamente nelle tue mani che per ora stiamo costruendo la base del gioco, poi avverrà la sistemazione elettronica e la programmazione :)
willy_pinguino wrote: il problema si verifica in ogni caso in cui un interruttore di un singolo percorso possa essere chiuso da pedine diverse di percorsi diversi, in pratica devi essere sicuro che 1 solo interruttore di ogni percorso sia chiuso alla volta.
eh...qui l'unico modo è riuscire a trovare il modo di schermare un campo magnetico ( una delle cose più complesse in campo elettrico). Mi informerò un pò su qualche sistema..
willy_pinguino wrote:a me come giocatore pare più lineare la seconda opzione, alzare una pedina per poi rimetterla allo stesso posto è una cosa che si dimentica, mentre una punizione (mandarla indietro) o un premio (mandarla avanti) è una cosa che si fa con più motivazione e non si dimentica
Anche secondo me è migliore la 2a opzione quindi seguirò questa direzione nella programmazione.
Per i REED scelti i valori segnati sono quelli massimi ammissibili oltre i quali l'interruttore non riesce più ad aprirsi e per arco elettrico dovuta a troppa tensione rimarrebbe sempre chiuso. So che funzionano a 12V (non quelli in particolare, ma ho visto che sono tutti uguali) xchè li avevo provati in auto :) e per la corrente...beh 500mA non ci arriverò nemmeno in un corto circuito, penso salterebbero prima i cavi ^_^
Ecco magari ci dovrei mettere a monte un bel fusibile di 3 A, tanto per non saper ne leggere ne scrivere.
willy_pinguino wrote:ok, come dicevo non è il mio campo quindi sai meglio tu, ma un fusibile da 3A su che corrente? sui 3,3volt del circuito??? mi mostri una foto che non ne ho mai visti?
No,io parlavo dell'alimentazione primaria, a monte di tutto, ossia subito in uscita delle batterie mettere un fusibile da 3A ( in modo che protegga tutto quello che sta a valle di lui, [quindi raspberry, resistenze varie e display) e poi sul circuito dei REED pilotato a 3.3v da un regolatore di tensione subito dopo il regolatore magari ci metterei un fusibile da 200 mA per proteggere i PIN del Raspberry (con una R in serie di 47 Kohm la corrente che passerà sui PIN sarà ridicola, se lo trovassi lo prenderei anche da 50 mA o anche meno tanto in 5 circuiti non si arriverebbe nemmeno a 2 mA di assorbimento con i 47kohm in serie).

Che ne pensi?

Re: Programmare avvio video su display

Posted: Mon Feb 13, 2017 6:48 pm
by willy_pinguino
Gagge89 wrote:Ciao, scusa il ritardo, ma ho atteso qualche gg la tua risposta, poi sono partito e sono tornato oggi.
Nessun problema anche io avevo avuto da fare la settimana scorsa per cui non ero riuscito a risponderti prima, in fin dei conti comunque la creazione è tua, per cui se tu ci metti tanto a rispondere avrai sicuramente i tuoi motivi :-P
se io prendessi un display con HDMI (e quindi con alimentazione esterna) davvero avrei bisogno di un'alimentazione di 4A ( o circa 4A) ? Scusa se io utilizzassi uno stesso display ( prendiamo il caso di un 3.5" sia caso collegato con i PIN sia caso collegato con l'HDMI) e un Raspberry, vuol dire che questo avrebbe più bisogno di corrente nel caso in cui lo collegassi direttamente all'alimentazione e meno nel caso in cui lo collegassi al Raspberry con i PIN? Perchè mi suona strano dato che ho letto che l'alimentazione massima del Raspberry ( e già ho visto test in cui dicono che si tengono davvero larghi) è 2.4A con schermi o altri shield collegati!
ci sono 2 cose da distinguere:
- una è l'alimentazione massima erogabile da un raspberry che non dipende solo dall'alimentatore ma anche dai limiti costruttivi della scheda fisica del RPi.
a me risulta che 2,4A sia il massimo che il RPi possa erogare, a prescindere da quanto sia la sua alimentazione. Con un alimentatore da 4A dovresti fornire l'1-1,2A necessari al raspberry e fino ad altri 2,4A verso il GPIO ed altre periferiche connesse e alimentate tramite USB o altre porte (tipo la telecamera per capirci, che utilizza un connettore tutto suo e che ovviamente ha un suo consumo) e quindi ti avanzerebbero circa 0,4/0,6A inutilizzati
- una cosa è il consumo massimo che ha ogni singolo oggetto, che in teoria troverai nelle caratteristiche tecniche dell'oggetto stesso.
ovviamente uno schermi collegato tramite pin è alimentato dal raspberry stesso mentre uno collegato in hdmi è alimentato esternamente (di solito da un alimentatore sempre a 5V), ma teoricamente potresti usare un hub usb o semplicemente dei connettori saldati ad un alimentatore comune per alimentare il tutto, in quel caso devi sommare i consumi comunque.
il mio RPi3 con lo schermino pin da 3,5 viene retto tranquillamente da un alimentatore da 2A, e non credo che i REED collegati al GPIO possano gravare di tanto la situazione da uscire da quel carico, ma comunque per sicurezza cercherei un alimentatore da 2,5A (e mi pare che gli alimentatori ufficiali adesso siano appunto da 2,5A)
Ok quindi però dovrei mettere un regolatore che dalle mie pile mi porta a 3.3V la tensione..vabbe, poco male.. quindi con il sistema di collegamento 2, io avrei un'alimentazione a 3.3 per tutti i circuiti, ma in serie ad ognuno di essi dovrei mettere una resistenza 47kohm per limitare la corrente che mi va nel PIN ( collegando quindi tutti gli estremi di un interruttore tra di loro e poi collegare questo nodo con il PIN che leggerà un INPUT) successivamente tutti i miei REED in parallelo normalmente aperti e quando questi si chiuderanno, la corrente passerà per il REED e il PIN cesserà di vedere corrente e quindi sarà il segnale per fare quello che gli dirò io corretto?
Si mi sembra che sia corretto.
Ovviamente ti servirà una resistenza da 47kohm per ogni pin, un elettronico saprebbe se sia più giusto metterla a monte o a valle dei REED, a me sembra uguale ma non mi sbilancio.
Beh, la parte economica incide certo, però ho trovato anche qualcosina di abbastanza conveniente sul sito Aliexpress anche sui 5" in HDMI, ora più che altro è la decisione tra se prendere quello con i PIN oppure quello solo HDMI (dato che tanto il touch non lo uso).
2 sono le cose che mi legano :
1) le dimensioni di dove andranno inseriti : io ho a disposizione di circa 3 cm in altezza e display + raspberry e non so quanto occupino in altezza se entrambi connessi tra di loro; se sono con i PIN ad incastro mi devono stare entro quelle dimensioni, mentre se con HDMI prenderei un cavetto HDMI e mi metterei il display in un punto e il Raspberry in un altro in modo da riuscire a stare nei 3 cm di spazio
2) come dimensione la migliore per il mio progetto sarebbe un modello da 4" o 4.3" con risoluzione 800x480 perchè dato che ci finiranno anche dei testi che potrebbero anche assere lunghi 7-8 righe se la risoluzione fosse troppo bassa, guardandoli da giusto 30-40 cm non vorrei che schermi con risoluzione 480x320 rendessero la leggibilità difficile, invece mettendoci un display con risoluzione maggiore potrebbero essere più definiti.
- Avevo pensato a qualcosa tipo questo (lo sto cercando anche più economico) che essendo 4" con risoluzione 800x480 sarebbe perfetto sia per dimensioni che per risoluzione.
http://www.ebay.it/itm/282233749669
avrebbe l'HDMI e il collegamento PIN per il touch, ma nn utilizzando il touch potrei anche non collegare i PIN, giusto?
- Altrimenti c'è questo 5" solo HDMI in quando in descrizione dice che i PIN per il touch con il RPi ossia il mio non funzionano
http://www.ebay.it/itm/112272886028
- Senno un modello 3.5" con collegamento solo attraverso i PIN però così non so se in altezza sotto il gioco mi ci starebbe il RPi+display collegato (in quanto come detto prima ho massimo 3cm di altezza in cui farli stare) e avrei meno PIN disponibili per i collegamenti ( non li implementerò mai dopo averci lavorato ora ma di sicuro mi renderebbe più semplice il collegamento dei jumper ai percorsi dei REED)
Tieni presente che il massimo della risoluzione per gli schermi via pin è 480x320 e il massimo refresh è tra i 10 ed i 15 frame per secondo (che è proprio il limite per considerare un'animazione fluida) quindi se i video devono contenere animazioni ed essere "belli" l'hdmi è la scelta migliore. il costo del secondo link poi rende la differenza quasi risibile, se non fosse che ci devi aggiungere cavo hdmi e alimentatore dedicati.
Come ingombro posso dirti che il mio schermino da 3,5 su pin ris. 480x320 praticamente si appoggia sul connettore dell'ethernet e si alza di ulteriori 5/6 mm, quindi nei 3 cm ci staresti, mentre dei 2 link da te postati, il primo usa un connettore particolare per poter stare proprio sopra al RPi, ed è lui che definisce la distanza tra RPi e schermo, se invece usi un semplice cavo hdmi non avrai problemi, ma comunque anche per il prezzo io preferirei il secondo link, e non escludo che l'incompatibilita con RPi3 del touch sia solo un problema di drivers, facilmente risolvibile con un po' di smanettamenti software (a meno che non lavori ad un livello di segnali elettrici per qualche motivo incompatibili con il RPi3 o che wifi o bluetooth non provochino interferenze)
come leggibilità, sul mio schermino il minimo di leggibilità dei caratteri è con caratteri a 6 punti, e bisogna davvero tirare gli occhi per leggerci... anche per questo ti consiglierei di stare sullo schermo più grande, ma lì devi vedere se come dimensioni ci stai.
Sìsì ma il problema del consumo al max poi dipenderà da che tipo di alimentazione ci metterò e questo poi comporterà una durata minore al max delle batterie, ma questo sarà forse il minore di tutti i problemi, in qualche modo una soluzione per l'alimentazione la troveremo ( con batterie Li-Po o serie di stilo...insomma qualcosa inventiamo :D
non ho capito se con le batterie ci devi alimentare tutto o solo la parte dei REED... se devi alimentare tutto, meglio pensare a delle ricaricabili capienti o direttamente ad un powerbank tipo quelli da cellulari (sempre su aliexpress ne trovi di tutti i tipi anche per pochi soldi)
Saprai aiutarmi quando arriveremo al punto della programmazione vero? :D Sarò pienamente nelle tue mani che per ora stiamo costruendo la base del gioco, poi avverrà la sistemazione elettronica e la programmazione :)
Ti aiuterò quanto potrò, ma considera questa come un occasione per imparare (come faccio io) per cui non ti fornirò righe di codice ma al più fasi logiche e qualche link su come si scrive uno script per shell o per php :-P
eh...qui l'unico modo è riuscire a trovare il modo di schermare un campo magnetico ( una delle cose più complesse in campo elettrico). Mi informerò un pò su qualche sistema..
i Reed sono un oggetto interessante ma devi fare delle valutazioni empiriche, anche in rapporto ai magneti che troverai per le pedine, e se dovesse diventare troppo complesso, valuta anche altre ipotesi... per esempio spinotti di forma particolare o di lunghezza diversa che vadano a chiudere/azionare contatti fisici o microswich posti sotto a una griglia con fori incompatibili tra percorsi diversi e pedine con pin di inserzione diversiper adattarsi ai diversi fori
Anche secondo me è migliore la 2a opzione quindi seguirò questa direzione nella programmazione.
ottimo, su questo siamo in piena sintonia :)
oltretutto meglio una punizione (arretramento) per gli avversari, così chi muove la pedina per ultimo sarà più interessato/invogliato a far arretrare gli avversari, piuttosto che ad avvantaggiarli spingendoli avanti, e si ricorderà sicuramente di farlo, ma allo stesso modo chi sarà "punito" sarà pronto a controllare che la punizione non sia troppa :)
Per i REED scelti i valori segnati sono quelli massimi ammissibili oltre i quali l'interruttore non riesce più ad aprirsi e per arco elettrico dovuta a troppa tensione rimarrebbe sempre chiuso. So che funzionano a 12V (non quelli in particolare, ma ho visto che sono tutti uguali) xchè li avevo provati in auto :) e per la corrente...beh 500mA non ci arriverò nemmeno in un corto circuito, penso salterebbero prima i cavi ^_^
Ecco magari ci dovrei mettere a monte un bel fusibile di 3 A, tanto per non saper ne leggere ne scrivere.
boh... il fusibile dovrebbe proteggere il raspberry o i giocatori? se è per proteggere il raspberry, servirebbe un modo per astrarre la parte degli interruttori dalla scheda stessa, tipo degli interruttori ottici al posto di contatti elettrici, ma credo che i costi sarebbero un po' troppo alti, poi, e la realizzazione adatta ad un perito elettronico diplomato :-P
3,3 , 5 o anche 12 volt non fanno male alle persone se in corrente continua, a meno che non si salga parecchio di amperaggio... i 4/5A che probabilmente serviranno a te non danno problemi alle persone.
No,io parlavo dell'alimentazione primaria, a monte di tutto, ossia subito in uscita delle batterie mettere un fusibile da 3A ( in modo che protegga tutto quello che sta a valle di lui, [quindi raspberry, resistenze varie e display) e poi sul circuito dei REED pilotato a 3.3v da un regolatore di tensione subito dopo il regolatore magari ci metterei un fusibile da 200 mA per proteggere i PIN del Raspberry (con una R in serie di 47 Kohm la corrente che passerà sui PIN sarà ridicola, se lo trovassi lo prenderei anche da 50 mA o anche meno tanto in 5 circuiti non si arriverebbe nemmeno a 2 mA di assorbimento con i 47kohm in serie).

Che ne pensi?
come scritto sopra, non credo ti servano fusibili, anche perchè per avere un fusibile da 50 o 200mA sui 5 volt, che spessore avrebbe il fusibile?? credo sarebbe uno spessore tale che la sollecitazione meccanica lo farebbe rompere più facilmente di un sovraccarico!

Ora direi che la cosa più importante da chiarire sia quanto sono sensibili i REED e quanto possono stare vicini in rapporto alle calamite che troverai per le pedine, o se passare ad un altro tipo di interruttore.

per lo schermo, a tutti gli effetti l'hdmi è la strada migliore, ti permette di avere una alimentazione separata, di avere più corrente sul GPIO del RPi e quindi di pensare di alimentare il tutto da lui senza complicarti la vita tramite regolatori di tensione (anche se questo ti obbliga ad un'attenzione tripla nella costruzione del circuito altrimenti con un corto friggi il RPi e non solo un alimentatore da pochi euro) e ti lascia più pin liberi così da poter pensare anche a complicare i percorsi con caselle particolari.


un'ultima considerazione

con uno schermo touch più grande potresti pensare a fare tutto il giochino virtuale, inserendo un generatore casuale di numeri per emulare il dado, automatizzando il movimento delle pedine e potendo rendere tutto molto più compatto, ma a questo punto quasi sarebbe meglio cercare un tablet da pochi euro (una cinesata) e imparare ad usare un tool di sviluppo software per android, accantonando la parte di ferramenta :-P o rendere il tutto gestibile da mouse e farlo girare su RPi collegato alla tv di casa

Re: Programmare avvio video su display

Posted: Tue Feb 14, 2017 1:57 pm
by Gagge89
willy_pinguino wrote: ci sono 2 cose da distinguere:
- una è l'alimentazione massima erogabile da un raspberry che non dipende solo dall'alimentatore ma anche dai limiti costruttivi della scheda fisica del RPi.
a me risulta che 2,4A sia il massimo che il RPi possa erogare, a prescindere da quanto sia la sua alimentazione. Con un alimentatore da 4A dovresti fornire l'1-1,2A necessari al raspberry e fino ad altri 2,4A verso il GPIO ed altre periferiche connesse e alimentate tramite USB o altre porte (tipo la telecamera per capirci, che utilizza un connettore tutto suo e che ovviamente ha un suo consumo) e quindi ti avanzerebbero circa 0,4/0,6A inutilizzati
- una cosa è il consumo massimo che ha ogni singolo oggetto, che in teoria troverai nelle caratteristiche tecniche dell'oggetto stesso.
ovviamente uno schermi collegato tramite pin è alimentato dal raspberry stesso mentre uno collegato in hdmi è alimentato esternamente (di solito da un alimentatore sempre a 5V), ma teoricamente potresti usare un hub usb o semplicemente dei connettori saldati ad un alimentatore comune per alimentare il tutto, in quel caso devi sommare i consumi comunque.
il mio RPi3 con lo schermino pin da 3,5 viene retto tranquillamente da un alimentatore da 2A, e non credo che i REED collegati al GPIO possano gravare di tanto la situazione da uscire da quel carico, ma comunque per sicurezza cercherei un alimentatore da 2,5A (e mi pare che gli alimentatori ufficiali adesso siano appunto da 2,5A)
HO un pò girato su internet e ho trovato valori discordanti ma non più di tanto riguardo l'assorbimento dei display (alcuni dicono 250-300mA altri 150-200mA con backlight senza addirittura 40-50mA, ecco alcuni link di prodotti
http://www.waveshare.com/wiki/5inch_HDMI_LCD 5v, 235mA con retroilluminazione e 45mA senza
http://www.waveshare.com/wiki/3.5inch_RPi_LCD_(A) 5V 115mA (non ha la possibilità di spegnere la retroilluminazione)
Contanto che ci possa essere qualche % di errore nelle dichiarazioni e tenendoci larghi direi che un display più o meno mi consumerebbe sui 0.5A; il RPi non so quanto con il solo suo funzionamento mi assorbirebbe ma sono d'accordo con te che per il suo solo utilizzo mi assorbirebbe sui 1-1.2A; le GPIO con se co metto una R in serie di 47KOhm e alimentazione esterna a 3.3V (credo sia la via migliore per salvaguardare il RPi), oppure cmq con alimentazione dai PIN di comunque sempre 3.3V, addorbirebbe ogni GPIO 0.07mA (70uA!!) essendo 5 i circuiti assorbirebbero tutti e 5 in totale 0.35mA nemmeno 1mA :)
Quindi ricapitolando :
- display a tenersi larghi sui 0.5A
- RPi sui 1.2A
- GPIO 0.00035A (0.35mA)
- qualche perdita dovuta ai regolatori di tensione (dalle pile o batteria di 7.5V ai 5V per RPi e display e ai 3.3V per le GPIO) 0.5 A

Totale : 2.2 A quindi o una batteria Li-Po con un pò di capacità ( sui 7000-8000mAh in modo da che almeno duri 3-4 ore), o una powerbank con uscita da 2.4A oppure 5 pile stile (volendo 10, 2 pacchi da 5 in parallelo per aumentare la capacità) e dovrei riuscire ad alimentare tutto
willy_pinguino wrote:Si mi sembra che sia corretto.
Ovviamente ti servirà una resistenza da 47kohm per ogni pin, un elettronico saprebbe se sia più giusto metterla a monte o a valle dei REED, a me sembra uguale ma non mi sbilancio.
Per il tipo di circuito ipotizzato per forza a monte del REED, ma anche a monte dello snodo tra PIN e REED (esattamente come l'ha messo nell'esempio che mi hai postato), anche perchè se la R la mettessi a valle dell'interruttore, ad interruttore aperto (ossia nella condizione normale) il PIN vedrebbe un corto circuito; gli arriverebbe tutta la tensione di linea senza un carico per abbatterla e lì si che si brucerebbe sicuro il PIN credo.
willy_pinguino wrote:Tieni presente che il massimo della risoluzione per gli schermi via pin è 480x320 e il massimo refresh è tra i 10 ed i 15 frame per secondo (che è proprio il limite per considerare un'animazione fluida) quindi se i video devono contenere animazioni ed essere "belli" l'hdmi è la scelta migliore. il costo del secondo link poi rende la differenza quasi risibile, se non fosse che ci devi aggiungere cavo hdmi e alimentatore dedicati.
Come ingombro posso dirti che il mio schermino da 3,5 su pin ris. 480x320 praticamente si appoggia sul connettore dell'ethernet e si alza di ulteriori 5/6 mm, quindi nei 3 cm ci staresti, mentre dei 2 link da te postati, il primo usa un connettore particolare per poter stare proprio sopra al RPi, ed è lui che definisce la distanza tra RPi e schermo, se invece usi un semplice cavo hdmi non avrai problemi, ma comunque anche per il prezzo io preferirei il secondo link, e non escludo che l'incompatibilita con RPi3 del touch sia solo un problema di drivers, facilmente risolvibile con un po' di smanettamenti software (a meno che non lavori ad un livello di segnali elettrici per qualche motivo incompatibili con il RPi3 o che wifi o bluetooth non provochino interferenze)
come leggibilità, sul mio schermino il minimo di leggibilità dei caratteri è con caratteri a 6 punti, e bisogna davvero tirare gli occhi per leggerci... anche per questo ti consiglierei di stare sullo schermo più grande, ma lì devi vedere se come dimensioni ci stai.
Uhm..missà che mi butterò su un display HDMI a questo punto se dici che gira sui 10-15 fps tirati perchè sì, avrò animazioni e testo contemporaneamente, non sarà solo testo e sfondo ma lo sfondo mi piacerebbe un pò movimentarlo con effetti che con 10fps sarebbero troppo "scattosi". Quindi ora devo solo decidere se 5" o leggermente più piccolo (4.3" o 4") ma vado su HDMI.
1 problema risolto :)
willy_pinguino wrote:non ho capito se con le batterie ci devi alimentare tutto o solo la parte dei REED... se devi alimentare tutto, meglio pensare a delle ricaricabili capienti o direttamente ad un powerbank tipo quelli da cellulari (sempre su aliexpress ne trovi di tutti i tipi anche per pochi soldi)
No no, con le pile stilo, una batteria Li-Po o una powerbank equivalente ci voglio alimentare tutto; infatti pensavo a soluzioni che mi dessero tensione 7.4V (Li-Po) oppure 7.5V (pile stilo) oppure 5V powerbank e come capacità sui 4000-5000 mAh in modo che mi durino sulle 3-4 ore (senno con assorbimento di 2.2A mi finiscono subito)
Image
willy_pinguino wrote:Ti aiuterò quanto potrò, ma considera questa come un occasione per imparare (come faccio io) per cui non ti fornirò righe di codice ma al più fasi logiche e qualche link su come si scrive uno script per shell o per php :-P
Certo, certo! Anche perchè mi serve si una mano ma poi cercherò d metterci anche del mio!
willy_pinguino wrote:i Reed sono un oggetto interessante ma devi fare delle valutazioni empiriche, anche in rapporto ai magneti che troverai per le pedine, e se dovesse diventare troppo complesso, valuta anche altre ipotesi... per esempio spinotti di forma particolare o di lunghezza diversa che vadano a chiudere/azionare contatti fisici o microswich posti sotto a una griglia con fori incompatibili tra percorsi diversi e pedine con pin di inserzione diversiper adattarsi ai diversi fori
Infatti..avevo pensato anche appunto a praticare dei mini fori e mettere sotto le pedine dei dentini che chiudessero i circuiti ad incastro ma il bucare in molti punti il piano di gioco non mi piacerebbe molto, ma lo terrei come alternativa valida.
Nel frattempo sto aspettando che mi arrivino i REED ordinati ( ci vorranno ancora una 15ina-20inta di gg) per povare appunto magneti e REED come si comportano. Solo sulla messa in campo si vedrà come si comporteranno.
willy_pinguino wrote:ottimo, su questo siamo in piena sintonia :)
oltretutto meglio una punizione (arretramento) per gli avversari, così chi muove la pedina per ultimo sarà più interessato/invogliato a far arretrare gli avversari, piuttosto che ad avvantaggiarli spingendoli avanti, e si ricorderà sicuramente di farlo, ma allo stesso modo chi sarà "punito" sarà pronto a controllare che la punizione non sia troppa :)
Esatto!!
willy_pinguino wrote:boh... il fusibile dovrebbe proteggere il raspberry o i giocatori? se è per proteggere il raspberry, servirebbe un modo per astrarre la parte degli interruttori dalla scheda stessa, tipo degli interruttori ottici al posto di contatti elettrici, ma credo che i costi sarebbero un po' troppo alti, poi, e la realizzazione adatta ad un perito elettronico diplomato :-P
3,3 , 5 o anche 12 volt non fanno male alle persone se in corrente continua, a meno che non si salga parecchio di amperaggio... i 4/5A che probabilmente serviranno a te non danno problemi alle persone.
No no, alt! Il fusibile lo uso per proteggere il RPi nel caso appunto di corto, con un fusbile a monte (quindi subito dopo la batteria) taglio subito tutta la linea e in caso di guasto evito che una sovracorrente mi bruci il RPi...
Per le persone sono tranquillo...anche se sono 2A c'è da ricordarsi che la tensione in gioco è 5V..non succede niente sulle persone :)
willy_pinguino wrote: come scritto sopra, non credo ti servano fusibili, anche perchè per avere un fusibile da 50 o 200mA sui 5 volt, che spessore avrebbe il fusibile?? credo sarebbe uno spessore tale che la sollecitazione meccanica lo farebbe rompere più facilmente di un sovraccarico!
Pensavo un fusibile classico nell'ampolla di vetro (con contenitore)..uno classico così
http://www.ebay.it/itm/100-Pz-5-x-20mm- ... Sw4GVYL9Jj
3A 250V (tanto tagliano sulla corrente la tensione che sia 5 o 250 è la stesso,semplicemente superati i 3A si rompe e apre il circuito) e un fusibile per la parte degli interruttori che portando giusto 0.35mA totali basterebbe uno da pochi mA tipo questo 50mA 250V
http://www.ebay.it/itm/10pz-FUSIBILE-FU ... xySoJTTUUA

willy_pinguino wrote: Ora direi che la cosa più importante da chiarire sia quanto sono sensibili i REED e quanto possono stare vicini in rapporto alle calamite che troverai per le pedine, o se passare ad un altro tipo di interruttore.

per lo schermo, a tutti gli effetti l'hdmi è la strada migliore, ti permette di avere una alimentazione separata, di avere più corrente sul GPIO del RPi e quindi di pensare di alimentare il tutto da lui senza complicarti la vita tramite regolatori di tensione (anche se questo ti obbliga ad un'attenzione tripla nella costruzione del circuito altrimenti con un corto friggi il RPi e non solo un alimentatore da pochi euro) e ti lascia più pin liberi così da poter pensare anche a complicare i percorsi con caselle particolari.
Esatto ora aspettiamo i REED e poi farò le prove empiriche di funzionamento.
Lo schermo punto sull'HDMI che dai datasheet mi sembra assorba pure poco ( tanto il touch non mi serve)
Per l'alimentazione degli interruttori però preferisco, ora che me l'hai suggerito tu l'altra volta, un'alimentazione a parte con un regolatorino a 3.3V perchè appunto mi sento più tranquillo per proteggere il circuito e il RPi. Alal fine tanto di regolatori ne avevo presi una decina qualche mese fa per scorta a poco, quindi posso passare attraverso quella strada senza problemi!
Solo una cosa : perchè mi dici che però collegande gli interruttore direttamente con l'alimentazione del RPi potrei friggerlo? Se ci mettessi cmq nel circuito in serie la R da 47 Kohm non dovrebbe.. o meglio anche con alimentazione esterna se la R salta il circuito si apre sul PIN non arriva corrente.. non capisco.
willy_pinguino wrote:un'ultima considerazione
con uno schermo touch più grande potresti pensare a fare tutto il giochino virtuale, inserendo un generatore casuale di numeri per emulare il dado, automatizzando il movimento delle pedine e potendo rendere tutto molto più compatto, ma a questo punto quasi sarebbe meglio cercare un tablet da pochi euro (una cinesata) e imparare ad usare un tool di sviluppo software per android, accantonando la parte di ferramenta :-P o rendere il tutto gestibile da mouse e farlo girare su RPi collegato alla tv di casa
L'idea sarebbe fantastica, se non fosse che 1) non ho molte competenze su Android se non quella di installare Rom e fare il root e 2) sto costruendo la baste del gioco e quindi ho già iniziato a fare metà del lavoro :) Cmq bell'idea!

Re: Programmare avvio video su display

Posted: Tue Feb 14, 2017 2:46 pm
by willy_pinguino
Per le alimentazioni di quei monitor, si torna anche a me che uno schermo senza retroilluminazione consumi davvero poco, quello che "ciuccia" è proprio la retroilluminazione. Come pensavo quindi dovresti stare nei 2,5A. Per la durata della batteria... non so far conti, non sono un elettotecnico o un elettronico e in quel tipo di conti mi perdo (mi mancano le basiiii!!!!) :-P

su questa cosa di resistenze e posizioni mi perdo, per il motivo di cui sopra... per cui meglio se quì trovi qualcuno più capace di me... :?

si gli FPS sono bassi, anche se non lo dicono quasi mai... il problema è che più sali di risoluzione e più veloce deve essere il bus di trasmissione, ma ci sono limiti fisici dettati dagli standard del bus SPI, che è quello solitamente usato per gli schermi su GPIO. di solito allora si aggiungono linee SPI affiancate, ma siccome il RPi ne ha solo 2, più di tanto non si può salire. uno schermo a 320x240 sale già tra i 22 ed i 18 FPS a seconda del numero di colori usati dallo schermo e schermi più piccoli possono andare ancora più veloci, oppure potresti scendere con il numero di colori usato dallo schermo, per alzare il framerate, ma avendo un hdmi disponibile e schermi dal costo così basso, tanto vale usare tutto il GPIO per altro e l'HDMI come uscita video.

Un powerbank con 2 o 3 uscite ti risolverebbe il problema di alimentare tutto, avresti un usb per il RPi, uno per il monitor ed uno da sacrificare alla causa (sempre se lo vuoi fare) per alimentare i REED.

Secondo me, se realizzi bene il circuito, il fusibile non serve, io parlavo di dividere fisicamente la linea degli interruttori dal RPi con degli interruttori ottici, perchè è sulla linea degli interruttori che è più probabile un corto, magari di un cavo che si stacca da prima della resistenza e va a cortocircuitare dopo l'interruttore... il fusibile lì non credo serva... il tempo che il fusibile si fonde e si fonde anche il RPi... comunque credevo che contasse anche il voltaggio e non solo l'amperaggio nei fusibili...

per l'attesa dei REED... potresti impegnare un po' di tempo a guardare LiveCode che è un tool di sviluppo software che gira anche su Raspberry (anche se non so se è adatto al tuo uso visto che direttamente non gestisce i video su RPi) ma per esempio dalla stessa piattaforma di sviluppo puoi ottenere un eseguibile per mac, pc, linux, ios o android (con le limitazioni del caso specie per ios e android) ma è un tool adatto a chi di programmazione sa poco, oppure approfondire PHP e/o gli script da shell :-P

Re: Programmare avvio video su display

Posted: Thu Feb 16, 2017 12:24 pm
by Gagge89
willy_pinguino wrote: si gli FPS sono bassi, anche se non lo dicono quasi mai... il problema è che più sali di risoluzione e più veloce deve essere il bus di trasmissione, ma ci sono limiti fisici dettati dagli standard del bus SPI, che è quello solitamente usato per gli schermi su GPIO. di solito allora si aggiungono linee SPI affiancate, ma siccome il RPi ne ha solo 2, più di tanto non si può salire. uno schermo a 320x240 sale già tra i 22 ed i 18 FPS a seconda del numero di colori usati dallo schermo e schermi più piccoli possono andare ancora più veloci, oppure potresti scendere con il numero di colori usato dallo schermo, per alzare il framerate, ma avendo un hdmi disponibile e schermi dal costo così basso, tanto vale usare tutto il GPIO per altro e l'HDMI come uscita video.
Alla fine ho preso quello schermo da 5" con il solo HDMI come avevamo detto! ;)
willy_pinguino wrote: Un powerbank con 2 o 3 uscite ti risolverebbe il problema di alimentare tutto, avresti un usb per il RPi, uno per il monitor ed uno da sacrificare alla causa (sempre se lo vuoi fare) per alimentare i REED.
Si ora appunto vedo se mi conviene un powerbank a 5V e poi un regolatore LDO a 3,3V per alimentare i REED, oppure se prendere una batteria Li-Po oppure ancora pile in serie ( che poi nelle Li-Po e nelle PowerBank all'interno ci stanno delle comunissime pile stilo al Li-Ion o al Li-Po quindi sarebbe equivalente :) Vedo cosa mi conviene maggiormente a livello economico e di sicurezza ( le Powerbank se non buone avendo Litio sono molto ma molto sensibili e anche pericolose, scoppiano che è un piacere se prendono uno sbalzo leggero e rischierei di mandare a fuoco il gioco :D )
willy_pinguino wrote:comunque credevo che contasse anche il voltaggio e non solo l'amperaggio nei fusibili...
ci sta se nn sei un elettrico/elettronico sei scusabile! Cmq sappi per tua cultura che i fusibili hanno 2 valori : tensione e corrente. La tensione indica la massima tensione a cui possono lavorare (oltre la tensione indicata non chiudono più il circuito), ma possono benissimo lavorare a tensioni minori di quella indicata, la corrente invece indica la massima corrente che ci può passare attraverso, se c'è un guasto e si crea una corrente di cortocircuito (dell'ordine di grandezza di 100 volte quella nominale) il filamento del fusibile si scalda per il passaggio di corrente e si rompe interrompendo il circuito (esistono di diversa rapidità)
willy_pinguino wrote: per l'attesa dei REED... potresti impegnare un po' di tempo a guardare LiveCode che è un tool di sviluppo software che gira anche su Raspberry (anche se non so se è adatto al tuo uso visto che direttamente non gestisce i video su RPi) ma per esempio dalla stessa piattaforma di sviluppo puoi ottenere un eseguibile per mac, pc, linux, ios o android (con le limitazioni del caso specie per ios e android) ma è un tool adatto a chi di programmazione sa poco, oppure approfondire PHP e/o gli script da shell :-P
ecco riguardo a questo...cosa potrei guardami? sia per comandare ai PIN sia per poi comandare di leggere un video da una micro SD inserita? Grazie

Re: Programmare avvio video su display

Posted: Fri Feb 17, 2017 8:03 am
by willy_pinguino
Gagge89 wrote: Alla fine ho preso quello schermo da 5" con il solo HDMI come avevamo detto! ;)
ook :)
Gagge89 wrote:Si ora appunto vedo se mi conviene un powerbank a 5V e poi un regolatore LDO a 3,3V per alimentare i REED, oppure se prendere una batteria Li-Po oppure ancora pile in serie ( che poi nelle Li-Po e nelle PowerBank all'interno ci stanno delle comunissime pile stilo al Li-Ion o al Li-Po quindi sarebbe equivalente :) Vedo cosa mi conviene maggiormente a livello economico e di sicurezza ( le Powerbank se non buone avendo Litio sono molto ma molto sensibili e anche pericolose, scoppiano che è un piacere se prendono uno sbalzo leggero e rischierei di mandare a fuoco il gioco :D )
come sopra, a elettronica stò a 0, se lo dici tu, ti credo
Gagge89 wrote:ci sta se nn sei un elettrico/elettronico sei scusabile! Cmq sappi per tua cultura che i fusibili hanno 2 valori : tensione e corrente. La tensione indica la massima tensione a cui possono lavorare (oltre la tensione indicata non chiudono più il circuito), ma possono benissimo lavorare a tensioni minori di quella indicata, la corrente invece indica la massima corrente che ci può passare attraverso, se c'è un guasto e si crea una corrente di cortocircuito (dell'ordine di grandezza di 100 volte quella nominale) il filamento del fusibile si scalda per il passaggio di corrente e si rompe interrompendo il circuito (esistono di diversa rapidità)
Gagge89 wrote:
willy_pinguino wrote: per l'attesa dei REED... potresti impegnare un po' di tempo a guardare LiveCode che è un tool di sviluppo software che gira anche su Raspberry (anche se non so se è adatto al tuo uso visto che direttamente non gestisce i video su RPi) ma per esempio dalla stessa piattaforma di sviluppo puoi ottenere un eseguibile per mac, pc, linux, ios o android (con le limitazioni del caso specie per ios e android) ma è un tool adatto a chi di programmazione sa poco, oppure approfondire PHP e/o gli script da shell :-P
ecco riguardo a questo...cosa potrei guardami? sia per comandare ai PIN sia per poi comandare di leggere un video da una micro SD inserita? Grazie
Riguardo ai video, la cosa più semplice è riprodurli con OMXplayer, per poter eseguire un certo video ad un certo momento basta un semplice script e se come immagine di sfondo del desktop salvi uno splash screen del gioco appena finisce un video si torna a quella immagine.

se invece pensi ad una gestione leggermente più complessa dei video con video in loop mentre si è in attesa che vengono interrotti quando serve, ti serve uno strumento in più come omxd che è un demone che controlla sempre OMXplayer, ma permette di passargli scalette da loopare, interrompere le scalette per mandare un video anche esterno alla scaletta e poi riprendere la scaletta da dove interrotto. ha una pagina su github.

per la lettura dei pin GPIO, lo puoi fare sia da script shell che da altri linguaggi di programmazione, probabilmente per sempicità di linguaggio ti torna più facile il php, ma praticamente tutti i linguaggi che girano su raspberry hanno un interfaccia per la gestione del GPIO, o se non c'è la puoi costruire tu con uno script per la shell. quindi è tutto alla tua preferenza (io per ora ho usato solo script da shell o ho modificato semplicemente alcuni parametri di funzionamento di applicazioni più complesse e "personalizzabili" perchè le cose che ho realizzato non richiedevano di più)

Re: Programmare avvio video su display

Posted: Thu Mar 02, 2017 3:00 pm
by Gagge89
willy_pinguino wrote: Riguardo ai video, la cosa più semplice è riprodurli con OMXplayer, per poter eseguire un certo video ad un certo momento basta un semplice script e se come immagine di sfondo del desktop salvi uno splash screen del gioco appena finisce un video si torna a quella immagine.

se invece pensi ad una gestione leggermente più complessa dei video con video in loop mentre si è in attesa che vengono interrotti quando serve, ti serve uno strumento in più come omxd che è un demone che controlla sempre OMXplayer, ma permette di passargli scalette da loopare, interrompere le scalette per mandare un video anche esterno alla scaletta e poi riprendere la scaletta da dove interrotto. ha una pagina su github.
Ciao! Rieccomi. Finalmente tra oggi e domani dovrebbero arrivarmi i REED in modo così almeno da poter testare il mio progetto e vedere se per l'appunto con una calamita funzionino o meno.
Non ho ben chiaro cosa tu volessi dire ma la mia idea era questa : quando si inizia il gioco che parta un video come " presentazione". Quando il primo giocatore fa la prima mossa il video in questione sparisce ed partono solo i video nei momenti in cui una pedina si muova.
willy_pinguino wrote: per la lettura dei pin GPIO, lo puoi fare sia da script shell che da altri linguaggi di programmazione, probabilmente per sempicità di linguaggio ti torna più facile il php, ma praticamente tutti i linguaggi che girano su raspberry hanno un interfaccia per la gestione del GPIO, o se non c'è la puoi costruire tu con uno script per la shell. quindi è tutto alla tua preferenza (io per ora ho usato solo script da shell o ho modificato semplicemente alcuni parametri di funzionamento di applicazioni più complesse e "personalizzabili" perchè le cose che ho realizzato non richiedevano di più)
Nel frattempo ho un pò cercato su internet, ma guide fatte bene su come programmare il Raspberry non ne ho trovate! Ho trovato un botto di guide su Arduino ma su RPi nessuna, almeno nessuna che mi potesse assomigliare a qualcosa che mi avviasse un determinato video in seguito ad un segnale ricevuto. Hai qualche consiglio di manuali o di link che facciano a caso mio?

Re: Programmare avvio video su display

Posted: Fri Mar 03, 2017 8:52 am
by willy_pinguino
non sperare di trovare tutto pronto per quello che ti serve!

quello che devi sapere è che i video li fai partire con un comando tipo

Code: Select all

omxplayer nome_del_file_da_riprodurre -o uscita_audio_che_vuoi_usare_tra_hdmi_e_minijack -b
a questo punto, quello che devi scoprire con un qualsiasi linguaggio che giri su RPi è come fare in modo che alla chiusura di uno degli interruttori, il RPi reagisca, poi scoprirai come fare in modo che questa reazione provochi la partenza di un certo video.

quindi ti consiglio di cercare prima quali linguaggi di programmazione girano su raspberry, poi di vedere da quale è più facile da usare con il GPIO come interfaccia con il mondo, ed infine scoprire come questo linguaggio può passare dei comandi direttamente alla shell del raspberry.

non ti serve altro

Re: Programmare avvio video su display

Posted: Sun Jun 10, 2018 1:07 pm
by Gagge89
Ciao a tutti,
riprendo il topic aperto un pò di tempo fa in quanto ho avuto dei casini e ho lasciato lì il progetto su cui ora mi sto rimettendo dietro.
Riallego le immagini del progetto e del codice al momento utilizzato che però non funziona mi manda il display in bianco e mi si blocca raspberry e sono costretto a staccare l'alimentazione... Qualcuno mi aiuta?

CODICE

Code: Select all

# SE TENGO CHIUSO IL REED CON LA CALAMITA SI DOVREBBE AVVIARE UN VIDEO
# INSERITO NELLA CARTELLA
#buttonInput.py
import RPi.GPIO as  GPIO
import os
from time import sleep

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
buttonPin = 17
GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)


print("GPIO+ OMXPLAYER")

while True:
    if (GPIO.input(17) == False) :
        print("BUTTON PRESSED")
        os.system('omxplayer -o hdmi pippo.mp4&')
        sleep(15)

Image

Image

Image

Re: Programmare avvio video su display

Posted: Mon Jun 11, 2018 10:00 am
by macca
Gagge89 wrote:
Sun Jun 10, 2018 1:07 pm
Riallego le immagini del progetto e del codice al momento utilizzato che però non funziona mi manda il display in bianco e mi si blocca raspberry e sono costretto a staccare l'alimentazione... Qualcuno mi aiuta?
Quando ci sono diverse parti che interagiscono tra loro, la cosa migliore da fare è provare ogni singola parte fino a trovare quella che non funziona.

Hai provato a verificare se omxplayer funziona con quei parametri e quel video ?
Il controllo del GPIO funziona come ti aspetti ?
Eccetera...

Si comincia sempre dalle cose semplici e poi si aggiungono le funzioni necessarie.

Una nota: non sono sicuro ma ad occhio il tuo schema non funziona proprio come penso dovrebbe, se non leggo male riesci a sapere se c'è un contatto chiuso in una delle 4 colonne ma non riesci a sapere la "riga" del contatto chiuso.

Re: Programmare avvio video su display

Posted: Mon Jun 11, 2018 10:14 am
by Gagge89
macca wrote: Quando ci sono diverse parti che interagiscono tra loro, la cosa migliore da fare è provare ogni singola parte fino a trovare quella che non funziona.

Hai provato a verificare se omxplayer funziona con quei parametri e quel video ?
Il controllo del GPIO funziona come ti aspetti ?
Eccetera...

Si comincia sempre dalle cose semplici e poi si aggiungono le funzioni necessarie.

Una nota: non sono sicuro ma ad occhio il tuo schema non funziona proprio come penso dovrebbe, se non leggo male riesci a sapere se c'è un contatto chiuso in una delle 4 colonne ma non riesci a sapere la "riga" del contatto chiuso.
Ciao.
Allora in primis ho provato ad avviare il video con OMXPLAYER e il video girava ( si tratta di un video di 20-30 sec).
Successivamente ho provato far partire il video con un Pushbutton prendendo spunto da un video su Youtube e non mi aveva dato problemi.

Poi ho messo il REED e quando ho posizionato la calamita sopra mi è uscito schermo bianco ( in realtà si intravvedeva in sottofondo la schermata precedente della shell ma con tutto il display bianco) e non avevo più modo di controllare il raspberry e ho dovuto staccare la corrente ( in quei casi è l'unica soluzione oppure c'è modo per evitare la disalimentazione di botto anche se bloccato?)

La riga non è importante, perchè ti spiego si tratta di un gioco da tavolo tipo gioco dell'oca ( se hai visto il film Jumanji è proprio quello ) con 4 percorsi e ci sono 4 pedine. Indifferentemente che sia la pedina 1,2,3 o 4 a me interessa che nel momento in cui una pedina (al cui interno c'è una calamita) viene alzata, il REED si apre e non fa più passare corrente (quindi l'input è zero) mentre non appena viene riposizionata su una casella chiude un altro REED quindi RASPBERRY riceve un INPUT e quello che vorrei è che avviasse a caso, in maniera RANDOM, uno dei 30-40 video che andrò a inserire nella microSD.
Se hai visto il film di jumanji vorrei renderla il più simile possibile.

Guarda il video dal 0:22 secondi in poi....lì le pedine si muovono in automatico, a me basterebbe muoverle di persona ma con poi far comparire un video al centro del gioco con una penitenze o altro.
https://www.youtube.com/watch?v=javEwwHaNa4

Re: Programmare avvio video su display

Posted: Mon Jun 11, 2018 10:49 am
by macca
Gagge89 wrote:
Mon Jun 11, 2018 10:14 am
Allora in primis ho provato ad avviare il video con OMXPLAYER e il video girava ( si tratta di un video di 20-30 sec).
Successivamente ho provato far partire il video con un Pushbutton prendendo spunto da un video su Youtube e non mi aveva dato problemi.

Poi ho messo il REED e quando ho posizionato la calamita sopra mi è uscito schermo bianco ( in realtà si intravvedeva in sottofondo la schermata precedente della shell ma con tutto il display bianco) e non avevo più modo di controllare il raspberry e ho dovuto staccare la corrente ( in quei casi è l'unica soluzione oppure c'è modo per evitare la disalimentazione di botto anche se bloccato?)
Quindi sembra essere un problema elettrico, come se provocasse un cortocircuito che manda in crisi la CPU (e no, non credo ci sia altro modo per resettare). In questo caso devi armarti di multimetro e misurare tutto, tensione, corrente, ecc. A prima vista lo schema sembra corretto, configuri i pin con il pull-up quindi l'input è normalmente a 1 e quando il contatto viene chiuso l'input viene messo a zero. Con il pull-up la resistenza che hai messo sul GND non dovrebbe essere necessaria e direi che forma un partitore con il pull-up vcc->r_pup->gpio->r_gnd->gnd, non credo però sia questo il problema altrimenti non ti funzionava nemmeno con il pulsante.

Dici di aver usato un pulsante prima, con lo stesso schema ? Hai provato a mettere un pulsante al posto dei reed ? Se con i pulsanti funziona e con i reed e la calamita no, potrebbe essere proprio quello il problema, mi sembra strano ma forse c'è qualcosa che non considero, mai usato i reed. Magari distanzia un po' il circuito Provato a passare la calamita attorno al rasperry ?