Introduzione.

Terzo articolo introduttivo sull’ Internet of Things, scritto con la collaborazione di Piero Sbressa. Terminata la procedura di installazione di Windows 10 IoT Core che trovate a questo link, proveremo ora a creare un applicazione in modo far lampeggiare un Led, precisando però che normalmente far accendere o lampeggiare un led non e considerato IoT, ma in questo caso, serve per dare un introduzione e un idea su come sviluppare future applicazioni o prototipi con Raspberry Pi2 con Visual Studio 2015.


Circuito elettronico.

Il materiale che ci serve lo trovate nella seguente immagine:

WP_20150920_009

  • 1 LED del colore che volete (Rosso, verde o giallo)
  • 1 Resistenza a 220 Ohm.
  • 2 cavi connettori
  • 1 Breadboard

Il collegamento finale lo vedete nelle seguenti foto:

WP_20150912_012

WP_20150913_002

WP_20150913_003

WP_20150913_004

Qui di seguito trovate lo schema elettronico del circuito. Premetto che per creare un circuito o disegnarlo, sono necessari per mia esperienza personale, oltre un software dedicato, delle basi sulle parti hardware e basi di elettronica, diversamente il mio consiglio e dedicarsi allo sviluppo del codice e lasciare a terzi i compiti precedenti.

FIGURA 1

Dall’immagine precedente, notiamo che abbiamo due cavi, uno di colore nero e uno rosso. Il cavo di colore nero che rappresenta lo zero volt lo colleghiamo sul pin GPIO5 corrispondente al pin 29 che troviamo sulla GPIO della scheda Raspberry Pi2. Il cavo rosso sul pin 3.3V PWR corrispondente al pin 1. Di seguito la piedinatura del connettore GPIO così da agevolarci per il collegamento.

FIGURA 2

Cosa importante, il Diodo Led per funzionare, deve essere collegato in maniera corretta, ossia il katodo (lo si riconosce perché e il piedino più corto) va collegato sullo zero volt, l’anodo ossia l’altro piedino sul positivo, che in questo caso sarà dato dal pin 3.3V PWR. Un errato cablaggio non permetterà al Diodo led di funzionare , è potrebbe danneggiare il componente, la resistenza è importante perché generalmente un Diodo Led funziona ad una tensione di circa 3,3v dc, in questo caso la resistenza fa si che vi sia una caduta di tensione necessaria e fornire così la tensione corretta.

Impostazione del pc in modalità sviluppatore.

Una cosa che va eseguita prima di mettersi a sviluppare codice e impostare la modalità “sviluppatore” del nostro pc. La procedura e di per se semplice. Puntiamo il mouse sull’icona delle notifiche come mostrato in figura.

FIGURA 3

Alla successiva finestra di dialogo, selezionare “Tutte le impostazioni”.

FIGURA 4

Saremo condotti alla schermata seguente, selezioniamo il comando “Aggiornamento e sicurezza”.

FIGURA 5

Alla schermata seguente andiamo a selezionare il comando “Per sviluppatori”, e andiamo a selezionare la voca “Modalità sviluppatore.

FIGURA 6

Apparirà una finestra di dialogo dove dobbiamo confermare mediante tasto “Si” l’attivazione di tale modalità.

FIGURA 7

Diamo conferma e abbiamo abilitato il nostro pc per lo sviluppo.

FIGURA 8

Ora siamo pronti per creare il nostro primo progetto IoT.

Creazione del progetto.

Prima di iniziare con lo sviluppo, dobbiamo ancora scaricare ed installare la libreria Windows IoT Core Project Templates che trovate a questo link. In questa libreria troverete tutto il necessario per lo sviluppo su Raspberry Pi2, che vedremo in seguito nel corso dell’articolo. Apriamo ora Visual Studio, e creiamo un nuovo progetto Universal Windows App, in c#.

image

Dobbiamo a questo punto aggiungere  una Reference all’ sdk Windows IoT Exstension for the UWP, come nella figura seguente.

image

Aggiungiamo ora nella Grid dello Xaml il seguente codice:

<StackPanel HorizontalAlignment=”Center” VerticalAlignment=”Center”>

    <Ellipse x:Name=”LED” Fill=”LightGray” Stroke=”White” Width=”100″ Height=”100″ Margin=”10″/>

    <TextBlock x:Name=”GpioStatus” Text=”Waiting to initialize GPIO…” Margin=”10,50,10,10″ TextAlignment=”Center” FontSize=”26.667″ />

    <Button Name=”AccendeSpegneLEDButton” Content=”Accendi LED” HorizontalAlignment=”Center” Click=”AccendeSpegneLEDButton_Click”/>

</StackPanel>

Mentre nel code-behind mettiamo il seguente codice:

// Copyright (c) Microsoft. All rights reserved.

using System;
using Windows.Devices.Gpio;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Media;

namespace Blinky
{
    public sealed partial class MainPage : Page
    {
        private const int LED_PIN = 5;
        private GpioPin pin;
        private GpioPinValue pinValue;
        private SolidColorBrush yellowBrush = new SolidColorBrush(Windows.UI.Colors.Yellow);
        private SolidColorBrush grayBrush = new SolidColorBrush(Windows.UI.Colors.LightGray);

        public MainPage()
        {
            InitializeComponent();
            InitGPIO();
        }

        private void InitGPIO()
        {
            var gpio = GpioController.GetDefault();

            // Show an error if there is no GPIO controller
            if (gpio == null)
            {
                pin = null;
                GpioStatus.Text = “Non c’è il GPIO controller su questo device.”;
                return;
            }

            pin = gpio.OpenPin(LED_PIN);
            pinValue = GpioPinValue.High;
            pin.Write(pinValue);
            pin.SetDriveMode(GpioPinDriveMode.Output);

            GpioStatus.Text = “GPIO pin correttamente inizializzati.”;

        }

        private void AccendeSpegneLEDButton_Click(object sender, RoutedEventArgs e)
        {
            if (pinValue == GpioPinValue.High)
            {
                pinValue = GpioPinValue.Low;
                pin.Write(pinValue);
                LED.Fill = yellowBrush;
                AccendeSpegneLEDButton.Content = “Spegni LED”;
            }
            else
            {
                pinValue = GpioPinValue.High;
                pin.Write(pinValue);
                LED.Fill = grayBrush;
                AccendeSpegneLEDButton.Content = “Accendi LED”;
            }

        }
    }
}  

Terminata la parte di codice, prima di eseguire il test dell’applicazione, ci sono un paio di cose da vedere. La prima essendo che stiamo sviluppando su Raspberry Pi2, e quella di impostare la compilazione in modalità ARM, lo si può eseguire dal menù a tendina come presente in figura.

FIGURA 9

In riferimento all’immagine precedente, noterete che è attivata l’esecuzione come “Computer remoto”. Questo perché vogliamo eseguire l’applicazione sulla scheda Raspberry Pi2. Selezionate questa modalità, e alla schermata seguente andiamo a selezionate il device e l’indirizzo ip della Raspberry Pi2. deselezionando l’autenticazione, in alternativa è possibile modificare queste impostazioni, selezionando il progetto, tasto destro del mouse, selezioniamo il comando “Proprietà” e subito dopo “Debug”, saremo condotti nella seguente schermata.

FIGURA 10


Esecuzione dell’applicazione.

Possiamo ora procedere con l’esecuzione della nostra prima applicazione. Tasto F5 e se abbiamo fatto tutto correttamente il nostro LED si accenderà dopo aver cliccato sul pulsante, come possiamo vedere dalle seguenti immagini.

WP_20150912_011

WP_20150920_017


Conclusione.

In questo articolo, abbiamo creato la nostra prima applicazione con Raspberry Pi2 e Visual Studio 2015, partendo dalla progettazione, realizzazione del circuito elettronico, per terminare con la programmazione e scrittura del codice per la gestione del led. Nei successivi articoli, cercheremo di creare altri progetti di prova, lo scopo di questi mini articoli è quello di dare un introduzione su come progettare e realizzare un proprio progetto e perché no, riuscire poi a farci business.  Articolo scritto da Piero Sbressa (www.crystalweb.it) e Carmelo La Monica, Microsoft Contributor (http://community.visual-basic.it/carmelolamonica/default.aspx)

Altri Articoli

Serial Class per Universal Windows Platform (Parte...
views 171
Introduzione. Nel precedente articolo che trovate a questo link, abbiamo discusso tutto ciò che riguarda l’utilizzo della Classe SerialComunication, ...
Serial Class per Universal Windows Platform (Parte...
views 505
Introduzione. In questo articolo, sarà discusso tutto ciò che riguarda l’utilizzo della Classe SerialComunication, inclusa nel namespace Windows.De...
Windows Remote Arduino parte uno
views 174
Introduzione. Con questo mini articolo e con la mia esperienza iniziale, vorrei porre una breve panoramica della libreria di Windows Remote Arduino, ...
Gestire sensori analogici su Raspberry Pi2
views 536
Introduzione. Riprendiamo il nostro percorso sullo sviluppo e prototipazione con la board RaspberryPi2. Nel precedente articolo che trovate a questo ...