Connettere Raspberry Pi ad Azure IoT Hub (C)

Questa esercitazione illustra le nozioni di base sull'uso di Raspberry Pi con il sistema operativo Raspbian. Viene poi illustrato come connettere i dispositivi al cloud usando l'hub IoT di Azure. Per esempi di Windows 10 IoT Core, vedere Windows Dev Center.

Se non si ha ancora un kit, Provare il simulatore online Raspberry Pi. In alternativa, acquistare un nuovo kit qui.

Operazioni da fare

  • Creare un hub IoT.
  • Registrare un dispositivo per Pi nel proprio hub IoT.
  • Installare Raspberry Pi.
  • Eseguire un'applicazione di esempio in Pi per inviare i dati del sensore all'hub IoT.

Connettere Raspberry Pi a un hub IoT creato dall'utente. Dopodiché, eseguire un'applicazione di esempio in Pi per raccogliere i dati di temperatura e umidità da un sensore BME280. Infine inviare i dati del sensore all'hub IoT.

Contenuto dell'esercitazione

  • Come creare un hub IoT di Azure e ottenere la stringa di connessione del nuovo dispositivo.
  • Come connettere Pi con un sensore BME280.
  • Come raccogliere i dati del sensore eseguendo un'applicazione di esempio in Pi.
  • Come inviare i dati del sensore all'hub IoT.

Elementi necessari

Elementi necessari

  • La scheda di Raspberry Pi 2 o di Raspberry Pi 3.
  • Una sottoscrizione di Azure attiva. Se non si ha un account di Azure, creare un account di Azure gratuito in pochi minuti.
  • Un monitor, una tastiera USB e un mouse da collegare a Pi.
  • Un Mac o PC che esegue Windows o Linux.
  • Una connessione Internet.
  • Una scheda microSD da 16 GB o più.
  • Una scheda microSD o un adattatore USB-SD con cui masterizzare l'immagine del sistema operativo nella scheda microSD.
  • Un alimentatore da 5 V/2 A con cavo micro USB da 1,8 metri circa.

Gli elementi seguenti sono opzionali:

  • Un sensore Adafruit BME280 assemblato per rilevare umidità, temperatura e pressione.
  • Una basetta sperimentale.
  • 6 cavi ponticello F/M.
  • Un LED da 10 mm a luce diffusa.
Nota

Questi elementi sono opzionali, poiché l'esempio di codice supporta i dati del sensore simulati.

Creare un hub IoT

  1. Nel portale di Azure fare clic su Nuovo > Internet delle cose > Hub IoT.

    Creare un hub IoT nel portale di Azure

  2. Nel riquadro Hub IoT immettere le informazioni seguenti per l'hub IoT:

    Nome: immettere il nome dell'hub IoT. Se il nome immesso è valido, viene visualizzato un segno di spunta verde.

    Piano tariffario e livello di scalabilità: selezionare il livello F1 gratuito. Questa opzione è sufficiente per questa demo. Per altre informazioni, vedere Piano tariffario e livello di scalabilità.

    Gruppo di risorse: creare un gruppo di risorse per ospitare l'hub IoT o usarne uno esistente. Per altre informazioni, vedere Usare i gruppi di risorse per gestire le risorse di Azure.

    Percorso: selezionare la posizione più vicina all'utente in cui viene creato l'hub IoT.

    Aggiungi al dashboard: selezionare questa opzione per semplificare l'accesso all'hub IoT dal dashboard.

    Immettere le informazioni per creare l'hub IoT

    Importante

    L'hub IoT sarà individuabile pubblicamente come endpoint DNS, quindi evitare di indicare informazioni riservate nell'assegnazione del nome.

  3. Fare clic su Crea. La creazione dell'hub IoT può richiedere alcuni minuti. È possibile visualizzare lo stato di avanzamento nel riquadro Notifiche.

    Vedere le notifiche relative allo stato dell'hub IoT

  4. Dopo aver creato l'hub IoT, selezionarlo nel dashboard. Annotare il Nome host, quindi fare clic su Criteri di accesso condiviso.

    Ottenere il nome host dell'hub IoT

  5. Nel riquadro Criteri di accesso condivisi fare clic sul criterio iothubowner, quindi copiare e annotare la Stringa di connessione dell'hub IoT. Per altre informazioni, vedere Controllare l'accesso all'hub IoT.

Nota

Per questa esercitazione di configurazione non è necessaria la stringa di connessione iothubowner. Potrebbe essere tuttavia necessaria per alcune delle esercitazioni in altri scenari IoT, dopo aver completato questa configurazione.

Ottenere la stringa di connessione dell'hub IoT

Registrare un dispositivo nell'hub IoT per il dispositivo

  1. Nel portale di Azure, aprire l'hub IoT.

  2. Fare clic su Esplora dispositivi.

  3. Nel riquadro Esplora dispositivi fare clic su Aggiungi per aggiungere un dispositivo all'hub IoT. Eseguire quindi le operazioni seguenti:

    ID dispositivo: immettere l'ID del nuovo dispositivo. Gli ID dispositivo fanno distinzione tra maiuscole e minuscole.

    Tipo di autenticazione: selezionare Chiave simmetrica.

    Genera chiavi automaticamente: selezionare questa casella di controllo.

    Connetti dispositivo all'hub IoT: fare clic su Abilita.

    Aggiungere un dispositivo a Device Explorer nell'hub IoT

    Importante

    L'ID dispositivo può essere visibile nei log raccolti per il supporto tecnico e la risoluzione dei problemi, quindi evitare di indicare informazioni riservate nell'assegnazione del nome.

  4. Fare clic su Salva.

  5. Dopo la creazione del dispositivo, aprire il dispositivo nel riquadro Esplora dispositivi.
  6. Annotare la chiave primaria della stringa di connessione.

    Ottenere la stringa di connessione del dispositivo

Installare Raspberry Pi

Installare il sistema operativo Raspbian per Pi

Preparare la scheda microSD per l'installazione dell'immagine di Raspbian.

  1. Scaricare Raspbian.
    1. Scaricare Raspbian Jessie with Desktop (file ZIP).
    2. Estrarre l'immagine di Raspbian in una cartella nel computer.
  2. Installare Raspbian nella scheda microSD.
    1. Scaricare e installare l'utilità di masterizzazione Etcher per schede SD.
    2. Eseguire Etcher e selezionare l'immagine di Raspbian estratta nel passaggio 1.
    3. Selezionare l'unità della scheda microSD. Si noti che Etcher potrebbe avere già selezionato l'unità corretta.
    4. Fare clic su Flash per installare Raspbian nella scheda microSD.
    5. Rimuovere la scheda microSD dal computer al termine dell'installazione. È possibile rimuovere direttamente la scheda microSD perché viene espulsa o smontata automaticamente da Etcher al termine dell'operazione.
    6. Inserire la scheda microSD in Pi.

Abilitare SSH e SPI

  1. Collegare Pi al monitor, alla tastiera e al mouse, avviare Pi e accedere a Raspbian usando pi come nome utente e raspberry come password.
  2. Fare clic sull'icona di Raspberry > Preferenze > Raspberry Pi Configuration (Configurazione di Raspberry Pi).

    Il menu Preferenze di Raspbian

  3. Nella scheda Interfacce impostare SPI e SSH su Abilita, quindi fare clic su OK. Se non si hanno sensori fisici e si vogliono usare i dati di sensori simulati, questo passaggio è facoltativo.

    Abilitare SPI e SSH su Raspberry Pi

Nota

Per abilitare SSH e SPI è possibile trovare più documenti di riferimento su raspberrypi.org e RASPI-CONFIG.

Connettere il sensore a Pi

Usare i cavi ponticello e la basetta sperimentale per connettere un LED e un sensore BME280 a Pi, come indicato di seguito. In assenza di un sensore, ignorare questa sezione.

La connessione di Raspberry Pi e del sensore

Il sensore BME280 può raccogliere i dati relativi a temperatura e umidità. Il LED sarà intermittente se viene stabilita una comunicazione tra il dispositivo e il cloud.

Per i pin dei sensori usare i collegamenti seguenti:

Inizio (sensore e LED) Fine (scheda) Colore del cavo
LED VDD (Pin 5G) GPIO 4 (Pin 7) Cavo bianco
LED GND (Pin 6G) GND (Pin 6) Cavo nero
VDD (Pin 18F) 3,3 V PWR (Pin 17) Cavo bianco
GND (Pin 20F) GND (Pin 20) Cavo nero
SCK (Pin 21F) SPI0 SCLK (Pin 23) Cavo arancione
SDO (Pin 22F) SPI0 MISO (Pin 21) Cavo giallo
SDI (Pin 23F) SPI0 MOSI (Pin 19) Cavo verde
CS (Pin 24F) SPI0 CS (Pin 24) Cavo blu

Fare clic per visualizzare i mapping Pin di Raspberry Pi 2 e 3 come riferimento.

Dopo aver correttamente collegato BME280 a Raspberry Pi, dovrebbe apparire come mostrato nell'immagine di seguito.

Pi e BME280 connessi

Connettere Pi alla rete

Accendere Pi usando il cavo micro USB e l'alimentatore. Usare il cavo Ethernet per connettere Pi alla rete cablata oppure seguire le istruzioni riportate nella Guida di Raspberry Pi per connettere Pi alla rete wireless. Dopo aver connesso Pi alla rete, è necessario annotarne l'indirizzo IP.

Connesso alla rete cablata

Eseguire un'applicazione di esempio in Pi

Installare i pacchetti prerequisiti

  1. Per connettersi a Raspberry Pi, usare uno dei client SSH seguenti dal computer host.

    Utenti Windows

    1. Scaricare e installare PuTTY per Windows.
    2. Copiare l'indirizzo IP di Pi nella sezione relativa a nome host o indirizzo IP e selezionare SSH come tipo di connessione.

    PuTTy

    Utenti Mac e Ubuntu

    Usare il client SSH predefinito in Ubuntu o macOS. Per connettere Pi tramite SSH potrebbe essere necessario eseguire ssh pi@<ip address of pi>.

    Nota

    Il nome utente predefinito è pi e la password è raspberry.

  2. Installare i pacchetti di prerequisiti per Azure IoT SDK per dispositivi di Microsoft Azure per C e Cmake eseguendo i comandi seguenti:

    grep -q -F 'deb http://ppa.launchpad.net/aziotsdklinux/ppa-azureiot/ubuntu vivid main' /etc/apt/sources.list || sudo sh -c "echo 'deb http://ppa.launchpad.net/aziotsdklinux/ppa-azureiot/ubuntu vivid main' >> /etc/apt/sources.list"
    grep -q -F 'deb-src http://ppa.launchpad.net/aziotsdklinux/ppa-azureiot/ubuntu vivid main' /etc/apt/sources.list || sudo sh -c "echo 'deb-src http://ppa.launchpad.net/aziotsdklinux/ppa-azureiot/ubuntu vivid main' >> /etc/apt/sources.list"
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FDA6A393E4C2257F
    sudo apt-get update
    sudo apt-get install -y azure-iot-sdk-c-dev cmake libcurl4-openssl-dev git-core
    git clone git://git.drogon.net/wiringPi
    cd ./wiringPi
    ./build
    

Configurare l'applicazione di esempio

  1. Clonare l'applicazione di esempio eseguendo il comando seguente:

    git clone https://github.com/Azure-Samples/iot-hub-c-raspberrypi-client-app
    
  2. Aprire il file di configurazione eseguendo i comandi seguenti:

    cd iot-hub-c-raspberrypi-client-app
    nano config.h
    

    File di configurazione

    Questo file contiene due macro configurabili. La prima è INTERVAL, che definisce l'intervallo di tempo (in millisecondi) tra due messaggi inviati al cloud. La seconda è SIMULATED_DATA, ossia un valore booleano che indica se usare o no i dati del sensore simulato.

    Se non si dispone del sensore, impostare il valore SIMULATED_DATA su 1 per permettere all'applicazione di esempio di creare e usare i dati del sensore simulati.

  3. Salvare e uscire premendo CTRL-O > Invio > CTRL-X.

Compilare ed eseguire l'applicazione di esempio

  1. Compilare l'applicazione di esempio eseguendo il comando seguente:

    cmake . && make
    

    Output della compilazione

  2. Eseguire l'applicazione di esempio tramite il comando seguente:

    sudo ./app '<DEVICE CONNECTION STRING>'
    
    Nota

    Assicurarsi di copiare e incollare la stringa di connessione del dispositivo tra virgolette singole.

Dovrebbe essere visibile l'output seguente che mostra i dati del sensore e i messaggi inviati all'hub IoT.

Output - dati del sensore inviati da Raspberry Pi all'hub IoT

Passaggi successivi

È stata eseguita un'applicazione di esempio per raccogliere i dati del sensore da inviare all'hub IoT. Per visualizzare i messaggi inviati da Raspberry Pi all'hub IoT o per inviare messaggi a Raspberry Pi in un'interfaccia della riga di comando, vedere l'esercitazione sulla gestione della messaggistica tra cloud e dispositivo con iothub-explorer.

Per altre informazioni sulle attività iniziali con l'hub IoT di Azure e per esplorare altri scenari IoT, vedere: