Sistema di rilevamento battito mani & altri rumori

By otacon22

Poco tempo dopo aver realizzato il sistema per controllare le varie luci della taverna dal pc ho pensato: “eh, ma poi il vantaggio dove stà se per controllarle da altrove devo andare al pc?”
Eh in effetti è vero, comunque non è stato certo inutile fare questo lavoro, perchè mi ha permesso di portare varie “periferiche” esterne in un unico controllo che sò gestire bene.
Allora ho subito pensato a un interruttore battimani. Dopo aver visto su www.grix.it alcuni esempi di circuiti, e dopo aver considerato varie possibilità di acquisto dei cosiddetti “relè fonici” ho visto che poteva essere più semplice costruirselo da sè.
Ah, per chi non lo sapesse un relè fonico è un dispositivo che chiude un circuito elettrico quando rileva un certo suono, tipo un battito di mani; di modo da poter controllare luci e altro.
Avevo anche considerato la possibilità di fare un programma che lo facesse tramite il microfono del pc; ma è poco sensibile e poi avrebbe solo dato problemi di server audio etc..
Insomma alla fine ho trovato questo circuito su una rivista (mi è stato passato da ulisse):
schema0011

Io però al posto del microfono piezoelettrico ho utilizzato un microfono direzionale già pronto collegando la massa del microfono a quella del circuito e l’uscita audio nella base di TR1 e ho tolto la resistenza R1 e il condensatore C2. Successivamente al posto del relè in uscita ho collegato il pin CTS della seriale, cioè un pin di input digitale, e ho messo in comune la massa del circuito con quella della seriale. Poi ho fatto un piccolo programma client che legge i dati dalla seriale( True o False). Il circuito funziona in questo modo: dopo aver regolato i trimmer accendendo esce 0, mentre battendo le mani o facendo altri suoni che rientrano in una certa banda di frequenze si attiva e inizia a uscire 1 al posto di 0, fino a quando non viene ripetuto nuovamente un altro suono che riporta l’uscita a 0.
In questo modo ho potuto fare un programma che legge i vari 1 e 0 che arrivano e fa una sorta di mappa/matrice in funzione del tempo tipo:
In un lasso di tempo di 0,4 secondi se lo stato passa da 0 a 1 o da 1 a 0 il mio programma segna che è successo qualcosa, ovvero 1, altrimenti se non succede niente segna 0. Dunque il mio programma divide il tempo in modo discreto a unità di 0,4 secondi l’una. Se io batto le mani, poi attendo e le batto un’altra volta il mio programma riceverà questa sequenza:
[0,0,0,0, 0, 0,1, 0, 1] dove gli 0 prima sono il silenzio precedente al primo battito
questa “mappa” è infinita come lunghezza di registrazione, anche se in realtà quando supera una certa lunghezza inizio a tagliare i valori + vecchi.

Il vantaggio di non aver usato il relè etc è che ora posso preparare il programma per rispondere a varie combinazioni. Come si vedrà nel video di seguito ho infatti programmato per accendere 2 luci a un doppio battito di mani. Questo perchè il circuito spesso si attiva anche chiudendo porte, starnutendo  etc, quindi così è + sicuro..

Lascia un commento