La Morra Cinese con Arduino

Obiettivo: Realizzare il classico gioco Morra Cinese (Sasso Carta e Forbici) utilizzando il microcontrollore Arduino



Componenti elettronici:

  • Arduino UNO
  • Breadboard
  • 3 Resistenze da 1kOhm per i pulsanti
  • 3 Resistenze da 100 Ohm per i LED.
  • 1 Buzzer Passivo (per la realizzazione di una melodia)
  • 3 LED (Rosso, Giallo, Verde)
  • 3 Pulsanti

Pre-requisiti:


LED e Pulsante



Buzzer Passivo


TeoriaAttraverso l’utilizzo di tre semplici pulsanti l’utente può selezionare il tipo di oggetto che desidera giocare (i.e., sasso carte e forbici).
La scelta/risposta del computer viene selezionata attraverso l’impiego di un numero random generato in modo casuale con la funzione random(1,4). Tale funzione permetta la generazione di un numero casuale compreso tra 1 e 3, dove il numero 1 corrisponde al sasso, il numero 2 corrisponde alla carte ed il numero 3 a forbici. Questo valore viene confrontato nel blocco loop con i vari pulsanti premuti attribuendo la vittoria al computer o al giocatore ed accendendo il corrispettivo LED
Attraverso l’utilizzo di un contatore di vittorie, si decide il vincitore finale al meglio delle 5 partite.

Algoritmo Morra Cinese

Collegamento Circuitale:

Collegamento Circuitale

Codice:




PersonalizzazioniE’ possibile modificare il gioco realizzando la versione più complessa: Sasso Carta Forbice Lizard Spock, proposta sulla serie TV “The Big Bang Theory”.


Algoritmo Morra Cinese – The Big Bang Theory Version



Misura di Temperatura mediante TMP36 [Tinkercad]

Obiettivo: Realizzare un controllo di temperatura mediante il dispositivo TMP36. Il TMP36 è il sensore di temperatura presente sul simulatore tinkercad.

Componenti elettronici:

  • Arduino UNO
  • Breadboard
  • TMP36

TeoriaIl componente elettronico TMP36 è 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 -40°C fino a 125°C) questi dispositivi sono particolarmente diffusi. E’ inoltre importante considerare che non è necessaria nessuna operazione calibrazione per ottenere valori di accuratezza pari a ±1°C ad una temperatura di circa +25°C e ±2°C nel range di temperature −40°C to +125°C.

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. La temperatura può essere pertanto misurata attraverso una lettura analogica sul pin centrale effettuata mediante il controllore Arduino.

TMP36 Package

Come riportato in precedenza è possibile utilizzare un pin di input analogico per ottenere il valore di temperatura mediante l’istruzione di analogRead. Nel caso specifico, osservando il grafico che riporta la caratteristica tensione/temperatura (per il TMP36 la linea è evidenziata in rosso) per una tensione di uscita di 0.5V il sensore rileva la temperatura di 0°C. Pertanto valori di tensione inferiori a 0.5V indicano una temperatura sotto lo zero, mentre valori di tensione superiori a 0.5V indicano una temperatura positiva. Inoltre, è importante considerare che “una variazione di grado corrisponde ad una variazione di tensione di 10mV”. Quindi, se sul pin di input analogico sono presenti 550mV significa che il sensore sta rilevando una temperatura di 5°C (550mV – 500mV = 50 mV variazione di 5°C).

Caratteristica tensione corrente

Collegamento Circuitale:

Viene in seguito riportato lo schema elettrico utilizzato per valutare la temperatura mediante il dispositivo elettronico TMP36

Collegamento Circuitale

Codice:

La temperatura viene determinata attraverso una lettura analogica ed una opportuna scalatura.
Nel dettaglio, la tensione prodotta dal componente TMP36 viene letta utilizzando il pin analogico A0 e mappata in un intervallo 0-1023. Considerando che alla temperatura di 0 gradi la tensione misurata è pari a 0.5V e che per ogni grado percepito si ha un incremento di tensione di 10mV è opportuno riportare il valore letto attraverso la funzione analogRead in mV ed eseguire un’opportuna scalatura. Pertanto se il valore letto mediante l’istruzione di analogRead è memorizzato in una variabile denominata valTMP la temperatura può essere ottenuta mediante la seguente formula:

temperatura = (((valTMP5.0)/1023.0)-0.5)*100



Tinkercad



Personalizzazioni:

E’ possibile modificare il circuito aggiungendo una ventola che si accende in modo automatico superata una determinata temperatura.




Controllo di Temperatura mediante LM35

Obiettivo: Realizzare un controllo di temperatura mediante il dispositivo LM35.



Componenti elettronici:

  • Arduino UNO
  • Breadboard
  • LM35

TeoriaIl 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.

Estratto Datasheet LM35

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.

LM35 Package

Collegamento Circuitale:

Viene in seguito riportato lo schema elettrico utilizzato per valutare la temperatura mediante il dispositivo elettronico LM35

Collegamento Circuitale

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

TeoriaPartendo 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.

Modulo BT 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 libreria SoftwareSerial 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:

Schema Circuitale

Codice:




PersonalizzazioniE’ 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

TeoriaBluetooth è 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.
Creazione di un nuovo progetto
  • 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).
Inserimento degli elementi principali
  • 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).
Adattare le dimensioni dei pulsanti
  • 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
Componenti Bluetooth

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
Codice

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:

TeoriaAttraverso 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.
Creazione Progetto
  • 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 elementi
  • 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.
Inserire il file di immagine
  • 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
Centrare l’immagine
  • Creazione di un nuovo screen: Per inserire una seconda schermata cliccare su screen e premere su add new screen.
Creazione di un nuovo 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”
Associare un evento al clock
  • 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.
Aprire un nuovo screen
  • 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.
Disabilitare il clock



App Inventor – Man on the Floor

Obiettivo: Realizzazione di una applicazione Android per la rilevazione di cadute e svenimenti

Componenti:

TeoriaLa 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:

https://appinventor.mit.edu

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: MOF.
Creazione di un nuovo progetto

  • 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.
Inserimento dei componenti principali

  • 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).
Inserire l’immagine di sfondo

  • 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 l’immagine di sfondo

  • 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)
Cambiare immagine al pulsante

  • 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 al pulsante

  • 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”
Associare un evento all’accelerometro

  • 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”.
Riproduzione di un segnale audio

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:

TeoriaOgni 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:

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:

TeoriaOgni 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:

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:

TeoriaOgni 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:

Collegamento Circuitale

Codice: