
15 - HACKERARE PULSANTI
CONTROLLA ALTRI COMPONENTI CHE TI CIRCONDANO. USANDO SEMPLICI CIRCUITI, PUOI «PREMERE» PULSANTI CON IL TUO ARDUINO
Scopri: il fotoaccoppiatore, la connessione con altri componenti
Tempo: 45 MINUTI Livello: ■ ■ ■ ■ ■ Basato sui progetti: 1, 2, 9
Attenzione: non sei più un principiante se fai questo progetto. Aprirai un dispositivo elettronico e lo modificherai. Annullerai la garanzia del dispositivo e, se non stai attento, potresti danneggiarlo. Assicurati che hai familiarità con tutti i concetti di elettronica presenti nei progetti precedenti prima di provare questo esempio. Ti consigliamo di utilizzare oggetti economici così non ti dispiacerà creare danni con i tuoi primi progetti, finché non sviluppi esperienza e fiducia in te stesso.

INGREDIENTI
Fotoaccoppiatore (4N35)
Resistenza da 220 Ohm
Arduino Uno & Breadboard
Dispositivo audio esterno (es. modulo di registrazione sonora)
Sebbene Arduino sia in grado di controllare molte cose, a volte è più facile usare strumenti che sono stati creati per scopi specifici. Forse desideri controllare un televisore o un lettore musicale o guidare una macchina telecomandata. La maggior parte dei dispositivi elettronici ha un pannello di controllo con dei pulsanti e molti di questi pulsanti possono essere manipolati in modo che tu possa «premerli» con Arduino. Controllare suoni registrati è un buon esempio. Se vuoi registrare e riprodurre un suono, ci vorrebbe un gran lavoro per farlo con Arduino. È molto più facile prendere un piccolo dispositivo che registra e riproduce l’audio e sostituire i suoi pulsanti con le uscite controllate da Arduino.

I fotoaccoppiatori sono circuiti integrati che consentono di controllare un circuito da un altro senza alcun collegamento elettrico tra i due. All’interno di un fotoaccoppiatore c’è un LED e un rilevatore di luce. Quando il LED del fotoaccoppiatore è acceso da Arduino, il rilevatore di luce chiude un interruttore interno. L’interruttore è collegato a due piedini di uscita (4 e 5) del fotoaccoppiatore. Quando l’interruttore interno è chiuso, i due piedini di uscita sono collegati. Quando l’interruttore è aperto, non sono collegati. In questo modo, è possibile chiudere interruttori su altri apparecchi senza collegarli ad Arduino.
Lo schema di questo esempio serve per controllare un modulo di registrazione digitale che permette di registrare e riprodurre 20 secondi di suono, ma le premesse di base valgono per qualsiasi dispositivo dotato di un pulsante da accedere. Anche se è possibile realizzare questo esempio senza alcuna saldatura, questa rende certamente le cose più facili. Per ulteriori informazioni sulla saldatura, vedi pag. 134 (del libro originale).
COSTRUISCI IL CIRCUITO

Collega la massa alla breadboard attraverso Arduino.
Metti il fotoaccoppiatore sulla breadboard in modo che sia nel mezzo (guarda il diagramma del circuito).
Collega il piedino 1 del fotoaccoppiatore al piedino 2 di Arduino in serie con una resistenza da 220 ohm (ricorda che stai alimentando un LED interno e non vuoi che bruci). Collega il piedino 2 del fotoaccoppiatore a massa.
Sulla scheda principale del modulo sonoro ci sono alcuni componenti elettrici come un pulsante di riproduzione. Per controllarlo, devi rimuovere il pulsante. Capovolgi il circuito e trova le linguette che tengono il pulsante in posizione. Piega indietro leggermente le linguette e rimuovi il pulsante dalla scheda.
Sotto il pulsante ci sono due piastre metalliche. Questo è tipico di molti dispositivi elettronici a pulsanti. Le due «forchette» di questo modello sono i due lati dell’interruttore. Quando premi il pulsante un disco di metallo al suo interno collega queste due forchette.
Quando le forchette sono collegate, l’interruttore sul circuito è chiuso. Chiudi l’interruttore con il fotoaccoppiatore. Questo metodo funziona solo se uno dei due lati dell’interruttore del pulsante è collegato a massa sul dispositivo. Se non sei sicuro, prendi un multimetro e misura la tensione tra una delle due forchette sul dispositivo. Fallo con il dispositivo acceso, quindi fai attenzione a non toccare alcun punto della scheda. Quando hai scoperto quale forchetta è la massa, disconnetti l’alimentazione dal tuo dispositivo.
Poi, collega un filo a ciascuna delle piastre metalliche. Se saldi questi fili, fai attenzione a non unire i due lati del pulsante. Se non saldi e usi del nastro adesivo, assicurati che la connessione sia stabile o l’interruttore non si chiuderà. Assicurati che nessuno dei due fili si colleghi all’altra forchetta o l’interruttore sarà sempre chiuso.
Collega i due fili ai piedini 4 e 5 del fotoaccoppiatore. Collega il lato dell’interruttore a massa al piedino 4 del fotoaccoppiatore. Collega l’altra forchetta al piedino 5 del fotoaccoppiatore.

IL CODICE
Crea una costante
La parte più divertente del progetto è il circuito e il fotoaccoppiatore. Il codice è simile al primo progetto che hai fatto con Arduino. Stai per riprodurre il suono ogni 20 secondi impostando il piedino 2 su HIGH. Crea una costante per il piedino di controllo del fotoaccoppiatore.
const int optoPin = 2;
Configura la direzione del piedino
Nel setup(), rendi il piedino del fotoaccoppiatore un output.
void setup(){
pinMode(optoPin, OUTPUT);
}
Alza e abbassa il piedino
Il loop() imposta optoPin ad HIGH per pochi millesimi di secondo, abbastanza perché il fotoaccoppiatore chiuda l’interruttore sull’apparecchio. Poi optoPin diventa LOW.
void loop(){
digitalWrite(optoPin, HIGH);
delay(15);
digitalWrite(optoPin, LOW);
Aspetta qualche secondo
Aspetta 21 secondi che il messaggio sia riprodotto per intero prima di iniziare di nuovo il loop().
delay(21000);
}
USALO
Collega la batteria al registratore di suoni. Premi e tieni premuto il pulsante di registrazione sul dispositivo. Mentre stai tenendo premuto il pulsante, puoi registrare l’audio nel microfono. Usa la tua voce, il gatto o le pentole e padelle in cucina per fare un po” di rumore (ma stai attento con il gatto).
Dopo aver registrato un suono che ti piace, alimenta Arduino con il cavo USB. Dovresti sentire la tua registrazione. Se hai registrato per 20 secondi, il suono dovrebbe ricominciare pochi istanti dopo la sua conclusione.

Nel programma prova a sperimentare con differenti suoni e tempi di attivazione diversi con il
delay(). Se attivi l’interruttore mentre un suono viene riprodotto, si ferma. Come puoi approfittare di questo per creare sequenze particolari di suoni?

I circuiti integrati sono presenti in quasi tutti i dispositivi elettronici. Il chip di grandi dimensioni da 28 piedini su Arduino è un circuito integrato che ospita il cervello della scheda. Ci sono altri circuiti integrati che lo supportano con la comunicazione e l’alimentazione. Il fotoaccoppiatore è il principale chip di Arduino sono entrambi chip Dual In-line Package (DIP). Questi sono il tipo più usato dagli hobbisti perché sono facilmente inseribili in una breadboard e non devono essere saldati in modo permanente per essere utilizzati.

Il progetto di esempio gioca solo con l’audio a intervalli regolari. Come puoi incorporare gli input dai progetti precedenti per attivare questi suoni? Quali altre cose alimentate a batteria hai in giro per casa che hanno bisogno di un Arduino per essere controllate? Questa tecnica per controllare un dispositivo elettronico con un fotoaccoppiatore, collegandolo ai due lati di un interruttore, può essere usata con molti altri dispositivi. Quali altri apparecchi vuoi controllare?
I fotoaccoppiatori sono in grado di controllare i dispositivi che si trovano su un circuito diverso. I due circuiti sono separati elettricamente uno dall’altro all’interno del componente.
CODICE COMPLETO
/*
Arduino Starter Kit example
Project 15 - Hacking Buttons
This sketch is written to accompany Project 15 in the Arduino Starter Kit
Parts required:
- battery powered component
- 220 ohm resistor
- 4N35 optocoupler
created 18 Sep 2012
by Scott Fitzgerald
https://store.arduino.cc/genuino-starter-kit
This example code is part of the public domain.
*/
const int optoPin = 2; // the pin the optocoupler is connected to
void setup() {
// make the pin with the optocoupler an output
pinMode(optoPin, OUTPUT);
}
void loop() {
digitalWrite(optoPin, HIGH); // pull pin 2 HIGH, activating the optocoupler
delay(15); // give the optocoupler a moment to activate
digitalWrite(optoPin, LOW); // pull pin 2 low until you're ready to activate again
delay(21000); // wait for 21 seconds
}