Gli acronimi che ad oggi, nel mondo dell'elettronica, la fanno da padrone sono sicuramente due: IoT (Internet of Things) e DIY (Do It Yourself). Se mettiamo insieme questi due concetti non può che venirci in mente lui, il tanto osannato Arduino, che grazie alla sua semplicità di utilizzo, i costi ridotti ma soprattutto alla comunità internazionale di sviluppatori, è diventato leader indiscusso per semplici applicazioni IoT che tutti, anche i meno esperti di elettronica, possono tranquillamente realizzare. Ma se volessimo sviluppare una board per la domotica in grado di fare sensing e attuazione utilizzando dei prodotti meno limitanti, e magari ottenere delle soluzioni più performanti e professionali mantenendo gli stessi costi della nota mini-piattaforma di sviluppo, su cosa potremmo orientarci? Tra le soluzioni, ovviamente innumerevoli, vi propongo una board che ho trovato davvero molto interessante: la EasyWeb 3 della Olimex, con microcontrollore della famiglia MSP430 della Texas Instruments. Vediamo insieme come sviluppare la nostra applicazione!
LA BOARD
La EasyWeb3 è una scheda con ottime potenzialità, nonostante le dimensioni ridotte del CS. La scheda può essere acquistata sul sito del produttore a soli 24,95€ (a cui bisogna aggiungere, ovviamente, i costi di spedizione). Di solito la spedizione è abbastanza rapida (dopo una settimana dall'acquisto il pacchetto era sulla mia scrivania); per la riprogrammazione del microcontrollore bisogna acquistare a parte un emulatore (personalmente utilizzo un MSP-FET430UIF, ma mi sono trovato bene anche con la debug interface della Olimex, che utilizzo correntemente per lavoro).
Gli elementi che caratterizzano questa board sono i seguenti:
- microcontrollore MSP430F149
- controller ethernet CS8900A con LED di stato per LAN
- driver low power MAX3232 per RS232
- due extension headers per le porte del microcontrollore
- connettore JTAG per la programmazione
- dimensioni ridotte (76x60mm)
Già da questo semplice elenco è facile capire come la EasyWeb3 sia davvero adatta per funzionare da nodo remotizzatore di attuazione e sensing per applicazioni di domotica.
E' possibile trovare tutta la documentazione e le specifiche della scheda sul sito web della Olimex, nella sezione Starter delle board con MSP430.
In Figura 1 è possibile vedere lo schema elettrico del circuito. La sezione di alimentazione è implementata con un ponte raddrizzatore ed un regolatore LM1117 (della Texas Instruments) che, a partire da una tensione di ingresso tra 6 e 9 V DC, fornisce un'alimentazione stabilizzata di 3.3V al microcontrollore ed agli altri componenti del circuito grazie alle due resistenze R14 ed R15 opportunamente dimensionate. Il consumo della scheda con tutte le periferiche alimentate ed il processore nello stato di [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2898 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.
Bravo Davide,
quello che ho apprezzato di più di questo eccellente articolo sono cinque aspetti ben distinti. Il primo, è che si tratta di tecnologia di base, ovvero di un progetto utile a svilupparne altri e non solamente a dare un’immediata soddisfazione da “copia e incolla”. Il secondo, è che hai scelto, tra i tanti argomenti possibili, quello che è in effetti quello più cruciale, attuale e rivoluzionario nel campo dei microcontrollori, ovvero la loro connessione in rete con il mondo esterno e direttamente con l’utente. Il terzo, è che – in un modo molto “politicamente corretto” e non arrogante – hai offerto il suggerimento di guardare oltre la super-semplificazione, senza aver paura di affrontare gli ostacoli, al fine di raggiungere obiettivi nuovi e originali. Il quarto è quello di aver utilizzato una piattaforma – sia Hardware che Software – non solo ovviamente idonea a garantire un risultato ottimale e affidabile, ma anche originale, nel senso che Olimex è appunto un produttore che propone schede di sviluppo con MCU di produttori diversi e progettate per casi d’uso specifici, come quella che tu proponi. Il quinto, infine, che soggettivamente mi rende solidale al tuo modo di pensare, ma che forse è l’unico aspetto oggettivamente discutibile del tuo progetto, è che si evince che sei una persona a cui piace tirare fuori il massimo possibile da ogni strumento, lavorando duro per superarne le limitazioni.
Proprio su quest’ultimo punto, mi permetto di dare un suggerimento non critico, ma di approfondimento, rispetto alla piattaforma che hai scelto per lo specifico progetto. Innanzitutto vorrei rilevare una contraddizione tra il valore, che tu sottolinei, di un basso consumo energetico, con la modalità di connessione cablata. Dove c’è il cavo, normalmente c’è anche la corrente (se non altro c’è la possibilità del Power over Ethernet). Forse questo tema sarebbe più cruciale se si volessero usare delle tecnologie senza fili. Riprendendo la tua citazione del mio articolo, confermo di essere un utilizzatore convinto dell’MSP430 perché ritengo questa famiglia a 16 Bit moderna e ancora oggi molto innovativa (vedi, ad esempio, l’adozione della FRAM) e un ottimo compromesso, per molte applicazioni, tra gli 8 e i 32 Bit, soprattutto apprezzandone l'”usabilità” (i.e. schede a basso costo, ambientti di sviluppo, documentazione, etc.) Tuttavia, mi sento di affermare che, qualora si volessero implementare applicazioni Web in rete e si necessitasse quindi di uno stack TCP/IP completo (anche se limitato ad un collegamento cablato e sempre qualora si volesse utilizzare un unico Core), sarebbe meglio – e più a prova di futuro, vedi ad esempio il supporto a IPv6 – pensare a una piattaforma a 32 Bit, per esempio ARM Cortex. In questo ambito, tanto per rimanere in casa Texas Instruments, imposterei un progetto concreto magari più sulla loro scheda TM4C1294 Connected LaunchPad, che monta a bordo un M4F e la circuiteria Ethernet, e viene venduta al modico prezzo di 20 USD:
http://www.ti.com/tool/ek-tm4c1294xl
Con 1 MB di Flash e 256Kb di RAM, si ha tutto lo spazio a disposizione per implementare al meglio e serenamente il tuo caso d’uso, con in più uno stack ufficiale, mantenuto e molto solido, oltre a una grande quantità di esempi e di documentazione disponibili direttamente dalla Casa. Un aspetto importante, quando si parla di Web Service, è quello della sicurezza, perciò ci si dovrebbe anche preoccupare del supporto agli standard di crittografia tipo SSL, cosa che, senza un adeguato supporto Hardware dedicato, i microcontrollori a 8/16 Bit normalmente non possono assicurare. Inoltre, vorrei segnalarti quello che ritengo un limite pratico nell’utilizzo di un’interfaccia Ethernet a 10Mbit/s, che non riguarda certamente la velocità nel trasmettere gli esegui dati dall’MCU, ma piuttosto nel fatto che un nodo che supporti solo i 10Mbit/s attaccato a un Hub (o a uno Switch mal progettato) farebbe collassare a questo standard inferiore una rete che invece lavora a 100Mbit/s o magari a 1Gbit/s. Va anche sottolineato come alcuni Router e Switch recenti abbiano già abbandonato il supporto a questa modalità. Tieni presente, infine, che utilizzando i Launchpad, non solo non hai bisogno di usare un emulatore separato per il Debugging, ma non hai neanche limiti di tempo o dimensione del codice nell’utilizzo del compilatore TI ottimizante ufficiale e gratuito incluso in Code Composer Studio, mantenendo ovviamento la possibilità di usare GCC – Open Source, in questo caso, la versione per ARM e già direttamente da CCS, senza ulteriori passaggi – o IAR o altri ambienti commerciali (come Keil).
Ancora complimenti,
Stefano
Ciao Stefano!
Grazie mille per il commento e i complimenti (e ovviamente per i suggerimenti!), questo è il mio primo articolo e sono contento che sia stato apprezzato.
Hai colto in pieno le finalità di questo progetto: sottolineare che esistono delle possibilità di sviluppo meno banali rispetto a quelle proposte in ogni dove (forse sbaglio, ma sono sempre un po’ diffidente rispetto alle mode). Inoltre, per me, un dispositivo non ha mai abbastanza funzioni (sob!), e mi è stato fortunatamente insegnato che configurabilità e astrazione sono le fondamenta di un progetto durevole e semplice, quindi vincente; il rovescio della medaglia è che è impossibile ottenere il codice perfetto, annoso problema dell’ingegnere!!
Sul discorso dei consumi della EasyWeb 3, il dato non è semplicemente preso dal datasheet della board, ma è frutto di misurazione (board alimentata, cavo di rete connesso e ping attivo con un PC).
Per quanto riguarda i tuoi spunti di riflessione, non posso che essere d’accordo: il mio articolo, come il tuo, serve a spronare qualche avventuriero a guardare oltre ed esplorare la pletora di uC e schede oggi a disposizione; rimane ovvio che per progetti che richiedano capacità di elaborazione e comunicazione più spinte ci sia bisogno di muoversi verso un ARM 32bit (c’è qualche Atmel davvero carino!) o addirittura soluzioni ancora più versatili e particolari, come i PSoC (di cui spero di riuscire a parlare presto).
Grazie ancora!