La semplicità di utilizzo e la praticità sono le armi vincenti del kit di sviluppo, PSoC FirstTouch, proposto tempo fa dalla Cypress Semiconductor. Analizziamo più da vicino questo prodotto attraverso degli esempi che evidenziano tutte le sue periferiche e le sue potenzialità.
Come già accennato nell’introduzione, il PSoC First touch starter kit non è la solita scheda di valutazione con relativo alimentatore a corredo, ma una vera e propria “chiavetta USB”. Su tale dispositivo è possibile montare un modulo di espansione su cui sono presenti sensori tattili, di temperatura, di prossimità e di luminosità; essi permetteranno di muovere i primi passi con l’IDE PSoC Express e si potrà apprezzare quanto semplice sia la programmazione con un ambiente visuale. La porta USB di cui è dotato il FirstTouch serve, oltre che per prelevare l’alimentazione del modulo, anche per effettuare la programmare del chip. Il modulo FirstTouch viene consegnato con un firmware già precaricato. Si tratta dell’implementazione di un sensore tattile, simile agli slider presenti sui PC portatili. Dopo aver seguito la procedura di installazione dei driver, è sufficiente inserire il modulo all’interno di una qualsiasi porta USB.
Esempio 1: sensore tattile
In questo primo esempio verrà mostrato come creare un progetto tramite l’ambiente di sviluppo visuale. Si esamineranno le funzionalità di due delle periferiche presenti sul modulo add-on che deve essere inserito nel modulo: il sensore tattile ed i led. L’obiettivo è quello di far accendere un diverso led (rosso, verde o blu) in base alla posizione del dito sulla parte di PCB destinata al sensore tattile.
Creare il progetto
Per creare un nuovo progetto selezionare File→ New Project. Inserire i dati richiesti nella finestra mostrata in figura 2.
Selezione delle periferiche di input/output
PSoC Express dispone di un catalogo di dispositivi che possono essere utilizzati per acquisire dati del mondo esterno come temperatura, tensione e stato di interruttori (input) e controllare dispositivi esterni come ventole, relay e LED (output). La figura 3 mostra un dettaglio del catalogo di dispositivi selezionabili; è possibile selezionare tra il tab input ed il tab output.
A questo punto è necessario inserire il primo oggetto, ossia il sensore di capacità che servirà per rilevare la posizione del dito sul sensore e quindi per accendere il led corrispondente. Selezionare il tab input e quindi scegliere CapSense -> CapSense – CSD -> Slider CSD. Da notare che nella stessa cartella sono presenti anche dei sensori tattili indicati con la sigla CSA. La differenza tra i due consiste nel metodo di conversione analogico/digitale utilizzato. CSD indica una modulazione di tipo sigma-delta, mentre CSA si riferisce al metodo di conversione ad approssimazioni successive. Effettuare il drag and drop del componente per inserirlo nella finestra Design. L’ambiente di sviluppo richiede l’inserimento del nome di tale componente e dei relativi parametri di acquisizione, come mostra la figura 4.
E’ interessante notare che l’inserimento dell’oggetto Sensore Tattile ha provocato l’aggiunta automatica di un ulteriore oggetto all’interno dell’area di progettazione (vedere figura 5).
Facendo click su di esso compariranno nella parte destra dell’ambiente di sviluppo una serie di proprietà che fanno riferimento all’oggetto sensore tattile.
Ecco le principali:
» Numero di pin sensori. Rappresenta il numero di pin del PSoC che sono connessi allo slider, secondo lo schema di figura 6;
» Risoluzione dello slider. Maggiore è questo valore e maggiore sarà la risoluzione dello slider, ma in questa maniera aumenterà anche il rumore introdotto nella misura;
» Diplexing. Quando questa opzione è abilitata, ciascun pin del PSoC è connesso a due sensori dello slider. In questo modo si ottiene un sensibile aumento della risoluzione, a parità di numero di pin sensori utilizzati.
» Velocità della scansione. Rappresenta la velocità con cui i sensori vengono letti dal PSoC. Bassi valori di questo parametro determinano una risposta più lenta del sensore, mentre un valore troppo elevato provoca problemi di rapporto segnale/rumore degradando eccessivamente, sensibilità alle variazioni di temperatura;
» Risoluzione della scansione. Questo parametro è espresso in bit e può variare da 9 a 16 bit. Aumentandolo si migliora la sensibilità ed il rapporto S/N. Dopo aver selezionato l’oggetto di input (ossia, il sensore tattile) è il momento di decidere il dispositivo di output che sarà controllato in base ai valori assunti dal primo. L’oggetto che sceglieremo per questo primo esempio è il led tricolore presente sulla scheda di espansione del kit. Selezionare il tab di output e quindi Display -> LED -> Tri-Color Red/Green/Blue.
Definizione delle interconnessioni tra oggetti
Il passo successivo dopo aver deciso ed inserito gli oggetti, è quello di definire le relazioni che devono esistere tra essi, cioè come devono comportarsi gli output al variare degli input. Con PSoC Express si può definire una delle 3 seguenti funzioni:
■ 1-PriorityEncoder. In questo caso le uscite sono impostate sulla base di regole di priorità decise sugli ingressi. La regola a più alta priorità determinerà l’uscita. Una tale funzione corrisponde in C ad una struttura del tipo if(...){...}elseif(...){...}...;
■ 2-StatusEncoder. Si tratta di una funzione di trasferimento che imposta le uscite sulla base di regole sequenziali applicate agli ingressi. La struttura C che più si avvicina è un semplice if senza alcun else.
■ 3-TableLookup. E’ una funzione che assegna per ogni valore di ingresso un valore di uscita.
Per l’esempio in oggetto la funzione più appropriata è sicuramente la prima. Infatti il valore fornito dall’oggetto sensore tattile può variare tra 0 e 99 (se la risoluzione impostata è 100). In C la funzione di uscita sarebbe definita come riportato nel listato 1.
if Sensore_tattile_Position ==0 then RGBLED = Output1_state __OFF else if Sensore_tattile_Position <=33 then RGBLED = Output1_state __BLUE else if Sensore_tattile_Position <=66 then RGBLED = Output1_state __GREEN else if Sensore_tattile_Position <=99 then RGBLED = Output1_state __RED
Listato 1 |
Per creare questa funzione fare click con il tasto destro del mouse sul LED tricolore e selezionare Transfer function. Quindi selezionare PriorityEncoder e fare click su OK. Inserire le righe così come riportate in figura 7.
Premere OK per confermare la funzione di trasferimento. A questo punto si può notare nella finestra di design che è comparsa una linea di collegamento tra input ed output: essa rappresenta proprio la funzione appena definita.
Simulazione e verifica
L’ultimo passo prima della programmazione vera e propria del modulo è quella di simulare il funzionamento di quanto fino a questo punto definito. Ovviamente, questo passo potrebbe non essere necessario e l’utente può passare direttamente alla fase di programmazione. Selezionare il tab Simulation. Sarà mostrata la schermata riportata in figura 8.
Come si nota sono comparsi in corrispondenza di ogni oggetto dei widget, ossia interfacce che permettono di inserire dei valori di input e visualizzare valori di output. Quello relativo al sensore tattile permette l’inserimento di un valore compreso tra 0 e 99; in questo modo si simula la posizione del dito in un certo punto del sensore. Conseguentemente all’inserimento di questo valore, si noterà un variazione nel widget associato al LED tricolore. Per esempio, se si inserisce il valore 33 per l’ingresso, l’uscita avrà valore BLUE.
Programmazione del target
Se nella fase di simulazione e verifica non sono stati riscontrati errori è possibile procedere con la programmazione del chip. Selezionare Build -> Generate Project. A questo punto sarà richiesto di selezionare il modello di PSoC che si vuole programmare. Per i dettagli fare riferimento a quanto riportato nella figura 9.
In questo modo è stato generato il file HEX che deve essere inserito nella memoria flash del chip. Inserire il PSoC FirstTouch nella porta USB e selezionare Program -> PSoC Programmer. Si aprirà la schermata mostrata in figura 10.
Fare click sul tasto Program per avviare la programmazione del chip ed attendere il messaggio di avvenuta programmazione. Verificare quindi che il passaggio del dito sulla zona riservata al sensore tattile provochi l’accensione dei LED cosi come previsto.
Esempio 2: sensore di prossimità
Un’evoluzione dell’esempio precedente potrebbe essere quello di realizzare un sensore di prossimità. Esso potrebbe essere utile in differenti applicazioni, come per esempio per la realizzazione di sensori di parcheggio per l’automobile. All’interno del kit di sviluppo è presente uno spezzone di cavo blue lungo circa 5cm. Esso deve essere posizionato all’interno del connettore PRX1 presente sulla scheda di espansione e servirà da antenna omnidirezionale per rilevare eventuali oggetti presenti nel suo intorno. Quando l’oggetto è in prossimità dell’antenna si accenderà il led verde, in caso contrario si accenderà il led rosso. Come primo passo bisogna selezionare gli oggetti di input e di output. Selezionare tramite il tab Input l’oggetto Proximity – CSD e posizionarlo nell’area di progettazione. Quindi selezionare, tramite il tab Output, Display -> LED Single Color -> On/Off e chiamare l’oggetto REDLED; ripetere la stessa operazione per inserire l’oggetto GREENLED. Perché gli oggetti interagiscano tra loro è necessario definire le relazioni tra ingressi ed uscite. In questo caso sono stati inseriti due output, quindi sarà necessario inserire due differenti funzioni di trasferimento. Utilizziamo ancora una volta una funzione di tipo PriorityEncoder, come riportato in figura 11.
A questo punto è possibile effettuare eventualmente la simulazione e quindi la programmazione del chip, che permetterà di testare praticamente le funzionalità di questo sensore.
Conclusioni
Gli esempi esposti in questo articolo sono solo alcuni degli esperimenti che è possibile eseguire con questo compatto kit di sviluppo. L’elevata disponibilità di componenti di input ed output presenti in PSoC Express, rendono la programmazione davvero semplice ed intuitiva: si noti che gli esempi qui esposti sono stati realizzati senza scrivere alcuna riga di codice, quindi anche chi è alle prime armi con la programmazione di microcontrollori vi si può cimentare.
Interessante questo ambiente di sviluppo della Cypress, però dal sito del produtore il kit CY3270 FirstTouch risulta non più disponibile..