Usare la VGA-Cam C328 con Freebasic

Ho in mente di fare alcuni esperimenti per la “visione” elettronica e, come prima cosa, ho deciso di utilizzare un piccolo modulo con telecamera per acquisire le immagini. Tempo fa (MOLTO tempo fa) comprai un modulo VGA CAM-100 che poteva essere controllato da seriale, era molto piccolo ed era alimentato a 3.3V. Il mio modello era prodotto da Comedia, ma credo che ora sia andato fuori produzione. Ho però visto che altri modulini chiamati C328 e simili, vengono ancora prodotti da altre case. Tra le altre belle cose, questo dispositivo è in grado di produrre un file immagine in formato JPG, oltre che in “raw data” e non è cosa da poco…

Ho così realizzato un piccolo hardware di interfacciamento con il PC, che potete vedere nella foto sottostante:

L’hardware ‘filato’ per connettere il modulo alla USB del PC

Non è una gran bellezza, diciamocelo… però tenete presente che attualmente vivo in un B&B, lontano da casa e senza risorse (elettroniche). Mi sono quindi arrangiato ! Vediamo nella foto il modulo VGA (a destra), il regolatore 3.3V (in basso al centro) e l’interfaccia USB-Seriale (a sinistra). Nota bene: si DEVE usare una interfaccia USB che abbia lo switch per poter funzionare a 3.3V o 5V. In questo caso dovrà essere usata la modalità a 3.3V. In alto vediamo un altro piccolo circuitino, ma questo serve solo a tenere fermi i pin strip per i vari cavetti di collegamento. Lo schema del regolatore da USB +5V ai 3.3V necessari per il modulo VGA è il seguente:

Anche se sullo schema c’è scritto LM317, voi userete un modello equivalente con  low-drop, in grado di stabilizzare con 5V in ingresso. Io qui avevo solo quello “sbagliato”, ma in questo caso di emergenza ho dovuto adattarmi (per fortuna il consumo del modulo VGA è basso).

Veniamo adesso al software. Questo è lo screenshot del programma in funzione:

Vediamo i comandi : per prima cosa apriremo la porta di comunicazione (Com 6 nello screenshot). Il pulsante da premere sarà [Open] che poi cambierà in [Close], come si vede nell’immagine. Una volta aperta la porta seriale (l’interfaccia USB-Seriale) si cliccherà il pulsante [Sync * 60] che invia per 60 volte il pacchetto SYNC al modulo VGA. Questo comando serve a sincronizzare il modulo VGA con il programma. Di solito dopo 25 tentativi la VGA-Cam risponde e allora si può dare il comando successivo, cliccando il pulsante [Initial] che invia le impostazioni per il formato dell’immagine. Si riceverà un ACK dal modulo. Dopo clicchiamo [Pack Size] che provvede a settare il modulo perché usi pacchetti dati da 32+6 bytes (ho tenuto bassa la quantità in previsione di un utilizzo di microcontrollore con poche risorse). Anche qui riceveremo un Ack, come si vede nello screenshot. Ora possiamo dare il comando [Snapshot] con cui il modulino “scatterà una foto” in formato 640×480. Dopo aver ricevuto l’Ack, clicchiamo finalmente il pulsante [Get Pic] e così inizierà la trasmissione dei dati relativi allo Snapshot memorizzato. A fine trasferimento, se tutto è andato bene, sulla directory di lavoro del programma troveremo il file jpegout.jpg, con la foto scattata. Qui sotto potete vedere un esempio di tale file. Sono io che sto provando il software !

Ho deciso di pubblicare l’intera cartella di progetto, contenente sia l’eseguibile sul path /release/Vga_Camera.exe, sia il file sorgente in FreeBASIC (con FireFly Visual Designer) sul path /forms/Form1.frm, così chi vorrà potrà modificare / migliorare il software a suo piacimento. Consiglio caldamente di leggere il manuale del modulo, disponibile in PDF sul sito SparkFun al link: C328_UM.pdf .

Si noti che, dopo qualche secondo senza inviare comandi, il modulo VGA si scollega ed è quindi necessario ripetere la procedura di Sync e successive. Se invece si continuano a dare comandi [Snapshot] e [Get Pic] il modulo rimane collegato e continua a fare il suo lavoro. Il tempo di trasmissione di una immagine JPG 640*480 a 115200 BPS è di circa 10 secondi.

Per quanto riguarda l’hardware, i collegamenti sono estremamente semplici. Di sotto nell’immagine potete vedere i 4 fili in uscita dal modulo:

Il filo rosso [3.3V] andrà collegato all’uscita del regolatore 3.3V ; il filo giallo TXD verrà collegato al pin RXD del modulo USB-Serial ; il filo verde RXD andrà al pin TXD del modulo USB-Serial e infine il filo nero GND andrà collegato sia al pin GND del modulo USB-Serial che al GND del regolatore a 3.3V. Tutto qui. Notate che ho usato un connettore USB “nudo” per prelevare direttamente i 5V per il regolatore. Lo vedete di fianco all’interfaccia USB-Serial.

Clausola di non assunzione di responsabilità.
Il programma o software descritto, liberamente prelevabile dal sito, è da considerarsi una “demo” gratuita e pertanto l’autore Emilio P.G. Ficara non fornirà alcun supporto, né si assumerà alcuna responsabilità per ogni eventuale problema, danno o conseguenza che dovesse presentarsi nel download o nell’esecuzione dell’applicazione.
Cliccando questo link per effettuare il download del file implicitamente dichiarate di aver letto e capito la clausola di non assunzione di responsabilità e di accettarla.

Verificate sempre il checksum MD5 dei files che scaricate ! In questo caso deve essere: 6933806A278014FC2E2E379F86922D88 ; se è diverso, il file è corrotto o non è quello originale, quindi non scompattatelo e buttatelo via ! Se invece è tutto ok, potete scompattarlo (è richiesta una password che è: eficara).

Potete usare l’eseguibile anche su una chiavetta di memoria USB, in quanto non ha bisogno di installazione.