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

Questa esercitazione illustra le nozioni di base sull'uso di Raspberry Pi con il sistema operativo Raspbian.In this tutorial, you begin by learning the basics of working with Raspberry Pi that's running Raspbian. Viene poi illustrato come connettere i dispositivi al cloud usando l'hub IoT di Azure.You then learn how to seamlessly connect your devices to the cloud by using Azure IoT Hub. Per esempi di Windows 10 IoT Core, vedere Windows Dev Center.For Windows 10 IoT Core samples, go to the Windows Dev Center.

Se non si ha ancora un kit,Don't have a kit yet? Provare il simulatore online Raspberry Pi.Try Raspberry Pi online simulator. In alternativa, acquistare un nuovo kit qui.Or buy a new kit here.

Operazioni da fareWhat you do

  • Creare un hub IoT.Create an IoT hub.
  • Registrare un dispositivo per Pi nel proprio hub IoT.Register a device for Pi in your IoT hub.
  • Installare Raspberry Pi.Setup Raspberry Pi.
  • Eseguire un'applicazione di esempio in Pi per inviare i dati del sensore all'hub IoT.Run a sample application on Pi to send sensor data to your IoT hub.

Connettere Raspberry Pi a un hub IoT creato dall'utente.Connect Raspberry Pi to an IoT hub that you create. Dopodiché, eseguire un'applicazione di esempio in Pi per raccogliere i dati di temperatura e umidità da un sensore BME280.Then you run a sample application on Pi to collect temperature and humidity data from a BME280 sensor. Infine inviare i dati del sensore all'hub IoT.Finally, you send the sensor data to your IoT hub.

Contenuto dell'esercitazioneWhat you learn

  • Come creare un hub IoT di Azure e ottenere la stringa di connessione del nuovo dispositivo.How to create an Azure IoT hub and get your new device connection string.
  • Come connettere Pi con un sensore BME280.How to connect Pi with a BME280 sensor.
  • Come raccogliere i dati del sensore eseguendo un'applicazione di esempio in Pi.How to collect sensor data by running a sample application on Pi.
  • Come inviare i dati del sensore all'hub IoT.How to send sensor data to your IoT hub.

Elementi necessariWhat you need

Elementi necessari

  • La scheda di Raspberry Pi 2 o di Raspberry Pi 3.The Raspberry Pi 2 or Raspberry Pi 3 board.
  • Una sottoscrizione di Azure attiva.An active Azure subscription. Se non si ha un account di Azure, creare un account di Azure gratuito in pochi minuti.If you don't have an Azure account, create a free Azure trial account in just a few minutes.
  • Un monitor, una tastiera USB e un mouse da collegare a Pi.A monitor, a USB keyboard, and mouse that connect to Pi.
  • Un Mac o PC che esegue Windows o Linux.A Mac or a PC that is running Windows or Linux.
  • Una connessione Internet.An Internet connection.
  • Una scheda microSD da 16 GB o più.A 16 GB or above microSD card.
  • Una scheda microSD o un adattatore USB-SD con cui masterizzare l'immagine del sistema operativo nella scheda microSD.A USB-SD adapter or microSD card to burn the operating system image onto the microSD card.
  • Un alimentatore da 5 V/2 A con cavo micro USB da 1,8 metri circa.A 5-volt 2-amp power supply with the 6-foot micro USB cable.

Gli elementi seguenti sono opzionali:The following items are optional:

  • Un sensore Adafruit BME280 assemblato per rilevare umidità, temperatura e pressione.An assembled Adafruit BME280 temperature, pressure, and humidity sensor.
  • Una basetta sperimentale.A breadboard.
  • 6 cavi ponticello F/M.6 F/M jumper wires.
  • Un LED da 10 mm a luce diffusa.A diffused 10-mm LED.

Nota

Questi elementi sono opzionali, poiché l'esempio di codice supporta i dati del sensore simulati.These items are optional because the code sample support simulated sensor data.

Creare un hub IoTCreate an IoT hub

  1. Accedere al portale di Azure.Sign in to the Azure portal.
  2. Selezionare Nuovo > Internet delle cose > Hub IoT.Select New > Internet of Things > IoT Hub.

    Indice del portale di Azure

  3. Nel riquadro Hub IoT immettere le informazioni seguenti per l'hub IoT:In the IoT hub pane, enter the following information for your IoT hub:

    • Nome: creare un nome per l'hub IoT.Name: Create a name for your IoT hub. Se il nome immesso è valido, viene visualizzato un segno di spunta verde.If the name you enter is valid, a green check mark appears.

    Importante

    L'hub IoT sarà individuabile pubblicamente come endpoint DNS, quindi evitare di indicare informazioni riservate nell'assegnazione del nome.The IoT hub will be publicly discoverable as a DNS endpoint, so make sure to avoid any sensitive information while naming it.

    • Piano tariffario e livello di scalabilità: per questa esercitazione selezionare il livello F1 gratuito.Pricing and scale tier: For this tutorial, select the F1 - Free tier. Per altre informazioni, vedere la pagina relativa a piano tariffario e livello di scalabilità.For more information, see the Pricing and scale tier.

    • Gruppo di risorse: creare un gruppo di risorse per ospitare l'hub IoT o usarne uno esistente.Resource group: Create a resource group to host the IoT hub or use an existing one. Per altre informazioni, vedere l'articolo su come usare i gruppi di risorse per gestire le risorse di Azure.For more information, see Use resource groups to manage your Azure resources

    • Località: selezionare la località più vicina.Location: Select the closest location to you.

    • Aggiungi al dashboard: selezionare questa opzione per semplificare l'accesso all'hub IoT dal dashboard.Pin to dashboard: Check this option for easy access to your IoT hub from the dashboard.

      Finestra Hub IoT

  4. Fare clic su Crea.Click Create. La creazione dell'hub IoT può richiedere alcuni minuti.Your IoT hub might take a few minutes to create. È possibile monitorare lo stato di avanzamento nel riquadro Notifiche.You can monitor the progress in the Notifications pane.

Ora che è stato creato un hub IoT, individuare le informazioni importanti che consentono di connettere dispositivi e applicazioni all'hub IoT.Now that you have created an IoT hub, locate the important information that you use to connect devices and applications to your IoT hub.

  1. Dopo aver creato l'hub IoT, selezionarlo nel dashboard.After your IoT hub is created, click it on the dashboard. Annotare il Nome host, quindi fare clic su Criteri di accesso condiviso.Make a note of the Hostname, and then click Shared access policies.

    Ottenere il nome host dell'hub IoT

  2. Nel riquadro Criteri di accesso condivisi fare clic sul criterio iothubowner, quindi copiare e annotare la Stringa di connessione dell'hub IoT.In the Shared access policies pane, click the iothubowner policy, and then copy and make a note of the Connection string of your IoT hub. Per altre informazioni, vedere Controllare l'accesso all'hub IoT.For more information, see Control access to IoT Hub.

Nota

Per questa esercitazione di configurazione non è necessaria la stringa di connessione iothubowner.You will not need this iothubowner connection string for this set-up tutorial. Potrebbe essere tuttavia necessaria per alcune delle esercitazioni in altri scenari IoT, dopo aver completato questa configurazione.However, you may need it for some of the tutorials on different IoT scenarios after you complete this set-up.

Ottenere la stringa di connessione dell'hub IoT

Registrare un dispositivo nell'hub IoT per il dispositivoRegister a device in the IoT hub for your device

  1. Nel portale di Azure, aprire l'hub IoT.In the Azure portal, open your IoT hub.

  2. Fare clic su Esplora dispositivi.Click Device Explorer.

  3. Nel riquadro Esplora dispositivi fare clic su Aggiungi per aggiungere un dispositivo all'hub IoT.In the Device Explorer pane, click Add to add a device to your IoT hub. Eseguire quindi le operazioni seguenti:Then do the following:

    ID dispositivo: immettere l'ID del nuovo dispositivo.Device ID: Enter the ID of the new device. Gli ID dispositivo fanno distinzione tra maiuscole e minuscole.Device IDs are case sensitive.

    Tipo di autenticazione: selezionare Chiave simmetrica.Authentication Type: Select Symmetric Key.

    Genera chiavi automaticamente: selezionare questa casella di controllo.Auto Generate Keys: Select this check box.

    Connetti dispositivo all'hub IoT: fare clic su Abilita.Connect device to IoT Hub: Click Enable.

    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.The device ID may be visible in the logs collected for customer support and troubleshooting, so make sure to avoid any sensitive information while naming it.

  4. Fare clic su Salva.Click Save.

  5. Dopo la creazione del dispositivo, aprire il dispositivo nel riquadro Esplora dispositivi.After the device is created, open the device in the Device Explorer pane.
  6. Annotare la chiave primaria della stringa di connessione.Make a note of the primary key of the connection string.

    Ottenere la stringa di connessione del dispositivo

Installare Raspberry PiSet up Raspberry Pi

Installare il sistema operativo Raspbian per PiInstall the Raspbian operating system for Pi

Preparare la scheda microSD per l'installazione dell'immagine di Raspbian.Prepare the microSD card for installation of the Raspbian image.

  1. Scaricare Raspbian.Download Raspbian.
    1. Scaricare Raspbian Jessie with Desktop (file ZIP).Download Raspbian Jessie with Desktop (the .zip file).
    2. Estrarre l'immagine di Raspbian in una cartella nel computer.Extract the Raspbian image to a folder on your computer.
  2. Installare Raspbian nella scheda microSD.Install Raspbian to the microSD card.
    1. Scaricare e installare l'utilità di masterizzazione Etcher per schede SD.Download and install the Etcher SD card burner utility.
    2. Eseguire Etcher e selezionare l'immagine di Raspbian estratta nel passaggio 1.Run Etcher and select the Raspbian image that you extracted in step 1.
    3. Selezionare l'unità della scheda microSD.Select the microSD card drive. Si noti che Etcher potrebbe avere già selezionato l'unità corretta.Note that Etcher may have already selected the correct drive.
    4. Fare clic su Flash per installare Raspbian nella scheda microSD.Click Flash to install Raspbian to the microSD card.
    5. Rimuovere la scheda microSD dal computer al termine dell'installazione.Remove the microSD card from your computer when installation is complete. È possibile rimuovere direttamente la scheda microSD perché viene espulsa o smontata automaticamente da Etcher al termine dell'operazione.It's safe to remove the microSD card directly because Etcher automatically ejects or unmounts the microSD card upon completion.
    6. Inserire la scheda microSD in Pi.Insert the microSD card into Pi.

Abilitare SSH e I2CEnable SSH and 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.Connect Pi to the monitor, keyboard and mouse, start Pi and then log in Raspbian by using pi as the user name and raspberry as the password.
  2. Fare clic sull'icona di Raspberry > Preferenze > Raspberry Pi Configuration (Configurazione di Raspberry Pi).Click the Raspberry icon > Preferences > Raspberry Pi Configuration.

    Il menu Preferenze di Raspbian

  3. Nella scheda Interfacce impostare I2C e SSH su Abilita, quindi fare clic su OK.On the Interfaces tab, set I2C and SSH to Enable, and then click OK. Se non si hanno sensori fisici e si vogliono usare i dati di sensori simulati, questo passaggio è facoltativo.If you don't have physical sensors and want to use simulated sensor data, this step is optional.

    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.To enable SSH and I2C, you can find more reference documents on raspberrypi.org and RASPI-CONFIG.

Connettere il sensore a PiConnect the sensor to Pi

Usare i cavi ponticello e la basetta sperimentale per connettere un LED e un sensore BME280 a Pi, come indicato di seguito.Use the breadboard and jumper wires to connect an LED and a BME280 to Pi as follows. In assenza di un sensore, ignorare questa sezione.If you don’t have the sensor, skip this section.

La connessione di Raspberry Pi e del sensore

Il sensore BME280 può raccogliere i dati relativi a temperatura e umidità.The BME280 sensor can collect temperature and humidity data. Il LED sarà intermittente se viene stabilita una comunicazione tra il dispositivo e il cloud.And the LED will blink if there is a communication between device and the cloud.

Per i pin dei sensori usare i collegamenti seguenti:For sensor pins, use the following wiring:

Inizio (sensore e LED)Start (Sensor & LED) Fine (scheda)End (Board) Colore del cavoCable Color
VDD (Pin 5G)VDD (Pin 5G) 3,3 V PWR (Pin 1)3.3V PWR (Pin 1) Cavo biancoWhite cable
GND (Pin 7G)GND (Pin 7G) GND (Pin 6)GND (Pin 6) Cavo marroneBrown cable
SDI (Pin 10G)SDI (Pin 10G) I2C1 SDA (Pin 3)I2C1 SDA (Pin 3) Cavo rossoRed cable
SCK (Pin 8G)SCK (Pin 8G) I2C1 SCL (Pin 5)I2C1 SCL (Pin 5) Cavo arancioneOrange cable
LED VDD (Pin 18F)LED VDD (Pin 18F) GPIO 24 (Pin 18)GPIO 24 (Pin 18) Cavo biancoWhite cable
LED GND (Pin 17F)LED GND (Pin 17F) GND (Pin 20)GND (Pin 20) Cavo neroBlack cable

Fare clic per visualizzare i mapping Pin di Raspberry Pi 2 e 3 come riferimento.Click to view Raspberry Pi 2 & 3 Pin mappings for your reference.

Dopo aver correttamente collegato BME280 a Raspberry Pi, dovrebbe apparire come mostrato nell'immagine di seguito.After you've successfully connected BME280 to your Raspberry Pi, it should be like below image.

Pi e BME280 connessi

Connettere Pi alla reteConnect Pi to the network

Accendere Pi usando il cavo micro USB e l'alimentatore.Turn on Pi by using the micro USB cable and the power supply. 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.Use the Ethernet cable to connect Pi to your wired network or follow the instructions from the Raspberry Pi Foundation to connect Pi to your wireless network. Dopo aver connesso Pi alla rete, è necessario annotarne l'indirizzo IP.After your Pi has been successfully connected to the network, you need to take a note of the IP address of your Pi.

Connesso alla rete cablata

Nota

Verificare che Pi sia connesso alla stessa rete del computer.Make sure that Pi is connected to the same network as your 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.For example, if your computer is connected to a wireless network while Pi is connected to a wired network, you might not see the IP address in the devdisco output.

Eseguire un'applicazione di esempio in PiRun a sample application on Pi

Installare i pacchetti prerequisitiInstall the prerequisite packages

Per connettersi a Raspberry Pi, usare uno dei client SSH seguenti dal computer host.Use one of the following SSH clients from your host computer to connect to your Raspberry Pi.

Utenti WindowsWindows Users

  1. Scaricare e installare PuTTY per Windows.Download and install PuTTY for Windows.
  2. Copiare l'indirizzo IP di Pi nella sezione del nome host (o indirizzo IP) e selezionare SSH come tipo di connessione.Copy the IP address of your Pi into the Host name (or IP address) section and select SSH as the connection type.

Utenti di Mac e UbuntuMac and Ubuntu Users

Usare il client SSH predefinito in Ubuntu o macOS.Use the built-in SSH client on Ubuntu or macOS. Per connettere Pi tramite SSH potrebbe essere necessario eseguire ssh pi@<ip address of pi>.You might need to run ssh pi@<ip address of pi> to connect Pi via SSH.

Nota

Il nome utente predefinito è pi e la password è raspberry.The default username is pi , and the password is raspberry.

Configurare l'applicazione di esempioConfigure the sample application

  1. Clonare l'applicazione di esempio eseguendo il comando seguente:Clone the sample application by running the following command:

    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:Open the config file by running the following commands:

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

    Questo file contiene 5 macro configurabili.There are 5 macros in this file you can configurate. La prima è MESSAGE_TIMESPAN, che definisce l'intervallo di tempo (in millisecondi) tra due messaggi inviati al cloud.The first one is MESSAGE_TIMESPAN, which defines the time interval (in milliseconds) between two messages that send to cloud. La seconda è SIMULATED_DATA, ossia un valore booleano che indica se usare o no i dati del sensore simulato.The second one SIMULATED_DATA, which is a Boolean value for whether to use simulated sensor data or not. I2C_ADDRESS è l'indirizzo I2C a cui è connesso il sensore BME280.I2C_ADDRESS is the I2C address which your BME280 sensor is connected. GPIO_PIN_ADDRESS è l'indirizzo GPIO per il LED.GPIO_PIN_ADDRESS is the GPIO address for your LED. L'ultima è BLINK_TIMESPAN, che definisce l'intervallo di tempo di attivazione del LED in millisecondi.The last one is BLINK_TIMESPAN, which defined the timespan when your LED is turned on in milliseconds.

    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.If you don't have the sensor, set the SIMULATED_DATA value to True to make the sample application create and use simulated sensor data.

  3. Salvare e uscire premendo CTRL-O > Invio > CTRL-X.Save and exit by pressing Control-O > Enter > Control-X.

Compilare ed eseguire l'applicazione di esempioBuild and run the sample application

  1. Compilare l'applicazione di esempio eseguendo il comando seguente.Build the sample application by running the following command. 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.Because the Azure IoT SDKs for Python are wrappers on top of the Azure IoT Device C SDK, you will need to compile the C libraries if you want or need to generate the Python libraries from source code.

    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].You can also specify the version you want by running 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).If you run script without parameter, the script will automatically detect the version of python installed (Search sequence 2.7->3.4->3.5). Assicurarsi che la versione di Python rimanga coerente durante la compilazione e l'esecuzione.Make sure your Python version keeps consistent during building and running.

    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.On building the Python client library (iothub_client.so) on Linux devices that have less than 1GB RAM, you may see build getting stuck at 98% while building iothub_client_python.cpp as shown below [ 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.If you run into this issue, check the memory consumption of the device using free -m command in another terminal window during that time. 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.If you are running out of memory while compiling iothub_client_python.cpp file, you may have to temporarily increase the swap space to get more available memory to successfully build the Python client-side device SDK library.

  2. Eseguire l'applicazione di esempio tramite il comando seguente:Run the sample application by running the following command:

    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.Make sure you copy-paste the device connection string into the single quotes. Se si usa python 3, è possibile usare il comando python3 app.py '<your Azure IoT hub device connection string>'.And if you use the python 3, then you can use the command 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.You should see the following output that shows the sensor data and the messages that are sent to your IoT hub.

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

Passaggi successiviNext steps

È stata eseguita un'applicazione di esempio per raccogliere i dati del sensore da inviare all'hub IoT.You’ve run a sample application to collect sensor data and send it to your IoT hub. 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.To see the messages that your Raspberry Pi has sent to your IoT hub or send messages to your Raspberry Pi in a command line interface, see the Manage cloud device messaging with iothub-explorer tutorial.

Per altre informazioni sulle attività iniziali con l'hub IoT di Azure e per esplorare altri scenari IoT, vedere:To continue to get started with Azure IoT Hub and to explore other IoT scenarios, see the following: