
In questo articolo si evidenzieranno le caratteristiche del debugger/programmer MPLAB ICD 2, prodotto dalla Microchip, e dell'ambiente di svilupppo MPLAB IDE. Si riporterà poi un esempio di suo utilizzo nel campo della robotica, nello specifico di un rover esapode, progettato per l'esplorazione planetaria. Il suo obiettivo è di ricercare e raggiungere un determinato target, ne l caso specifico una palla rossa, attraverso la visione stereoscopica.



In Settings è
Un singolo passo,
MPLAB ICD 2 è un low-cost real-time debugger e programmer. Prodotto dalla Microchip, l' in-circuit debugger in esame permette di eseguire il debug di unagamma di microcontrollori PIC attraverso l'ambiente di sviluppo integrato (IDE) MPLAB®.MPLAB ICD 2 ha le seguenti caratteristiche:
– In-Circuit Debugging
– Esecuzione del codice in real-time e in single-step
– Uso di breakpoints, registri e possibilità di monitorare e modificare le variabili
– Led di diagnostica (alimentazione, occupato, errore)
– Supporta sistemi target a bassa tensione (da + 2,0 a + 6,0 V)
– Firmware aggiornabile dal PC– Memoria di lettura/scrittura e stack per il microcontrollore target
– Congelamento delle informazioni in caso di blocco
COLLEGAMENTO TARGET– PC
Il modulo ICD 2 è collegabile dal PC alla scheda target dell'utente consentendo in tempo realel'esecuzione diretta del debug In-Circuit del microcontrollore. È disponibile un'ampia gamma diconnettori d'interfaccia che consente di collegare il modulo ICD 2 al connettore femmina IC dellascheda target nei casi in cui non sia disponibile un collegamento ICD modulare adeguato:
- Cavo di interfaccia ICD
- Cavo di interfaccia USB (massima velocità 2Mbit/sec)
- Cavo di interfaccia RS-232
MPLAB ICD 2 è collegato al target tramite il cavo di interfaccia plug a sei poli, come mostrato in figura.

AMBIENTE DI SVILUPPO MPLAB IDE
L'ICD 2 è pienamente supportato dall'ambiente di sviluppo integrato MPLAB IDE, scaricabilegratuitamente dal sito della Microchip (link a fine recensione). Dopo averlo installato, per prima cosa occorre configurarlo, selezionando l'MPLAB ICD 2 comeDevice. Il dipositivo può essere selezionato sia come debugger che come pragrammer. In Settings èpossibile settare i vari parametri necessari. Importante è la tipologia di comunicazione, seriale RS232 o USB. Nel primo caso il target da programmare o monitorare deve essere necessariamente alimentato, mentre nel secondo, per tensioni non troppo elevate può essere sufficientel'alimentazione ricavata dal PC. Quando provvisto di alimentazione, l'MPLAB ICD 2 può alimentare lui stesso il target, fino ad un massimo di 200 mA con una tensione di 5 V. Creare un progetto in MPLAB IDE è molto semplice. Infatti questo software mette a disposizione il Project Wizard, una creazione del progetto guidata che ti permette di configurare vari aspetti, come il linguaggio di programmazione, le librerie, script e altro ancora. Realizzato lo script, non basta che compilarlo premendo Build All, e "scaricarlo" nel target. Una volta effettuate queste operazioni, è possibile entrare nello stato di Run, e far "girare il programma" nel pic. Ci sono diversi aspetti interessanti di questo software, ma sicuramenti i più utili sono l'utilizzodei breakpoints, con possibilità di avanzare passopasso, e la funzione Watch, che permette di osservare le variabili in tempo reale. Queste funzioni permettono una veloce identificazione di errori fatti, e di avere sempre sotto gli occhi i parametri che ci interessano.È poi possibile fare l'upload del programma dal PIC, per poi modificarlo o sostituirlo. Sono anche già disponibili i driver per Windows 7, il che rendono questo software all'avanguardia anche da questo punto di vista.
HEXAPOD ROVER
SCOPO
Personalmente ho utilizzato questo dispositivo per programmare un rover esapode. Le funzioni diquesto robottino sono state quelle di localizzare e raggiungere un target predefinito.
Debugger/Programmer MPLAB ICD 2: PASSI
L'implementazione dei "passi" ha richiestoun'attenzione molto particolare: si è visto che ilmigliore passo implementabile per un esapode èquello utilizzato dagli insetti. Un singolo passo,avanti o indietro, è composto sostanzialmente diquattro azioni, indicate in figura con le letterea, b, c e d.

Durante la prima azione un tripode,formato da due zampe sullo stesso lato del rovered una centrale sul lato opposto, è mantenuto aterra, mentre le rimanenti tre zampe vengonosollevate e mosse avanti (a). Nella secondaazione il tripode rimasto a terra viene mossoall'indietro, causando uno spostamento in avantidel rover (b). Nella terza azione il tripode cheera sollevato viene abbassato a terra, mentrequello che era precedentemente a terra viene sollevato (c).Nella quarta ed ultima azione il tripode a terra viene mosso all'indietro, generando in questo modoun secondo movimento in avanti del rover, mentre il secondo tripode viene mosso in avanti perraggiungere la posizione iniziale (d). Per un movimento all'indietro, le singole azioni vengonoinvertite.Durante questa sequenza, un lato del rover è alternativamente sostenuto da una zampa soltanto,caricata da metà del peso del robot, per la simmetria longitudinale: metà del peso si scarica infattisul lato destro, e metà si scarica sul lato sinistro. Questo non rappresenta un problema, dal momentoche nella configurazione a zampe totalmente estese (rover alzato da terra) i motori generano forza asufficienza con un buon margine di sicurezza.
MPLAB ICD 2: Telecamere e metodologia
Per far questo ho dotato il rover di duetelecamerine, montate su un supporto avente duegradi di libertà, una rotazione longitudinale e unarotazione verticale.Le telecamere che ho utilizzato sono due CAM VGA 100, di dimensioni ridotte (28 x 20 mm) e conuna alimentazione pari a 3.3 V.Per individuare l'obiettivo, nel mio caso una palla rossa, il rover compie una panoramicadell'ambiente che lo circonda attraverso delle foto jpg (7 foto coprono 180°), e ricerca la palla inbase al colore (individuazione dei pixel in un certo range RGB) e alla forma (funzione edgedetector, e funzione di Canny).

Un esempio dei risultati utillando i metodi sopracitati sono i seguenti:Una volta individuata, si calcola la distanza da essa tramite la triangolazione delle due fotoacquisite, e la direzione in base alla posizione del braccetto meccanico. Fatto questo, si dirige versoil target, ricalcolando ogni 5 passi la sua direzione e la sua distanza relativa.Un esempio del suo modo di operare è visibile nei link a fine recensione.

UTILIZZO DELL'MPLAB ICD2
Come si può immaginare, unitamente alla costruzione meccanica dell'oggetto, la parte più corposa del progetto è stata quella software (implementazione dei passi, acquisizione edelaborazione delle immagini, algoritmi di ricercadel target), ed in questo l'MPLAB ICD 2 mi èstato molto utile, perchè mi ha permesso diprogrammare facilmente il PIC, ed altrettantofacilmente controllare gli inevitabili errori fattiattraverso la sua funzione di debugger. Il linguaggio di programmazione che ho utilizzato èstato il C, implementato nell'ambiente MPLABIDE.Per programmare i PIC ho utilizzato una semplicescheda elettronica, in cui è presente un cristallino da 20 MHz, due condensatori, unaresistenza, un limitatore di tensione LM7805, un MAX 232 per la comunicazione seriale ed il connettore plug&play. Come PIC ho utilizzato tremicroprocessori della famiglia PIC16F, il modello 876A: uno per la movimentazione ed il coordinamento dei sei arti, uno per il supporto mobile delle telecamere, ed infine uno per la elaborazione delle immagini.Per tutta la gestione ho poi utilizzato la scheda diprogettazione Rabbit RCM3700, che è dotata 2 porte seriali RS232 con controllo di flusso, 2 ingressi analogici ad 8 bit, un supporto permodulo Xbee e XbeePRO, 3 led, 1 pulsante, 5connettori di espansione, una batteria di backup allitio per modulo RCM (magari oggetto di una prossima recensione).
Quindi niente da dire, davvero un ottimo debugger/programmer, facile da usare, comodo ed indispensabile per chi inizia ad avvicinarsi al mondo affascinante dei PIC.
Alla prossima recensione.
Link:
2.HEXAPOD ROVER YOUTUBE
Microchip ICD2 in vendita da Farnell.

Ciao,
bel lavoro, è un piacere leggere recensioni come le tue,
le camerine sono C328 della COMedia? con sensore omnivision 7640 ??
credo che se già non lo conosci, dovresti dare un’occhiata al progetto
http://www.cmucam.org/
specialmente la versione 3 (CMUcam3) ti può servire in future versioni del tuo bugbot
Un saluto e buon anno.
Maurizio