Connettere Raspberry Pi all'hub IoT di Azure (Python)

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 I2C

  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 I2C 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 I2C e SSH su Raspberry Pi

Nota

Per abilitare SSH e I2C è 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
VDD (Pin 5G) 3,3 V PWR (Pin 1) Cavo bianco
GND (Pin 7G) GND (Pin 6) Cavo marrone
SDI (Pin 10G) I2C1 SDA (Pin 3) Cavo rosso
SCK (Pin 8G) I2C1 SCL (Pin 5) Cavo arancione
LED VDD (Pin 18F) GPIO 24 (Pin 18) Cavo bianco
LED GND (Pin 17F) GND (Pin 20) Cavo nero

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

Nota

Verificare che Pi sia connesso alla stessa rete del computer. Se il computer è connesso a una rete wireless mentre il dispositivo Pi è connesso a una rete cablata, ad esempio, l'indirizzo IP potrebbe non essere incluso nell'output di devdisco.

Eseguire un'applicazione di esempio in Pi

Installare i pacchetti prerequisiti

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 del nome host (o indirizzo IP) e selezionare SSH come tipo di connessione.

Utenti di 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.

Configurare l'applicazione di esempio

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

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

    cd iot-hub-python-raspberrypi-client-app
    nano config.py
    

    Questo file contiene 5 macro configurabili. La prima è MESSAGE_TIMESPAN, 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. I2C_ADDRESS è l'indirizzo I2C a cui è connesso il sensore BME280. GPIO_PIN_ADDRESS è l'indirizzo GPIO per il LED. L'ultima è BLINK_TIMESPAN, che definisce l'intervallo di tempo di attivazione del LED in millisecondi.

    Se non si dispone del sensore, impostare il valore SIMULATED_DATA su True 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. Dato che gli Azure IoT SDK per Python sono wrapper per Azure IoT Device C SDK, è necessario compilare le librerie C, se si vuole o è necessario generare le librerie Python dal codice sorgente.

    sudo chmod u+x setup.sh
    sudo ./setup.sh
    

    Nota

    È anche possibile specificare la versione desiderata eseguendo sudo ./setup.sh [--python-version|-p] [2.7|3.4|3.5]. Se si esegue uno script senza parametri, lo script rileva automaticamente la versione di Python installata (sequenza di ricerca 2.7 -> 3.4 -> 3.5). Assicurarsi che la versione di Python rimanga coerente durante la compilazione e l'esecuzione.

    Nota

    Durante la compilazione della libreria client Python (iothub_client.so) nei dispositivi Linux con meno di 1 GB di RAM, il processo potrebbe bloccarsi al 98% durante la compilazione di iothub_client_python.cpp, come illustrato di seguito [ 98%] Building CXX object python/src/CMakeFiles/iothub_client_python.dir/iothub_client_python.cpp.o. Se si verifica questo problema, controllare l'utilizzo della memoria del dispositivo tramite free -m command in un'altra finestra terminale nello stesso periodo di tempo. Se la memoria risulta insufficiente durante la compilazione del file iothub_client_python.cpp, potrebbe essere necessario aumentare temporaneamente lo spazio di swapping per ottenere maggiore memoria disponibile per compilare correttamente la libreria SDK per il dispositivo sul lato client Python.

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

    python app.py '<your Azure IoT hub device connection string>'
    

    Nota

    Assicurarsi di copiare e incollare la stringa di connessione del dispositivo tra virgolette singole. Se si usa python 3, è possibile usare il comando python3 app.py '<your Azure IoT hub device connection string>'.

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: