Monday 4 February 2013

"CharlieSt Shield" for Stellaris Launchpad... by C/D


Se avete uno Stellaris sicuramente vi farebbe comodo uno schermo e qualche pulsante in più, ma senza sprecare troppo spazio o troppe connessioni con le porte disponibili. Se siete di questo avviso di sicuro desterà il vostro interesse questo progetto.
Con l'intenzione di rispettare i propositi appena descritti, nella progettazione di questa shield (o BoosterPack...) si è scelto di utilizzare lo schema elettrico della matrice charlieplex.

In sintesi, la matrice charlieplex, è un tipo di schema che minimizza i collegamenti tra i leds e lo Stellarpad, adottando una logica in tre stati, diversa rispetto a quella tradizionale.

Sono state usate solo 6 porte (PA_7, PA_6, PA_5, PE_0, PE_5, PE_4) per controllare i 25 leds della matrice; inferiori ai 30 leds pilotabili con i pins scelti e sufficienti a realizzare una matrice 5x5.
Questo permette di usare diverse combinazioni di uscita, in fase di sviluppo del software, per lo stato off dei leds durante il refresh della matrice.

Sono stati aggiunti 4 nuovi pulsanti, che si aggiungono ai 2 pre-esistenti (reset a parte), in posizione destra e sinistra in modo da essere simmetrici rispetto al centro della shield dove è posta la matrice e due feritoie, tramite cui con un paio di cilindri percussori, si può accedere ai pulsanti sottostanti dello Stellarpad molto agevolmente.

Minima componentistica (non sono presenti altri componenti) e massima accessibilità, anche grazie ad un attento studio del design.

Non solo, tramite l'apposita feritoia, anche il led RGB è visibile dall'alto; per cui questa shield diventa una naturale estensione di tutto ciò che è già presente sul launchpad, occupando il minimo spazio e creando un vano (tra shield e launchpad) sfruttabile ad esempio per l'alloggiamento di una futura batteria.

Vi lasciamo alle immagini del montaggio ed all'allegato che riporta una prima versione (con alcune demo) del software di pilotaggio. Il progetto vuole essere open hardware, per cui saranno presenti anche gli schemi in dettaglio.

Alla prossima!























Allegati:
Charlieplexing_Shield0_2.rar
CharlieSt_modelA.rar

12 comments:

  1. davvero un ottimo lavoro, ma toglietemi una curiosità
    per controllare 25 led con 6 pin, usate la tecnica del charlieplexing, che però richiede che i pin di controllo siano 3-state, 1/0/disconnesso
    non vedo chip esterni, avete implementeto questa cosa direttamente nel programma sul chip?

    ReplyDelete
  2. Esattamente, ha descritto bene la logica "3-state, 1/0/disconnesso" e confermiamo che tutto è gestito tramite software.
    Il compilato richiede l'IDE Energia, di cui si è accennato nei precedenti posts, che si utilizzerà spesso in futuro per la semplicità d'uso.
    Per ora non abbiamo trovato il tempo di realizzare un video dimostrativo, ma il demo code postato lo si può utilizzare subito su breadboard acquistando solo i 25 leds e seguendo lo schema elettrico realizzato su CadSoft Eagle.

    ReplyDelete
  3. dopo aver postato la domanda, ho ragionanto e mi sono risposto da solo. il fatto del 3state viene natrale in un uC, perchè settando un pin come input è come se lo si disconnettesse dal circuito.
    ottima scelte Energia, lo uso anchio, sia perchè vengo da arduino, sia perchè gli strumenti consigliti dalla TI sono poco user friendly.
    sono ansioso di vedere un video dimostrativo. avete pensato a qualcosa tipo game of life, space invaders, tetris, snake?

    ReplyDelete
  4. Ogni potenziale idea di sviluppo potrebbe essere presa in considerazione, forse non il retro gaming però! Nulla toglie che chi lo volesse fare sarebbe ben accetto. Stiamo pensando più ad applicazioni mobile, non appena studieremo un modo adeguato per alimentare lo stellarpad che non sia solo tramite usb. Come accennato il vano che si crea tra shield e stellarpad è sufficiente ad alloggiare una batteria. Solo che non vorremmo adottare la soluzione qui proposta http://ow.ly/hqOx6, pensiamo più ad un convertitore dc-dc. Ci stiamo lavorando...

    ReplyDelete
  5. io per il momento ho il Launchpad msp430, e non vedo problemi ad alimentarlo con una batteria da 3.7, ma probabilmente un dc-dc è la cosa migliore.
    ora come ora non vi viene in mente un'applicazione mobile per questa shield, ma confido di vederne presto ;)

    ReplyDelete
  6. Non possiamo testare la shield su MSP430, semplicemente perché non ne possediamo una, ma lo schema è stato ideato per risultare compatibile anche con la precedente versione del launchpad (almeno in parte). Sarebbe interessante sapere se è così, forse non corrisponderà uno o entrambi i cilindri percussori, ma per il resto dovremmo esserci.

    ReplyDelete
    Replies
    1. mi hai frainteso, non intendevo dire questo, ma che entrambe possono tranquillamente essere alimentate una una LiPo da 3.7
      e comunque qusta shield non è compatibile, perchè il launchpad per msp430 ha sui lati una sola striscia di strip, quindi andrebbere modificata. cosa che probabilmente farò =)

      Delete
    2. In realtà, le due strip esterne sono alla stessa distanza nel modello MSP430 e Stellaris, per questo molti boostepack possono essere montati indifferentemente su l'uno o su l'altro modello (http://ow.ly/ht1SX reference).
      Solo quelle interne non sono accessibili sul modello MSP430, perciò è necessario bypassare sulle porte ancora disponibili del MSP430 (scegliendo quali) tutti i collegamenti previsti sulle strip più interne.

      Non è necessario ridisegnare il tutto, basta qualche jumper!

      Delete
    3. hai perfettamente ragione. spero di dedicarmi al più presto alla stampa.

      Delete
  7. ciao ragazzi, sono tornato =D mi serve un consiglio!
    sto realizzando un progetto con arduino, e a un passo alla fine mi sono reso conto di aver praticamente esaurito i pin. è un problema enorme, e mi sono ricordato di quanto appreso sul charlieplexing grazie al vostro articolo. in pratica un con singolo pin, devo polarizzare un transistor quando è nello stavo alto, accendere un led quando è nello stato basso, e nessuan delle due quando il pin è ad alta impedenza, ossia settato di proprosito come input. qualche idea? sono 2 giorni che butto giu shcemi con porte logiche e transistor, ma niente..

    ReplyDelete
  8. Ti potrebbe essere utile un integrato come il 74HC4051, se ho compreso bene il problema. Con questo integrato puoi moltiplicare uscite/ingressi di arduino utilizzando 5 pins.
    Oppure un semplice 7400 collegando opportunamente le nand al transistor.

    ReplyDelete
  9. alla fine ho dovuto rinunciare a una delle funzioni. il circuito sono ruscito a relizzarlo con 2 transitor, una NOT e qualke resistenza. su breaboard funzionava. ma a quanto pare l'impedenza dell'arduino messa in input non è era abbastanza.

    ReplyDelete

Hi at all, leave me a feedback for this post. Thx