Come osservare la realtà tramite Arduino

Grazie ad Arduino ed alle sue estensioni le applicazioni elettroniche più evolute sono sempre più alla portata di tutti. Con questo articolo vedremo come acquisire immagini da una telecamera analogica tramite Arduino aprendo la strada ad innumerevoli prospettive.

 

Acquisire una immagine da un flusso di dati analogico è il primo passo per realizzare un sistema in grado di interagire con la realtà che ci circonda. Tale obbiettivo è molto ambizioso poichè richiede solitamente hardware e software altamente specializzati in grado di effettuare complesse operazioni molto rapidamente. Grazie alla shield per Arduino (PCB da collegare ad Arduino) Video Experimenter, mostrata in figura sotto, possiamo però usare Arduino per compiere questo piccolo miracolo.

Vediamo subito quali sono i principali problemi per questo tipo di operazione:

- limiti di memoria di Arduino, poichè il processing in tempo reale di un flusso di dati richiede una quantità di memoria decisamente superiore a quella offerta dal buon Arduino

- velocità del ATmega usato da Arduino, poichè quando si tratta di fare processing di immagini servono calcolatori potenti, se le immagini arrivano con un flusso cotinuo di dati analogico allora servono ancora più risorse di calcolo, quindi si deve sacrificare la qualità delle immagini per far tutto con Arduino

Da cui seguono i seguenti limiti nel risultato finale:

- le immagini acquisite avranno risoluzione limitata e saranno in bianco e nero

- la profondità di colore, cioè il numero di bit disponibili per ogni pixel (punto) della matrice che forma l'immagine acquisita è limitato, poichè più bit vogliamo più tempo richiederà la procedura di acquisizione dati e più il soggetto dovrà stare fermo per acquisire una immagine accettabile.

 

Alla fine dell'articolo si potrà scaricare il codice per acquisire immagini con 3 bit di profondità (8 livelli, cioè 2 elevato 3) ed il codice LabVIEW per la gestione lato computer.

 

In pratica vogliamo acquisire un livello dell'immagine per volta, sempre per i limiti di memoria imposti da Arduino, e mandare un livello per volta appena acquisito al computer che sovrapponendo i vari livelli ricostruirà l'immagine desiderata. Quindi sarà necessario settare opportunamento i vari livelli per l'acquisizione dell'immagine in automatico. Il programma per Arduino aspetterà il segnale per iniziare l'acquisizione, ricevuto il segnale salverà temporaneamente l'immagine per poi inviarla al computer ripetendo l'operazione per i vari livelli. Il computer aspetta di ricevere i vari livelli per ricostruire l'immagine. Il risultato finale è mostrato nelle figure sottostanti

come si può notare la qualità non è neppure comparabile a quella ottenibile con una fotocamera digitale o con un cellulare di ultima generazione ma la differenza hardware in questo contesto si fa sentire inevitabilmente.

Passiamo quindi alla lista della spesa...

- Arduino

- il modulo Video Experimenter, che con molto tempo a disposizione potremmo anche realizzare, solo che il livello di complessità è piuttosto elevato

- delle resistenze con tolleranza 1% (marrone), il valore di resistenza non conta, 82k Ohm va bene, ciò che conta è la tolleranza poichè saranno usate in un convertitore DAC con rete a scala ed abbiamo bisogno di una buona precisione

- un potenziometro

In figura sottostante è riportato lo schematico della rete a scala per il convertitore DAC da collegare ad Arduino per settare i livelli per l'acquisizione dell'immagine.

 

Il codice per Arduino e LabVIEW è scaricabile.

Con l'attuale versione del codice viene acquisito un livello dell'immagine per secondo, quindi per ogni immagine sevono 8 secondi, ciò è dovuto al modo di trasmettere i dati sulla connessione seriale, infatti al momento viene trasmesso un bit per volta invece di sfruttare gli 8 bit disponibili per ogni pacchetto.

 

In conclusione non è la soluzione definitiva per acquisire immagini tramite Arduino ma sicuramente un ottimo punto di partenza per chi volesse lanciarsi in questa attività. Il codice e lo schema proposto hanno ampi margini di miglioramento ma sono una base solida da cui partire. Le possibili estensione sono molteplici, filtrare le immagini, riconoscere oggetti, salvare direttamente i dati su SD o creare un sistema di tracking automatico degli oggetti.

La scheda Arduino disponibile da Farnell

Scarica subito una copia gratis

3 Commenti

  1. Avatar photo Emanuele 25 Luglio 2011
  2. Avatar photo Emanuele 4 Agosto 2011
  3. Avatar photo Berni 4 Agosto 2011

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend