- Cos'è l'hub IoT di Microsoft Azure?
- Creazione di un hub IoT di Azure
- Componenti necessari per creare il nostro circuito di test per Azure IoT con Raspberry Pi
- Azure IoT con Raspberry Pi - Schema hardware
- Programmazione di Raspberry Pi per pubblicare dati sull'hub IoT di Azure
- Pubblicare dati sull'hub IoT di Azure - Test
Azure IoT Hub, il servizio di cloud computing di Microsoft consente agli sviluppatori di connettersi, monitorare e gestire miliardi di dispositivi IoT su un'unica piattaforma. È già utilizzato in varie applicazioni IoT come sistemi di automazione domestica, sistemi di sicurezza, sorveglianza e monitoraggio. Per dimostrare le capacità dell'hub IoT di Azure, costruiremo un piccolo circuito con Raspberry Pi, un sensore di temperatura e umidità DHT11, al fine di elaborare i dati del sensore con esso. Infine, pubblicheremo i dati del sensore sul server IoT di Azure utilizzando il protocollo MQTT. In questo tutorial impareremo come impostare e configurare un server Azure e inviare dati utilizzando un Raspberry Pi.
Cos'è l'hub IoT di Microsoft Azure?
L'hub IoT di Azure è una raccolta di servizi gestiti in grado di connettere, monitorare e controllare i dispositivi IoT. Include anche una comunicazione sicura per i dispositivi, con visualizzazione dei dati e analisi che aiutano i produttori di dispositivi a creare, distribuire e gestire applicazioni IoT con l'aiuto del cloud di Azure . I dati di telemetria da dispositivo a CD dell'hub IoT di Azure ci consentono di conoscere lo stato dei dispositivi IoT connessi ei messaggi da cloud a dispositivo ci consentono di inviare comandi e notifiche ai dispositivi connessi. Un esempio potrebbe essere come, utilizzando un sistema di automazione domestica intelligente, possiamo raccogliere vari dati dei sensori e inviarli all'hub IoT di Azure per visualizzarli, archiviarli e gestirli. Possiamo anche controllare i dispositivi di output dall'interfaccia dell'hub IoT di Azure.
L'hub centrale per la comunicazione bidirezionale per applicazioni e dispositivi IoT supporta sia la comunicazione dispositivo-cloud che dispositivo cloud, supporta anche più modelli di messaggistica come telemetria da dispositivo a cloud, caricamento di file da dispositivi e metodi di richiesta-risposta e infine possiamo utilizzare il metodo di autenticazione per dispositivo che consente a ciascun dispositivo di connettersi in modo sicuro all'hub IoT. Dopo aver compreso le basi dell'hub IoT di Azure, passiamo alla configurazione del sistema.
Creazione di un hub IoT di Azure
Siamo pronti per eseguire tutte le configurazioni necessarie per configurare i servizi di Microsoft Azure, ma prima assicurati di avere un account Microsoft. Se non lo hai, puoi semplicemente registrarti. Successivamente, vai al portale di Azure usando portal.azure.com e accedi.
Dopo aver effettuato l'accesso, vai alla home page di Azure, seleziona il pulsante Crea una risorsa, quindi cerca Hub IoT nel campo Cerca nel Marketplace. Seleziona Hub IoT dai risultati della ricerca e quindi seleziona Crea. Le immagini sottostanti ti daranno un'idea migliore del processo.
Compila i dettagli necessari per creare un hub IoT.
Nella sezione Abbonamento, è necessario selezionare l'abbonamento per utilizzarlo per il proprio hub. Nel nostro caso, stiamo optando per un account di prova e abbiamo selezionato " Prova gratuita" .
Successivamente, nella sezione Gruppo di risorse, seleziona il tuo gruppo di risorse . Se non ne hai uno, devi crearne uno nuovo cliccando su Crea nuovo e inserisci il nome della Risorsa.
Nella sezione Regione, puoi utilizzare il menu a discesa per selezionare la tua regione preferita.
Nel IoT Hub Nome sezione, è necessario e nter un nome per il mozzo. Questo deve essere unico. Tutte le comunicazioni necessarie avverranno con questo nome.
Nella scheda "Dimensioni e scala", seleziona " Piano gratuito " e fai clic su Avanti. Quindi fare clic su "Rivedi + Crea". Ci vorranno alcuni minuti per creare l'hub IoT. Fai clic sul nome dell'hub IoT che hai creato. Annotare il nome host dalla finestra come mostrato nell'immagine sottostante. Quindi fare clic sui criteri di accesso condiviso nelle Impostazioni. I criteri di accesso condiviso sono evidenziati nell'immagine sottostante. Fare clic sull'opzione iothubowner in Policy. Annotare la chiave primaria e la chiave primaria della stringa di connessione per riferimenti futuri. Ora, per registrare un nuovo dispositivo nell'hub IoT, fai clic su Dispositivi IoT. Nel riquadro Esplora dispositivi, fare clic su Aggiungi per aggiungere un dispositivo all'hub.
Compila le seguenti informazioni nella scheda Nuovi dispositivi.
- ID dispositivo: immettere l'ID per il dispositivo. Gli ID dispositivo devono essere univoci.
- Tipo di autenticazione: selezionare una chiave simmetrica.
- Genera chiavi automaticamente: selezionare questa casella di controllo.
- Connetti il dispositivo all'hub IoT: fai clic su Abilita.
Una volta creato il dispositivo, puoi trovare il dispositivo appena creato nella sezione Esplora dispositivi. Fare clic sul nome del dispositivo. Mostrerà i dettagli del dispositivo. Annotare la chiave primaria e la chiave primaria della stringa di connessione del dispositivo. Questo è importante in quanto ne abbiamo bisogno per la comunicazione.
A questo punto, possiamo passare al lato hardware delle cose.
Componenti necessari per creare il nostro circuito di test per Azure IoT con Raspberry Pi
Poiché la parte hardware di questo circuito è molto semplice, anche i requisiti dei componenti sono molto semplici. Di seguito è riportato un elenco dei componenti richiesti.
- Raspberry Pi 3B (Possiamo anche usare qualsiasi altro modello di Pi)
- Scheda micro SD da 16 GB
- Sensore DHT11
- Micro USB 5V, alimentatore 2.4A
Azure IoT con Raspberry Pi - Schema hardware
Di seguito è mostrato lo schema circuitale completo per il progetto Azure IoT con Raspberry Pi, che è stato costruito utilizzando il fritzing. Seguire lo schema del circuito e le connessioni per realizzare il circuito da soli.
Il circuito precedente invia i dati di temperatura e umidità all'hub IoT Microsoft. In questo circuito, abbiamo utilizzato un sensore DHT11 per raccogliere i dati di temperatura e umidità e stiamo utilizzando un Raspberry Pi 3B come dispositivo di elaborazione dati. Il sensore DHT11 ha tre pin. I pin VCC e GND vengono utilizzati per fornire 5 V CC al sensore e il pin di uscita dati di DHT11 è collegato a GPIO4 di Raspberry Pi. Se vuoi imparare come interfacciare il sensore di temperatura e umidità DHT11 con Raspberry Pi, puoi controllare il nostro precedente articolo sull'argomento. Abbiamo anche utilizzato questo sensore per costruire la stazione meteorologica IoT Raspberry Pi.
Programmazione di Raspberry Pi per pubblicare dati sull'hub IoT di Azure
Prima di iniziare la codifica per questo progetto, è necessario creare una shell cloud di Azure (CLI) nel portale di Azure. Ciò tornerà utile in molti modi. A tale scopo, fare clic sul pulsante Azure cloud shell nel portale come mostrato di seguito. Quindi fare clic sull'opzione di creazione di archiviazione, contrassegnata in rosso.
Una volta fatto, è possibile aprire la CLI, ed eseguire i seguenti comandi per installare l'Azure add-on' s che saranno utilizzati per visualizzare i dati del sensore.
az estensione aggiungi --name azure-cli-iot-ext
Una volta fatto, dobbiamo installare le dipendenze sul Raspberry Pi per comunicare con il sensore DHT11 e per semplificare il processo di comunicazione per i servizi Azure IoT. Per questo apri un terminale Raspberry Pi per installare i pacchetti dipendenti utilizzati nel progetto.
Innanzitutto, dobbiamo scaricare la libreria DHT per Raspberry Pi, quindi estrarla dalla cartella principale ed eseguire il seguente comando per installarla.
sudo python setup.py install
Al termine dell'installazione, eseguire i seguenti comandi per installare tutti i pacchetti dipendenti nell'hub IoT di Azure.
sudo pip3 install azure-iot-device sudo pip3 install azure-iot-hub sudo pip3 install azure-iothub-service-client sudo pip3 install azure-iothub-device-client
Una volta completata l'installazione di tutti i prerequisiti, è il momento di scrivere il codice in Python. Per farlo, prima importa tutte le librerie:
importazione casuale importazione Adafruit_DHT ora importazione da azure.iot.device importazione IoTHubDeviceClient, messaggio
In questo progetto, stiamo usando il pin 4 del Raspberry Pi per elaborare i dati dai dati DHT11, quindi deve essere dichiarato come mostrato.
sensore = Adafruit_DHT.DHT11 pin = 4
Successivamente, definiamo la stringa di connessione del codice. Sostituiscilo con la stringa di connessione principale del dispositivo che abbiamo salvato in precedenza.
CONNECTION_STRING = "HostName = sensordata.azure-devices.net; DeviceId = ZZZZZ; SharedAccessKey = ZZZZZZZZZZZZZZZZZZ"
Successivamente, creiamo un array che verrà usato per inviare i dati all'hub IoT di Azure. Può essere fatto come mostrato di seguito.
MSG_SND = '{{"temperature": {temperature}, "umidità": {umidità}}} "
Successivamente, abbiamo definito un ciclo while, nel ciclo while, i dati di umidità e temperatura vengono elaborati utilizzando la funzione Adafruit_DHT.read_retry . Inoltre, definiamo due variabili speciali e assegniamo i dati di output a tali variabili.
mentre True: umidità, temperatura = Adafruit_DHT.read_retry (sensore, pin)
Successivamente, viene scritta una funzione per connettere l'hub IoT utilizzando i parametri di connessione che abbiamo definito in precedenza.
def iothub_client_init (): client = IoTHubDeviceClient.create_from_connection_string (CONNECTION_STRING) client di ritorno
Infine, nel passaggio successivo, entrambi i dati di temperatura e umidità vengono inviati all'hub di Azure, utilizzando il formato mostrato nel codice seguente. Inoltre, abbiamo utilizzato un metodo try and catch per identificare se sono presenti errori nel codice.
def iothub_client_telemetry_sample_run (): try: client = iothub_client_init () print ("Invio di dati all'hub IoT, premi Ctrl-C per uscire") mentre True: msg_txt_formatted = MSG_SND.format (temperatura = temperatura, umidità = umidità) message = Message (msg_txt_formatted) print ("Invio messaggio: {}". format (messaggio)) client.send_message (messaggio) print ("Messaggio inviato con successo") time.sleep (3)
Pubblicare dati sull'hub IoT di Azure - Test
Dopo aver scritto con successo il codice, compilarlo e controllare eventuali errori. Se il blocco di codice viene compilato correttamente, eseguire il codice. Nella finestra Terminale, dovresti vedere il messaggio che dice "Messaggio inviato con successo". Lo screenshot della finestra è mostrato di seguito:
Ora, per vedere i dati nell'hub IoT di Azure, vai al portale e fai clic su Terminale CLI ed esegui i seguenti comandi sostituendo le tue credenziali in esso.
az iot hub monitor-events --hub-name XYZ --device-id XYZ
Nota:
Sostituisci XYZ con il nome dell'hub e l'ID dispositivo.
Dopo aver eseguito il comando precedente, dovresti ottenere i dati come mostrato di seguito sullo schermo. Questi sono gli stessi dati inviati da Raspberry Pi.
Questo segna la fine di questo tutorial, spero che l'articolo ti sia piaciuto e abbia imparato qualcosa di nuovo. Se hai domande sull'articolo, puoi lasciarle nella sezione commenti qui sotto. Oppure puoi utilizzare il nostro forum sull'elettronica per ottenere una risposta migliore e più rapida.