Netduino : la nuova “terza” generazione anche con Wi-Fi integrato

Ed ora … posso finalmente scrivere qualcosa !! ūüôā

Circa due settimane fa ho ricevuto un bel regalo dalla Secret Labs (grazie a Chris Walker) … la nuova scheda Netduino 3 Wi-Fi !

WP_20150429_22_18_19_ProWP_20150429_22_18_35_Pro

Personalmente, ho iniziato la mia “carriera” con il .Net Micro Framework utilizzando le board Netudino e Netduino Plus¬†(prima e seconda generazione), divertendomi tantissimo nello¬†sviluppo di driver gestiti per i componenti ad esse collegati. Con l’esplosione dell’Internet of Things,¬†ho iniziato a sviluppare la mia libreria¬†M2Mqtt ed a testarla sulla versione della board dotata di connessione Ethernet, ma per quanto riguarda il collegamento con i servizi Azure come il Service Bus (event hubs, queues e topics/subscription) mi sono dovuto fermare a causa di¬†un grosso problema: il mancato¬†supporto per il protocollo SSL/TLS ! (necessario per Azure).

Ufficialmente a partire da ieri (ma poche settimane fa per me) … non abbiamo questo limite ! La “terza” generazione delle board della famiglia Netduino¬†supporta i protocolli sicuri come SSL/TLS e quindi fornisce la possibilit√† di connettersi a tutti i servizi Microsoft Azure !¬†ūüôā

Per ora, solo la versione Wi-Fi è già disponibile su Amazon qui e la versione Ethernet sarà disponibile nel mese di giugno qui.

L’hardware

Parlando della Netduino 3 Wi-Fi, questa scheda ha un STM32 MCU (microcontrollore a 32 bit) Cortex-M4 a 168Mhz con 2 MB di Flash dual-bank e 256 KB di RAM. Naturalmente, a causa del .Net Micro Framework TinyCLR abbiamo fino a 1408 KB per il nostro codice applicativo (in Flash) e circa 164 KB di RAM disponibile. Per me, si tratta di enormi quantità di memoria per le applicazioni embedded complesse !

netduino3wifi

Abbiamo lo stesso pulsante ed il led come le schede precedenti e tutti i pin, 22 pin digitali e analogici come GPIO, che possono essere utilizzate con le seguenti caratteristiche specifiche :

  • Porte UART
  • Segnali PWM
  • Porte SPI
  • Porte I2C

La grande differenza con le schede precedenti è la presenza di 3 porte GoBus 2.0 e sembra che la Secret Labs stia sviluppando nuovi componenti da connettere ad essi. Se volete sapere che cosa è GoBus, potete approfondire con il seguente articolo : sembra essere una caratteristica simile a .Net Gadgeteer ma ha molteplici differenze.

Il modulo Wi-Fi √® una grande caratteristica in pi√Ļ perch√© √® completamente¬†integrato sulla scheda senza la necessit√† di un dispositivo esterno. Il chip √® un TI CC3100 (Texas Instruments), con tutte le certificazioni necessarie e supporta 802.11 b/g ¬†n con SSL/TLS ed i¬†tre livelli di sicurezza: aperto, WEP e WPA2.

Ultima caratteristica ma non meno importante è il connettore microSD (fino a 2 GB) per la memorizzazione dei dati.

Il software

Naturalmente le nuove schede Netduino sono tutti basate sulla pi√Ļ recente versione del .Net Micro Framework (4.3 QFE2-RTM) e tutto il codice √® open source: si pu√≤ trovare il porting per Netduino su GitHub.

Una grande differenza con il passato √® il¬†Netduino.IP: il nuovo stack TCP/IP per .Net Micro Framework. Come sappiamo, uno dei grandi problemi del .Net Micro Framework √® lo stack di rete che non √® molto¬†affidabile. Per questo motivo, Secret¬†Labs ha deciso di iniziare¬†il nuovo progetto di cui sopra con lo sviluppo di uno stack TCP/IP completamente gestito¬†ed avere il pieno controllo su di esso. Naturalmente, questo nuovo “nato”¬†√® ancora in Technical Preview e sotto test ogni giorno per migliorare le sue featues e prestazioni. La buona notizia √® che ha supporta per le classi standard in System.Net ¬†(Socket, HttpWebRequest, …) per garantire retrocompatibilit√† ed utilizza solo 4 KB di RAM. Come progetto open source, √® disponibile su GitHub per due chip Ethernet: il solito Microchip ENC28J60 e Asix AX88796C.

Per quanto riguarda il supporto Wi-Fi, lo stack TCP/IP per il¬†TI CC3100 √® in un altro progetto (che sar√† assimilato nel Netduino.IP) disponibile qui. In questo caso, abbiamo il pieno supporto per la classe SslStream per SSL/TLS 1.2. Questo progetto √® in fase di sviluppo ed ha alcune alcune limitazioni relative al numero di socket aperte simultaneamente e¬†buffer. Le prestazioni potrebbero essere superiori¬†perch√© la versione corrente usa l’UART per comunicare con il chip ma il supporto SPI arriver√† presto.

Dal punto di vista degli sviluppatori, abbiamo Visual Studio 2013 ma è già pronto il supporto per Visual Studio 2015.

Infinite possibilità

Con questa nuova terza generazione, ora abbiamo molte¬†possibilit√† nell’ambito dell’Internet of Things¬†con la famiglia delle board Netduino. Il grande vantaggio¬†√® l’accesso a tutti i servizi Microsoft Azure come Event Hubs (e tutti gli altri servizi del Service Bus) e di tutti i servizi on-line che hanno bisogno di supporto SSL (le Twitter APIs per esempio). Ho gi√† provato la mia board¬†nelle ultime due settimane ed ho avuto buoni risultati usando la libreria AMQP Net Lite per la connessione al Service Bus¬†e con la mia libreria M2Mqtt con un broker MQTT nell’iinviare e ricevere molteplici¬†messaggi. Tutti i miei test sono correlati¬†al lato client dell’uso della board poich√® non concordo nell’avere un server¬†su un dispositivo embedded per motivi di sicurezza, quindi non ho approfondito¬†le funzionalit√† disponibili per sviluppare un server HTTP(S) a bordo. La scheda con tutti i relativi stack software sembra essere affidabile ma la performance potrebbero essere migliorate. So che Chris lavorer√† duramente nei prossimi mesi per fornire nuove funzionalit√† e miglioramenti per darci un prodotto migliore per collegare le “nostre” cose¬†all’Internet degli oggetti in rete.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s