Come Installare una Libreria (IRremote Library)

Obiettivo: Installare una libreria per la gestione del telecomando ad infrarossi.

Teoria:

Per utilizzare con Arduino alcuni componenti elettronici particolarmente complessi, potrebbe essere necessario utilizzare una libreria di funzioni scritta dal produttore del dispositivo. Le librerie permettono di utilizzare il dispositivo attraverso una serie di funzioni semplificate che garantisco all’utilizzatore un elevata facilità di utilizzo. Alcune librerie sono native nell’ambiente Arduino (eg. SERVO, EEPROM, WIRE) altre devono essere scaricate ed opportunamente installate seguendo una specifica procedura.

A seguire sono riportate le istruzioni per installare la libreria IRRemote necessaria per utilizzare il telecomando ad infrarossi:

  • Collegarsi al sito http://z3t0.github.io/Arduino-IRremote e scaricare lo zip relativo alla libreria.
  • Per installare la libreria aprire l’editor di Arduino e andare in Sketch > Includi Libreria > Aggiungi Libreria da File ZIP, e selezionare il file IRremote ZIP che è stato scaricato dal link precedentemente riportato. Terminata la procedura sarà possibile aggiungere la libreria direttamente dalla sezione includi libreria (vedi le immagini riportate in seguito).

Procedura per includere la libreria IRremote – Step 1

Procedura per includere la libreria IRremote – Step 2

Procedura per includere la libreria IRremote – Step 3




Password di accesso con KeyPad 4×4 e Arduino – (Tinkercad)

Obiettivo: Utilizzo di un keypad 4×4 per l’accensione di un led mediante una relativa password di accesso (lunga 4 caratteri). Simulazione basata sull’utilizzo del software Tinkercad.

Componenti elettronici:

  • Non servono componenti elettronici hardware, basta il tuo PC ed una connessione ad internet.
  • http://tinkercad.com/

TeoriaIl keypad è un dispositivo elettronico costituito da un insieme di pulsanti disposti in un blocco o “pad” che riportano cifre, simboli o lettere alfabetiche. I keypad sono prevalentemente utilizzati nei dispositivi elettronici che richiedono principalmente input numerici come calcolatrici, telefoni a pulsante, distributori automatici, bancomat, serrature a combinazione e serrature digitali. .
Il keypad presente nel software di simulazione Tinkercad è un keypad 4×4 che presenta 16 tasti di cui 10 numerici (0,1,2,3,4,5,6,7,8,9) e 6 tasti alfanumerici (A,B,C,D,*,#). A seguire vengono riportate alcune immagini e tabelle utili per comprendere il funzionamento del keypad da un punto di vista elettronico.

Pin Number Description
ROW
1 PIN1 is taken out from 1st  ROW
2 PIN2 is taken out from 2nd  ROW
3 PIN3 is taken out from 3rd  ROW
4 PIN4 is taken out from 4th  ROW
COLUMN
1 PIN1 is taken out from 1st  COLUMN
2 PIN2 is taken out from 2nd  COLUMN
3 PIN3 is taken out from 3rd  COLUMN
4 PIN4 is taken out from 4th  COLUMN

Come riportato in tabella, un Keypad 4X4 è dotato di otto terminali dove quattro sono le righe della matrice e quattro invece le colonne. Attraverso questi 8 terminali è possibile comprendere quale tasto è stato premuto.
La struttura interna del keypad è riportata nella seguente figura:

Struttura interna del dispositivo

Nel caso in questione il keypad è utilizzato per accendere un led per 1 secondo quando una password lunga 4 caratteri è inserita nel modo corretto.

Collegamento Circuitale:

Collegamento Circuitale

Codice:

La gestione del keypad è facilitata grazie all’utilizzo della libreria <keypad.h>. Mentre la libreria è presente di default nell’applicativo Tinkercad, nel caso in cui il lettore voglia realizzare questo progetto con Arduino fisicamente è opportuno aggiungere la libreria manualmente al progetto.



Personalizzazioni:

E’ possibile aggiungere un display ed utilizzare un relè per implementare il controllo di una cassaforte.




Controllo di un LED Mediante Telecomando Infrarossi – (Tinkercad)

Obiettivo: Controllo ON/OFF di un LED mediante il telecomando ad infrarossi. Simulazione basata sull’utilizzo del software Tinkercad.



Componenti elettronici:

  • Non servono componenti elettronici hardware, basta il tuo PC ed una connessione ad internet.
  • http://tinkercad.com/

TeoriaIl telecomando è un dispositivo elettronico, sviluppato negli anni 50, che permette di inviare (ma non di ricevere) segnali ad un altro dispositivo situato a distanza per comandarlo.
In genere, i telecomandi tradizionali sono in grado di trasmette il segnale fino ad una distanza di circa 20 metri sotto forma di raggi infrarossi codificati.
Affinché il dispositivo da comandare possa ricevere i segnali inviati dal telecomando è necessario utilizzare un ricevitore ad infrarossi tipicamente fornito con il telecomando. La maggior parte dei ricevitori ad infrarossi in commercio sono dotati di 3 pin:

  • Alimentazione
  • Ground
  • Uscita

Il pin di uscita del ricevitore permette di inviare al microcontrollore (al quale è collegato il ricevitore) il segnale ricevuto dal telecomando. E’ importante considerare come ad ogni pulsante del telecomando sia associato un codice univoco. Tali codici variano in funzione dei vari telecomandi; pertanto prima di realizzare il programma finale è importante ottenere il valore del codice associato ai vari pulsanti.
Nel caso specifico di Tinkercad i codici associati ai vari pulsanti (ottenuti con il programma Arduino riportato in seguito) sono presentati nella seguente tabella:

Pulsante Codice
ON/OFF Button 16580863
UP Button 16601263
DOWN Button 16584943
Number 0 16593103
Number 1 16582903
Number 2 16615543
Number 3 16599223
Number 4 16591063
Number 5 16623703
Number 6 16607383
Number 7 16586983
Number 8 16619623
Number 9 16603303
STOP 16597183

Una volta ottenuti i codici è possibile attraverso il collegamento circuitale riportato in seguito scrivere il programma per comandare un LED attraverso il pulsante di ON/OFF

Collegamento Circuitale:

Schema Circuitale

Codice:

A seguire viene riportato il software utile per determinare i codici associati ad ogni pulsante del telecomando a IR.



Ottenuto il codice associato al pulsante desiderato è possibile modificare il software per comandare l’azionamento di un LED mediante telecomando a IR. Il programma è molto simile al precedente viene solamente aggiunta la parte di codice relativa alla gestione del LED ed una istruzione IF per determinare se il pulsante premuto è quello di ON/OFF. E’ importante infatti considerare che il LED si accenderà solamente quando il pulsante di ON/OFF è premuto.



Personalizzazioni:

E’ possibile aggiungere più LED e comandare i vari LED con i vari pulsanti del telecomando.




Comando di una Lampada Mediante Relè – (Tinkercad)

Obiettivo: Comando di una Lampada mediante un relè. Simulazione bastata sull’utilizzo del software Tinkercad.



Componenti elettronici:

  • Non servono componenti elettronici hardware, basta il tuo PC ed una connessione ad internet.
  • http://tinkercad.com/

TeoriaUno dei problemi principali di Arduino è legato alla impossibilità apparente di comandare dispositivi che richiedono tensione e/o correnti elevate. Infatti, è importante considerare che Arduino, attraverso le sue istruzioni di digitalWrite può generare su uno specifico pin in uscita una tensione massima di 5 Volt con una corrente pari a 70 milliAmpere. Molti utilizzatori si chiedono pertanto come sia possibile comandare dispositivi più complessi rispetto a quelli presenti nei tradizionali kit base Arduino, come lampade, ventole, o stripline led. La risposta a questa domanda è legata ad un semplice dispositivo elettromeccanico denominato relè (in inglese relay): il quale può essere utilizzato come un interruttore (ad alta tensione) comandato elettronicamente. Da un punto di vista fisico, il relè è costituto da un elettromagnete (costituito da una bobina di filo conduttore elettrico, tipicamente rame, avvolto intorno ad un nucleo di materiale ferromagnetico). Al passaggio di corrente elettrica nella bobina, l’elettromagnete modificherà la posizione di un contatto mobile aprendo o chiudendo il circuito ad esso collegato. Il contatto aperto quando la bobina non è alimentata prende il nome di normalmente aperto (NO); mentre, l’altro contatto, quello chiuso prende il nome di normalmente chiuso (NC).

Esempio di funzionamento di un relèa

Da un punto di vista elettronico, utilizzare un relè per comandare una lampada a 230volts mediante Arduino è una procedura particolarmente semplice. Il primo passo è quello di collegare, mediante il contatto normalmente aperto del relè, la lampada ad una sorgente di alimentazione esterna (come ad esempio la rete elettrica di casa). In seguito la bobina del relè viene collegata al pin digitale di Arduino impiegato per il controllo della lampada. Questo ci permette di modificare la posizione del contatto mobile del relè attraverso l’istruzione di digitalWrite con la quale la bobina può essere o non essere eccitata. In questo modo è possibile comandare una lampada a 220Volts mediante una semplice tensione a 5Volts.

Datasheet del Relè LU-5-R presente in Tinkecad

Nel caso specifico, l’impiego di un pulsante permette di controllare l’attivazione della bobina e quindi il controllo della lampada. L’applicazione proposta è stata simulata mediante l’utilizzo del software di simulazione tinkercard. Tensioni elevate possono essere pericolose per la salute personale, pertanto l’impiego almeno in una fase iniziale di un simulatore rende questa operazione sicuramente più sicura. A seguire viene riportato lo schema elettrico ed il codice utilizzato per il comando della lampada mediante relè.

Collegamento Circuitale:

Schema Circuitale

Codice:

A seguire viene riportata la schematizzazione mediante flowchart dell’algoritmo utilizzato per realizzare il programma.

Flowchart



Personalizzazioni:

E’ possibile modificare il circuito utilizzando il pulsante come interruttore: la lampada deve rimanere accesa fino a quando il pulsante non viene premuto una seconda volta (Attenzione possibili problematiche di rimbalzo).




Tinkercad un simulatore Online per Arduino

Obiettivo: Utilizzare il simulatore online tinkercad per emulare l’ambiente Arduino facendo lampeggiare un led.

Componenti elettronici:

  • Non servono componenti elettronici hardware, basta il tuo PC ed una connessione ad internet.
  • http://tinkercad.com/

Pre-Requisiti

TeoriaIl microcontrollore Arduino ha molti vantaggi: economico, facile da utilizzare, costa poco. Tuttavia non sempre abbiamo a disposizione i sensori che ci interessano e che vorremmo utilizzare nelle nostre applicazioni, oppure non sempre abbiamo Arduino con noi. Per questo motivo l’impiego di un simulatore online può essere estremamente vantaggioso. Tra i vari simulatori uno dei migliori è sicuramente Tinkercad. Tinkercad è un programma di modellazione 3D, online che può essere eseguito direttamente in un web browser. Particolarmente utilizzato per la realizzazione di progetti di stampa 3D, questo software permette anche la simulazione di circuiti elettronici in ambiente Arduino.
Obiettivo di questa esperienza è simulare il circuito presentato nei pre-requisiti dove un Led collegato al pin 8 lampeggia con una frequenza di 1Hz (si accende e si spegne ogni secondo).

Simulazione CircuitaleCompletata la fase di registrazione, una volta effettuato il login, è possibile passare alla fase di simulazione dei circuiti elettrici semplicemente cliccando su Circuits.

Dalla schermata di simulazione è possibile selezionare i componenti necessari, nel caso in questione Arduino, attraverso il pannello dei componenti (questo pannello si trova nello schermo a destra).

In seguito è possibile aggiungere al pannello di simulazione Arduino con la corrispettiva breadboard.

E realizzare il circuito con led e resistenza indispensabili per la realizzazione di questo tutorial.

Completata la realizzazione hardware, al fine di garantire il funzionamento del circuito, è necessario caricare il software per il blinking del led sul controllore Arduino. Per inserire il codice, cliccare sul pulsante Code in alto a destra. E’ possibile programmare Arduino sia mediante blocchi (Scratch) sia mediante il tradizionale codice. Nel caso specifico, selezionata l’opzione text è possibile copiare e incollare il codice direttamente dall’esempio riportato nei pre-requisiti.

Terminata la programmazione del controllore si passa alla fase di simulazione cliccando sul pulsante Start Simulation.




Controllo di un LED mediante Monitor Seriale

Obiettivo: Utilizzare il monitor seriale per l’accensione/spegnimento di un LED

Componenti elettronici:

  • Arduino UNO
  • Breadboard
  • 1 Resistenza (100 Ohm) per LED
  • 1 LED

TeoriaIl monitor seriale è uno degli strumenti più utilizzati per realizzare il “debug” delle applicazioni sviluppate sfruttando il microcontrollore Arduino. Attraverso il comando Serial.println() è infatti possibile stampare a monitor sia delle stringhe specifiche sia il contenuto delle variabili. Tuttavia, è importante considerare che attraverso il monitor seriale, non solo è possibile avviare una comunicazione Arduino->PC, ma anche una comunicazione PC->Arduino. Nel caso specifico di questa applicazione il monitor seriale sarà utilizzato per inviare al controllore Arduino un carattere (tipo char ad 8 bit) specifico per accendere o spegnere un LED.

Collegamento CircuitaleViene in seguito riportato lo schema elettrico utilizzato per controllare un LED mediante Monitor Seriale. Il LED risulta semplicemente collegato al pin digitale 8 di Arduino, il quale sarà attivato o disattivato (HIGH/LOW) in funzione del carattere ricevuto dal monitor seriale.

Codice:

Le principali funzioni della classe Serial sono impiegate nel seguente codice:

  • Serial.available():
    Restituisce il numero di byte (caratteri) disponibili per la lettura nella porta seriale. Questi dati vengono immagazzinati un buffer di ricezione seriale il quale può contenere 64 bytes.
  • Serial.read():
    Legge i dati provenienti dalla porta seriale






ARDWARE #16 Carica e Scarica di un Condensatore. Visualizzare i tempi con i LED.

Obiettivo : Analizzare la carica e la scarica di un condensatore visualizzando i relativi tempi mediante due differenti LED

Componenti elettronici:

  • Arduino UNO
  • Breadboard
  • 2 led (un led verde per il tempo di carica ed uno rosso per il tempo di scarica)
  • 1 Condensatore (1000 microFarad)
  • 1 Resistenza (1000 Ohm) per carica/scarica condensatore
  • 2 Pulsanti

TeoriaIl condensatore è un dispositivo elettronico che ha la capacità di immagazzinare carica elettrostatica. Tale dispositivo modifica il suo comportamento in funzione del segnale di alimentazione utilizzato nell’applicazione in questione (e.g., segnale continuo, segnale alternato, etc …).

In regime di tensione costante (corrente continua), il condensatore si carica inizialmente (regime transitorio) fino a raggiunge una situazione di equilibrio dove la carica sulle armature corrisponde esattamente alla tensione applicata mediante il generatore (regime stazionario). Una volta carico, il condensatore si comporta come un circuito aperto ovvero interrompe ogni flusso di corrente all’interno del circuito.
Questo poiché il legame tensione corrente in un condensatore è dettato dalla seguente relazione:

I(t) = C*dV(t)/dt

Pertanto essendo la tensione costante la derivata di tale valore sarà zero e di conseguenza anche l’intensità di corrente.
Al cessare dell’eccitazione sul circuito l’energia elettrica accumulata nel condensatore torna a scaricarsi sotto forma di corrente elettrica rilasciata nel circuito.

Il tempo di carica e di scarica dipende alla costante di tempo Tau definita come:

Tau = R*C

Nelle seguenti figure sono riportati i grafici relativi alla carica e alla scarica del condensatore. Nell’immagine di sinistra il condensatore, inizialmente scarico, si carica fino a raggiungere il livello di tensione finale f. Differentemente, nell’immagine di destra il condensatore, inizialmente carico e con una tensione f ai suoi capi, si scarica fino a raggiungere un livello di tensione finale pari a zero volt.

In questa esperienza si propone l’utilizzo di due differenti led (un led verde ed uno rosso) per visualizzare i tempi di carica e di scarica del condensatore.
Il principale vantaggio di questo approccio è legato all’utilizzo del mediatore visivo al fine di comprendere il comportamento di un condensatore. Nello specifico, premendo un il pulsante SW1 il condensatore inizierà a caricarsi e pertanto il led D1 si accenderà poiché percorso da corrente. Una volta carico il condensatore non permetterà più il passaggio di corrente e pertanto il led D1 si spegnerà. A questo punto sarà possibile premere il pulsante SW2 al fine di scaricare il condensatore. In questo caso ad accendersi sarà il led D2 che rimarrà accesso fino a che il condensatore non si sarà scaricato.

Schema Circuitale

Collegamento Circuitale:

Viene in seguito riportato lo schema elettrico utilizzato per analizzare il tempo di carica e di scarica di un condensatore.

Collegamento Circuitale

Tinkercad:



Personalizzazioni:

E’ possibile modificare i tempi di carica e di scarica variando il valore della resistenza o del condensatore.




Carica di un Condensatore

Obiettivo : Analizzare la carica di un condensatore mediante una lettura analogica.

Componenti elettronici:

  • Arduino UNO
  • Breadboard
  • 1 Condensatore (1000 microFarad)
  • 1 Resistenza (100 Ohm) per carica condensatore
  • 1 Pulsante
  • 1 Resistenza (1 kOhm) per resistenza pulsante

TeoriaIl condensatore è un dispositivo elettronico che ha la capacità di immagazzinare carica elettrostatica. Tale dispositivo modifica il suo comportamento in funzione del segnale di alimentazione utilizzato nell’applicazione in questione (e.g., segnale continuo, segnale alternato, etc …).

In regime di tensione costante (corrente continua), il condensatore si carica inizialmente (regime transitorio) fino a raggiunge una situazione di equilibrio dove la carica sulle armature corrisponde esattamente alla tensione applicata mediante il generatore (regime stazionario). Una volta carico, il condensatore si comporta come un circuito aperto ovvero interrompe ogni flusso di corrente all’interno del circuito.
Al cessare dell’eccitazione sul circuito l’energia elettrica accumulata nel condensatore torna a scaricarsi sotto forma di corrente elettrica rilasciata nel circuito.

Il tempo di carica e di scarica dipende alla costante di tempo Tau definita come:

Tau = R*C

Nelle seguenti figure sono riportati i grafici relativi alla carica e alla scarica del condensatore. Nell’immagine di sinistra il condensatore, inizialmente scarico, si carica fino a raggiungere il livello di tensione finale f. Differentemente, nell’immagine di destra il condensatore, inizialmente carico e con una tensione f ai suoi capi, si scarica fino a raggiungere un livello di tensione finale pari a zero volt.

In questa esperienza si propone l’utilizzo del monitor seriale per visualizzare i tempi di carica del condensatore. E’ importante considerare che i dati riportati sul monitor seriale (tempo e tensione) possono essere facilmente copiati in un foglio excel per ottenere una migliore rappresentazione grafica dell’evoluzione della tensione nel tempo.

L’utilizzo di un pulsante permette di avviare la carica del condensatore mediante l’utilizzo di una istruzione di digitalWrite.

Collegamento Circuitale:

Viene in seguito riportato lo schema elettrico utilizzato per analizzare il tempo di carica di un condensatore. Nel dettaglio il tempo di carica viene monitorato utilizzando la lettura analogica del controllore Arduino.

Collegamento Circuitale

Codice:



Personalizzazioni:

E’ possibile modificare il codice e l’hardware per simulare anche la scarica del condensatore.




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:


Pulsante come Interruttore



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




Controllo di Temperatura e Umidità mediante DHT11

Obiettivo: Realizzare un controllo di temperatura e umidità mediante il sensore DHT11.

Componenti elettronici:

  • Arduino UNO
  • DHT11

TeoriaIl DHT11 è un sensore digitale per la misura della temperatura ed umidità molto stabile e semplice da usare e configurare.
E’ un sensore di basso costo che ha un range di misurazione dell’umidità che va da 20%RH al 90%RH (con una precisione di 5%RH) e di temperatura da 0 a 50°C (con una precisione di 2°C)

Il sensore si presenta con tre pin.

Guardando il dispositivo dal lato della parte sensibile, si ha che il pin di sinistra è quello dell’alimentazione (5V), quello centrale è il GND e il destro è il PIN del segnale digitale, da collegare ad un’uscita digitale di Arduino.

Collegamento Circuitale:

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

Codice:

Per il funzionamento del dispositivo è necessario caricare la libreria DHT.h nell’ide. Successivamente va definito il tipo di dispositivo che si sta utilizzando (nel nostro caso DHT11). Tale informazione va inserita nella dichiarazione dell’oggetto DHT ( DHT dht(DHTPIN, DHTTYPE); ).

La proprietà readTemperature restituisce la temperatura in gradi Celsius come default, a meno che non si inserisce un valore booleano true come argomento. In questo caso la temperatura verrà espressa in gradi Farhenait.

La proprietà readHumidity restituisce l’umidità relativa (RH).



Personalizzazioni:

E’ possibile modificare il circuito aggiungendo un display per visualizzare i valori di temperatura e umidità.