Obiettivo: Riprodurre la melodia “Jingle Bells” utilizzando la piattaforma Arduino.
Componenti elettronici:
Arduino UNO
Breadboard
1 Buzzer
Pre-requisiti:
Teoria: Ogni melodia musicale è composta da note e pause. Se le pause possono essere riprodotte utilizzando la funzione delay() di Arduino (già vista negli esempi precedenti), le singole note possono essere facilmente generate grazie all’utilizzo di un buzzer passivo e della funzione tone(). Nel dettaglio, l’impiego della funzione tone permette di selezionare la frequenza riprodotta dal buzzer e la relativa durata della nota. Nel caso in questione, l’intera melodia (comprensiva di note, durata delle note e pause, viene salvata in due differenti array (vettori) e riprodotta sequenzialmente come un vero spartito musicale.
Collegamento Circuitale:
Codice:
Arduino Merry Christmas
Obiettivo: Riprodurre la melodia Merry Christmas utilizzando la piattaforma Arduino.
Componenti elettronici:
Arduino UNO
Breadboard
1 Buzzer
Pre-requisiti:
Teoria: Ogni melodia musicale è composta da note e pause. Se le pause possono essere riprodotte utilizzando la funzione delay() di Arduino (già vista negli esempi precedenti), le singole note possono essere facilmente generate grazie all’utilizzo di un buzzer passivo e della funzione tone(). Nel dettaglio, l’impiego della funzione tone permette di selezionare la frequenza riprodotta dal buzzer e la relativa durata della nota. Nel caso in questione, l’intera melodia (comprensiva di note, durata delle note e pause, viene salvata in due differenti array (vettori) e riprodotta sequenzialmente come un vero spartito musicale.
Collegamento Circuitale:
Codice:
Creare un richiamo per Birdwatching tramite Arduino e lettore MP3 DFPlayer Mini
Obiettivo: Far suonare dei file MP3 di versi di uccelli tramite Arduino e lettore MP3 DFPlayer Mini visualizzando il numero della traccia su un display TM1637 e il nome il volume e lo stato su un display LCD 16×2 I2C con possibilità di cambiare la traccia tramite telecomando IR
Componenti:
Arduino UNO
1 DFPlayer Mini
1 TM1637
1 Display LCD 16×2 I2C
1 Trasmettitore IR
1 Ricevitore IR
Teoria:
Alla
base di questa esercitazione c’è il modulo DFPlayer Mini
Sul sito del produttore è possibile studiare le principali informazioni che permettono di utilizzare in modo semplice il lettore.
Si possono notare il pinout a 16 pin di collegamento, necessario per interconnettere il DFPlayer mini a pulsanti per essere utilizzato senza microcontrollore, le alimentazioni, le uscite DAC per essere collegato ad un amplificatore esterno, e le uscite dirette ad un altoparlante.
Uscita DAC a 24 bit, supporto per gamma dinamica
90 dB, supporto SNR 85 dB
Supporta pienamente FAT16, file system FAT32,
supporto massimo 32G della scheda TF, supporto 32G di disco U, 64M byte
NORFLASH
Vasta varietà di modalità di controllo, modalità
di controllo I/O, modalità seriale, modalità di controllo tramite pulsanti
Funzione di attesa sonora pubblicitaria, la
musica può essere sospesa. quando la pubblicità è finita nella musica continua
Dati audio ordinati per cartella, supporta fino
a 100 cartelle, ogni cartella può contenere fino a 255 canzoni
30 livelli di volume regolabile, 6 livelli EQ
regolabili
Modalità di controllo
Sempre sul sito del produttore sono possibili vedere le tre modalità di funzionamento del lettore DFPlayer Mini che sono: Modalità Seriale, AD KEY Mode, I/O Mode.
Noi utilizzeremo la Modalità Seriale per interconnettere Arduino al modulo DFPlayer Mini e al tempo stesso utilizzare anche altri moduli quali Diplay LCD I2C 16×2, Display TM1637, Ricevitore IR
Una nota aggiuntiva deve essere anche posta al ricevitore IR che ci permetterà di acquisire il codice dal trasmettitore IR in grado di far avviare il file MP3 desiderato, spostandoci tra i file MP3, avendo la possibilità di mettere in pausa e in play il suono, alzare e abbassare il volume.
Cosa sono gli Infrarossi
La
radiazione infrarossa è una forma di luce simile alla luce che vediamo tutto
intorno a noi. L’unica differenza tra la luce IR e la luce visibile è la
frequenza e la lunghezza d’onda. La radiazione infrarossa si trova al di fuori
della gamma della luce visibile, quindi gli esseri umani non possono vederla.
Poiché l’infrarosso è un tipo di
luce, la comunicazione IR richiede una linea visiva diretta dal ricevitore al
trasmettitore quindi non è possibile trasmettere attraverso muri o altri
materiali come WiFi o Bluetooth.
Un tipico sistema di
comunicazione a infrarossi richiede un trasmettitore IR e un ricevitore IR. Il
trasmettitore ha l’aspetto di un LED standard, tranne per il fatto che produce
luce nello spettro IR invece che nello spettro visibile. Se si osserva la parte
anteriore del telecomando di un televisore, si vedrà il LED del trasmettitore
IR.
Il ricevitore IR è un fotodiodo e un preamplificatore che converte la luce IR in un segnale elettrico. I diodi del ricevitore IR in genere hanno questo aspetto:
Nel nostro caso è stato usato questo modulo preso nei soliti KIT per Arduino:
Schema elettronico
Preparazione Scheda MicroSD
La MicroSD card potrà essere di dimensioni massime di 32Gb è deve essere formattata con filesystem Fat16 o Fat32 oppure se possedete un Mac OS X, selezionare ExFat e poi puoi copiare i file MP3 che desiderate. E’ conveniente che i file audio siano numerati per definirne l’ordine di esecuazione prograssiva. Al termine del trasferimento, si potrà estrarre la SD Card dal computer per puoi inserla nel DFPlayer mini.
Codice sorgente
Il Cestino Smart
Obiettivo: Realizzare un cestino intelligente che si apre quando ci si avvicina, evitando toccarlo.
Teoria: Il servomotore è un particolare tipo di motore che consente il controllo della posizione grazie alla componentistica elettronica che ha a bordo. Ad esempio è possibile attivare il servomotore e fermarlo ad un determinato angolo. Alcuni modelli, più avanzati di quello presente in questo esercizio, hanno la possibilità di controllare anche la velocità di rotazione. Il modello di questa esperienza non consente il controllo della velocità, e il suo asse fa una rotazione di 180 gradi.
Il contenitore del cestino viene realizzato con una scatola, di quelle che contengono le risme di carta A4.
Il coperchio della scatola, pesa complessivamente 61 g ma sarà necessario eliminare i bordi in modo che sia più facile spostarlo con il motore.
Facendo qualche calcolo si ricava che la superficie complessiva del coperchio della scatola è 1440 cm2. La densità, quindi è di circa 0,042 g/cm2 e il peso della sola superficie superiore è
0.042 * 600 = 25 g (circa)
Se a questo aggiungiamo gli elementi che servono per sorreggere la struttura, possiamo pensare di arrivare ad un peso di 50 g.
Considerando che il peso della superficie superiore della scatola sia uniformemente distribuito, possiamo ipotizzarlo equivalente ad una forza di circa 0.500 N applicata al centro della superficie.
La coppia che il servomotore dovrà sollevare sarà (0.5 * 0.15)
M = 0,075 Nm (oppure 0,75 Kg-cm)
Dalla scheda tecnica del servomotore si ricava che esso è in grado di erogare una coppia di 2,5 Kg-cm, ben superiore a quella che ci serve.
Per rilevare la presenza della persona e quindi dare l’ordine alla scheda di aprire il cestino, si utilizzerà un sensore ad ultrasuoni HC-SR04
Il sensore di prossimità è un dispositivo che permette di rilevare la presenza di oggetti nelle immediate vicinanze, senza che vi sia un effettivo contatto. Nel caso specifico, il sensore di prossimità ad ultrasuoni sfrutta il principio del Sonar. Degli impulsi sonori (ultrasonici) vengono emessi dal dispositivo il quale attraverso l’eventuale eco di ritorno permette di rilevare la presenza di un oggetto all’interno della portata nominale. Esempi pratici di sensori ad ultrasuoni sono i sensori di retromarcia e di parcheggio utilizzati nelle moderne automobili. Nel dettaglio, le principali caratteristiche tecniche del sensore ad ultrasuoni HC-SR04 sono:
Alimentazione: +5V DC
Angolo di misura: < 30°
Distanza di rilevamento: da 2cm a 400cm
Risoluzione: 1cm
Frequenza: 40kHz
Costruzione del cestino: dal coperchio tagliare le alette e incollare su una delle superfici un bastoncino di legno (noi abbiamo usato una bacchetta da sushi). il bastoncino deve sporgere leggermente rispetto al piano, per permettere di fissarci il servomotore
Ricavare nella scatola, in uno dei lati corti, uno scanso, per permettere la rotazione del piano con il bastoncino.
Fissare il servomotore in corrispondenza del taglio, incollandolo sul fianco della scatola. Se serve, si può aggiungere uno spessore sul fianco del servomotore
Collegare il servomotore al coperchio superiore, fissando la bacchetta alla levetta del servo
Forare il fianco della scatola in modo da poterci alloggiare il sensore ad ultrasuoni. Il sensore può essere fissato anche ad incastro e senza l’uso di colla o nastro adesivo
Collegamento Circuitale:
Codice:
Il sensore ad ultrasuoni, rileva la distanza degli ostacoli che ha di fronte. Se il sensore viene posto sul lato del bidone e gli si avvicina una mano, il sensore rileva la presenza dell’arto e invia il segnale al microcontrollore, il quale, elabora il dato e trasmette il movimento di 90 gradi al servomotore al quale è collegato il coperchio del cestino
Tinkercad:
Personalizzazioni: E’ possibile inserire un altro sensore interno al cestino per segnalare quando è pieno
Come utilizzare Android Explore IoT Kit con visualizzazione dati sul cloud
Obiettivo: Realizzare il primo sketch in grado di visualizzare dati sul Cloud
Componenti:
Arduino MKR1010
MKT IoT Carrier, che a sua volta include: Sensore di temperatura Sensore di umidità
Teoria: Non essendo disponibile un debugger per il controllore Arduino, l’utilizzo del monitor seriale rappresenta l’unica valida alternativa per comprendere i malfunzionamenti del codice scritto. Il monitor seriale è uno strumento integrato nell’IDE di Arduino e nella piattaforma Tinkercad per visualizzare i dati ricevuti mediante comunicazione seriale. La comunicazione seriale è una modalità di comunicazione tra dispositivi digitali nella quale i bit sono trasferiti lungo un canale di comunicazione uno di seguito all’altro. Nel caso specifico, la comunicazione avviene tra il Computer ed Arduino. Le istruzioni per inviare messaggi da Arduino al Personal Computer sono due: Serial.begin e Serial.println
L’Inizializzazione della comunicazione avviene mediante l’istruzione:
Serial.begin(9600);
Questa istruzione deve essere inserita all’interno del corpo del setup e permette di impostare la comunicazione seriale definendo la velocità della comunicazione in bits per second (baud).
La comunicazione vera e propria avviene invece mediante l’istruzione:
Serial.println(“Il valore del pulsante risulta:”);
Serial.println(valButton);
Nel primo caso viene stampato nel monitor seriale il testo: “Il valore del pulsante risulta:”. Mentre nel secondo caso viene stampato il valore della variabile valButton. L’impiego delle println permette di capire il valore delle variabili e determinare il corretto funzionamento del circuito. E’ possibile visualizzare i dati inviati da Arduino al PC cliccando sullo specifico tasto:
Collegamento Circuitale:
Codice: A seguire viene riportato il codice utilizzato per determinare se un pulsante è stato premuto oppure no. Questo permette di comprendere se un pulsante è stato montato in modo corretto. Nello specifico il codice utilizza la variabile di stato “valButton” per determinare lo stato del pulsante (premuto/non premuto). Attraverso l’istruzione Serial.println(valButton) è possibile stampare sul monitor il valore della variabile.
Quanto Tempo Hai Premuto il Pulsante?
Obiettivo: Determinare per quanto tempo un pulsante è stato premuto.
Teoria: Poter misurare il tempo di pressione di un tasto può risultare utile in molte applicazioni. Infatti, questa informazione permette di discriminare le differenti modalità di iterazione con il pulsante come il click (tasto premuto) ed il long click (tasto premuto a lungo). Potere discriminare questi comportamenti permette di abilitare il pulsante a differenti funzioni. Ad esempio il single click potrebbe essere utilizzato per accendere un led mentre il long click potrebbe essere utile per farlo lampeggiare. Dal punto di vista hardware il circuito necessario per realizzare questa applicazione è molto semplice ed è costituito dal singolo pulsante collegato a vcc e al ground mediante resistenza di pull-down. Elemento centrale di questa esercitazione è la scrittura di un codice corretto che permetta di misurare esattamente lo scorrere quel tempo. Questo codice si basa sull’impiego di due elementi fondamentali:
La funzione millis: questa funzione restituisce il numero di millisecondi che sono passati da quando la board Arduino ha eseguito il programma corrente. Questo numero si riazzera dopo circa 50 giorni. L’impiego di questa funzione è fondamentale per misurare il tempo di pressione del pulsante. Nel dettaglio, questa operazione può essere svolta semplicemente eseguendo la differenza tra le misure temporali prese quando il pulsante è premuto e quando il pulsante è rilasciato.
La variabile di stato: questa variabile (di natura globale) permette di determinare quando un pulsante è premuto e quando il pulsante è rilasciato. Nello specifico grazie a questa variabile è possibile determinare un passaggio dallo stato logico basso a quello alto e viceversa.
Collegamento Circuitale:
Codice: A seguire viene riportato il codice utilizzato per determinare il tempo di pressione di un pulsante. Nello specifico il codice utilizza la variabile di stato “valButtonOld” per memorizzare lo stato del pulsante relativo al ciclo passato. Quando i valori di “valButton” e “valButtonOld” differiscono, allora c’è stato un passaggio di stato.
ValButtonOld
ValButton
Evento
LOW
HIGH
Il pulsante è stato premuto
HIGH
LOW
Il pulsante è stato rilasciato
Nel caso specifico del passaggio di stato viene effettuata una misura del tempo trascorso mediante la funzione millis(). Per determinare il tempo trascorso basta semplicemente effettuare una differenza tra le due misure realizzate.
Personalizzazioni: E’ possibile modificare l’hardware introducendo due led. Quando il pulsante viene premuto per meno di un secondo deve accendersi il primo led, quando invece il pulsante viene premuto per più di un secondo deve accendersi il secondo.
Inversione di polarità tramite pulsante (Tinkercad)
Obiettivo: Invertire la polarità di un motore tramite pulsante (e relè DPDT)
Componenti elettronici:
Arduino
Relè DPDT
Pulsante
Motore DC 5V
Teoria: Uno dei problemi frequenti che si incontra quando si prova a pilotare un motore elettrico è quello di invertigli il senso di marcia. In commercio esistono molte tipologie di schede che permettono facilmente di controllare il senso di rotazione e la velocità di un motore a corrente continua. La maggior parte di esse monta uno o più relè DPDT, il cui funzionamento è illustrato in figura:
Una volta eccitata la bobina, il relè apre il contatto NC tra i pin 6-7 e 3-2 e apre quelli NA 5-7 e 4-2. I contatti 7 e 2 sono i COMUNI.
Nell’esempio trattato in questo articolo, un pulsante controlla l’impulso dato alla bobina e, una volta cliccato, la eccita commutando il relè.
Collegamento Circuitale:
Codice:
A seguire viene riportato il codice utilizzato:
Osservazioni:
Nel codice il pulsante è stato collegato al pin2 dichiarato come INPUT_PULLUP. Questa istruzione attiva sul pin la resistenza interna necessaria al funzionamento del pulsante.
Quello che succede è che, una volta premuto il pulsante, i collegamenti in viola al motore cambiano la polarità: il collegamento disposto più in alto passa da negativo a positivo, mentre quello in basso passa da positivo a negativo.
Arduino Explore IoT Kit
Obiettivo: Unboxing del kit Educational di Arduino Explorer IoT Kit
Componenti:
Arduino MKR1010
MKT IoT Carrier, che a sua volta include: 2 relé 24V Slot scheda SD 5 pulsanti touch Connettori plug-and-play per diversi sensori Sensore di temperatura Sensore di umidità Sensore di pressione Sensore UV Accelerometro Display RGB 1.20″ Slot per batteria ricaricabile Li-Ion 18650 5 LED RGB
Cavo Micro USB
Sensore di umidità
Sensore a infrarossi passivo
Cavi plug-and-play per tutti i sensori
Accesso ad Arduino Create, una piattaforma online integrata che consente di scrivere codice, accedere a contenuti, configurare schede e condividere progetti
Accesso alla piattaforma online dedicata con tutte le informazioni, le attività e i contenuti per usare il kit
10 lezioni hands-on passo-passo, che coprono tutti gli aspetti fondamentali legati all’IoT: Hardware Rete Algoritmi e programmazione Sicurezza Gestione dei dati