Fisica generale 1: moto dei proiettili con Arduino e servomotore

Per il corso di Fisica Generale I, ci è stato chiesto di mettere su un piccolo esperimento fisico: in particolare, si è trattato dello studio del moto dei proiettili. Ciò che ho sviluppato e vi propongo è un semplice circuito che, grazie all’utilizzo di un servo motore a cui è collegato un “cannone”, consente di impostare con facilità e precisione l’angolo di tiro: in questo modo è facile studiare come varia il moto del proiettile al variare di tale angolo.

Per realizzare il circuito occorre un servomotore, un display LCD (opzionale) e, ovviamente, Arduino. Per il collegamento relativo al display LCD, rimando allo specifico articolo; il servomotore va collegato ad un pin digitale dell’Arduino (io ho utilizzato il pin numero 7).

Il codice , che è possibile leggere qui, prende in input il valore dell’angolo da seriale, aggiorna il display e imposta il servomotore.

IMG_20141219_122123 IMG_20141215_105034

IMG_20141218_145533Stay tuned!

Annunci

KnockBox – (1) Introduzione

Quello di oggi è il progetto più complicato che ho realizzato fino a questo momento: una scatola la cui serratura si apre solo quando vi si batte sopra con le nocche riproducendo un determinato ritmo. Non si tratta di un miracolo, né di magia nera: è solo una applicazione delle infinite possibilità dell’elettronica.

Data la difficoltà del progetto, ho diviso l’esposizione del progetto in tre parti: l’introduzione (quella che stai leggendo adesso), una discussione sulla componente elettronica e software ed una sul sistema di chiusura.

L’intero sistema si basa sull’utilizzo di uno strumento chiamato “piezo”: oltre ad essere usato per riprodurre suoni di una certa tonalità può anche essere utilizzato come sensore (vedi How to – Sensore piezoelettrico).

Questo è l’aspetto della facciata della scatola: analizziamola nel dettaglio per spiegare il funzionamento di KnockBox.KnockBox_Scheme

  • L’interruttore (1) collega il circuito elettrico della scatola all’alimentazione, composta da 4 pile stilo AA da 1.5V.
  • La scatola all’accensione è chiusa, ed è pertanto acceso il LED rosso (2).
  • Per aprire la scatola bisogna battere con le nocche all’interno della “Knock Zone” (5), ovvero la zona che corrisponde alla posizione del sensore.
  • Ad ogni input ricevuto, il LED blu (4) si illuminerà.
  • Se l’input ricevuto corrisponde al ritmo registrato (per ogni tocco è prevista una tolleranza di 150ms), allora la serratura si aprirà, e resterà acceso il LED verde (3).
  • Per richiudere la serratura, bisogna chiudere il coperchio e premere il pulsante di chiusura (6). Il LED rosso (2) tornerà attivo.
  • E’ possibile anche registrare un nuovo ritmo: per prima cosa, bisogna sbloccare la serratura, riproducendo il ritmo registrato. Una volta fatto, basta premere il pulsante di registrazione (7) e battere nella Knock Zone (5) seguendo il nuovo ritmo. Fatto ciò, il ritmo ricevuto verrà riprodotto. Se si vuole procedere a salvare il nuovo ritmo, premere nuovamente il pulsante di registrazione (7). Altrimenti, premere il pulsante di chiusura (6) per annullare l’operazione.
    • Se si decide di salvare il nuovo ritmo, la serratura si chiuderà automaticamente.
    • Se si annulla il processo, la serratura rimarrà aperta.
  • Il tasto di riproduzione (8) consente di ascoltare il ritmo registrato. Può essere utilizzato solo se la serratura è aperta.

Attenzione:

  • Il ritmo registrato non può essere superiore a 10 intervalli (11 tocchi).
  • La sequenza di input si considera terminata quando sono trascorsi 3 secondi dall’ultimo tocco o quando si è raggiunto il limite massimo di 10 intervalli.

Nel prossimo articolo vedremo come assemblare il circuito elettrico e discuteremo il codice sorgente.

Stay tuned!

Quiz controller

Oggi costruiremo un controller per un quiz a risposte multiple. Si tratta di un progetto molto semplice, ma che può essere molto divertente da utilizzare per sfidare agli amici a colpi di domande a risposta multipla.

Procuriamoci il materiale necessario. Abbiamo bisogno di:

  • 3 LED di colori diversi;
  • 3 resistenze da 220Ω;
  • 3 pulsanti.

L’idea è questa: alla pressione di uno dei pulsanti, il LED corrispondente si accende, e tramite porta seriale viene inviata l’informazione su quale pulsante è stato premuto, e quindi quale risposta è stata scelta: A, B, o C.

I (pochi) componenti vanno collegati in questo modo:

Quiz_scheme

Qui è possibile trovare il codice sorgente. La sua unica funzione è quella di inviare tramite porta seriale il valore ‘0’, ‘1’, oppure ‘2’ in base a quale tasto è stato premuto. La scelta viene abilitata solo quando si riceve un segnale di “ok” tramite porta seriale, che annuncia che la domanda è stata posta ai concorrenti.

Di seguito qualche foto del controller:

Quiz 1 Quiz 2 Quiz 3Stay tuned!

Lampadina multi-colore

Rieccomi qui, per mostrarvi come realizzare una “color mixing lamp”: una lampadina che cambia colore.

Il progetto è molto semplice, così come il materiale necessario:

  • un LED RGB;
  • tre resistenze da 220Ω;
  • cavi di connessione

Basta collegare il LED al GND e all’Arduino tramite le resistenze. Questo lo schema del circuito:

ColorMixingLamp Circuit Scheme

LED RGBRGB LED

Questo particolare LED è dotato di 4 pin: tre per i rispettivi colori primari rosso, verde e blu, e il quarto è il catodo. Creando una differenza di voltaggio sui pin (connessi all’Arduino tramite resistenze da 220Ω), il LED oscillerà tra i tre colori. Il piede più lungo è l’anodo.

Pulse Width Modulation

Il LED RGB ovviamente può mostrare più dei tre colori primari: basta modificare il voltaggio applicato ai pin (il valore dei colori varia da 0 a 255).

Per far ciò, viene utilizzata la tecnica Pulse Width Modulation, o PWM. E’ un procedimento che consiste nel cambiare molto rapidamente l’output sul pin da HIGH a LOW, per un certo periodo di tempo. E’ molto simile al funzionamento dei film: una serie di immagine scorre molto rapidamente, creando l’illusione del movimento.

La percentuale di tempo in cui il pin è su valore HIGH si chiama duty cicle. Più è alto il valore del duty cicle, più è alto il voltaggio applicato sul pin, e, di conseguenza, il valore del colore corrispondente.

Pulse Width Modulation

La scheda che utilizzo, Arduino Uno, è dotata di sei pin predisposti al PWM (pin digitali 3, 5, 6, 9, 10 e 11), che possono essere identificati dalla tilde ~ posta vicino al numero del pin sulla scheda.

Software

Utilizzeremo due programmi:

  • lo sketch Arduino, che legge terne di valori nel formato (r;g;b) dalla porta seriale e illumina il led del colore inviato (ad esempio la stringa “255;0;0” per il rosso);
  • lo sketch Processing che invia tramite porta seriale la stringa con i valori rgb del colore selezionato dall’utente.

Clicca qui per scaricare il pacchetto completo.

Questo è il risultato finale:

ColorMixingLamp - Finished

Stay tuned!

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!