Obiettivo: Realizzare un controllo di temperatura mediante il dispositivo LM35.
Componenti elettronici:
Arduino UNO
Breadboard
LM35
Teoria: Il componente elettronico LM35 è un dispositivo integrato ad alta precisione utilizzato per misurare la temperatura ambientale. Dato il basso costo e l’ampia scala di valori ammissibili (ovvero da -55°C fino a 150°C) questi dispositivi sono particolarmente diffusi. E’ inoltre importante considerare che e nessun tipo di calibrazione esterna è richiesta.
Questo dispositivo è caratterizzato da tre differenti pin ed un corpo semi-cilindrico. Guardando il lato piatto del dispositivo, il pin di sinistra è l’alimentazione (5V), il pin di destra la massa (GND), mentre sul pin centrale viene generata una tensione funzione della temperatura (10mV per ogni grado sopra lo zero). La temperatura può essere pertanto misurata attraverso una lettura analogica sul pin centrale effettuata mediante il controllore Arduino.
Collegamento Circuitale:
Viene in seguito riportato lo schema elettrico utilizzato per valutare la temperatura mediante il dispositivo elettronico LM35
Codice:
La temperatura viene determinata attraverso una lettura analogica ed una opportuna scalatura. Nel dettaglio, la tensione prodotta dal componente LM35 viene letta utilizzando il pin analogico A0 e mappata in un intervallo 0-1023. Considerando che per ogni grado percepito si ha un incremento di tensione di 10mV è opportuno riportare il valore letto attraverso la funzione analogRead in mV. Questa operazione può essere svolta dividendo il valore letto per 1023 e moltiplicando il risultato per 5000. I gradi sono infine ottenuti dividendo il risultato per 10.
Personalizzazioni:
E’ possibile modificare il circuito aggiungendo una ventola che si accende in modo automatico superata una determinata temperatura.
Controllare un LED mediante Smartphone
Obiettivo: Controllare un Led mediante Smartphone
Pre-requisiti:
Componenti elettronici:
Arduino UNO
Breadboard
1 modulo Bluetooth HC06
1 Smartphone Android
1 Resistenza da 220 Ohm
1 LED
Teoria: Partendo dall’applicativo Android, sviluppato nella lezione: “Appinventor – Bluetooth HC06 – LED” in questa lezione viene illustrato come utilizzare l’app creata per controllare un LED via smartphone attraverso il protocollo bluetooth.
Nel caso specifico il protocollo Bluetooth (abbreviato in BT) è uno standard di trasmissione dati per reti senza fili. Il BT fornisce un metodo standard, economico e sicuro per scambiare informazioni tra dispositivi diversi attraverso onde radio a corto raggio (qualche decina di metri). La comunicazione Bluetooth tra lo Smartphone ed Arduino avviene attraverso l’utilizzo di un modulo BT per Arduino denominato HC06.
Il Modulo HC06 implementa un convertitore da porta seriale UART a porta Bluetooth permettendo la comunicazione tra un microprocessore come una scheda Arduino e un dispositivo dotato di comunicazione Bluetooth (PC, Smartphone o Tablet). Il modulo è dotato di quattro differenti PIN descritti nella seguente tabella:
PIN
Descrizione
1
Vcc (Alimentazione, funziona correttamente anche con i 5 V di Arduino)
2
Gnd (Ground)
3
Txd (Pin di trasmissione seriale. Deve essere collegato ad un pin di ricezione)
4
Rxd (Pin di ricezione seriale. Deve essere collegato ad un pin di trasmissione)
Da un punto di vista pratico, grazie all’impiego della specifica libreriaSoftwareSerial inclusa nel pacchetto software di Arduino è possibile comunicare con il modulo Bluetooth ed il relativo dispositivo connesso. La libreria mette infatti a disposizione una classe SoftwareSerial all’interno della quale sono definite le principali funzioni necessarie per utilizzare il modulo HC06. Quali:
Begin: Inizializza l’interfaccia seriale definendo la velocità standard di comunicazione
Available: Indica se dei dati sono stati inviati al modulo HC06 (dati disponibili da leggere).
Read: Legge i dati ricevuti
Write: Scrive i dati
Collegamento Circuitale:
Codice:
Personalizzazioni: E’ possibile aggiungere più led modificando l’applicazione ed il codice sorgente.
App Inventor – Bluetooth HC06 – LED
Obiettivo: Realizzazione di una applicazione Android per la comunicazione Smartphone-Android mediante protocollo bluetooth per il comando di un singolo LED (ON/OFF).
Componenti:
Appinventor
QRDroid
Teoria: Bluetooth è uno standard di trasmissione dati per reti senza fili. Questo protocollo è ampiamente utilizzato per la connessione tra i moderni smartphone e i differenti dispositivi casalinghi/industriali (amazon echo, altoparlanti, cuffie, etc). Nel caso specifico la comunicazione avviene mediante la realizzazione di una app tra Smartphone ed Arduino per il comando di un singolo LED.
Creazione della app (DESIGNER):
A seguire viene riportata una guida passo passo per la realizzazione della applicazione in questione. Prima di iniziare è opportuno scaricare i file necessari nella sezione “Componenti“
Creazione di un nuovo progetto: attraverso il menu project creare un nuovo progetto cliccando su start new project. Denominare il progetto: BluetoothLED.
Inserimento degli elementi principali dell’applicativo: semplicemente trascinando gli elementi dalla palette (menu a sinistra) è possibile inserire i seguenti elementi: Listpicker (si trova in Palette/UserInterface), Button (si trova in Palette/UserInterface), Label (si trova in Palette/UserInterface).
Adattare le dimensioni dei pulsanti: Per adattare le dimensioni dei singoli elementi cliccare su screen1 nel menu components, selezionare in seguito l’elemento (sempre nel menu componenti) e cliccare su width nel menu properties. Infine, selezionare l’opzione fill parent (riempe il contenitore genitore).
Modificare il testo: Per modificare il testo riportato nelle singole entità, cliccare sui differenti componenti nel menu componenti ed in seguito settare il testo attraverso il menu properties.
Componenti bluetooth e pulsante ON/OFF: Per completare l’applicativo vengono infine inseriti: il ClientBluetooth (si trova in Palette/Connectivity) e due pulsanti (ON/OFF). E’ importante considerare che a differenza degli altri elementi il modulo bluetooth non risulta visibile nella GUI perché componente non visibile
Sviluppo dell’algoritmo (BLOCKS):
Terminata la creazione dell’interfaccia grafica è opportuno realizzare il codice associato all’applicazione. Per fare questo, cliccare in alto a destra sul pulsante BLOCKS.
Realizzazione del codice: Per gestire l’applicativo implementare la procedura riportata nella figura sottostante
Download dell’applicazione:
Per scaricare l’applicativo è necessario avere un cellulare Android con relativo lettore di QRCode. Pertanto, terminato lo sviluppo cliccare nel menu build -> App (provide QR code for APK)
App Inventor – Splash Screen
Obiettivo: Creazione di uno Splash Screen per la customizzazione delle proprie applicazioni
Componenti:
Logo
Suono Carino (Facoltativo)
Prerequisiti:
Teoria: Attraverso l’utilizzo di pagine temporizzate è possibile realizzare uno splash screen ovvero: una schermata di presentazione che molti programmi visualizzano al momento del loro avvio, recante in genere il nome e la versione del programma stesso, il logo del produttore e il copyright.h
Creazione della app:
A seguire viene riportata una guida passo passo per la realizzazione di uno splash screen, ovvero uno screen temporizzato che si apre al momento dell’avvio della applicazione contenente il logo aziendale/scolastico.
Creazione di un nuovo progetto: attraverso il menu project creare un nuovo progetto cliccando su start new project. Denominare il progetto: SS.
Inserimento degli elementi principali dell’applicativo: semplicemente trascinando gli elementi dalla palette (menu a sinistra) è possibile inserire i seguenti elementi: Image (si trova in Palette/UserInterface), Sound (si trova in Palette/Media), Clock (si trova in Palette/Sensors). E’ importante considerare che a parte il pulsante, il clock non risulta visibile nella GUI perché componente non visibile.
Inserire il file di immagine: Per inserire il file di immagine cliccare su image1 nel menu components, cliccare su background in properties e uplodare il file di sfondo.
Centrare l’immagine: Per centrare l’immagine, cliccare su image nel menu componenti ed in seguito settare la proprietà center negli allineamenti verticali ed orizzontali attraverso il menu properties
Creazione di un nuovo screen: Per inserire una seconda schermata cliccare su screen e premere su add new screen.
Sviluppo dell’algoritmo (BLOCKS):
Terminata la creazione dell’interfaccia grafica è opportuno realizzare il codice associato all’applicazione. Per fare questo, cliccare in alto a destra sul pulsante BLOCKS
Associare un evento al clock: Per avviare uno nuovo screen è opportuno associare un evento al clock. Pertanto cliccare su clock1 ed in seguito trascinare nella schermata dei blocchi l’evento: “When Clock1 Timer”
Aprire un nuovo screen: Per aprire un nuovo screen cliccare su build e trascinare l’evento “Open another screen Screenname”. In seguito, inserire il nome dello screen da aprire facendo attenzione alle lettere maiuscole e minuscole.
Disabilitare il clock: E’ opportuno disabilitare il clock altrimenti il rischio è quello di aprire continuamente in modo automatico il nuovo screen. Pertanto cliccare su clock1 ed in seguito trascinare nella schermata dei blocchi il metodo: “Set Clock1.TimerEnabled” e settario al valore logico false.
App Inventor – Man on the Floor
Obiettivo: Realizzazione di una applicazione Android per la rilevazione di cadute e svenimenti
Teoria: La realizzazione di applicazioni Android richiede la conoscenza di software specifici (Android Studio) e complessi linguaggi di programmazione (Java). Tuttavia, queste competenze non sempre sono possedute dagli studenti e dalle persone che vogliono avvicinarsi alla programmazione per la prima volta. A tale scopo, il MIT di Boston ha sviluppato un tool che permette di creare applicazioni Android in modo grafico e semplice. Questo tool, denominato AppInventor, è accessibile a tutti attraverso il seguente portale web:
A seguire viene riportata una guida passo passo per la realizzazione della applicazione in questione. Prima di iniziare è opportuno scaricare i file necessari nella sezione “Componenti“
Creazione di un nuovo progetto: attraverso il menu project creare un nuovo progetto cliccando su start new project. Denominare il progetto: MOF.
Inserimento degli elementi principali dell’applicativo: semplicemente trascinando gli elementi dalla palette (menu a sinistra) è possibile inserire i seguenti elementi: Bottone (si trova in Palette/UserInterface), Sound (si trova in Palette/Media), Accelerometer Sensor (si trova in Palette/Sensors). E’ importante considerare che a parte il pulsante. Il suono e l’acceleramento non saranno visibili nella GUI perché componenti non visibili.
Inserire il file di sfondo (background): Per inserire il file di sfondo cliccare su screen1 nel menu components, ed in seguito cliccare sulla scritta background nel menu properties. Infine, uplodare il file di sfondo (MOF-sfondo.png).
Centrare il pulsante: Per centrare il pulsante, cliccare su screen1 nel menu componenti ed in seguito settare la proprietà center negli allineamenti verticali ed orizzontali attraverso il menu properties.
Cambiare immagine pulsante: Per cambiare immagine ad un pulsante, cliccare su Button1 nel menu componenti ed in seguito cliccare su images in properties ed uplodare l’immagine di riferimento (MOF-bottone.png)
Impostare il suono della frusta: Per associare un suono della frusta cliccare su sound nella schermata componenti ed in seguito premere su source nel menu di proprietà. Caricare infine il file audio associato (MOF-suono.wav)
Sviluppo dell’algoritmo (BLOCKS):
Terminata la creazione dell’interfaccia grafica è opportuno realizzare il codice associato all’applicazione. Per fare questo, cliccare in alto a destra sul pulsante BLOCKS.
Associare un evento al pulsante: Per riprodurre un suono quando viene premuto un pulsante è opportuno associare l’opportuno ascoltatore. Pertanto cliccare su button1 ed in seguito trascinare nella schermata dei blocchi l’evento: “When Button1 Click do”
Associare un evento all’accelerometro: Per riprodurre un suono quando lo smartphone viene mosso, è opportuno associare l’opportuno ascoltatore. Pertanto cliccare su accelerometrSensor1 ed in seguito trascinare nella schermata dei blocchi l’evento: “When accelerometerSensor1 sharing do”
Riproduzione del file audio: Per riprodurre il file audio nei casi precedentemente riportati è necessario aggiungere il player audio. Pertanto cliccare su Sound1 e trascinare nello schermo dei blocchi l’evento “call sound1 play”.
Download dell’applicazione:
Per scaricare l’applicativo è necessario avere un cellulare Android con relativo lettore di QRCode. Pertanto, terminato lo sviluppo cliccare nel menu build -> App (provide QR code for APK)
Arduino Pirati dei Caraibi
Obiettivo: Riprodurre la melodia del film “Pirati dei Caraibi” 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 SuperMario
Obiettivo: Riprodurre la melodia del famoso videogioco 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 Happy Birthday
Obiettivo: Realizzare un bigliettino di auguri di buon compleanno 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:
Il Sensore di Parcheggio
Obiettivo: Realizzare un sensore di parcheggio
Componenti elettronici:
Arduino UNO
Breadboard
1 Sensore Ultrasuoni (e.g., HC-SR04)
1 Buzzer
Pre-requisiti:
Teoria: Il sensore di parcheggio rappresenta una delle moderne tecnologie che permettono al guidatore di un autoveicolo di essere a conoscenza della distanza tra la propria automobile ed un eventuale altro veicolo. Questo permette di gestire in modo facile e rapido l’operazione di parcheggio evitando danneggiamenti o urti agli autoveicoli in questione. Nel caso specifico, il sensore di parcheggio si basa su un sensore di prossimità ad ultrasuoni (INPUT) ed un buzzer (OUTPUT) utilizzato come segnalatore acustico. Nel dettaglio, maggiore è la distanza maggiore sarà il ritardo tra una segnalazione acustica e la successiva, analogamente, minore è la distanza minore sarà il ritardo tra una segnalazione acustica e la successiva. In particolare, la relazione ingresso uscita che lega la distanza al ritardo impiegato nella segnalazione acustica è funzione dei seguenti quattro parametri:
DistanzaMassima: la distanza massima dopo la quale non viene più segnalato un’ostacolo.
DistanzaMinima: la distanza minima per la quale il buzzer emette un tono continuo
RitardoMassimo: Il ritardo tra una segnalazione acustica e la successiva nel caso di massima distanza.
RitardoMinimo: Il ritardo tra una segnalazione acustica e la successiva nel caso di minima distanza.
Questi valori vengono utilizzati al fine di determinare l’equazione fondamentale per il calcolo del ritardo:
Teoria: Il Joystick è una dispositivo elettronico che trasforma i movimenti di una leva manovrata dall’utente in una serie di segnali elettrici, questi segnali possono essere in seguito utilizzati per controllare un software (e.g., videogame), un’apparecchiatura o un attuatore meccanico. Possono esistere due differenti tipologie di Joystick:
Joystick Digitale: Rileva solamente la direzione dell’inclinazione della leva.
Joystick Analogico: Rileva anche l’ampiezza dell’inclinazione.
Nello specifico in questo articolo viene illustrato il funzionamento di uno dei controller più tipicamente utilizzati e presenti nei vari kit Arduino: il “Dual Axis Joystick Module KY-023“, Questo dispositivo, basato sul controller della PlayStation2, utilizza due potenziometri bi-assiali per controllare l’asse X e l’asse Y. Inoltre è possibile premere il controller per attivare uno switch. Nello specifico, la tensione di funzionamento del dispositivo è compresa nel range 3.3 – 5 V. Mentre le dimensioni sono pari a 2.6 x 3.4 cm.
Nella tabella a seguire è riportata la piedinatura utile per collegare in modo corretto il Joystick KY-023.
KY-023 PIN
Descrizione
GND
Ground
+5V
Alimentazione Vcc
VRx
Uscita Analogica (Asse X)
VRy
Uscita Analogica (Asse Y)
SW
Switch
In questo articolo il Joystick viene utilizzato per comandare due differenti servomotori. Un servo è associato all’asse X ed un altro è invece associato all’asse Y. La posizione di riposo dei due servomotori è per entrambi 90 gradi. Spostando il Joystick lungo l’asse X si può modificare la posizione del servo associato all’asse X di un angolo variabile da 0 a 180 gradi. Lo stesso accade modificando la posizione del joystick lungo l’asse y.