How to – Sensore piezoelettrico

Salve a tutti, oggi vedremo come utilizzare un piezo, un dispositivo che vibra quando riceve energia elettrica: vibrando, smuove l’aria intorno a sé, creando onde sonore. Tuttavia, è ancor più interessante vedere come sia possibile utilizzare lo stesso strumento per rilevare, ad esempio, un colpo di nocche – per questo motivo, esso viene anche chiamato knock sensor.

Piezo

Tale strumento utilizza il cosiddetto effetto piezoelettrico: è capace, cioè, di generare una differenza di potenziale quando è soggetto ad una deformazione meccanica.

Piezoelectric effect

Creare onde sonore

Per prima cosa, vediamo in che modo sia possibile emettere onde sonore. Modificando il voltaggio applicato al piezo, possiamo controllare la frequenza delle onde emesse.

Il circuito è semplicissimo: basta collegare il piezo al ground e ad un pin digitale dell’Arduino.

Questo è lo sketch: utilizza la funzione tone() per emettere onde sonore di data frequenza (nel nostro caso 1500) per un certo periodo di tempo (nel nostro caso 2 secondi). Il piezo è stato collegato al pin digitale 8; se si cambia pin, va modificato il valore della costante piezoPin con il valore corretto.

Knock sensor

Ma come già detto, il piezo può essere utilizzato anche come sensore. Il circuito è stato leggermente modificato:

Knock sensor scheme

L’unica differenza è la presenza della resistenza da 1 MegaOhm. Attenzione: adesso il sensore è collegato ad un pin analogico (A0).

Questo lo sketch: ogni volta che il sensore riceve un colpo, appare la scritta “Knock!”. Vengono presi in considerazione i valori maggiori della soglia 100 in modo da evitare che piccoli spostamenti siano interpretati come un colpo. Consiglio di non colpire direttamente il sensore ma di appoggiarvici un’altra superficie.

Stay tuned!

How to – LCD, caratteri personalizzati

Nell’ultimo post abbiamo imparato come interfacciare l’Arduino con un LCD. Adesso vedremo come sia possibile creare caratteri personalizzati da mostrare sullo schermo.

Ogni cella in cui è diviso il display è composta da una griglia di 5×8 pixel (5 colonne e 8 righe). Tramite codice, è possibile creare nuovi caratteri, operando direttamente sui pixel. Ad esempio, il carattere “omega” (Ω), può essere suddiviso in pixel come in figura:

LCD custom character

Come potete notare, il carattere è descritto da un’array di 8 byte, che rappresentano le righe: ogni byte contiene invece le informazioni per le colonne. “1” è il pixel acceso, “0” il pixel spento.

Per caratteri molto grandi, che non rientrano nella griglia 5×8, è possibile utilizzare una combinazione di due o più caratteri.

Questo è un semplice sketch con l’utilizzo di caratteri personalizzati. Utilizza la funzione createChar() della libreria LiquidCrystal.

LCD display custom character

Stay tuned!

How to – LCD, interfacciarsi con Arduino

Salve a tutti, oggi vedremo come utilizzare un display a cristalli liquidi. Io utilizzo un LCD Hitachi HD44780, un display 16×2 (16 colonne e 2 righe, per un totale di 32 caratteri) economico e facile da reperire.

Il display è dotato di 16 pin in totale: 2 per l’alimentazione, 2 per la retroilluminazione, 1 per la regolazione del contrasto, 3 linee di controllo e 8 per l’effettiva scrittura di dati. Tuttavia, in questo post trasferiremo i dati a 4bit, e quindi di questi ultimi ne utilizzero soltanto 4. Analizziamo i pin nel dettaglio.

Funzioni pin

Di seguito la tabella con nome e funzione di ogni pin:

Pin number Symbol Function
 1  Vss  GND
 2  Vdd  +5V
 3  V0  Controllo contrasto
 4  RS  Selezione registro
 5  R/W  Modalità read/write
 6  E  Abilitazione scrittura registri
 7  D0  Data bus line
 8  D1  Data bus line
 9  D2  Data bus line
10  D3  Data bus line
11  D4  Data bus line
12  D5  Data bus line
13  D6  Data bus line
14  D7  Data bus line
15  BL+  +5V per retroilluminazione
16  BL-  GND per retroilluminazione

Di seguito una più accurata descrizione di alcuni pin:

  • Il pin 3 (V0) viene di solito collegato ad un potenziometro in modo che l’utente possa applicare una variazione di tensione (da 0 a +5V) in modo da far variare il contrasto.
  • Il pin 4 (RS) è utilizzato per controllare in quale memoria dell’LCD si intende scrivere. Si possono selezionare il registro dati, che mantiene ciò che andrà sullo schermo, o il registro delle istruzioni, che è dove l’LCD guarda per sapere cosa fare.
  • Il pin dal 7 al 14 (D0-D7) sono le linee dati che inviano o ricevono informazioni dai registri dell’LCD.

Per maggiori informazioni consultare il datasheet.

I collegamenti

Dato il numero di pin, avremo un bel po’ di cavi da gestire, ma non fatevi spaventare. Ecco lo schema:

LCD scheme

Questo è il codice di prova, ricavato dal tutorial sul sito ufficiale di Arduino. Utilizza la libreria LiquidCrystal.

LCD - Hello world

Stay tuned!

How to – Sensore ad ultrasuoni HC-SR04

Salve a tutti, oggi vedremo come utilizzare un sensore ad ultrasuoni HC-SR04. Si tratta di uno strumento che calcola le distanze misurando il tempo impiegato dalle onde sonore emesse da una sorgente a tornare indietro, dopo aver incontrato un ostacolo che le riflette; da questa informazione è possibile misurare la distanza dell’ostacolo dal sensore. Il fascio di onde sonore emesso ha forma conica e lo stesso vale per le onde riflesse da un ostacolo; di conseguenza, il sensore riceve riflessioni da diversi oggetti, ed è dunque incapace di distinguere un oggetto dall’altro.

Il sensore HC-SR04 è in grado di misurare correttamente distanze comprese tra 2 centimetri e 4 metri, con un errore di pochi millimetri. Per maggiori informazioni, è possibile consultare il datasheet.

HC-SR04 sensor

Calcolo della distanza

La velocità del suono varia in base alla temperatura dell’ambiente. Ipotizziamo di trovarci a temperatura 20°C: la velocità v del suono è 343,4 m/s. Il sensore restituisce il tempo misurato in microsecondi (µs); tuttavia, è utile calcolare la distanza in cm. Calcoliamo quindi la velocità del suono in cm/µs: 1 m/s = 10^2 cm / 10^6 µs = 10^-4 cm/µs => V = 343,5 m/s * 10^-4 = 3,4*10^-2 cm/µs. Adesso, calcoliamo lo spazio percorso dall’onda sonora: s = v*t = 3,4*10^-4 * t. Tuttavia, bisogna tenere conto che l’onda sonora percorre lo spazio s due volte, andata e ritorno. Quindi, la formula finale per il calcolo della distanza è:

S = 1,7 * 10^-2 * t

Il sensore HC-SR04

Il sensore HC-SR04 dispone di 4 pin: Vcc (+5V), Trigger, Echo, GND. Si invia un impulso alto sul pin Trigger per almeno 10 microsecondi, in modo che il sensore invii il ping sonoro e aspetti il ritorno delle onde riflesse. Il sensore risponderà sul pin Echo con un impulso alto di durata corrispondente a quella di viaggio delle onde sonore. Per sicurezza, si aspettano in genere 60 millisec per far si che non vi siano interferenze con la misura successiva.

HC-SR04 sensor schema

Bisogna collegare il pin Vcc e GND rispettivamente all’alimentazione da 5V e al ground, e i pin Trigger ed Echo a due pin digitali dell’Arduino.

Questo lo sketch che calcola e mostra la distanza misurata dal sensore: utilizza i pin 7 per il Trigger e 8 per l’Echo.

Stay tuned!