Month: January 2013

Microsoft Embedded Conference : una fantastica giornata !

Sabato 26 Gennaio, è andata in scena la prima Microsoft Embedded Conference che si è tenuta in quel di Napoli ed organizzata dalla nostra community DotNetCampania insieme aTinyCLR.it. Nonostante fosse Sabato, l’affluenza di pubblico è stata “interessante”, con molte persone che sono giunte addirittura da altre regioni (e ringraziamo anche Marco Dal Pino di DotNetToscana per la sua presenza); ciò ha confermato l’interesse che poteva suscitare l’organizzazione di un evento del genere.

2313.DSC_0004_2357B29C 4010.DSC_0008_6823D6D0
3463.DSC_0010_6B55BEB8 5228.DSC_0011_51818889
4527.DSC_0056_69A4F2E4 4341.DSC_0037_7DBE0F6D

Alle ore 8:30 il team era già all’Holiday Inn per i preparativi e per poter accogliere egregiamente i partecipanti; per fortuna l’evento è iniziato quasi in perfetto orario. La mattinata è iniziata con la keynote del nostro presidente Michele Aponte, che ha presentato la nostra community, e con me che ho presentato l’agenda della giornata oltre alla community TinyCLR.it di cui faccio parte.

2251.DSC_0017_23B3BFC4

5488.DSC_0063_54D2FA64

2538.DSC_0022_61CCDA75

1538.DSC_0061_1A0B518E

Subito dopo, quasi in perfetto orario, siamo partiti con due interessantissime sessioni diBeppe Platania sugli Intelligent Systems e l’offerta completa di Microsoft per il mondo embedded oltre ad un approfondimento su Windows Embedded Compact 7. Dopo il coffee break ed una breve presentazione dello sponsor Platinum “Adeneo” da parte di Valter Minute, Beppe è ritornato in scena per affrontare gli argomenti Windows Embedded Standard 2009 e 7. Subito dopo, ancora Valter per una panoramica sul concetto di sistema embedded, facendo toccare anche con mano alcuni prodotti “made in Italy”. I presenti hanno seguito con molto interesse le sessioni, partecipando attivamente e ponendo numerose domande ai nostri due speaker.

1586.DSC_0052_1213AF2C 3007.DSC_0088_4332E9CC
8741.DSC_0104_295EB39D 6835.DSC_0120_2FA58A2B

Giunta l’ora di pranzo, abbiamo gustato tutti insieme una buonissima pizza, riprendendo l’evento alle 14:15 circa. La prima sessione pomeridiana è toccata a me con un’introduzione ed una panoramica generale sul .Net Micro Framework che ha fatto da apripista per le sessioni successive sul medesimo argomento. La sessione di Mirco Vanini su .Net Gadgeteer ha suscitato notevole interesse nei presenti, grazie anche al forte contenuto pratico oltre che teorico. A conclusione degli interventi per la community TinyCLR.it, il suo ideatore Lorenzo Maiorfi che, insieme a Gianluca Ruta, ha parlato di “Internet of Things” facendo anche divertire le persone in sala, ciascuna dotata del proprio smartphone, nel pilotare via web una piattaforma ricca di attuatori e sensori portata con se per la demo (luci che si accendevano e bazzer che suonavano l’hanno fatta da padrona).

4762.DSC_0137_0EB21784 7206.DSC_0169_46F08E9C
1780.DSC_0167_461828B2 0777.DSC_0099_0C28E5C6

A fine giornata, la ciliegina sulla torta, con la sessione di Clemente Giorio (e me) su Kinect e la demo finale che ha visto protagonista un robot, messo in movimento grazie ai comandi vocali (addirittura in napoletano) ed alle gestures.

Un ringraziamento particolare va a tutti i ragazzi del DotNetCampania per l’organizzazione impeccabile, partendo da Antonio Liccardi per la logistica fino a Massimiliano Amendola ed Umberto Collina per il “servizio fotografico”, passando per Gaetano Criscuolo e Giulio D’Angelo che hanno portato con se la loro fantastica attrezzatura grazie alla quale è stata resa possibile la registrazione audio/video dell’evento.

Dopo una giornata così impegnativa ma ben organizzata grazie all’aiuto di tutti, la soddisfazione più grande l’abbiamo ricevuta dai numerosi complimenti che ci sono stati fatti dai partecipanti che come ben sappiamo rappresentano il vero cuore di una community !

A breve saranno messe a disposizione tutte le slide e le demo delle sessioni sul sito ufficiale dell’evento e per questo…stay tuned !

ioProgrammo : Accesso al file system attraverso il browser

7563.4-183g_561A3CAE

Questo mese su “ioProgrammo” (n. 183, Febbraio 2013) c’è un mio articolo dedicato all’accesso al file system dal browser.

Grazie al nuovo standard HTML5, le nostre applicazioni Web hanno la possibilità di gestire un file system “sandboxed” sul PC del client utilizzando numerose e potenti funzioni.

La mia raccomandazione di sempre…non perdetevelo !

Netduino 2 : anche il fratello minore del Plus si potenzia !

E’ stato da poco annunciato ufficialmente sul forum di Netduino il rilascio della nuova versione della board base della SecretLabs : il Netduino 2 !

Dopo il rilascio della seconda versione della scheda dotata di connessione Ethernet e microSD onboard, il Netduino Plus 2, finalmente anche la versione entry level ha un successore ancora più potente.

2627.inputandoutput_6116DBE6

Microprocessore e memoria

Seguendo la stessa linea del Netduino Plus 2, il microprocessore è completamente diverso da quello del predecessore, infatti si tratta di un STM32F2 (della STMicroelectronics) basato su architettura Cortex-M3 a 120Mhz in luogo di un Atmel ARM7 a 48 Mhz. Anche il salto di memoria è strabiliante ! Il quantitativo di RAM a disposizione è sempre di 60 KB ma il quantitativo di Flash a disposizione della nostra applicazione passa da 128 a 192 KB.

Input ed Output

La board fornisce 22 pin di GPIO (contro i 20 precedenti) di cui una parte assumono le seguenti funzionalità :

  • 6 PWM;

  • 4 UART;

  • Interfaccia SPI;

  • Interfaccia I2C;

Inoltre, ci sono 6 canali ADC con una risoluzione a 12 bit (e non più a 10 bit).

Storage

Ovviamente, questa versione non dispone di un sistema di storage onboard ma mediante un’opportuna shield è possibile aggiungere una microSD fino a 2 GB.

Per tutte le specifiche dettagliate, rimando alla pagina sul sito ufficiale.

Misuriamo la velocità del vento con la uPLibrary

La versione 1.9 della uPLibrary si arricchisce di un altro managed driver per la gestione di un anemometro, strumento utilizzato per la rilevazione della velocità del vento. Il driver è generico, considerando il funzionamento comune per la maggior parte di tutti gli anemometri, ma nel mio caso ho effettuato i test utilizzando questo dispositivo.

7737.6710-WIND01_2A83196B

Quest’ultimo genera 4 impulsi al secondo al rilevamento di una velocità del vento pari a 10 Km/h; tali informazioni sono utili per determinare la velocità del vento reale contando gli impulsi in un intervallo di tempo che può essere impostato. Infatti, La classe Anemometerfornisce un costruttore i cui parametri sono i seguenti :

  • inPin : pin della board utilizzata ed a cui è collegato il segnale di output degli impulsi dell’anemometro;
  • calculatePeriod : periodo nell’ambito del quale il driver deve osservare e valutare la velocità del vento (il valore di default è 5000 ms);
  • referenceWindSpeed : velocità del vento di riferimento in Km/h (il valore di default è 10);
  • referencePulseForSecond : numero di impulsi per secondo di riferimento (il valore di default è 4);

Come si può osservare i valori di default del driver sono quelli relativi all’anemometro utilizzato per i test.

Al suo interno, la classe associa una InterruptPort al pin passato al costruttore ed in corrispondenza dell’event handler conta gli impulsi ricevuto dall’anemometro. Ad esso si aggiunge un Timer che, periodicamente sulla base del periodo fornito al costruttore, determina la velocità del vento in relazione degli impulsi contati. Tale valore è disponibile all’esterno della classe attraverso la proprietà WindSpeed. L’avvio ed il termine delle operazioni di rilevamento da parte del timer sono gestibili attraverso i metodi corrispondenti di Start() e Stop().

Anemometer anemometer = new Anemometer(Pins.GPIO_PIN_D0);
anemometer.Start();

while (true)
{
    Debug.Print("Wind speed = " + anemometer.WindSpeed);
    Thread.Sleep(1000);
}

Ricordo come sempre la disponibilità della libreria su Nuget !

uPLibrary : un nuovo sensore di temperatura ed umidità

Inizio anno…la uPLibrary cresce e passa alla versione 1.9 !

Una delle nuove funzionalità aggiunte è il driver managed per il sensore di temperatura ed umidità SHT1X della Sensirion, che è disponibile in una comodissima breakout board della DFRobot.

1385.SHT1x_Humidity_a_50b6083927d83_397DE16D

Il protocollo di comunicazione previsto è un I2C non standard, per cui le classi del .Net Micro Framework dedicate all’I2C sono inutilizzabili. In questo caso, l’unica soluzione è il bit banging, attraverso il quale i segnali data e clock vanno pilotati direttamente da software. La classe implementata SHT1X mette a disposizione un costruttore al quale passare i due pin utilizzati per i segnali suddetti oltre alla tensione di alimentazione fornita al sensore. Quest’ultima informazione è necessaria per l’applicazione di alcune formule di compensazione per il calcolo del valore reale di temperatura ed umidità a partire dai dati letti dal sensore. I metodi esposti all’esterno sono banalmente i seguenti :

  • ReadTemperature() : fornisce la temperatura rilevata, sulla base dell’unità di misura passata come parametro;
  • ReadRelativeHumidity() : fornisce il valore dell’umidità relativa (in valore percentuale);

L’utilizzo del driver è pressoché immediato e mostrato di seguito con un semplice codice di esempio, utilizzando la scheda Netduino e collegando i segnali DATA e CLOCK del sensore rispettivamente ai pin digitali D0 e D1 della board. Ovviamente, è necessario anche il collegamento della massa (GND) e dell’alimentazione (VCC) in questo caso a 3,3 V.

double temp, humidity;
SHT1X sht1x = new SHT1X(Pins.GPIO_PIN_D0, Pins.GPIO_PIN_D1, SHT1X.Voltage.Vdd_3_5V);

while (true)
{
    temp = sht1x.ReadTemperature(SHT1X.TempUnit.Celsius);
    humidity = sht1x.ReadRelativeHumidity();
    Debug.Print("Temp = " + temp + " Humidity =  " + humidity);
    Thread.Sleep(1000);
}

Come sempre la libreria aggiornata è anche disponile su Nuget e quindi comodamente integrabile nella propria applicazione attraverso il relativo package manager di Visual Studio.

Una stazione meteo con il Netduino Plus !

0511.cloudybar_61CC5D1A

Oggi ho pubblicato su CodePlex, al seguente link, un nuovo progetto open source relativo alla realizzazione di una stazione meteo mediante l’utilizzo del .Net Micro Framework e la board Netduino Plus.

4745.Img1_4DD2CA84

Il sistema permette di rilevare la temperatura, l’umidità, la luminosità e la velocità del vento attraverso una serie di sensori e di mostrarne l’andamento in tempo reale attraverso una pagina Web in stile “Metro”, grazie all’utilizzo del Metro UI CSS (http://metroui.org.ua/) ed ovviamente al Web Server integrato. Inoltre, mediante l’attivazione della funziona di data logging è possibile storicizzare tutti i dati sulla microSD.

4456.Img2_2CDF57DD