Creative Commons BY-NC-ND 2.5Questo sito e tutto il suo contenuto sono distribuiti sotto la licenza Creative Commons Attribuzione - Non Commerciale - Non opere derivate 2.5 Italia e con le condizioni d'uso definite nel disclaimer: siete pregati di leggere entrambi questi documenti prima di usufruire dei contenuti di questo sito. Per alcuni contenuti è necessaria una registrazione gratuita: non è necessario pagare e non è necessario accumulare punteggi per accedere agli articoli e scaricare i sorgenti: basta solo essere onesti. Se volete che questo sito continui a rimanere attivo, a contribuire ogni giorno alla diffusione della cultura libera, non copiate il materiale per ripubblicarlo in altri luoghi. Se volete partecipare su settorezero e rendere le vostre idee, i vostri progetti, fruibili da tutti senza limitazioni potete farlo tranquillamente.

Texas Instruments Connected Launchpad Tiva C Series

Autore: Giovanni Bernardo | Data pubblicazione: 11 ottobre 2014
Categorie: Arduino MSP430 Robotica e Automazione

Reduce dal Maker Faire Rome 2014, al quale come molti di voi sanno, ho partecipato col mio robot OR10n insieme al gruppo di Officine Robotiche (anzi ne approfitto per ringraziare tutti quelli che sono venuti a trovarmi!), ho cominciato a smanettare un po’ con le novità presentate in fiera che siamo riusciti duramente a conquistarci (e ne approfitto per dare un abbraccio anche gli amici che mi hanno accompagnato nella faticosa caccia al gadget: Marpin e Vegekou).

Illustro in questo articolo una delle ultime schede di sviluppo della Texas Instruments: il Tiva C Series TM4C1294 Connected LaunchPad, codice EK-TM4C1294XL, semplicemente Connected Launchpad per gli amici.

Cos’ha di particolare questo Launchpad?

  • Il costo, il vero punto forte di tutte le schede di sviluppo della TI: soltanto 20 dollari!
  • Le caratteristiche esagerate, che non ti aspetti mai da un prodotto così economico:
    • MCU ARM Cortex-M4 a 32bit, 120MHz: TM4C1294NCPDT
    • 1MB memoria Flash
    • 256KB SRAM
    • 6KB EEPROM
    • 10/100 Ethernet MAC+PHY integrato
    • USB OTG
    • Possibilità di innestare due booster-pack contemporaneamente (le schede di espansione dei Launchpad)
    • troppo altro che non mi va di elencare!
  • Lo si programma facilmente con Energia, che è un Fork dell’IDE di Arduino. Quindi se venite da Arduino, non troverete nessuna difficoltà. Se invece non avete mai usato Arduino et Similia, potrebbe essere il momento buono per cominciare.

Tutte le informazioni su questa scheda, e sul suo acquisto, sono disponibili sulla pagina ufficiale: http://www.ti.com/tool/ek-tm4c1294xl

Abbiamo già visto i Launchpad in alcuni articoli precedenti. Questo Connected Launchpad è interessante proprio per il fatto di avere un modulo Ethernet on-board, già funzionante senza settare nulla, appena presa la scheda dalla scatola (nella quale è incluso anche un fighissimo cavo Ethernet retrattile!).

Sulla scheda, in realtà, ci sono due microcontrollori: un TIVA TM4C123G che svolge le funzioni di programmatore e debugger on-board e un TM4C1294 che è il microcontroller vero e proprio che andremo a programmare. Come “interfacce utente” utilizzabili da subito sono presenti 4 led verdi (identificati con D1, D2, D3, D4) e due pulsanti (USER_SW1 e USER_SW2). Il connettore Ethernet purtroppo non ha i led che segnalano le attività, ma per 20 dollari penso ne possiamo fare anche a meno.

Altra piccola mancanza è il connettore di alimentazione sulla scheda (e quindi la relativa mancanza di regolatori di tensione, altra cosa che fa scendere il prezzo della scheda). Possiamo alimentare il nostro launchpad o dal connettore USB di debug/programmazione (condizione di default – connettore USB posto sulla destra), o dal connettore USB OTG (quello posto a sinistra, sotto il connettore Ethernet) o da un Booster Pack. La sorgente di alimentazione viene scelta tramite un jumper identificato come “POWER SELECT / JP1”.

Questa scheda può essere programmata utilizzando sistemi diversi. Il più conosciuto è sicuramente il Code Composer Studio, per il quale c’è qui un esauriente tutorial su come installare tutto e caricare il primo programma, utilizzando anche i software packages che potete scaricare da questa pagina. Tuttavia in questo articolo ho preferito utilizzare Energia per essere operativo da subito con il modulo Ethernet.

Il tutorial verterà quindi sull’installazione dei software sul pc per poterla utilizzare e su un paio di sketch.

Step 1 – Installazione drivers

Andiamo alla pagina della Texas Instruments dedicata ai drivers Stellaris ICDI (http://www.ti.com/tool/stellaris_icdi_drivers) e premiamo sul pulsante Download affianco alla scritta “Stellaris® ICDI Drivers”. Scaricheremo un file .zip (attualmente è spmc016.zip) ed estraiamolo. Otterremo una cartella “stellaris_icdi_drivers” che contiene dei files .inf e varie dll divise in cartelle.

Colleghiamo il Lauchpad al PC utilizzando la porta USB posta sulla destra, quella con la scritta “DEBUG”. Attendiamo che Windows termini il riconoscimento dell’Hardware, che non andrà a buon fine.

Qui faccio riferimento a Windows 7, se avete Windows XP o Windows 8, le istruzioni per proseguire si trovano nel PDF “Stellaris Drivers Installation Guide” che potete trovare nella stessa pagina del Driver. Ad ogni modo si tratta di passaggi di base che generalmente facciamo almeno una volta al mese!

Da Start -> Pannello di controllo, andiamo in “Gestione Dispositivi”, visualizzeremo 3 dispositivi, con l’icona del punto esclamativo, chiamati “In-Circuit Debug Interface”:

Andiamo su uno qualsiasi dei 3, premiamo il tasto destro del mouse e selezioniamo “Proprietà”. Dalla finestra che compare premiamo il pulsante “Aggiorna Driver”:

Scegliamo quindi l’opzione “Cerca il software del driver nel computer”:

Premiamo quindi il pulsante “Sfoglia” e puntiamo alla cartella stellaris_icdi_drivers avendo cura di tenere spuntato il check-box “Includi sottocartelle”:

Premere quindi il pulsante Avanti. Si presenterà la classica finestra di protezione:

Premiamo tranquillamente “Installa il software del driver” ed attendere un minuto o poco più che l’installazione termini:

Premere quindi Ok, e quindi Chiudi nella finestra delle proprietà del driver. Veniamo riportati nella finestra di gestione dispositivi in cui ora compare una nuova porta COM virtuale (annotiamoci il numero nel caso in cui avessimo più porte COM sul nostro PC, giusto per ricordarcelo quando nell’IDE dovremo selezionare la porta COM su cui è collegato il launchpad):

Rimangono quindi altri due dispositivi con il punto esclamativo. Ripetiamo tutte le operazioni fatte fin’ora, allo stesso identico modo fino a che tutti i dispositivi sono stati correttamente installati. (tasto destro -> Proprietà -> Aggiorna Driver -> Cerca il driver nel computer (qui ora ci sarà già scritto il percorso) -> Avanti -> Installare il software del driver).

Nella finestra gestione dispositivi avremo quindi 3 nuovi elementi: la porta COM vista prima, uno “Stellaris ICDI FDU Interface” e uno “Stellaris ICDI JTAG/SWD Interface”, entrambi sotto la voce “Stellaris In-Circuit Debug Interface”:

Step 2 – Energia

Energia è un IDE che permette di programmare le schede di sviluppo della Texas Instruments in un ambiente simile a quello di Arduino e con lo stesso stile di programmazione. Nato per gli MSP430, si è esteso anche alle schede di sviluppo di fascia media e alta (Stellaris e TIVA C) e supporta numerosi Booster-Pack. In realtà Energia non è di proprietà della Texas Instruments nè mantenuto o gestito da essa. E’ stato sviluppato da Robert Wessels, della Texas Instruments, durante il suo tempo libero ed è supportato da una vasta comunità di appassionati tra cui la comunità di 43Oh in primis.

L’ultima versione di Energia, nel momento in cui scrivo, è la 13, e può essere scaricata gratuitamente dalla pagina ufficiale: http://energia.nu/download/

Prendendo ad esempio la versione per Windows, si tratta di un file zip già pronto all’uso. Non dobbiamo installare nulla. Una volta scompattato in una cartella a piacere (energia-0101E0013), dobbiamo soltanto lanciare l’eseguibile (energia.exe) e fare i primi settaggi, gli stessi che si fanno con Arduino: porta COM e tipo di scheda collegata.

Supponendo di avere già la scheda collegata al PC con il cavetto micro-usb in dotazione, non dobbiamo fare altro che selezionare la porta COM creata dall’installazione della scheda andando in Tools -> Serial Port:

E quindi selezionare la scheda target dal menù Board, che nel nostro caso è “LaunchPad (Tiva C) w/tm4c129 (120MHz):

Step 3 – Led Lampeggiante

Come per Arduino, possiamo cercare il primo esempio da caricare (l’onnipresente led lampeggiante) in File -> Examples -> Basic -> Blink

Se non avete mai utilizzato Arduino, sappiate che di base avete sempre due funzioni: una funzione Setup, nella quale generalmente si impostano le funzioni dei pin e qualsiasi altra cosa da eseguire una sola volta all’avvio, e una funzione Loop, che contiene il codice da eseguire di continuo (come nel while(1) sui picmicro per intenderci).

Primo appunto da fare: nel sorgente c’è un commento: Most launchpads have a red LED. In questo caso ciò non è vero dato che ci sono 4 led ma tutti verdi! (ma… c’è scritto “most launchpads”, ovvero: la maggior parte dei launchpads, quindi non tutti pertanto… li perdoniamo!).

Basta soltanto premere il pulsante “Upload” (il secondo pulsante, quello con la freccia verso destra) per compilare lo sketch e caricarlo sulla scheda.

Ho sbattuto un po’ nel cercare dove fossero i defines per led, pulsanti e porte (come si chiamano gli altri 3 led? e i pulsanti? e gli I/O? ma poi perchè devo proprio chiamarlo RED_LED se rosso non è?). In un primo momento mi sono affidato allo schema delle porte presente sul sito di Energia a questo link: http://energia.nu/img/EK-TM4C1294XL.jpg

Nello schema vediamo che i 4 led vengono chiamati LED0, LED1 ecc ecc. e possiamo anche vedere che i led 3 e 4 (collegati alle porte PF0 e PF4) possono anche essere utilizzati come led di attività per il modulo Ethernet (ah! Ma allora non mancano ;) ). Scrivo quindi “LED1” nello sketch per cercare di accendere appunto il LED identificato come D1 sulla scheda… ma ottengo un errore di nome non definito…

E qui.. un pochetto mi arrabbio, ma non demordo, e mi focalizzo su questa nota scritta nel codice:

//see pins_energia.h for more LED definitions

chiaramente faccio una ricerca per il file pins_energia.h e ne trovo a bizzeffe fino a scoprire che quello giusto per la mia scheda è contenuto nel percorso:

C:\energia-0101E0013\hardware\lm4f\variants\launchpad_129

e finalmente scopro come chiamare Led e Pulsanti, e che il primo led (D1) l’hanno chiamato “RED_LED” (anche se verde) per mantenere la compatibilità del codice con gli altri Launchpad.

// energia pin definition end
 
#define D1_LED         PN_1
#define RED_LED        PN_1
#define D2_LED         PN_0
#define GREEN_LED      PN_0
#define D3_LED         PF_4
#define D4_LED         PF_0
 
#define ACTIVITY_LED      GPIO_PF4_EN0LED1
#define ACTIVITY_LED_BASE GPIO_PORTF_BASE
#define ACTIVITY_LED_PIN  GPIO_PIN_4
#define LINK_LED          GPIO_PF0_EN0LED0
#define LINK_LED_BASE     GPIO_PORTF_BASE
#define LINK_LED_PIN      GPIO_PIN_0
 
// LEDs end
 
// pushbuttons
#define PUSH1      PJ_0
#define PUSH2      PJ_1
#define TEMPSENSOR 0
 
#define USR_SW1    PJ_0
#define USR_SW2    PJ_1
// pushbuttons end

Ok ora so che posso chiamare i led come D1_LED, D2_LED ecc e utilizzare i pulsanti con il nome scritto anche sulla serigrafia della scheda: USR_SW1 e 2. Preso dall’entusiasmo ho quindi fatto uno sketch per farli lampeggiare in sequenza tutti e 4 (Energia - Blink 4 led su TIVA C (2)).

Ora passiamo a qualcosa di più serio…

Step 4 – La libreria Ethernet

Andremo a caricare lo sketch di esempio Ethernet Webserver, che permette di controllare lo stato dei pulsanti e accendere/spegnere i led sulla scheda tramite collegamento sulla rete Lan. Ovviamente potete fare questo se a casa avete una rete LAN o un router con una porta LAN disponibile.

Da Energia andiamo in File -> Examples -> Ethernet -> EthernetWebServer

Nei commenti c’è scritto che lo sketch è da utilizzare con il modulo Wi-Fi BoosterPack, ma tranquilli che funziona anche con il modulo Ethernet incluso sulla scheda.

La parte di codice che dobbiamo modificare è questa:

Dobbiamo cambiare gli indirizzi IP in maniera tale che coincidano con quelli della nostra rete. La mia rete, ad esempio, come la maggior parte, ha tutti indirizzi che iniziano con “192.168.0” e il router, che funge da gateway, ha indirizzo 192.168.0.1.

come DNS e GW metteremo quindi l’indirizzo del router, come IP metteremo un indirizzo IP non utilizzato da nessun dispositivo della nostra rete, e come subnet mask lasciamo 255,255,255,0.

Provvederemo quindi a commentare la riga “Ethernet.begin(0)” e decommentare la riga successiva. Questa parte a me si presenta quindi in questo modo:

Premiamo quindi il pulsante di upload.

Maledizione… cosa succede qui?

Otteniamo un noioso errore “redefinition of ‘const IPAddress INADDR_NONE'”. Il problema è già stato segnalato su Github e la prossima release di Energia non avrà questo problema. Per correggerlo basta eliminare una riga nel file Ethernet.h. Andate in

C:\energia-0101E0013\hardware\lm4f\libraries\Ethernet

aprite il file Ethernet.h ed eliminate (o commentate) la riga in cui c’è scritto:

12
const IPAddress INADDR_NONE(0,0,0,0);

(come anche specificato su github)

Caricate il codice sul launchpad. Ora staccatelo dal pc, avvicinatevi al vostro router o ad una presa di rete, alimentate il launchpad con un alimentatore USB e collegatelo alla rete con il cavo in dotazione.

Da un PC connesso alla rete della vostra casa, aprite il vostro browser preferito e digitate l’indirizzo IP che avete assegnato alla scheda nel codice (192.168.0.8 nel mio esempio). Vi si presenterà la pagina di default caricata sul launchpad attraverso il codice:

Clicchiamo sul link “Click Here” per visualizzare quindi la pagina in cui possiamo accendere/spegnere i led sulla scheda e visualizzare lo stato dei pulsanti:

Contemporaneamente possiamo anche visualizzare le attività hardware sulla scheda collegandola al PC con l’USB e utilizzando il monitor seriale (tools -> Serial Monitor) e impostandolo a 115200 bps.

Chiaramente immaginate di utilizzare degli I/O al posto dei led per controllare relè, fotoaccoppiatori o altro e quindi accendere/spegnere le luci del cortile o aprire il cancello di casa attraverso un’interfaccia web utilizzabile anche dal pc.

Buon Divertimento!

L'articolo ti è piaciuto o ti è stato utile per risolvere un problema? SettoreZero è realizzato soltanto con contenuti originali: tutti gli articoli sono curati con passione dagli autori e nulla viene copiato da altri siti. Supporta e mantieni in vita SettoreZero con una donazione: basta soltanto un caffè o una birra. Puoi supportare SettoreZero anche con uno dei progetti elencati nella sezione servizi o partecipare anche tu con un tuo articolo/progetto personale.

Se desiderate che SettoreZero continui a rimanere gratuito e fruibile da tutti, non copiate il nostro materiale e segnalateci se qualcuno lo fa.

Puoi lasciare un commento, o un trackback dal tuo sito.

  1. #1 da shinshi il 12 ottobre 2014

    Ciao Bernardo,
    sono contento di averti conosciuto alla Maker Faire, anche se purtroppo sono dovuto andarmene senza poter fare due chiacchiere. La scheda TI presentata qui mi piace molto e ha un buon prezzo. Io sto’ facendo un po di prove con la Nucleo board della ST presa alla fiera e mi piacerebbe scrivere un breve Getting started tutorial.
    Saluti
    Luca

    • #2 da Giovanni Bernardo il 12 ottobre 2014

      Ciao Shinshi.
      Anche a me ha fatto piacere conoscerti, ma come hai potuto vedere… che macello!!!! E’ stata una quattro giorni davvero faticosissima per noi. Perfetto per il tutorial!! Non vedevo l’ora di provarla anch’io. Nel frattempo io e Marcello stiamo anche sbattendo un po’ con la Galileo. Per la Nucleo cosa stai utilizzando? Dalla regia mi consigliavano di utilizzare Mbed

      • #3 da shinshi il 18 ottobre 2014

        Ciao Giovanni,
        La scheda che mi hanno dato è la STM32L053 con un Cortex M0+, stò utilizzando Mbed che mi sembra ricco di librerie per partire da subito. Fammi sapere come posso farti avere il materiale da pubblicare.
        Grazie
        Luca

  2. #5 da thexeno il 12 ottobre 2014

    Se uno volesse imparare ad usare a livello HW l’ethernet, usando/creando/adattando il proprio codice ad esempio in C, su IAR, lo può fare? Cioè, è pienamente supportato a riguardo (come per gli MSP430) o “ti devi arrangiare” come per programmare Arduino su AVR Studio?

  3. #7 da Marpin il 12 ottobre 2014

    Ciao Gianni, ottimo articolo, scritto con lo stesso stile che ormai ti contraddistingue… lo dico con il cuore ed invito gli altri utenti a procurarsi al più presto una board come questa. Non ho trovato nessuna difficoltà a ripetere paro paro ciò che è stato descritto nell’articolo (appena il tempo di caricare i drivers e via) ed è una bella soddisfazione vedere che il tutto funziona :) Articolo che poi mi è servito per “pasticciare” un pò con Galileo. Mauro sarà orgoglioso di te, come d’altronde lo sono io :)

    Marcello

    p.s. visto che abbiamo fatto bene a “chiedere”? :)

    • #8 da Giovanni Bernardo il 12 ottobre 2014

      Marcello… Chiedere non è mai reato!! E poi noi non siamo certo i tipi che chiedono solo per accumulare roba. Già come puoi vedere… le loro schede sono finite in ottime mani: le abbiamo provate subito ;)

    • #9 da Marnic il 28 ottobre 2014

      In magazzino non ne hanno più di quelle schede, pare che a Roma ne abbiano distribuite tantissime e, pare, che siano finite in zona li da voi, ne sapete qualcosa? ;o)
      Scherzi a parte ottimo tutorial!!!!
      m

Devi essere collegato per lasciare un commento.

  1. Ancora nessun trackback
settorezero.com e il logo Zroid™ ©2007÷2015 Giovanni Bernardo - E' vietata la copia e la distribuzione anche parziale dei contenuti di questo sito web senza l'esplicito consenso dell'autore.
I contenuti di settorezero.com sono distribuiti sotto una licenza Creative Commons Attribuzione-Non Commerciale-Non Opere derivate 2.5 Italia a cui vanno aggiunte le condizioni d'uso definite nel disclaimer.
settorezero.com e tutti i suoi contenuti sono tutelati dalla legge sul diritto d'autore per cui i trasgressori sono perseguibili a norma di legge. Settorezero fa uso dei cookie leggi l'informativa estesa.
Creative Commons BY-NC-ND 2.5
Il tema di questo sito è basato sul tema Fusion per wordpress, realizzato originariamente da digitalnature e fa uso del plugin Wassup per il computo delle statistiche. Per contattare l'autore siete pregati di utilizzare la sezione contatti.
Per essere aggiornato con tutte le novità di settorezero.com seguici anche anche su Facebook Twitter Tumblr Blogspot Youtube.