Esercitazione: Usare Eclipse ThreadX per connettere un kit STDevices B-L475E-IOT01A Discovery per hub IoT

Esplora il codice

In questa esercitazione si userà Eclipse ThreadX per connettere il kit di individuazione ST Shadows B-L475E-IOT01A (da ora in poi STM DevKit) ad Azure IoT.

Completare le attività seguenti:

  • Installare un set di strumenti di sviluppo incorporati per la programmazione di STM DevKit in C
  • Creare un'immagine e lampeggiarla in STM DevKit
  • Usare l'interfaccia della riga di comando di Azure per creare e gestire un hub IoT di Azure a cui si connette in modo sicuro STM DevKit
  • Usare Azure IoT Explorer per registrare un dispositivo con l'hub IoT, visualizzare le proprietà del dispositivo, visualizzare i dati di telemetria del dispositivo e chiamare comandi diretti nel dispositivo

Prerequisiti

  • Un PC che esegue Windows 10 o Windows 11

  • Una sottoscrizione di Azure attiva. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

  • Git per la clonazione del repository

  • Interfaccia della riga di comando di Azure. In questa esercitazione sono disponibili due opzioni per l'esecuzione dei comandi dell'interfaccia della riga di comando di Azure:

    • Usare Azure Cloud Shell, una shell interattiva che esegue i comandi dell'interfaccia della riga di comando nel browser. Questa opzione è consigliata perché non è necessario installare nulla. Se si usa Cloud Shell per la prima volta, accedere al portale di Azure. Seguire la procedura descritta in Avvio rapido di Cloud Shell per Avviare Cloud Shell e selezionare l'ambiente Bash.
    • Facoltativamente, eseguire l'interfaccia della riga di comando di Azure nel computer locale. Se l'interfaccia della riga di comando di Azure è già installata, eseguire az upgrade per aggiornare l'interfaccia della riga di comando e le estensioni alla versione corrente. Per installare l'interfaccia della riga di comando di Azure, vedere Installare l'interfaccia della riga di comando di Azure.
  • Hardware

    • B-L475E-IOT01A (STM DevKit)
    • Wi-Fi 2,4 GHz
    • Usb 2.0 Cavo maschio da maschio a Micro USB

Preparare l'ambiente di sviluppo

Per configurare l'ambiente di sviluppo, clonare prima di tutto un repository GitHub che contiene tutti gli asset necessari per l'esercitazione. Installare quindi un set di strumenti di programmazione.

Clonare il repository

Clonare il repository seguente per scaricare tutto il codice del dispositivo di esempio, gli script di installazione e le versioni offline della documentazione. Se questo repository è stato clonato in precedenza in un'altra esercitazione, non è necessario eseguire di nuovo questa operazione.

Per clonare il repository, eseguire il comando seguente:

git clone --recursive https://github.com/eclipse-threadx/getting-started.git

Installa gli strumenti

Il repository clonato contiene uno script di installazione che installa e configura gli strumenti necessari. Se questi strumenti sono stati installati in un'altra esercitazione sul dispositivo incorporato, non è necessario eseguire di nuovo questa operazione.

Nota

Lo script di installazione installa gli strumenti seguenti:

Per installare gli strumenti:

  1. Passare al percorso seguente nel repository ed eseguire lo script di installazione denominato get-toolchain.bat:

    getting-started\tools\get-toolchain.bat

  2. Aprire una nuova finestra della console per riconoscere le modifiche di configurazione apportate dallo script di installazione. Usare questa console per completare le attività di programmazione rimanenti nell'esercitazione. È possibile usare CMD di Windows, PowerShell o Git Bash per Windows.

  3. Eseguire il codice seguente per verificare che sia installato CMake versione 3.14 o successiva.

    cmake --version
    

Creare i componenti cloud

Creare un hub IoT

È possibile usare l'interfaccia della riga di comando di Azure per creare un hub IoT che gestisce gli eventi e la messaggistica per il dispositivo.

Per creare un hub IoT:

  1. Avviare l'app dell'interfaccia della riga di comando. Per eseguire i comandi dell'interfaccia della riga di comando nel resto di questa guida introduttiva, copiare la sintassi del comando, incollarla nell'app dell'interfaccia della riga di comando, modificare i valori delle variabili e premere INVIO.

    • Se si usa Cloud Shell, fare clic con il pulsante destro del mouse sul collegamento per Cloud Shell e selezionare l'opzione da aprire in una nuova scheda.
    • Se si usa l'interfaccia della riga di comando di Azure in locale, avviare l'app console dell'interfaccia della riga di comando e accedere all'interfaccia della riga di comando di Azure.
  2. Eseguire az extension add per installare o aggiornare l'estensione azure-iot alla versione corrente.

    az extension add --upgrade --name azure-iot
    
  3. Eseguire il comando az group create per creare un gruppo di risorse. Il comando seguente crea un gruppo di risorse denominato MyResourceGroup nell'area centralus .

    Nota

    Facoltativamente, è possibile impostare un oggetto alternativo location. Per visualizzare le posizioni disponibili, eseguire az account list-locations.

    az group create --name MyResourceGroup --location centralus
    
  4. Eseguire il comando az iot hub create per creare un hub IoT. La creazione di un hub IoT potrebbe richiedere alcuni minuti.

    YourIotHubName. Sostituire questo segnaposto nel codice con il nome scelto per l'hub IoT. Un nome dell'hub IoT deve essere univoco a livello globale in Azure. Questo segnaposto viene usato nella parte restante di questa guida introduttiva per rappresentare il nome univoco dell'hub IoT.

    Il --sku F1 parametro crea l'hub IoT nel livello Gratuito. Gli hub di livello gratuito hanno un set di funzionalità limitato e vengono usati per le applicazioni di verifica. Per altre informazioni su hub IoT livelli, funzionalità e prezzi, vedere prezzi hub IoT di Azure.

    az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName} --sku F1 --partition-count 2
    
  5. Dopo aver creato l'hub IoT, visualizzare l'output JSON nella console e copiare il hostName valore da usare in un passaggio successivo. Il hostName valore è simile all'esempio seguente:

    {Your IoT hub name}.azure-devices.net

Configurare IoT Explorer

Nella parte restante di questa guida introduttiva si usa IoT Explorer per registrare un dispositivo nell'hub IoT, visualizzare le proprietà e i dati di telemetria del dispositivo e inviare comandi al dispositivo. In questa sezione viene configurato IoT Explorer per connettersi all'hub IoT creato e per leggere i modelli plug and play dal repository del modello pubblico.

Per aggiungere una connessione all'hub IoT:

  1. Installare Azure IoT Explorer. Questo strumento è un'utilità multipiattaforma per monitorare e gestire le risorse di Azure IoT.

  2. Nell'app dell'interfaccia della riga di comando eseguire il comando az iot hub connection-string show per ottenere il stringa di connessione per l'hub IoT.

    az iot hub connection-string  show --hub-name {YourIoTHubName}
    
  3. Copiare il stringa di connessione senza le virgolette circostanti.

  4. In Azure IoT Explorer selezionare Hub IoT nel menu a sinistra.

  5. Selezionare + Aggiungi connessione.

  6. Incollare il stringa di connessione nella casella Stringa di connessione.

  7. Seleziona Salva.

    Screenshot dell'aggiunta di una connessione in IoT Explorer.

Se la connessione ha esito positivo, IoT Explorer passa alla visualizzazione Dispositivi .

Per aggiungere il repository del modello pubblico:

  1. In IoT Explorer selezionare Home per tornare alla visualizzazione home.

  2. Nel menu a sinistra selezionare Plug and Play IoT Impostazioni.

  3. Verificare che sia presente una voce repository pubblico esistente con un endpoint di https://devicemodels.azure.com.

    Nota

    Se non è presente una voce nel repository pubblico, selezionare +Aggiungi, selezionare Repository pubblico dal menu a discesa, specificare il valore dell'endpoint https://devicemodels.azure.com e quindi selezionare Salva.

    La voce completata per il repository pubblico è simile alla schermata seguente:

    Screenshot dell'aggiunta del repository del modello pubblico in IoT Explorer.

Registrazione di un dispositivo

In questa sezione viene creata una nuova istanza del dispositivo e registrata con l'hub IoT creato. Usare le informazioni di connessione per il dispositivo appena registrato per connettere in modo sicuro il dispositivo fisico in una sezione successiva.

Per registrare un dispositivo:

  1. Nella home view in IoT Explorer selezionare Hub IoT.

  2. Verrà visualizzata la connessione aggiunta in precedenza. Selezionare Visualizza dispositivi in questo hub sotto le proprietà di connessione.

  3. Selezionare + Nuovo e immettere un ID dispositivo per il dispositivo, mydevicead esempio . Lasciare invariate tutte le altre proprietà.

  4. Seleziona Crea.

    Screenshot dell'identità del dispositivo azure IoT Explorer.

  5. Usare i pulsanti copia per copiare i campi ID dispositivo e Chiave primaria .

Prima di continuare con la sezione successiva, salvare ognuno dei valori seguenti recuperati dai passaggi precedenti in un percorso sicuro. Questi valori vengono usati nella sezione successiva per configurare il dispositivo.

  • hostName
  • deviceId
  • primaryKey

Preparare il dispositivo

Per connettere STM DevKit ad Azure, modificare un file di configurazione per le impostazioni Wi-Fi e Azure IoT, ricompilare l'immagine e lampeggiare l'immagine nel dispositivo.

Aggiungere la configurazione

  1. Aprire il file seguente in un editor di testo:

    getting-started\STSystems\B-L475E-IOT01A\app\azure_config.h

  2. Impostare come commento la riga seguente nella parte superiore del file, come illustrato:

    // #define ENABLE_DPS
    
  3. Impostare le costanti Wi-Fi sui valori seguenti dell'ambiente locale.

    Nome costante Valore
    WIFI_SSID {SSID wi-fi}
    WIFI_PASSWORD {Password Wi-Fi}
    WIFI_MODE {Uno dei valori della modalità Wi-Fi enumerati nel file}
  4. Impostare le costanti relative alle informazioni sul dispositivo Azure IoT sui valori salvati dopo aver creato le risorse di Azure.

    Nome costante Valore
    IOT_HUB_HOSTNAME {Valore hostName dell'hub IoT}
    IOT_HUB_DEVICE_ID {Valore ID dispositivo}
    IOT_DEVICE_SAS_KEY {Il valore della chiave primaria}
  5. Salva e chiudi il file.

Compilare l'immagine

  1. Nella console o in Esplora file eseguire il file batch rebuild.bat nel percorso seguente per compilare l'immagine:

    getting-started\STMaks\B-L475E-IOT01A\tools\rebuild.bat

  2. Al termine della compilazione, verificare che il file binario sia stato creato nel percorso seguente:

    getting-started\STSystems\B-L475E-IOT01A\build\app\stm32l475_azure_iot.bin

Eseguire il flashing dell'immagine

  1. In STM DevKit MCU individuare il pulsante Reset (1), la porta Micro USB (2), etichettata USB STLink e il numero di parte della scheda (3). Questi elementi verranno indicati nei passaggi successivi. Tutti sono evidenziati nell'immagine seguente:

    Foto che mostra i componenti chiave nella scheda STM DevKit.

  2. Collegare il cavo MICRO USB alla porta USB STLINK sul DevKit STM e quindi connetterlo al computer.

    Nota

    Per informazioni dettagliate sulla configurazione di STM DevKit, vedere le istruzioni sulla creazione del pacchetto o vedere Risorse B-L475E-IOT01A

  3. In Esplora file trovare i file binari creati nella sezione precedente.

  4. Copiare il file binario denominato stm32l475_azure_iot.bin.

  5. In Esplora file trovare il devkit STM connesso al computer. Il dispositivo viene visualizzato come unità nel sistema con l'etichetta dell'unità DIS_L4IOT.

  6. Incollare il file binario nella cartella radice di STM Devkit. Il flashing viene avviato automaticamente e viene completato in pochi secondi.

    Nota

    Durante il processo di lampeggiamento, un LED passa da rosso a verde a STM DevKit.

Confermare i dettagli della connessione del dispositivo

È possibile usare l'app Termite per monitorare la comunicazione e verificare che il dispositivo sia configurato correttamente.

  1. Avviare Termite.

    Suggerimento

    Se non è possibile connettere Termite al devkit, installare il driver ST-LINK e riprovare. Per altri passaggi, vedere Risoluzione dei problemi .

  2. Seleziona Impostazioni.

  3. Nella finestra di dialogo Impostazioni porta seriale controllare le impostazioni seguenti e aggiornare, se necessario:

    • Velocità baud: 115.200
    • Porta: porta a cui è connesso stm DevKit. Se sono presenti più opzioni di porta nell'elenco a discesa, è possibile trovare la porta corretta da usare. Aprire Windows Gestione dispositivi e visualizzare Porte per identificare la porta da usare.

    Screenshot delle impostazioni della porta seriale nell'app Termite.

  4. Seleziona OK.

  5. Premere il pulsante Ripristina sul dispositivo. Il pulsante è nero ed è etichettato sul dispositivo.

  6. Nell'app Termite controllare i valori del checkpoint seguenti per verificare che il dispositivo sia inizializzato e connesso ad Azure IoT.

    Starting Azure thread
    
    
    Initializing WiFi
        Module: ISM43362-M3G-L44-SPI
        MAC address: ****************
        Firmware revision: C3.5.2.5.STM
    SUCCESS: WiFi initialized
    
    Connecting WiFi
        Connecting to SSID 'iot'
        Attempt 1...
    SUCCESS: WiFi connected
    
    Initializing DHCP
        IP address: 192.168.0.35
        Mask: 255.255.255.0
        Gateway: 192.168.0.1
    SUCCESS: DHCP initialized
    
    Initializing DNS client
        DNS address 1: ************
        DNS address 2: ************
    SUCCESS: DNS client initialized
    
    Initializing SNTP time sync
        SNTP server 0.pool.ntp.org
        SNTP time update: Nov 18, 2022 0:56:56.127 UTC
    SUCCESS: SNTP initialized
    
    Initializing Azure IoT Hub client
        Hub hostname: *******.azure-devices.net
        Device id: mydevice
        Model id: dtmi:eclipsethreadx:devkit:gsgstml4s5;2
    SUCCESS: Connected to IoT Hub
    

    Importante

    Se l'inizializzazione del client DNS ha esito negativo e informa che il firmware Wi-Fi non è aggiornato, è necessario aggiornare il firmware del modulo Wi-Fi. Scaricare e installare l'aggiornamento del firmware del modulo Wi-Fi Inventek ISM 43362 da STUpdates. Premere quindi il pulsante Reimposta nel dispositivo per ricontrollare la connessione e continuare con questa esercitazione.

Tenere aperto Termite per monitorare l'output del dispositivo nei passaggi seguenti.

Visualizzare le proprietà del dispositivo

È possibile usare Azure IoT Explorer per visualizzare e gestire le proprietà dei dispositivi. Nelle sezioni seguenti si usano le funzionalità Plug and Play visibili in IoT Explorer per gestire e interagire con STM DevKit. Queste funzionalità si basano sul modello di dispositivo pubblicato per STM DevKit nel repository di modelli pubblici. IoT Explorer è stato configurato per cercare in questo repository i modelli di dispositivo in precedenza in questa esercitazione. In molti casi, è possibile eseguire la stessa azione senza usare plug and play selezionando le opzioni di menu IoT Explorer. Tuttavia, l'uso di plug and play offre spesso un'esperienza avanzata. IoT Explorer può leggere il modello di dispositivo specificato da un dispositivo plug and play e presentare informazioni specifiche del dispositivo.

Per accedere ai componenti Plug and Play IoT per il dispositivo in IoT Explorer:

  1. Nella home view in IoT Explorer selezionare Hub IoT, quindi selezionare Visualizza dispositivi in questo hub.

  2. Selezionare il dispositivo.

  3. Selezionare Plug and Play IoT componenti.

  4. Selezionare Componente predefinito. IoT Explorer visualizza i componenti Plug and Play IoT implementati nel dispositivo.

    Screenshot del componente predefinito STM DevKit in IoT Explorer.

  5. Nella scheda Interfaccia visualizzare il contenuto JSON nella descrizione del modello di dispositivo. Il codice JSON contiene i dettagli di configurazione per ognuno dei componenti Plug and Play IoT nel modello di dispositivo.

    Nota

    Il nome e la descrizione per il componente predefinito fanno riferimento alla scheda STM L4S5. Il modello di dispositivo plug and play STM L4S5 viene usato anche per la scheda STM L475E in questa esercitazione.

    Ogni scheda in IoT Explorer corrisponde a uno dei componenti Plug and Play IoT nel modello di dispositivo.

    Tab Type Name Descrizione
    Interfaccia Interfaccia STM Getting Started Guide Modello di esempio per STM DevKit
    Proprietà (sola lettura) Proprietà ledState Indica se il led è acceso o spento
    Proprietà (scrivibile) Proprietà telemetryInterval Intervallo di invio dei dati di telemetria da parte del dispositivo
    Comandi Comando setLedState Accendere o disattivare il LED

Per visualizzare le proprietà del dispositivo tramite Azure IoT Explorer:

  1. Selezionare la scheda Proprietà (sola lettura). Esiste una singola proprietà di sola lettura per indicare se il led è acceso o disattivato.

  2. Selezionare la scheda Proprietà (scrivibile). Visualizza l'intervallo di invio dei dati di telemetria.

  3. Impostare su telemetryInterval 5 e quindi selezionare Aggiorna valore desiderato. Il dispositivo usa ora questo intervallo per inviare i dati di telemetria.

    Screenshot dell'impostazione dell'intervallo di telemetria in STM DevKit in IoT Explorer.

  4. IoT Explorer risponde con una notifica. È anche possibile osservare l'aggiornamento in Termite.

  5. Impostare di nuovo l'intervallo di telemetria su 10.

Per usare l'interfaccia della riga di comando di Azure per visualizzare le proprietà del dispositivo:

  1. Eseguire il comando az iot hub device-twin show .

    az iot hub device-twin show --device-id mydevice --hub-name {YourIoTHubName}
    
  2. Esaminare le proprietà del dispositivo nell'output della console.

Visualizzare i dati di telemetria

Con Azure IoT Explorer è possibile visualizzare il flusso di dati di telemetria dal dispositivo al cloud. Facoltativamente, è possibile eseguire la stessa attività usando l'interfaccia della riga di comando di Azure.

Per visualizzare i dati di telemetria in Azure IoT Explorer:

  1. Nel riquadro componenti di Plug and Play IoT (componente predefinito) per il dispositivo in IoT Explorer selezionare la scheda Telemetria. Verificare che l'opzione Usa hub eventi predefinito sia impostata su .

  2. Selezionare Inizio.

  3. Visualizzare i dati di telemetria mentre il dispositivo invia messaggi al cloud.

    Screenshot dei dati di telemetria dei dispositivi in IoT Explorer.

    Nota

    È anche possibile monitorare i dati di telemetria dal dispositivo usando l'app Termite.

  4. Selezionare la casella di controllo Mostra eventi modellati per visualizzare gli eventi nel formato dati specificato dal modello di dispositivo.

    Screenshot degli eventi di telemetria modellati in IoT Explorer.

  5. Selezionare Arresta per terminare la ricezione di eventi.

Per usare l'interfaccia della riga di comando di Azure per visualizzare i dati di telemetria dei dispositivi:

  1. Eseguire il comando az iot hub monitor-events . Usare i nomi creati in precedenza in Azure IoT per il dispositivo e l'hub IoT.

    az iot hub monitor-events --device-id mydevice --hub-name {YourIoTHubName}
    
  2. Visualizzare l'output JSON nella console.

    {
        "event": {
            "origin": "mydevice",
            "module": "",
            "interface": "dtmi:eclipsethreadx:devkit:gsgmxchip;1",
            "component": "",
            "payload": "{\"humidity\":41.21,\"temperature\":31.37,\"pressure\":1005.18}"
        }
    }
    
  3. Selezionare CTRL+C per terminare il monitoraggio.

Chiamare un metodo diretto nel dispositivo

È anche possibile usare Azure IoT Explorer per chiamare un metodo diretto implementato nel dispositivo. I metodi diretti hanno un nome e possono facoltativamente avere un payload JSON, una connessione configurabile e un timeout del metodo. In questa sezione viene chiamato un metodo che attiva o disattiva un LED. Facoltativamente, è possibile eseguire la stessa attività usando l'interfaccia della riga di comando di Azure.

Per chiamare un metodo in Azure IoT Explorer:

  1. Nel riquadro componenti di Plug and Play IoT (componente predefinito) per il dispositivo in IoT Explorer selezionare la scheda Comandi.

  2. Per il comando setLedState impostare lo stato su true.

  3. Selezionare Invia comando. Dovrebbe essere visualizzata una notifica in IoT Explorer e la luce verde del LED sul dispositivo dovrebbe essere attivata.

    Screenshot della chiamata al metodo setLedState in IoT Explorer.

  4. Impostare lo stato su false e quindi selezionare Invia comando. Il LED deve essere spento.

  5. Facoltativamente, è possibile visualizzare l'output in Termite per monitorare lo stato dei metodi.

Per usare l'interfaccia della riga di comando di Azure per chiamare un metodo:

  1. Eseguire il comando az iot hub invoke-device-method e specificare il nome e il payload del metodo. Per questo metodo, impostare method-payload per true attivare il LED e impostarlo su false disattivarlo.

    az iot hub invoke-device-method --device-id mydevice --method-name setLedState --method-payload true --hub-name {YourIoTHubName}
    

    La console dell'interfaccia della riga di comando mostra lo stato della chiamata al metodo nel dispositivo, dove 204 indica l'esito positivo.

    {
        "payload": {},
        "status": 200
    }
    
  2. Controllare il dispositivo per confermare lo stato del LED.

  3. Visualizzare il terminale Termite per confermare i messaggi di output:

    Received command: setLedState
        Payload: true
        LED is turned ON
    Sending property: $iothub/twin/PATCH/properties/reported/?$rid=15{"ledState":true}
    

Risolvere i problemi ed eseguire il debug

Se si verificano problemi durante la compilazione del codice del dispositivo, il flashing del dispositivo o la connessione, vedere Risoluzione dei problemi.

Per il debug dell'applicazione, vedere Debug con Visual Studio Code.

Pulire le risorse

Se le risorse di Azure create in questa guida introduttiva non sono più necessarie, è possibile usare l'interfaccia della riga di comando di Azure per eliminare il gruppo di risorse e tutte le relative risorse.

Importante

L'eliminazione di un gruppo di risorse è irreversibile. Il gruppo di risorse e tutte le risorse in esso contenute vengono eliminati in modo permanente. Assicurarsi di non eliminare accidentalmente il gruppo di risorse sbagliato o le risorse errate.

Per eliminare un gruppo di risorse per nome:

  1. Eseguire il comando az group delete. Questo comando rimuove il gruppo di risorse, il hub IoT e la registrazione del dispositivo creata.

    az group delete --name MyResourceGroup
    
  2. Eseguire il comando az group list per verificare che il gruppo di risorse sia stato eliminato.

    az group list
    

Passaggio successivo

In questa esercitazione è stata creata un'immagine personalizzata che contiene il codice di esempio Eclipse ThreadX e quindi è stata visualizzata l'immagine nel dispositivo STM DevKit. È stato connesso STM DevKit ad Azure ed è stata eseguita attività come la visualizzazione dei dati di telemetria e la chiamata di un metodo nel dispositivo.

Come passaggio successivo, vedere l'articolo seguente per altre informazioni sulle opzioni di sviluppo incorporate.

Importante

Eclipse ThreadX fornisce agli OEM componenti per proteggere la comunicazione e creare codice e isolamento dei dati usando meccanismi di protezione hardware MCU/MPU sottostanti. Tuttavia, ogni OEM è in ultima analisi responsabile di garantire che il dispositivo soddisfi i requisiti di sicurezza in continua evoluzione.