Maggio 2017

Volume 32 Numero 5

Il presente articolo è stato tradotto automaticamente.

Internet of Things - Uso di Raspberry Pi e Windows 10

Da articolo Bruno Bruno

Anche se ho lavorato con il software per molto tempo, non ho mai interagire direttamente con l'hardware. Ho sviluppato numerosi software che funziona in prossimità dell'hardware, ma non ho mai lavorato con una scheda fisica in cui si trova il controllo completo di operazioni eseguite. Pertanto, quando ho avuto l'opportunità di utilizzare Raspberry Pi, soprattutto se si utilizzano Windows 10 e Visual Studio, ero intervenuto io alla opportunità.

Raspberry Pi, nelle versioni 2 e 3, possono utilizzare Windows 10 come il sistema operativo (sebbene non sia la versione completa, consente di eseguire App Universal Windows Platform [UWP] per controllare i dispositivi). Si tratta di un computer a un costo contenuto, è possibile ottenere uno per meno di $35: e potente. 3 Raspberry Pi ha un processore ARM Quad-Core a 64 bit, video HDMI, rete Ethernet e Wi-Fi, Bluetooth e quattro porte USB. È possibile eseguire l'operazione molte cose con esso.

L'Hardware

Per iniziare, è possibile utilizzare la scheda Raspberry Pi da solo, ma piuttosto che limitano. Se si utilizza solo l'area, che sarebbe quello utilizzato per lo sviluppo per smartphone o un computer. È inoltre necessario utilizzare alcuni componenti hardware aggiuntivi. Alcuni produttori hanno sviluppato Kit che si integrano: bacheche prototipo, resistenze, LED, potenziometri, sensori e una scheda di memoria. È possibile acquistare un case per il computer, ma non sono necessario, come è consigliabile mantenere il computer per rendere le connessioni aperte.

Conoscere l'Hardware

Dopo aver creato l'area e il kit, è necessario conoscere l'hardware. Inizialmente, è necessario esplorare Raspberry Pi e ha da offrire. Figura 1 Mostra la bacheca.

Modello raspberry Pi 3 B con GPIO
Figura 1 Raspberry Pi 3 modello B con GPIO

Sul lato destro della scheda in figura 1, è possibile visualizzare le quattro porte USB (1) e il connettore Ethernet (2). Nella parte inferiore, da sinistra a destra, si dispone di jack power sotto forma di un mini USB (3), il video HDMI (4), la porta di fotocamera (5) e l'output audio (6). Sul lato sinistro della scheda, si dispone di slot micro per schede SD (7) e un connettore per un display LCD visualizzare (8). È anche possibile visualizzare la scheda Bluetooth (9) e Wi-Fi. Al centro la bacheca, è possibile visualizzare il processore (10) e il controller di rete (11). Sul lato superiore, è attivato il blocco di Input/Output di scopo generale (GPIO) (12), dove apportare tutte le connessioni. Ogni pin ha uno scopo diverso, come si può vedere nella parte superiore della figura.

Raspberry Pi utilizza due estensioni di alimentazione: 5V e 3,3 v. Il PIN di nero è zero e quelle gialle sono i perni GPIO che verrà utilizzato nella fase di programmazione. Si noti che la numerazione pin non è ordinata. Di conseguenza, a meno che non si dispone di una memoria perfetto, mantenere un diagramma simile nelle vicinanze (disponibile in bit.ly/1WcBUS2).

Il secondo passaggio consiste nel studiare il kit. Tutto il contenuto non verrà trattata perché che è possibile modificare molto, a seconda del produttore (o da quelle che si intende acquistare). Per questo progetto, è necessario un breadboard, tre LED, resistenze e cavi. Per ulteriori informazioni su questi componenti e come interagire con essi, vedere colonna App moderne aprile 2016 di Frank La Vigne "Scrittura UWP App per l'Internet delle cose," all'indirizzo msdn.com/magazine/mt694090.

Il primo circuito di montaggio

Conoscere la bacheca e questi componenti semplici, è possibile installare il primo circuito. In genere, il "Hello World" per un sistema, ad esempio che è un programma che effettua di intermittenza del LED. Per rendere molto semplice, si inizierà creando un circuito che illumina il LED senza lampeggiante. A tale scopo, è necessario alcun tipo di programma, solo per comprendere il circuito che si intende compilare.

Se il LED si connette direttamente al 3,3 v pin di Raspberry Pi, è probabilmente verrebbe masterizzare il LED come non supporta il passaggio corrente da essa. Con diritto di Ohm (V = R * I), è necessario aggiungere una resistenza 220 Ω (Red/rosso/nero) del circuito. Se non si dispone di una resistenza 220 Ω disponibile, è possibile utilizzare uno più grande, con una maggiore resistenza, è meno corrente del circuito, quindi il LED non è danneggiato. La resistenza non può essere molto più grande poiché se l'oggetto corrente è troppo piccolo, non attiva il LED. In questo caso, ho utilizzato un Ω 330 senza problemi.

Per il montaggio in breadboard l'aspetto, vedere figura 2. L'immagine è stata creata con un programma di origine aperto denominato "Fritzing", che può essere scaricato da fritzing.org.

Circuito montata
Figura 2 montato circuito

Dopo il montaggio del circuito (questa operazione con la fonte di alimentazione Raspberry Pi off per qualsiasi componente di masterizzazione non), collegare la fonte di alimentazione. Se è installato correttamente, il LED dovrebbe accendersi. Se non attiva il LED, controllare se si inserisce poli del LED correttamente, ovvero il polo positivo (più transito) e la connessione di 3,3 v pin in Raspberry Pi devono essere nella stessa riga orizzontale. Polo negativo e la resistenza (in questo caso, non vi è alcun polarizzazione) deve essere nella stessa riga. La trasmissione della resistenza secondo deve essere connesso alla riga in cui viene indirizzato al pin terra in Raspberry Pi. Se tutto è corretto, verificare se il LED masterizzato e sostituirlo con un altro. Quando si attiva il LED, è possibile passare al passaggio successivo: creazione di un programma che controlla il LED.

Installazione e utilizzo di Windows 10

Fino ad ora, non era necessario un sistema operativo perché non è necessario programmare Raspberry Pi, ma è necessario l'attività di programmazione per continuare con l'esplorazione. A tale scopo, utilizzare Windows 10. È possibile scaricare e installare Windows 10 per Raspberry Pi gratuita del costo e, sebbene non sia esattamente la stessa versione in esecuzione sul desktop e Tablet, consente di eseguire i programmi per la piattaforma UWP senza apportare alcuna modifica.

Il primo passaggio consiste nella scaricare e installare Windows 10 nella scheda SD. A tale scopo, scaricare e installare lo strumento Dashboard principale di Windows 10 Internet delle cose (IoT), disponibile all'indirizzo bit.ly/2lPXrRc.

Per installare Windows 10 su Raspberry Pi, è necessario disporre di una scheda SD con almeno 8GB di micro compatibile. Successivamente, selezionare l'opzione "Installazione di un nuovo dispositivo" nel dashboard di scaricare e installare Windows 10 della scheda SD. È necessario un modo per scrivere la smart card nel computer. Se non si dispone di un lettore di smart card disponibile, è possibile acquistare un lettore di smart card USB.

Selezionare il tipo di dispositivo, il sistema operativo e l'unità in cui si trova la scheda SD. Assegnare un nome per il computer e selezionare una password di amministratore. Fare clic sulla casella per accettare le condizioni di licenza e fare clic sul pulsante Installa. Dopo aver scaricato e la registrazione dei dati della scheda, è necessario Windows 10 installato e pronto per l'utilizzo. Rimuoverla dal lettore di smart card di computer e inserirlo nello slot di Raspberry Pi. Connetterlo alla rete tramite un cavo Ethernet o Wi-Fi se si utilizza 2 o 3 Raspberry pi greco con un adattatore Wi-Fi. Accendere il dispositivo.

Una volta che viene avviato Windows 10, è possibile visualizzare il dispositivo connesso in dispositivi personali nel Dashboard di base di IoT.

È possibile aprire il portale di dispositivo nel browser usando l'indirizzo IP mostrato per il dispositivo connesso, sulla porta 8080. Nel mio caso, è possibile aprirlo con l'indirizzo http://192.168.1.199:8080. Verrà chiesto di password di amministratore impostate prima di aprire il portale, come illustrato nella figura 3.

Portale di dispositivo
Figura 3 dispositivo portale

In questo caso, è possibile configurare il dispositivo, controllare le app installate e le prestazioni e archiviazione. L'ultima opzione, remoto, consente abilitare il controllo remoto per il dispositivo. Questa opzione è utile se il dispositivo non dispone di un monitor collegato a esso, come è possibile controllare in modalità remota dal computer. Selezionare la casella con etichettata "Attivare Windows IoT Server remoto" per abilitare il controllo remoto nel dispositivo e scaricare l'applicazione di controllo remoto per Windows 10 dall'archivio.

Una volta installare ed eseguire l'applicazione di controllo remoto di Windows IoT, è possibile controllare e interagire con il dispositivo in modalità remota.

A questo punto, è possibile iniziare a sviluppare per il Raspberry Pi tramite Windows 10.

Sviluppo per il Raspberry Pi tramite Visual Studio

Per sviluppare applicazioni per il Raspberry Pi tramite Visual Studio, è necessario assicurarsi che sono installati gli strumenti. È possibile controllare questo selezionando "Installazione personalizzata" e gli strumenti di sviluppo di App Windows universale nella selezione di funzionalità di controllo.

Dopo questa operazione, sarà necessario installare gli strumenti e si può iniziare a sviluppare per il Raspberry Pi tramite Windows 10. Creare un nuovo progetto e selezionare l'app UWP "Vuoto".

Verrà creata un'applicazione vuota e si creerà un'applicazione che mostra il nome del computer corrente nella schermata principale. In MainPage. XAML, aggiungere il codice seguente:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
  <TextBlock FontSize="32" x:Name="MachineText"
    HorizontalAlignment="Center"
    VerticalAlignment="Center"/>
</Grid>

Quindi, nel file MainPage.xaml.cs, inserire il codice seguente per recuperare e visualizzare il nome del computer:

public MainPage()
  this.InitializeComponent();
  Windows.Security.ExchangeActiveSyncProvisioning.EasClientDeviceInformation eas =
    new Windows.Security.ExchangeActiveSyncProvisioning.EasClientDeviceInformation();
  MachineText.Text = eas.FriendlyName;
}

Se si esegue l'app sul computer locale, verranno visualizzati una finestra con il nome del computer.

Eseguire quindi Raspberry Pi. Nella piattaforma soluzione dal menu a discesa selezionare ARM e sull'elenco a discesa dispositivo, selezionare il computer remoto. Consente di aprire una finestra di dialogo per selezionare il computer remoto.

Selezionare il dispositivo Raspberry Pi ed eseguire l'applicazione. L'applicazione verrà distribuita per Raspberry Pi e può essere visualizzato in esecuzione nella finestra di controllo remoto. Si noti che il nome del computer visualizzato nella finestra deve essere quello impostate quando si formatta la scheda SD e installato Windows 10.

È possibile eseguire il debug questa app il così come avviene con le applicazioni locali, impostare punti di interruzione, analizzare le variabili e così via. Se si interrompe l'app in Visual Studio, si noterà che nell'applicazione viene chiusa e nella schermata principale viene visualizzato in Raspberry Pi. Se si torna al portale di browser, si noterà che l'app è ancora installato e può essere eseguito da utilizzando il pulsante di esecuzione, come illustrato nella figura 4.

Portale di App che mostra l'App installata
Figura 4 App portale che mostra l'App installata

È sorprendente a livello di compatibilità con le app UWP. Per visualizzare il potenziale, si utilizzerà un'applicazione che non è stata effettuata per Raspberry Pi. Si utilizzerà l'applicazione di esempio di Toolkit UWP Community, un toolkit di componenti sviluppati da Microsoft e dalla community, che è senz'altro pena in bit.ly/2b1PAJY.

Se si scarica il pacchetto e compilarlo, è possibile distribuirlo per Raspberry Pi ed eseguirlo (Sì, è possibile eseguire il programma nello stesso modo esatto si farebbe su un desktop). Per inciso, è consigliabile provare utilizzando i controlli nel dispositivo, funzionano correttamente.

L'interazione con la scheda

Dopo aver creato i programmi in esecuzione, è necessario avviare l'interazione con l'area. Si creerà un controller di semaforo. Sarà necessario tre LED (rosso, giallo e verde) e possono essere presenti diversi intervalli di tempo per ogni luce.

Per il funzionamento con i LED nella bacheca, è necessario ottenere il Controller GPIO e aprire il pin che si desidera controllare e impostarlo nel modo desiderato. In figura 1, noterete che il pin ottavo nel GPIO blocchi (seconda riga) è pin 22. Si utilizzerà PIN 22, 9 e 19 e il circuito risulta sarà simile a quello illustrato nella figura 5.

Circuito per i semafori
Figura 5 circuito per i semafori

Con questo circuito sul posto, creare una nuova app UWP vuota. In MainPage. XAML, immettere il codice illustrato nella figura 6.

Figura 6 Main pagina xaml codice, che mostra semafori

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
  <Border BorderBrush="Black" BorderThickness="3" HorizontalAlignment="Center"
      VerticalAlignment="Center" CornerRadius="5">
    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
      <Ellipse Width="50" Height="50" Fill="Red" Opacity="0.5"
        Margin="20,20,20,10" x:Name="RedLed" Stroke="Black"
        StrokeThickness="1"/>
      <Ellipse Width="50" Height="50" Fill="Yellow" Opacity="0.5"
        Margin="20,10,20,10" x:Name="YellowLed" Stroke="Black"
        StrokeThickness="1"/>
      <Ellipse Width="50" Height="50" Fill="LimeGreen" Opacity="0.5"
         Margin="20,10,20,20" x:Name="GreenLed" Stroke="Black"
         StrokeThickness="1"/>
    </StackPanel>
  </Border>
</Grid>

Noterete i semafori nella bacheca sia su schermo, in modo da visualizzare anche ciò che avviene visualizzando la visualizzazione remota. Viene illustrato il codice sorgente nel file Mainpage.xaml.cs in figura 7.

Figura 7 codice sorgente per attivare semafori a intervalli specificati

private int _currentLight;
private DispatcherTimer _timer;
private int[] _pinNumbers = new[] { 22, 9, 19 };
private GpioPin[] _pins = new GpioPin[3];
public MainPage()
{
  this.InitializeComponent();
  if (InitGPIO())
    InitTimer();
}
private void InitTimer()
{
  var intervals = new[] { 6000, 2000, 6000 };
  var lights = new[] { RedLed, YellowLed, GreenLed };
  _currentLight = 2;
  _timer = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(500) };
  _timer.Tick += (s, e) =>
  {
    _timer.Stop();
    lights[_currentLight].Opacity = 0.5;
    _pins[_currentLight].Write(GpioPinValue.High);
    _currentLight = _currentLight == 2 ? 0 : _currentLight + 1;
    lights[_currentLight].Opacity = 1.0;
    _pins[_currentLight].Write(GpioPinValue.Low);
    _timer.Interval = TimeSpan.FromMilliseconds(intervals[_currentLight]);
    _timer.Start();
  };
  _timer.Start();
}

Per eseguire questo codice, è necessario aggiungere un riferimento a estensioni di IoT. Pulsante destro del mouse nel nodo dei riferimenti in Esplora soluzioni, fare clic su Aggiungi riferimenti, quindi passare alla estensioni e aggiungere le estensioni di IoT Windows per la piattaforma UWP.

Si crea un timer che attiverà ogni LED in un intervallo impostato dalla matrice di intervalli (nel tuo caso 6s, 2s e 6s). I puntini di sospensione nella schermata sono loro opacità impostato su 0,5, pertanto vengono visualizzati in grigio e ciascuno di essi verrà impostato su 1 quando la luce è accesa. Impostare il timer verrà solo se è possibile impostare GPIO per la scheda, nella funzione InitGPIO, come illustrato nella figura 8.

Figura 8 codice per inizializzare GPIO e Set LED pin di Output

private bool InitGPIO()
{
  var gpio = GpioController.GetDefault();
  if (gpio == null)
    return false;
  for (int i = 0; i < 3; i++)
  {
    _pins[i] = gpio.OpenPin(_pinNumbers[i]);
    _pins[i].Write(GpioPinValue.High);
    _pins[i].SetDriveMode(GpioPinDriveMode.Output);
  }
  return true;
}

Si apre il tre PIN per l'output e impostato su elevato in modo i LED sono disattivati. Quando si imposta un pin Low, scorrerà corrente per il circuito e il LED verrà attivata. Quando si esegue il programma, verrà visualizzata una schermata con una luce di traffico, in cui le luci go e disattivare una reale e l'area sarà simile a foto nella figura 9.

Scheda semafori con l'esecuzione di programmi
Figura 9 semafori area con l'esecuzione di programmi

Conclusioni

Come si può vedere, è semplice creare programmi che interagiscono con Raspberry Pi. Conoscere la programmazione Windows 10, si dispone già di tutte le informazioni che necessarie per programmare un Raspberry Pi (Sì, l'interazione con l'area è un'altra storia, ma già metà avviene). È possibile creare programmi allo stesso modo, che si crea qualsiasi programma Windows 10 (in effetti, i programmi UWP eseguiti senza apportare alcuna modifica in Raspberry Pi). L'unica differenza è che sia il controller GPIO per impostare i dati e recuperare i dati. Se si desidera approfondire la conoscenza e provare altri progetti, esistono molti esempi di provare a bit.ly/2llecFZ. Verrà aperta una vasta gamma di opportunità e sarà possibile combinare un potente hardware con software eccezionale e produttivo. Che è una combinazione imbattibile.


Bruno Sonninoè stato un MVP Microsoft dal 2007. È un sviluppatore, un consulente e un autore, una volta scritto molti libri e articoli sullo sviluppo di Windows. È possibile seguirlo su Twitter: @bsonnino o leggere il suo blog all'indirizzo blogs.msmvps.com/bsonnino.

Grazie al seguente esperto tecnico Microsoft che ha esaminato in questo articolo: Rachel Appel