Esercitazione: Usare Eclipse ThreadX per connettere un kit STDevices B-L475E-IOT01A Discovery per hub IoT
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:
- CMake: Compilazione
- ARM GCC: Compilazione
- Termite: monitorare l'output della porta seriale per i dispositivi connessi
Per installare gli strumenti:
Passare al percorso seguente nel repository ed eseguire lo script di installazione denominato get-toolchain.bat:
getting-started\tools\get-toolchain.bat
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.
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:
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.
Eseguire az extension add per installare o aggiornare l'estensione azure-iot alla versione corrente.
az extension add --upgrade --name azure-iot
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
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
Dopo aver creato l'hub IoT, visualizzare l'output JSON nella console e copiare il
hostName
valore da usare in un passaggio successivo. IlhostName
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:
Installare Azure IoT Explorer. Questo strumento è un'utilità multipiattaforma per monitorare e gestire le risorse di Azure IoT.
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}
Copiare il stringa di connessione senza le virgolette circostanti.
In Azure IoT Explorer selezionare Hub IoT nel menu a sinistra.
Selezionare + Aggiungi connessione.
Incollare il stringa di connessione nella casella Stringa di connessione.
Seleziona Salva.
Se la connessione ha esito positivo, IoT Explorer passa alla visualizzazione Dispositivi .
Per aggiungere il repository del modello pubblico:
In IoT Explorer selezionare Home per tornare alla visualizzazione home.
Nel menu a sinistra selezionare Plug and Play IoT Impostazioni.
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:
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:
Nella home view in IoT Explorer selezionare Hub IoT.
Verrà visualizzata la connessione aggiunta in precedenza. Selezionare Visualizza dispositivi in questo hub sotto le proprietà di connessione.
Selezionare + Nuovo e immettere un ID dispositivo per il dispositivo,
mydevice
ad esempio . Lasciare invariate tutte le altre proprietà.Seleziona Crea.
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
Aprire il file seguente in un editor di testo:
getting-started\STSystems\B-L475E-IOT01A\app\azure_config.h
Impostare come commento la riga seguente nella parte superiore del file, come illustrato:
// #define ENABLE_DPS
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} 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} Salva e chiudi il file.
Compilare l'immagine
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
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
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:
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
In Esplora file trovare i file binari creati nella sezione precedente.
Copiare il file binario denominato stm32l475_azure_iot.bin.
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.
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.
Avviare Termite.
Suggerimento
Se non è possibile connettere Termite al devkit, installare il driver ST-LINK e riprovare. Per altri passaggi, vedere Risoluzione dei problemi .
Seleziona Impostazioni.
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.
Seleziona OK.
Premere il pulsante Ripristina sul dispositivo. Il pulsante è nero ed è etichettato sul dispositivo.
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:
Nella home view in IoT Explorer selezionare Hub IoT, quindi selezionare Visualizza dispositivi in questo hub.
Selezionare il dispositivo.
Selezionare Plug and Play IoT componenti.
Selezionare Componente predefinito. IoT Explorer visualizza i componenti Plug and Play IoT implementati nel dispositivo.
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:
Selezionare la scheda Proprietà (sola lettura). Esiste una singola proprietà di sola lettura per indicare se il led è acceso o disattivato.
Selezionare la scheda Proprietà (scrivibile). Visualizza l'intervallo di invio dei dati di telemetria.
Impostare su
telemetryInterval
5 e quindi selezionare Aggiorna valore desiderato. Il dispositivo usa ora questo intervallo per inviare i dati di telemetria.IoT Explorer risponde con una notifica. È anche possibile osservare l'aggiornamento in Termite.
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:
Eseguire il comando az iot hub device-twin show .
az iot hub device-twin show --device-id mydevice --hub-name {YourIoTHubName}
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:
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 Sì.
Selezionare Inizio.
Visualizzare i dati di telemetria mentre il dispositivo invia messaggi al cloud.
Nota
È anche possibile monitorare i dati di telemetria dal dispositivo usando l'app Termite.
Selezionare la casella di controllo Mostra eventi modellati per visualizzare gli eventi nel formato dati specificato dal modello di dispositivo.
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:
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}
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}" } }
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:
Nel riquadro componenti di Plug and Play IoT (componente predefinito) per il dispositivo in IoT Explorer selezionare la scheda Comandi.
Per il comando setLedState impostare lo stato su true.
Selezionare Invia comando. Dovrebbe essere visualizzata una notifica in IoT Explorer e la luce verde del LED sul dispositivo dovrebbe essere attivata.
Impostare lo stato su false e quindi selezionare Invia comando. Il LED deve essere spento.
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:
Eseguire il comando az iot hub invoke-device-method e specificare il nome e il payload del metodo. Per questo metodo, impostare
method-payload
pertrue
attivare il LED e impostarlo sufalse
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 }
Controllare il dispositivo per confermare lo stato del LED.
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:
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
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.