CPUStick recensione

CPUStick recensione

Quando ho saputo di essermi aggiudicato la coppia di CPUStick in cambio di una recensione delle stesse, smaltito l’immediato entusiasmo, mi sono subito documentato per capire nel dettaglio come fossero fatti questi dispositivi e le loro reali potenzialità.

Naturalmente il primo passo è stato visitare il sito CPUstick scoprendo con sorpresa, seguita da un pizzico di preoccupazione, che in fondo i contenuti del sito non erano molto più ricchi di cosa già era stato scritto nelle pagine di Elettronica Open Source. Il sito, non molto curato nell’aspetto grafico, si presenta in una forma semplice, lineare e diretta, fornisce subito una panoramica globale dei moduli CPUStick e dello StickOS, l’ambiente di sviluppo con il quale vengono programmati tali dispositivi. Finalmente, raggiunta l’area download del sito, ecco trovato ciò che stavo cercando:

Il manuale del modulo CPUStick con relativo schema elettrico.

http://www.cpustick.com/cpustick.htm

Il manuale del sistema operativo

http://www.cpustick.com/stickos.htm

Scaricati entrambi e ricevuti i moduli inizia la mia avventura con i CPUStick.

CPUStick – Recensione

Analisi della board
Il CPUStick si presenta come un modulo dalle dimensioni contenute (10 x 2,5 cm), al centro è evidente la presenza del MCU, si tratta di un coldfire MCF52252 della Freescale, che sostanzialmente gestisce tutte le funzioni del modulo.

Il secondo componente che salta all’occhio è l’MC13201 un ricetrasmettitore radio che viene utilizzato per lo scambio di dati con altri CPUStick utilizzando il protocollo zigbee. A parte la sezione di alimentazione, il connettore usb, i connettori di input-output, uno switch e due led, sul resto della board trova posto solo qualche altro componente passivo e l’antenna, stampata sulla scheda stessa.

In effetti, considerata l’esiguità dei componenti presenti, il tutto poteva essere realizzato in uno spazio ancora più contenuto, ciò che è stato determinante per le dimensioni finali la scelta di utilizzare quattro gruppi di 12 pins (passo 0,1”) per connettere la CPUStick con il mondo esterno. Questa scelta, se da un lato costringe ad aumentare un po’ le dimensioni globali del modulo, dall’altro viene incontro all’utilizzatore, soprattutto l’hobbysta, che può facilmente effettuare tutti i collegamenti necessari senza rischiare intoppi causati da cortocircuiti tra pins troppo vicini o l’uso di connettori particolarmente complessi e di difficile reperimento.

Iniziamo
Leggendo i due manuali precedentemente indicati e dando un’occhiata agli esempi applicativi presenti sul sito, la prima cosa che mi ha lasciato sorpreso è l’estrema semplicità con cui si dice si possa operare con tali moduli. Senza dilungarmi ulteriormente nello studio del circuito elettrico decido di iniziare a provare questi moduli ed il relativo ambiente di sviluppo. Mi procuro un cavo mini usb (come al solito quando servono non si trovano mai!!!) e collego la CPUStick ad un PC, Windows XP rileva immediatamente una nuova periferica ed installa in automatico i driver necessari creando una porta com virtuale a cui assegna il riferimento di COM3. Avviato hyper terminal e creata una connessione sulla COM3 (115000-8-N-1), un click sul pulsante di chiamata e viene immediatamente instaurata la connessione senza alcun problema, mi basta infine premere il tasto INVIO per ricevere il messaggio di benvenuto così come indicato nel manuale.

Finora è andato tutto liscio senza il minimo intoppo, proseguiamo.
Volendo fare le cose per gradi, prima di partire con un progetto “tutto mio”, decido di implementare uno degli esempi presentati sul sito. Avendo in passato avuto a che fare con apparati zigbee che, nonostante le caratteristiche millantate, presentavano una evidente instabilità della connessione sono molto incuriosito da questo aspetto del CPUStick e quindi opto per il terzo tra gli esempi descritti sul sito.

Test1
In questo esempio vengono usati due CPUStick che comunicano tra loro attraverso il ricetrasmettitore zigbee, in pratica la luminosità di un led connesso ad uno dei due moduli viene comandato da un potenziometro connesso all’altro modulo. Per velocità di implementazione ho ulteriormente semplificato il circuito sostituendo il potenziometro con un pulsante e quindi comandando il led in modalità on-off.
Di seguito le istruzioni utilizzate:

DEVICE 1
10 dim led as remote on nodeid 1 
20 dim pulsante as pin dtin0 for digital input
30 while 1 do
40 let led = pulsante
50 endwhile
DEVICE 2
10 dim led as pin dtin0 for digital output
20 while 1 do
30 endwhile

ATTENZIONE
Affinché quanto sopra funzioni correttamente, ed anche l’esempio riportato sul manuale, prima di scrivere le righe di programma, è necessario assegnare ad ogni modulo il proprio ID, e ciò si fa con l’istruzione nodeid.


Con estrema soddisfazione, eseguiti i programmi nei due device, funziona tutto come previsto. Mi ha molto colpito il modo “semplice” con cui vengono scambiate le informazioni tra due o più CPUStick. Per esempio, se dal DEVICE 1 voglio conoscere il valore di un dato presente sul DEVICE 2 non devo far altro che dichiarare una variabile locale sul DEVICE 2 che contiene il dato (come è classico) e dichiarare una seconda variabile locale sul DEVICE 1 come puntatore alla variabile dato presente sul DEVICE 2. Una gestione davvero semplificata ed intuitiva anche per chi è alle prime armi con la programmazione di dispositivi elettronici.

Test 2
Ancora più incuriosito di scoprire i limiti di questo link zigbee, decido di effettuare un test sulla portata del sistema (distanza entro cui i due dispositivi dialogano). Per fare ciò decido di fare questo semplice test: programmo il DEVICE 1 affinché faccia lampeggiare con frequenza di 1 Hz un led presente sul DEVICE 2. Lascio il DEVICE 1 connesso al PC attraverso il cavo USB e, alimentando il DEVICE 2 attraverso un alimentatore esterno, lo porto in giro per casa verificando fino a che distanza il led continua a lampeggiare e quando invece perde il collegamento con il DEVICE 1 (smette di lampeggiare).
Queste le istruzioni utilizzate:

DEVICE 1
10 dim led as remote on nodeid 1
20 while 1 do
30 let led = !led
40 sleep 500 ms
50 endwhile
DEVICE 2
10 dim led as pin dtin0 for digital output
20 while 1 do
30 endwhile

Ecco i risultati.
Ho piazzato il Device 1 collegandolo al pc in un angolo dell’appartamento ed ho spostato il secondo device prima all’interno della stessa stanza, poi nella stanza adiacente ed infine in tutte le altre stanze dell’appartamento. In tutte le situazioni la connessione si è mantenuta attiva (il led continuava a lampeggiare) inoltre spegnendo ed accendendo il modulo questo si riconnetteva in pochi istanti.
Ci tengo a precisare che tutti i test di cui sopra sono stati effettuati all’interno di una comune abitazione domestica in cui sono presenti una rete wifi, elettrodomestici, un paio di cellulari in giro per casa e tutte le altre fonti di disturbo che normalmente si trovano in ogni abitazione.

Recensione CPUstick – Conclusioni

Che dire, personalmente sono abbastanza soddisfatto delle caratteristiche rilevate, come dicevo ho avuto esperienze (purtroppo negative) con altri moduli zigbee, risultava difficile stabilire la connessione tra i moduli e bastava un niente perché si disconnettessero.

I moduli sono ben studiati ed è facile sia utilizzarli stand alone che connetterli ad una board esterna attraverso i pins di interfacciamento. Azzeccata anche la scelta della sezione di alimentazione, attraverso 2 semplici jumper si può facilmente selezionare la modalità di alimentazione preferita. Ciò, soprattutto in fase di prototipazione e test, permette di operare in modo estremamente rapido.
Riguardo lo StickOS purtroppo non ho avuto il tempo di sbizzarrirmi troppo con la programmazione testandone a fondo le caratteristiche.

E’ intuitivo ed apparentemente abbastanza robusto, inoltre, il fatto di essere un sistema embedded semplifica di molto la programmazione e ne permette l’utilizzo su qualsiasi piattaforma. Concludendo lo reputo un ottimo prodotto per la prototipazione e la produzione in piccole serie. Vista la presenza del ricetrasmettitore zigbee si presta molto per lo sviluppo di soluzioni domotiche ed in generale per dispositivi che necessitano di un link wireless operante in alcune decine di metri.

L’unico dubbio che mi rimane è il seguente: il protocollo zigbee prevede che i device possano fungere contemporaneamente da terminali e da router, questa caratteristica permette di creare una “vera” rete di dispositivi consentendo di aumentare la superficie di copertura. Non so se i moduli CPUStick prevedono tale funzionalità, nella documentazione non è ben specificato e purtroppo con soli due moduli non è possibile scoprirlo.

Errata Corrige
Nella documentazione tecnica scaricata dal sito segnalo un errore nel documento “CPUStick™ User’s Guide v2.02”, nella figura a pag. 3 sono invertite le etichette dei connettori J6 e J7, le indicazioni corrette sono quelle riportate dalla serigrafia presente sulla board.

La mia idea
Acquisita un minimo di dimestichezza con i CPUStick e valutate meglio le caratteristiche posso finalmente dare forma a quella che era la mia idea originale che mi aveva permesso di partecipare a questo concorso. Per chi non lo ricorda, il mio progetto prevedeva di realizzare un “monitor” per un pannello solare termico in uso per la produzione di acqua calda sanitaria. Lo scopo è quello di monitorare l’attività dell’impianto, evidenziando problemi di funzionamento (superficie pannello sporca, temperatura boiler troppo elevata, ecc..), ed eseguire un’attività di raccolta dati sui parametri operativi dell’impianto stesso.

In tale progetto vengono impiegati due moduli CPUStick, uno locale, collegato al pannello tramite alcuni sensori, ed uno remoto, che riceve i dati tramite il link zigbee e li invia ad un pc a cui viene connesso tramite la porta seriale. Purtroppo non ho ancora avuto il tempo per analizzare il modulo solare da vicino, ed in questo periodo il clima non è di certo dei più favorevoli, perciò non ho ancora definito quali sensori utilizzerò nel progetto.

L’ipotesi è di utilizzare due sonde pt100 per rilevare la temperatura dell’acqua in ingresso ed internamente al boiler, un sensore integrato per la temperatura ambientale (tipo LM335). Per l’irraggiamento solare pensavo di utilizzare un piccolo pannello fotovoltaico che, abbinato ad un regolatore di carica e ad un pacco batterie potrebbe anche garantire l’alimentazione di tutto il sistema.
Questo uno schema a blocchi.

Tutti i dati vengono inviati al secondo CPUStick che li visualizza su un display e li trasferisce attraverso il collegamento seriale ad un pc con la funzione di server di archiviazione. Su questo pc sarà in esecuzione un servizio web che permetterà di visualizzare i dati ed effetuare le query desiderate sull’intero archivio. Il servizio, accessibile dalla rete locale, attraverso un router ed una connessione internet sarà disponibile su tutto il web.
Di seguito lo schema funzionale di questa seconda parte del sistema.

STAMPA     Tags:, ,

19 Comments

  1. Emanuele 20 febbraio 2012
  2. Vittorio Crapella 2 gennaio 2012
  3. Emanuele 2 gennaio 2012
  4. Vittorio Crapella 2 gennaio 2012
  5. matrobriva 14 aprile 2011
  6. giuskina 28 febbraio 2011
  7. Alex87ai 28 febbraio 2011
  8. Alex87ai 24 febbraio 2011
  9. linus 24 febbraio 2011
  10. Fabrizio87 24 febbraio 2011
  11. Fabrizio87 24 febbraio 2011
  12. giuskina 24 febbraio 2011
  13. stewe 24 febbraio 2011
  14. mingoweb 24 febbraio 2011
  15. gaetech45 25 febbraio 2011
  16. giuskina 26 febbraio 2011
  17. Alex87ai 26 febbraio 2011
  18. Fabrizio87 26 febbraio 2011
  19. Alex87ai 27 febbraio 2011

Leave a Reply