mercoledì 3 dicembre 2014

Remote Spark per Windows Phone

Remote Spark per Windows Phone è un progetto per gestire in remoto lo Spark device descritto nel mio precedente post.
Questa app, di cui i sorgenti sono pubblicati su codeplex, permette di accendere e spegnere due led e leggere la temperatura dal tuo Spark device.




Come usarlo
1. Costruisci il seguente circuito, usando lo Spark maker kit. Questo circuito è la fusione degli esempi proposti sul sito, blink an led, control leds over the net e measuring temperature:


2. Esegui il flash del seguente firmware sul tuo Spark device da https://www.spark.io/build :

// Define the pins we're going to call pinMode on
int led1 = D0;  // You'll need to wire an LED to this one to see it blink.
int led2 = D1; // This one is the built-in tiny one to the right of the USB jack
int temperature = 0;
double voltage;
// This routine runs only once upon reset
void setup() 
{
  Spark.function("led", ledControl);
  Spark.variable("temperature", &temperature, INT);
  // Initialize D0 + D7 pin as output
  // It's important you do this here, inside the setup() function rather than outside it or in the loop function.
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  // Connect the temperature sensor to A7 and configure it
  // to be an input
  pinMode(A7, INPUT);
}

void loop() 
{
  temperature = analogRead(A7);
  voltage = (temperature * 3.3)/4095;
  temperature = (voltage - 0.5) * 100;
}

int ledControl(String command)
{
    int state = 0;
    int pinNumber = (command.charAt(1) - '0') -1;
    if(pinNumber <0 || pinNumber >1)
      return pinNumber;
      
    if (command.substring(3,7) == "HIGH") 
      state = 1;
    else if(command.substring(3,6) == "LOW") 
      state = 0;
    else    
      return -1;
    digitalWrite(pinNumber, state);
    return 1;
}

3. Scarica il mio progetto da codeplex e imposta il tuo DeviceId e Token nella classe Spark.cs.
4. Esegui il deploy dell'applicazione sul tuo Windows Phone.

Cambiando lo stato dei toggle per accendere/spegnere i led, RemoteSpark invia una richiesta POST a spark cloud:

internal async static Task<LedResponse> Set(string p1, string p2)
        {
            LedResponse result = null;

            using (var request = new HttpClient())
            {
                string postData = string.Format("params={0},{1}", p1, p2);
                byte[] byteArray = Encoding.UTF8.GetBytes(postData);
                var stringContent = new StringContent(postData, Encoding.UTF8, "application/x-www-form-urlencoded");
                request.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Token);
                var response = await request.PostAsync(string.Format("https://api.spark.io/v1/devices/{0}/led", DeviceId), stringContent);
                var json = await response.Content.ReadAsStringAsync();
                result = JsonConvert.DeserializeObject<LedResponse>(json);
                result.PlainJson = json;
                if (result.return_value == "1")
                    result.ok = true;
            }
            return result;
        }

Premendo il pulsante Get temperature, RemoteSpark invia questa richiesta GET:

 internal async static Task<TemperatureResponse> GetTemperature()
        {
            TemperatureResponse result = null;
            using (var request = new HttpClient())
            {
                request.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Token);
                request.DefaultRequestHeaders.IfModifiedSince = DateTime.Now;
                var response = await request.GetAsync(string.Format("https://api.spark.io/v1/devices/{0}/temperature", DeviceId));
                var json = await response.Content.ReadAsStringAsync();
                result = JsonConvert.DeserializeObject<TemperatureResponse>(json);
            }
            return result;
        }
Il progetto è disponibile per il download e modifiche per i vostri progetti!

lunedì 4 agosto 2014

Spark.io e Internet of Things

Stavo cercando un dispositivo embedded piccolo, economico e dotato di Wifi quando ho scoperto Spark.io.
Il sito è ben fatto e dà subito l'idea delle sue potenzialità, quindi ho deciso di comprare il dev kit, al prezzo di 99$ (il core da solo costa 39$). Ho scelto il core con l'antenna già presente sul circuito, perchè sono pigro!
Oltre a contenere lo Spark Core, il dev kit contiene molti componenti hardware:
Per iniziare, non avendo uno smartphone android o iphone, ho dovuto collegare il core al pc e con putty seguire le istruzioni per impostare la rete WiFi e la password, ed infine ottenere l'id del core.
Una volta connesso alla rete, ho seguito il tutorial per far accendere e spegnere due led.
Prima ho realizzato il ciruito:
Poi sono passato alla programmazione. Il codice è compatibile con il linguaggio usato su Arduino e l'interfaccia è web: è sufficiente loggarsi e l'IDE propone dei progetti di esempio che si possono modificare e salvare automaticamente sul proprio spazio cloud.
L'incredibile comodità è la modalità di flash del firmware via OTA. Dalla pagina web si preme il pulsante fulmine: il progetto viene ricompilato e il core riceve l'aggiornamento via WiFi. Completata l'operazione, il dispositivo riprende a funzionare con il nuovo firmware.

Nel prossimo post comanderò l'accensione dei led e visualizzerò la temperatura tramite un'app Windows Phone.

martedì 6 maggio 2014

//publish/ @ Torino


Evento: 16 - 17 maggio
I3P, Incubatore Imprese Innovative Politecnico di Torino
Via Pier Carlo Boggio, 59 Torino, IT, 10138 Italy

Un evento gratuito unico e divertente, organizzato da Microsoft in collaborazione con I3P ed il MIC di Torino.
Porta la tua app o il tuo gioco all'hackathon Microsoft //Publish/ per scrivere codice in contemporanea ad altri sviluppatori di tutto il mondo. Ti aiuteremo su design, performance, testing e pubblicazione! 32 ore nonstop per avere la tua app pronta per Windows Phone, tablet e PC.

Ricevi supporto dagli esperti Microsoft e delle community per risolvere eventuali problemi e dare il tocco finale al tuo progetto. Testa la tua app in gruppo con gli altri partecipanti e provala sui diversi device a tua disposizione. ConnettiApp Showcase per una delle quattro categorie:
ti online con sviluppatori ed esperti dei prodotti Microsoft collegati dagli eventi in simultanea in tutto il mondo. Pubblica la tua app per partecipare all'
1. Best Windows Phone 8.1 App ;
2. Best Windows 8.1 App; 3. Best Cross-platform App; 4. Breakthrough in App Innovation and Design
I primi due classificati per ogni categoria riceveranno un device da Microsoft Corporation.

Infine, tutte le app pubblicate sul Windows o Windows Phone Store entro il 1 giugno 2014 potranno vincere premi ancora più fantastici partecipando al contest di Microsoft Corporation //publish/ contest

Agenda Day 1

10:00 – 11:00Keynote
11:00 – 13:00 Sviluppo con il supporto degli esperti
13:00 – 14:00Pranzo
14:00 – 19:30 Sviluppo con il supporto degli esperti
19:30 – 20:30 Cena
20:30 – 23:00Sviluppo con il supporto degli esperti
23:00 – 00:00 Spuntino notturno

Agenda Day 2

00:00 – 09:00Sessione notturna di sviluppo
09:00 – 10:00 Colazione
10:00 – 13:00 Sviluppo con il supporto degli esperti
13:00 – 14:00Pranzo
14:00 – 17:00Sviluppo con il supporto degli esperti
17:00 – 18:00 App Showcase

Maggiori informazioni sul sito //publish/

martedì 4 febbraio 2014

Installare Windows Embedded 8.1 Industry

In questo post spiegherò passo passo come installare Windows Embedded 8.1 Industry.

1. Installazione

Con Virtual Box, crea una macchina virtuale per windows 8: io ne ho creata una con 2 GB di RAM e 15 GB di hard disk. 
Potete scaricare gratuitamente l'immagine trial di Windows 8.1 Industry dal sito http://www.microsoft.com/windowsembedded/en-us/downloads.aspx
Da Virtual Box caricate direttamente l'ISO e seguite l'installazione: è praticamente identica a Windows 8.1.







2. Abilitare le funzionalità embedded

Ad installazione completata, digita Windows features nello start menu: la ricerca ritornerà l'app per abilitare/disabilitare le funzionalità di sistema. Scorrendo la lista, espandi Embedded Features e seleziona tutti i sottoelementi.


Dopo il riavvio sarà disponibile nella lista delle applicazioni l'Embedded Lockdown Manager




Nei prossimi post impareremo ad usarlo.


martedì 1 ottobre 2013

Microsoft MVP 2013

Sono lieto di annunciare che sono stato nominato Microsoft MVP (Most Valuable Professional)  per la terza volta!

Ringrazio tutte le persone che mi hanno supportato per raggiungere questo risultato, in particolare Beppe e Gianni (riconfermati anche loro embedded MVP), con i quali ho condiviso molti eventi in questi anni.


Il programma MVP (Most Valuable Professional) Award è un riconoscimento di Microsoft per i leader eccezionali delle community indipendenti che condividono la propria passione, esperienza tecnica e competenza effettiva dei prodotti Microsoft con altre persone. Fornire assistenza e arricchire le community tecniche è parte dell'impegno di Microsoft.
Microsoft riconosce il ruolo fondamentale che queste persone ricoprono nell'adozione e nello sviluppo della tecnologia, nonché nel fornire assistenza agli utenti con i prodotti Microsoft.

La mia pagina MVP http://mvp.microsoft.com/it-it/mvp/Marco%20Bodoira-4034914

sabato 28 settembre 2013

Windows Phone Day a Milano, 30 settembre 2013

Il 30 settembre al Microsoft Innovation Campus di Milano, ci sarà il Windows Phone Day. In questa giornata, parte integrante della Windows Phone Week (https://twitter.com/winphoneweek) si partirà dallo sviluppo di un’app per poi approfondire alcune tematiche tra le più interessanti ed innovative. Le tematiche verranno trattate con un occhio di riguardo per gli sviluppatori che conoscono altre piattaforme, facendo gli opportuni paragoni per aiutarli a portare velocemente le loro app su Windows Phone.
Gli argomenti trattati in agenda:

App and running in 60 minuti di Roberto Freato
Sviluppare un’applicazione mobile è sicuramente un processo complesso; tuttavia alla base dello sviluppo di applicazioni ci sono una serie di concetti comuni che tratteremo in una sessione di solo codice. 

Organizzare al meglio il proprio codice: il pattern MVVM di Matteo Pagani
Quando si sviluppa un’applicazione Windows Phone complessa, l’approccio tradizionale basato sull’utilizzo del code behind mostra i suoi limiti. MVVM è il pattern più diffuso nelle tecnologie XAML, che consente di separare logica e interfaccia e di garantire una maggiore testabilità e manutenibilità del codice. In questa sessione vedremo come sfruttare questo pattern con Caliburn Micro, uno dei framework più diffusi. 

Ciclo di vita di una applicazione Windows Phone: tips & tricks di Dan Ardelean
Gestire il ciclo di vita di un’applicazione è uno dei requisiti fondamentali per lo sviluppatore Windows Phone. Ma quanti conoscono veramente a fondo tutti gli aspetti? Nel corso della sessione parleremo del modello di navigazione tra le pagine, di mapping e vedremo come implementare correttamente una politica di Fast Application Resume. 

Speech API e internazionalizzazione: un caso concreto di Lorenzo Barbieri
Le Speech API permettono di interagire con le app in maniera totalmente vocale. Sono molto facili da usare, ma se si decide di realizzare applicazioni in più lingue possono nascere alcuni problemi, che verranno affrontati e risolti in questa sessione. 

Azure Mobile Service di Eva Gjeci
Avete bisogno di un back-end per la vostra applicazione mobile o di inviare delle notifiche push, anche in maniera cross-platform? In questa sessione vedremo come creare un back-end unico, scalabile e sicuro, on the Cloud per le nostre app, siano esse Windows Phone, Windows Store ma anche iOS o Android e come inviare notifiche push in modo semplice a milioni di dispositivi con gli Azure Mobile Services. 

NFC e Bluetooth: interazione tra dispositivi di Michele Locuratolo
I nuovi dispositivi equipaggiati con Windows Phone 8 ci mettono a disposizione due tecnologie molto interessanti: NFC e Bluetooth. Implementare queste funzionalità nelle nostre applicazioni ci permette di implementare, con pochi passi, scenari di comunicazione tra dispositivi diversi. In questa sessione scopriremo come implementare queste funzionalità usando le Proximity API.
Se siete interessati, registratevi subito qui!
  

martedì 25 giugno 2013

La mia ultima app su Windows Store: Quoter

Crea le tue cartoline preferite con Quoter: puoi aprire e modificare le tue foto trasformandole in bianco e nero, aggiungendo una citazione, una frase o una dedica.
Salva e condividi le tue opere con i tuoi amici!
L'app e scaricabile gratuitamente qui: 
http://apps.microsoft.com/windows/it-it/app/quoter/b702bbd0-23bc-4886-8700-34b2b25e3059