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.