Vi siete mai accorti di quanto sa essere fastidiosa la televisione quando si mette a strillare i suoi odiosissimi spot pubblicitari? Vi sarà certamente capitato, mentre state ancora asciugandovi le lacrime per la commozione data dalla scena d'un film romantico, di dovervi arrendere alla illuminante attrattiva del nuovissimo detersivo... Ecco, queste brutte sorprese potrebbero essere parte del passato!
L'idea:
In questo breve articolo verrà proposta una configurazione circuitale che realizza una scheda per Arduino in grado di conferirle una serie di funzioni, tra cui un ingresso audio dedicato.
Vi chiederete "a che cosa può servire?". La risposta viene dalla vita di tutti i giorni: state guardando la televisione, vi assopite e all'improvviso nel silenzio di una scena romantica del film che vi sta cullando "BANG!", la televisione si mette a schiamazzare dell'ultimissimo detersivo straordinario che renderà il vostro bucato eccezionalmente più bianco di quanto mai bianco sia stato in vita sua...
La tecnica è semplice: lo spot deve essere a volume necessariamente più alto del film che stavate guardando perché così vi rimane impresso.
E se a voi non andasse assolutamente di essere sorpresi in modo così spiacevole da uno spot televisivo?
E se la televisione mi piacesse sempre in sordina in modo da non uccidere il dialogo a tavola?
E se voi non voleste quei 30 secondi di schiamazzo fastidioso?
Lo scopo ultimo di questo progetto è quello di realizzare un prototipo di sistema che sia in grado di abbassare il volume della tv quando è troppo alto, o riportarlo ad un volume “accettabile” quando, sebbene certamente più di rado, esso sia troppo basso.
Il sistema è stato pensato per ovviare, in prima istanza, al problema del volume tremendamente superiore alla media durante ogni spot televisivo. Vi siete mai accorti di quanto è seccante? E sebbene . In generale, è possibile
Lo schema elettrico: analisi della configurazione.
Passiamo, quindi, ad una descrizione dei singoli blocchi funzionali che compongono il sistema complessivo, come mostrato in figura.
Il primo blocco funzionale, probabilmente il più evidente, è il microfono. Si tratta di un microfono electret ABM-715-RC con tensione operativa 2 V, massimo assorbimento di corrente pari a 0,5 mA, impedenza d'uscita 2,2 kOhm e banda passante 50 Hz -16 kHz.
La sezione successiva è rappresentata da un filtro con architettura Sallen-Key del 2° ordine. Si tratta di una delle più robuste ed affidabili soluzioni circuitali per effettuare il filtraggio di segali, in questo caso segnale audio. L'architettura scelta per questo progetto consta di un filtro attivo noto e diffuso grazie alla sua semplicità. Il circuito fornisce una risposta a 2 poli (20 dB/decade o 12 dB/ottava) e può essere di tipo passa basso, passa alto oppure passa banda. Tramite l'utilizzo di due resistenze e due condensatori, nonché di un amplificatore operazionale, si realizzano le strutture menzionate. È anche possibile ottenere filtri di ordine superiore tramite l'utilizzo di diversi filtri in cascata. Sovente, questa topologia circuitale viene indicata con l'acronimo VCVS, ovvero Voltage Controlled Voltage Source.
Un'altra possibilità, per la configurazione Sallen-Key, è l'utilizzo di un partitore resistivo aggiuntivo che, all'ingresso non invertente dell'amplificatore operazionale, realizzi un guadagno maggiore di quello unitario. In questo caso, appunto, le reti resistive, costituite dalle coppie R9-R10 ed R11-R12, garantiscono al filtro un guadagno in tensione pari a 10.
I filtri Sallen Key sono, tipicamente, poco sensibili alle tolleranze dei componenti (ad esempio le incertezze sui valori delle resistenze), nonostante siano necessari valori notevoli per avere un fattore di merito significativo o un guadagno alto.
Buona norma di progettazione richiede che, note che siano le formule (lo studio teorico del filtro è demandato al lettore), si scelgano dei componenti disponibili presso un produttore e si utilizzino componenti di quei valori per ottenere quella particolare frequenza di taglio. Ben presto si impara che anche su questo procedimento abbastanza semplice c'è da operare scelte di tread-off importantissime onde evitare di penalizzare la banda passante del filtro.
L'amplificatore presente in questo filtro è un LM324; si tratta di un quadruplo amplificatore operazionale low power con guadagno DC pari a 100 dB, larghezza di banda pari a 1 MHz, input voltage range -0,3 – 32 V, tensione d'ingresso di modo differenziale pari a 32 V, input bias current pari a 45 nA e offset di tensione e corrente molto bassi (rispettivamente 2 mV e 5 nA).
Il progetto è incentrato sull'utilizzo di Arduino, la celebre scheda di prototipazione. Il progetto Open Source di Massimo Banzi & Co. qui svolge un ruolo centrale. La scheda riceve in ingresso il segnale, come è evidente dalla configurazione riportata, ed è stata accessoriata con le seguenti features:
1. un pulsante di reset. Si intende questo un pulsante ulteriore rispetto a quello già presente sulla board rev 2. Questo pulsante dovrà essere accessibile dall'utente esterno. L'utilità di questa aggiunta è autoesplicante.
2. un display per la visualizzazione di testo (o altro). Il progetto è pensato perché il monitor sia un alfanumerico 20x4 compatibile Hitachi HD44780.
3. 4 pulsanti general purpose. Scopo del progetto è avere un alto grado in interazione con l'utente quindi possono sempre essere programmati.
4. interfaccia seriale RS232 per le comunicazioni, standard sempre di grande utilità.
5. possibilità di trasmissione tramite LED IR modello TSAL6400 con lunghezza d'onda di emissione 940 nm realizzato in tecnologia GaAlAs/GaAs.
La sezione di alimentazione, invece, risulta la meno “interessante di tutte”. Dotata di uno switch, essa fornisce la VCC al circuito.
Com'era e com'è: che modifiche son state fatte.
Rispetto allo schema appena mostrato, il progetto ha subito alcune modifiche. La prima, più importante ed evidente, è l'utilizzo di un lcd backpack che permette di connettere il display con protocollo i2c. Ciò ha garantito un notevole risparmi in termini di collegamenti da effettuare, rendeno anche la scheda di prototipazione più libera.
Altro punto fondamentale è stato il ridimensionamento del filtro a fronte di una problematica elementare: il progetto su carta funziona, di solito, sempre. Ma se non si fanno i conti con la componentistica che sia ha a disposizione, ci si può imbattere nell'odioso problema del non poter montare. Ecco perchè, come si vede, i componenti del filtro sono stati leggermente ritoccati al fine di garantire le stesse specifiche di banda passante ma col vantaggio di essere effettivamente realizzabile.
Come funziona
Il funzionamento del dispositivo è molto semplice ed in realtà risulta chiaro, ne sono certo, fin da inizio lettura. Il sistema acquisisce il segnale audio, che viene filtrato e portato in ingresso alla scheda Arduino tramite l'ingresso analogico 0. A questo punto, il funzionamento è semplicissimo e viene spiegato dal grafico qui di seguito.
Per l'invio dei comandi, è previsto l'utilizzo del protocollo RC5. La scelta è motivata dal fatto che si tratta di uno tra i più diffusi ed usati. Il segnale usato per modulare la portante che va dai 33 ai 38 kHz e viene inviato tramite il LED. Al ricevitore il segnale verrà demodulato opportunamente.
La comunicazione tramite questo protocollo consiste nell’invio di pacchetti di impulsi di dimensioni standard: 14 bit.
I primi due bit, S1 e S2, hanno sempre valore logico "1", il terzo bit è usato per indicare lo stato del tasto cui succede la trasmissione; se è premuto, assume il valore logico "0". S1, S2 e T costituiscono il preambolo alla comunicazione.
I 5 bit successivi, A4,A3,A2,A1 e A0, sono i bit di indirizzo mentre gli ultimi 6 bit, D5,D4,D3,D2,D1 e D0, sono bit di dati e compongono il comando da inviare al dispositivo destinatario. La durata del singolo bit è di 1,778 ms.
I due comandi che devono essere implementati sono, dunque:
VOL + : 0x111 00000 001010
VOL - : 0x111 00000 001011
Da questo diagramma, che rappresenta il funzionamento elementare, restano esclusi alcuni elementi, tra cui i 4 pulsanti e le loro funzioni.
Come detto, questo progetto nasce per avere un alto grado di interazione con l'utente per cui, è possibile che il sistema effettui in automatico la “censura” del livello del volume, tramite l'utilizzo di una soglia preimpostata, oppure che sia l'utente a gestire l'impostazione corrente.
Così, un pulsante garantirà di poter comunque attivare o meno il sistema automatico, altri due permetteranno all'utente di selezionare il livello desiderato e ne resta uno libero la cui funzione non viene definita.
L'interfaccia RS232 è un utilissimo supporto e sebbene non sia stata pensata per una funzione in particolare, beh.. con questo hardware a disposizione, è possibile sbizzarrirsi.
Il risultato del montaggio viene riportato nelle foto che seguono.
La prima è relativa alla prima versione del prototipo mentre la seconda all'ultima.
Possibili sviluppi futuri.
Come ogni buon progetto, anche per questo è necessario indicare i possibili sviluppi futuri.
Il perfezionamento del codice è certamente uno di questi, un orizzonte necessario, oltre che un'ottima sfida.
Anche una ulteriore fase di test per il ritardo di ripetizione del ciclo di misura ed acquisizione del volume è da valutarsi, in quanto il valore impostato è, teoricamente, molto breve.
Alla scheda sono rimasti liberi ben 10 pin per cui, dotarla di qualsiasi cosa è ancora possibile.
Inoltre, algoritmi intelligenti di rilevazione del livello di rumorosità di fondo per escludere il segnale tv sarebbero certamente molto utili per perfezionare il sistema.
Effettivamente, questo tipo di funzione non è assolutamente nuova: nelle automobili, per esempio, esistono delle opzioni associate all’autoradio che permettono al volume di essere aumentato o diminuito automaticamente a seconda della velocità.
E ci sono, è vero, alcuni televisori che già implementano questo tipo di funzione, ma non in tutti… 🙂
Queste sono piccole dimostrazioni del fatto che effettivamente il progetto risponde ad un’esigenza sentita, o quanto meno può farlo 🙂
Peraltro, come qualcuno mi ha fatto già notare, una funzione come questa, qualora implementata all’interno del televisore, non sarebbe sensibile al tipo di immagini che scorrono su schermo in quel momento…
Per capirci, se io sto guardando un film d’azione mi aspetto che il volume esploda anche all’improvviso. in questo caso, che certo non è assolutamente raro, il televisore che implementa quella funzione non sarà in grado di discernere se si è il momento o meno di attivare quel tipo di meccanismo; invece, un dispositivo esterno comandato dall’utente, certamente si.
o comunque, in ogni caso, sarei io a dover disabilitare questo meccanismo 🙂
ciò, fa venire immediatamente in mente una cosa: una delle idee, o meglio prospettive future, per questo progetto, che effettivamente manca dalla conclusione dell’articolo, potrebbe essere, quindi, di implementare questo meccanismo direttamente all’interno di un telecomando. 😉
1) In molti televisori il limitatore del volume esiste basta andare a cercarlo nei menu.
2) In una applicazione reale inviare il segnale infrarosso al televisore richiederebbe una fase di apprendimento dei codici del telecomando scomodissima per l’utente
3) Quanti componenti! L’arte della ingegnerizzazione è ottenere le massime prestazioni con il minimo di hardware.
4) Non si usano più i televisori!
Io uso un eeebox dietro a un monitor piatto con il programma FreeTw (www.freetw.net – anche i sorgenti sono disponibili – scrivete e [email protected]) Il tutto costa meno e va meglio di un televisore e ci guardo anche Internet e i film da una pennetta o da HardDisk o da rete locale, stando sul divano, con il telecomando. (e naturalmente, essendo basato su PC, si può fare di tutto – limitazioni di volume comprese – con zero componenti aggiuntivi)
A me Microsoft piace! Se non ci fosse mamma Microsoft saremmo invasi da decine di sistemi operativi, tutti incompatibili tra loro… Unix, Linux, Ubuntix, Muu, etc.. E Apple farebbe man-bassa. E ogni sistema operativo avrebbe mille versioni diverse, tutte piene di bachi! Una pena.
Forse in futuro ci salveranno Google e Android ma non si sa ancora come andra’ a finire, per cui ringraziamo San Gennaro che c’e’ Microsoft.
Chi non mi piace proprio invece e’ Mediaset che e’ fondata sui soldi rubati a noi e che, probabilmente, e’ anche frutto di cose molto losche.
Sui telecomandi: non ho detto che sono scomodi, avere 1 telecomando e’ bellissimo, averne 4 no.
Riguardo alla tua domanda – Cosa è superfluo? – Mi scuso ma io sono un “progettista elettronico fondamentalista” e devo eliminare tutto l’eliminabile, altrimenti sto male. In questo caso non eliminerei solo qualche componente, ma prenderei il problema alla radice, eliminerei tutto, e farei tutto in software, come nell’esempio che ti indicavo: FreeTw – Ma era solo un esempio, niente da vendere, se qualcuno vuole i sorgenti di FreetW basta chiedere.
Io non faccio pubblicità e non vendo niente. E’ tutto Open Source. Non pubblico tutto perchè diventerei noioso ma se ti serve qualcosa, chiedi pure, probabilmente l’ho già scritto.
A parte gli scherzi, secondo me il tuo è, in ogni caso, un progetto interessante e tecnicamente esatto, che presenta valide soluzioni circuitali, con buone idee che possono venire utili per molti altri progetti.
dunque, mi sono preso un po’ di tempo per dedicarmi con attenzione a questo post e alla risposta da dare.
1) è vero che in molti televisori questa funzione esiste già, ma è anche vero che molti non vuol dire tutti e che, come ho già risposto in precedenza, proprio il post sopra questo, molti non vuole assolutamente dire tutti 🙂
2) giusto. ma è qualcosa che può esser fatto via software e poi, tutto sommato, può anche risultare divertente 🙂
3) il numero di componenti, sinceramente, ma è solo una mia opinione, è stato il risultato di un dimensionamento minimo di tutto ciò che effettivamente semplicemente serve. però sono curioso, perché mi piace imparare: cosa è superfluo?
4) ah sì? 🙂
ho consultato con grande attenzione il sito indicato in questa risposta. devo dire che il progetto è simpatico. sul serio!
certo, dover comprare meno cose significa poter avere di più con una spesa decisamente contenuta.
poi, anche se onestamente non ho mai capito il motivo, ci sono molte persone che sono d’accordo con l’idea che il telecomando sia un’entità fastidiosa.figuriamoci averne più d’uno… d’altronde, non mi sembra che se ne possa fare a meno perché uno, uno, uno servirà per forza! 😀
ciò che più mi preme, però, non è assolutamente questo, perché tutto questo è semplicemente un dettaglio irrilevante.
ciò che volevo analizzare è: il suo progetto, e cito testualmente vuole “togliere mercato e risorse al monopolio TV quanto più possibile“, ed è completamente appoggiato “sulle tecnologie freeware: Direct Show, MCI (Media Control Interface), VFW (Video for Windows), Windows Media Player 11, Internet Explorer 7, SpeechApi 5.1 e Visual Studio 2008 express, tutte messe gentilmente, e gratuitamente, a disposizione da Microsoft.”
ora, lungi da me l’idea di fare polemica in alcun modo (e che sia chiaro, io rigetto con forza l’idea che esprimere un’opinione voglia dire fare polemica sterile!), ma sembra veramente ingenuo (specie di questi tempi) pensare che Microsoft metta in giro, su Internet, gratuitamente disponibili dei software freeware che poi è possibile utilizzare gratuitamente, senza alcun tipo di limitazione e senza dover accettare alcun tipo di licenza per farlo.
peraltro, in un’epoca in cui il clowd computing entra nelle nostre case in maniera così prepotente e violenta, affermare di potersi “liberare” da qualcosa sembra semplicemente troppo ottimistico.
e questo è tanto più evidente quanto la maggior parte di questi software è dotato di un contratto di licenza che, prima dell’uso, è necessario sottoscrivere pena non poterlo utilizzare.
Le condizioni d’uso sono l’essenza della limitazione, perché il loro scopo di garantire chi lo ha creato, non chi lo deve usare. quindi, anche il concetto di “gratuito” andrebbe un attimo rivisto 😀
io capisco perfettamente comunque che lei abbia desiderio di fare pubblicità al progetto che vende, però vorrei molto umilmente fare una domanda: quale coerenza c’è nel desiderare di togliere mercato al monopolio televisivo garantendo delle tecnologie freeware ma proprietarie? E come si coniuga tutto questo col fatto che il proprietario in oggetto è Microsoft?
anche perché, penso che potremmo tutti quanti concordare molto facilmente concetto che se Microsoft sa che il suo software viene utilizzato per più applicativi, ha a disposizione un numero infinitamente maggiore di topini da laboratorio che effettuano il beta testing al posto dei programmatori che non paga per farlo 😀
Forse non le dico nulla di nuovo se le faccio notare che il colosso di Redmond ha perso numerose cause proprio per il sistema Windows media player & co.; cause che hanno riempito le colonne dei giornali per mesi.
e tra queste, ce n’è una per la quale l’attuale presidente del consiglio italiano, Mario monti, è diventato famoso! ricordo che è lui che è riuscito a mettere il sale sulla coda a questo colosso del mercato. 😀
ergo, temo che questo progetto, per quanto certamente divertente e assolutamente accattivante, sia ben lontano dall’eliminare il monopolio in sé ma, semplicemente, rischia di favorirne un altro.
che ne pensa?
A parte gli scherzi, questa e’ la risposta seria alla tua domanda (3) sul numero di componenti.
Partiamo dal presupposto di dover fare, in hardware, esattamente le funzioni da te proposte.
———————————————————————————
Si usa un PIC piccolo, un 8 pin o un 14 pin, senza quarzo, la precisone dell’oscillatore interno e’ sufficiente per questa applicazione.
Si collega l’electret direttamente ad un pin di tipo ADC (gli ADC dei PIC sono velocissimi anche 500Khz in alcuni modelli ma basterebbe molto meno)
Si calcola il resistore che da corrente all’electret in modo da avere circa meta’ tensione cosi’ l’electret lavora bene e non serve il condensatore di disaccoppiamento.
Si collega il resistore dell’electret ad un pin di out digitale in modo da poter accendere il microfono solo per il breve tempo del campionamento ADC e risparmiare corrente.
Si legge l’ADC a 5KHz o anche meno, tanto gli acuti non servono.
Si effettua una media continuamente variabile (infinite response) sui valori che si leggono dall’ADC. In questo modo si ottiene un passa basso regolabile in frequenza. Se necessario si potranno fare filtri migliori ma, secondo me, per questa applicazione un filtro semplice può bastare.
Si usa una delle uscite del PIC che attraverso un resistore pilota direttamente il led infrarosso perché tanto il tutto starà in posizione fissa vicino al televisore e quindi una decina di mA sul led sono più che sufficienti.
Si connette ad un secondo ingresso ADC un fotodiodo infrarosso (con un resistore al +VCC) Il fotodiodo servirà per leggere il segnale del telecomando e fare l’auto-apprendimento dei codici.
Si aggiungono due pulsantini da stampato per le funzioni di regolazione seguenti:
1 pulsante per funzioni “apprendimento VOLUME+” e “Incrementa sensibilita’”
1 pulsante per funzioni “apprendimento VOLUME-” e “Decrementa sensibilita’”
(tenendo premuto oltre tre secondi si fa l’apprendimento altrimenti la regolazione)
Si alimenta il tutto con due pile stilo, totale 3 volt, perfettamente compatibili con il range (1.8 Volt to 5.5 Volt) di quasi tutti i PIC attuali.
Dato che si emette il segnale infrarosso solo quando serve, se si fa tutto bene il consumo medio e’ di pochi microampere e le pile possono durare per anni, quindi niente interruttore.
———————————————————————————
Lista componenti
———————————————————————————
1 PIC
3 resistori
1 condensatore sulla alimentazione
1 led infrarosso
2 pulsanti
Totale: 8 componenti (pile a parte)
———————————————————————————
Questo oggetto potrebbe costare al pubblico qualche euro e quindi avrebbe senso come piccolo gadget per TV non dotate di limitatore di volume.
In base a queste considerazioni ho affermato che “ci sono troppi componenti”
Vorrei intervenire citando un articolo di Wired.com che spiega come, negli Stati Uniti, la legge federale vieti l’innalzamento della soglia del volume durante gli spot pubblicitari. MA i cosiddetti commercial, sfruttano l’effetto loudness per NON aumentare il volume come livello, ma aumentarlo come percezione, FREGANDO di fatto la legge. Se lo scopo della legge federale era di non disturbare troppo, in questo modo gli inserzionisti sono nei limiti di legge ma disturbano, inseguendo, con il volume pieno, gli spettatori di un film che magari durante lo spot pubblicitario si alzano dal divano per andare in bagno o sparecchiare la tavola…
Un bravo tecnico del suono ci avrà messo 3 secondi a trovare l’aggiramento della limitazione, al link seguente potete sentire la differenza di un suono normale, ed uno condizionato con il loudness al massimo, ma sempre entro i livelli permessi.
La tecnica si chiama sweetening anche se poco sweet per lo spettatore 🙂
http://www.wired.com/magazine/2011/04/st_loudtvads/
ATTENZIONE che nei video presenti nell’articolo ci sono comunque messaggi pubblicitari….
Forse la vera soluzione è quella citata sopra ed anche nei commenti del post di wired:
“The best defense is to never, ever watch live TV”
Proprio vero!
Concordo pienamente, e mi indigno!
PICCOLA NOTA TECNICA
E’ incredibile quanto sia possibile alzare l’energia media di un suono SENZA superare una determinata tensione di picco e SENZA sentire distorsioni. (in effetti le punte si tosano e le distorsioni ci sono ma non si notano)