Zelfstudie: Eclipse ThreadX gebruiken om een MXCHIP AZ3166 devkit te verbinden met IoT Hub
In deze zelfstudie gebruikt u Eclipse ThreadX om een MXCHIP AZ3166 IoT DevKit (vanaf nu MXCHIP DevKit) te verbinden met Azure IoT.
U voert de volgende taken uit:
- Een set ingesloten ontwikkelhulpprogramma's installeren voor het programmeren van de MXChip DevKit in C
- Een installatiekopieën bouwen en deze flashen naar de MXCHIP DevKit
- Azure CLI gebruiken om een Azure IoT-hub te maken en te beheren waarmee de MXCHIP DevKit veilig verbinding maakt
- Azure IoT Explorer gebruiken om een apparaat te registreren bij uw IoT-hub, apparaateigenschappen weer te geven, telemetrie van apparaten weer te geven en directe opdrachten op het apparaat aan te roepen
Vereisten
Een pc met Windows 10 of Windows 11
Een actief Azure-abonnement. Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
Git voor het klonen van de opslagplaats
Azure CLI. U hebt twee opties voor het uitvoeren van Azure CLI-opdrachten in deze zelfstudie:
- Gebruik De Azure Cloud Shell, een interactieve shell waarmee CLI-opdrachten in uw browser worden uitgevoerd. Deze optie wordt aanbevolen omdat u niets hoeft te installeren. Als u Cloud Shell voor het eerst gebruikt, meldt u zich aan bij Azure Portal. Volg de stappen in de quickstart van Cloud Shell om Cloud Shell te starten en de Bash-omgeving te selecteren.
- Voer desgewenst Azure CLI uit op uw lokale computer. Als Azure CLI al is geïnstalleerd, voert u een
az upgrade
upgrade uit van de CLI en extensies naar de huidige versie. Zie Azure CLI installeren om Azure CLI te installeren.
Hardware
- De MXCHIP AZ3166 IoT DevKit (MXCHIP DevKit)
- Wi-Fi 2,4 GHz
- USB 2.0 A mannetje naar Micro USB mannelijke kabel
De ontwikkelomgeving voorbereiden
Als u uw ontwikkelomgeving wilt instellen, kloont u eerst een GitHub-opslagplaats die alle assets bevat die u nodig hebt voor de zelfstudie. Vervolgens installeert u een set programmeerprogramma's.
De opslagplaats klonen
Kloon de volgende opslagplaats om alle voorbeeldcode, installatiescripts en offlineversies van de documentatie te downloaden. Als u deze opslagplaats eerder hebt gekloond in een andere zelfstudie, hoeft u deze niet opnieuw te doen.
Voer de volgende opdracht uit om de opslagplaats te klonen:
git clone --recursive https://github.com/eclipse-threadx/getting-started.git
De hulpprogramma's installeren
De gekloonde opslagplaats bevat een installatiescript waarmee de vereiste hulpprogramma's worden geïnstalleerd en geconfigureerd. Als u deze hulpprogramma's hebt geïnstalleerd in een andere zelfstudie over ingesloten apparaten, hoeft u dit niet opnieuw te doen.
Notitie
Met het installatiescript worden de volgende hulpprogramma's geïnstalleerd:
De hulpprogramma's installeren:
Navigeer naar het volgende pad in de opslagplaats en voer het installatiescript met de naam get-toolchain.bat uit:
aan de slag\hulpprogramma's\get-toolchain.bat
Open een nieuw consolevenster om de configuratiewijzigingen te herkennen die zijn aangebracht door het installatiescript. Gebruik deze console om de resterende programmeertaken in de zelfstudie te voltooien. U kunt Windows CMD, PowerShell of Git Bash voor Windows gebruiken.
Voer de volgende code uit om te bevestigen dat CMake versie 3.14 of hoger is geïnstalleerd.
cmake --version
De cloudonderdelen maken
Een IoT Hub maken
U kunt Azure CLI gebruiken om een IoT-hub te maken waarmee gebeurtenissen en berichten voor uw apparaat worden verwerkt.
Een IoT Hub maken:
Start de CLI-app. Als u de CLI-opdrachten in de rest van deze quickstart wilt uitvoeren, kopieert u de syntaxis van de opdracht, plakt u deze in uw CLI-app, bewerkt u variabelewaarden en drukt u op Enter.
- Als u Cloud Shell gebruikt, klikt u met de rechtermuisknop op de koppeling voor Cloud Shell en selecteert u de optie om te openen op een nieuw tabblad.
- Als u Azure CLI lokaal gebruikt, start u uw CLI-console-app en meldt u zich aan bij Azure CLI.
Voer az extension add uit om de azure-iot-extensie te installeren of bij te werken naar de huidige versie.
az extension add --upgrade --name azure-iot
Voer de opdracht az group create uit om een resourcegroep te maken. Met de volgende opdracht maakt u een resourcegroep met de naam MyResourceGroup in de regio centralus .
Notitie
U kunt desgewenst een alternatief
location
instellen. Voer az account list-locations uit om de beschikbare locaties te bekijken.az group create --name MyResourceGroup --location centralus
Voer de opdracht az iot hub create uit om een IoT-hub te maken. Het kan enkele minuten duren voordat een IoT-hub is gemaakt.
YourIotHubName. Vervang deze tijdelijke aanduiding in de code door de naam die u hebt gekozen voor uw IoT-hub. De naam van de IoT-hub moet wereldwijd uniek zijn in Azure. Deze tijdelijke aanduiding wordt in de rest van deze quickstart gebruikt om uw unieke IoT-hubnaam weer te geven.
Met
--sku F1
de parameter wordt de IoT-hub gemaakt in de gratis laag. Hubs in de gratis laag hebben een beperkte functieset en worden gebruikt voor proof-of-concepttoepassingen. Zie prijzen voor Azure IoT Hub voor meer informatie over IoT Hub-lagen, -functies en -prijzen.az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName} --sku F1 --partition-count 2
Nadat de IoT-hub is gemaakt, bekijkt u de JSON-uitvoer in de console en kopieert u de
hostName
waarde die u in een latere stap wilt gebruiken. DehostName
waarde ziet eruit als in het volgende voorbeeld:{Your IoT hub name}.azure-devices.net
IoT Explorer configureren
In de rest van deze quickstart gebruikt u IoT Explorer om een apparaat te registreren bij uw IoT-hub, om de apparaateigenschappen en telemetrie weer te geven en opdrachten naar uw apparaat te verzenden. In deze sectie configureert u IoT Explorer om verbinding te maken met de IoT-hub die u hebt gemaakt en om Plug and Play-modellen te lezen vanuit de openbare modelopslagplaats.
Ga als volgende te werk om een verbinding met uw IoT-hub toe te voegen:
Installeer Azure IoT Explorer. Dit hulpprogramma is een platformoverschrijdend hulpprogramma voor het bewaken en beheren van Azure IoT-resources.
Voer in uw CLI-app de opdracht az iot hub connection-string show uit om de verbindingsreeks voor uw IoT-hub op te halen.
az iot hub connection-string show --hub-name {YourIoTHubName}
Kopieer de verbindingsreeks zonder de omringende aanhalingstekens.
Selecteer In Azure IoT Explorer IoT-hubs in het linkermenu.
Selecteer + Verbinding toevoegen.
Plak de verbindingsreeks in het vak Verbindingsreeks.
Selecteer Opslaan.
Als de verbinding is geslaagd, schakelt IoT Explorer over naar de weergave Apparaten .
Ga als volgende te werk om de openbare modelopslagplaats toe te voegen:
In IoT Explorer selecteert u Start om terug te keren naar de startweergave.
Selecteer in het linkermenu IoT Plug en Play Settings.
Controleer of er een bestaande vermelding in de openbare opslagplaats is met een eindpunt van
https://devicemodels.azure.com
.Notitie
Als er geen vermelding is in de openbare opslagplaats, selecteert u +Toevoegen, selecteert u Openbare opslagplaats in de vervolgkeuzelijst, geeft u de
https://devicemodels.azure.com
eindpuntwaarde op en selecteert u Opslaan.De voltooide vermelding voor de openbare opslagplaats ziet er als volgt uit:
Een apparaat registreren
In deze sectie maakt u een nieuw apparaatexemplaren en registreert u dit bij de IoT-hub die u hebt gemaakt. U gebruikt de verbindingsgegevens voor het zojuist geregistreerde apparaat om uw fysieke apparaat veilig te verbinden in een latere sectie.
Een apparaat registreren:
Selecteer IoT-hubs in de startweergave in IoT Explorer.
De verbinding die u eerder hebt toegevoegd, moet worden weergegeven. Selecteer Apparaten weergeven in deze hub onder de verbindingseigenschappen.
Selecteer + Nieuw en voer een apparaat-id voor uw apparaat in,
mydevice
bijvoorbeeld. Laat alle andere eigenschappen hetzelfde.Selecteer Maken.
Gebruik de kopieerknoppen om de velden Apparaat-id en Primaire sleutel te kopiëren.
Voordat u doorgaat naar de volgende sectie, slaat u elk van de volgende waarden op die uit eerdere stappen zijn opgehaald, op een veilige locatie. U gebruikt deze waarden in de volgende sectie om uw apparaat te configureren.
hostName
deviceId
primaryKey
Het apparaat voorbereiden
Als u de MXCHIP DevKit wilt verbinden met Azure, wijzigt u een configuratiebestand voor Wi-Fi- en Azure IoT-instellingen, bouwt u de installatiekopieën opnieuw en knippert u de installatiekopieën naar het apparaat.
Configuratie toevoegen
Open het volgende bestand in een teksteditor:
getting-started\MXChip\AZ3166\app\azure_config.h
Markeer de volgende regel boven aan het bestand als commentaar, zoals wordt weergegeven:
// #define ENABLE_DPS
Stel de Wi-Fi-constanten in op de volgende waarden uit uw lokale omgeving.
Constante naam Weergegeven als WIFI_SSID
{Uw Wi-Fi-SSID} WIFI_PASSWORD
{Uw Wi-Fi-wachtwoord} WIFI_MODE
{Een van de geïnventariseerd Wi-Fi-moduswaarden in het bestand} Stel de gegevensconstanten van het Azure IoT-apparaat in op de waarden die u hebt opgeslagen nadat u Azure-resources hebt gemaakt.
Constante naam Weergegeven als IOT_HUB_HOSTNAME
{Uw hostnaamwaarde} IOT_HUB_DEVICE_ID
{De waarde van uw apparaat-id} IOT_DEVICE_SAS_KEY
{De waarde van uw primaire sleutel} Sla het bestand op en sluit het bestand.
De installatiekopie bouwen
Voer in uw console of in Bestandenverkenner het script uit rebuild.bat op het volgende pad om de installatiekopieën te bouwen:
getting-started\MXChip\AZ3166\tools\rebuild.bat
Nadat de build is voltooid, controleert u of het binaire bestand is gemaakt in het volgende pad:
getting-started\MXChip\AZ3166\build\app\mxchip_azure_iot.bin
De afbeelding knipperen
Zoek op de MXCHIP DevKit de knop Reset en de Micro USB-poort. U gebruikt deze onderdelen in de volgende stappen. Beide zijn gemarkeerd in de volgende afbeelding:
Sluit de Micro USB-kabel aan op de Micro USB-poort op de MXCHIP DevKit en sluit deze vervolgens aan op uw computer.
Zoek in Bestandenverkenner het binaire bestand dat u in de vorige sectie hebt gemaakt.
Kopieer het binaire bestand mxchip_azure_iot.bin.
Zoek in Bestandenverkenner het MXCHIP DevKit-apparaat dat is verbonden met uw computer. Het apparaat wordt weergegeven als een station op uw systeem met het stationslabel AZ3166.
Plak het binaire bestand in de hoofdmap van de MXCHIP Devkit. Knipperen wordt automatisch gestart en binnen een paar seconden voltooid.
Notitie
Tijdens het knipperende proces schakelt een groene LED in op MXCHIP DevKit.
Details van apparaatverbinding bevestigen
U kunt de Termite-app gebruiken om de communicatie te controleren en te bevestigen dat uw apparaat juist is ingesteld.
Start Termite.
Tip
Als u Termite niet kunt verbinden met uw devkit, installeert u het ST-LINK-stuurprogramma en probeert u het opnieuw. Zie Probleemoplossing voor aanvullende stappen.
Selecteer Instellingen.
Controleer in het dialoogvenster Instellingen voor seriële poort de volgende instellingen en werk indien nodig bij:
- Baudrate: 115.200
- Poort: De poort waarmee uw MXCHIP DevKit is verbonden. Als er meerdere poortopties in de vervolgkeuzelijst staan, kunt u de juiste poort vinden die u wilt gebruiken. Open Windows Apparaatbeheer en bekijk poorten om te bepalen welke poort moet worden gebruikt.
Selecteer OK.
Druk op de knop Opnieuw instellen op het apparaat. De knop is gelabeld op het apparaat en bevindt zich in de buurt van de Micro USB-connector.
Controleer in de Termite-app de volgende controlepuntwaarden om te bevestigen dat het apparaat is geïnitialiseerd en verbonden met Azure IoT.
Starting Azure thread Initializing WiFi MAC address: ****************** SUCCESS: WiFi initialized Connecting WiFi Connecting to SSID 'iot' Attempt 1... SUCCESS: WiFi connected Initializing DHCP IP address: 192.168.0.49 Mask: 255.255.255.0 Gateway: 192.168.0.1 SUCCESS: DHCP initialized Initializing DNS client DNS address: 192.168.0.1 SUCCESS: DNS client initialized Initializing SNTP time sync SNTP server 0.pool.ntp.org SNTP time update: Jan 4, 2023 22:57:32.658 UTC SUCCESS: SNTP initialized Initializing Azure IoT Hub client Hub hostname: ***.azure-devices.net Device id: mydevice Model id: dtmi:eclipsethreadx:devkit:gsgmxchip;2 SUCCESS: Connected to IoT Hub Receive properties: {"desired":{"$version":1},"reported":{"deviceInformation":{"__t":"c","manufacturer":"MXCHIP","model":"AZ3166","swVersion":"1.0.0","osName":"Eclipse ThreadX","processorArchitecture":"Arm Cortex M4","processorManufacturer":"STMicroelectronics","totalStorage":1024,"totalMemory":128},"ledState":false,"telemetryInterval":{"ac":200,"av":1,"value":10},"$version":4}} Sending property: $iothub/twin/PATCH/properties/reported/?$rid=3{"deviceInformation":{"__t":"c","manufacturer":"MXCHIP","model":"AZ3166","swVersion":"1.0.0","osName":"Eclipse ThreadX","processorArchitecture":"Arm Cortex M4","processorManufacturer":"STMicroelectronics","totalStorage":1024,"totalMemory":128}} Sending property: $iothub/twin/PATCH/properties/reported/?$rid=5{"ledState":false} Sending property: $iothub/twin/PATCH/properties/reported/?$rid=7{"telemetryInterval":{"ac":200,"av":1,"value":10}} Starting Main loop Telemetry message sent: {"humidity":31.01,"temperature":25.62,"pressure":927.3}. Telemetry message sent: {"magnetometerX":177,"magnetometerY":-36,"magnetometerZ":-346.5}. Telemetry message sent: {"accelerometerX":-22.5,"accelerometerY":0.54,"accelerometerZ":1049.01}. Telemetry message sent: {"gyroscopeX":0,"gyroscopeY":0,"gyroscopeZ":0}.
Houd Termite open om de uitvoer van het apparaat in de volgende stappen te bewaken.
Apparaateigenschappen weergeven
U kunt Azure IoT Explorer gebruiken om de eigenschappen van uw apparaten weer te geven en te beheren. In deze sectie en de volgende secties gebruikt u de Plug en Play mogelijkheden die in IoT Explorer worden weergegeven om de MXCHIP DevKit te beheren en ermee te werken. Deze mogelijkheden zijn afhankelijk van het apparaatmodel dat is gepubliceerd voor de MXCHIP DevKit in de openbare modelopslagplaats. U hebt IoT Explorer geconfigureerd om in deze opslagplaats te zoeken naar apparaatmodellen eerder in deze zelfstudie. U kunt veel acties uitvoeren zonder plug en play te gebruiken door de actie te selecteren in het menu aan de linkerkant van uw apparaatvenster in IoT Explorer. Het gebruik van Plug and Play biedt echter vaak een verbeterde ervaring. IoT Explorer kan het apparaatmodel lezen dat is opgegeven door een Plug and Play-apparaat en informatie presenteren die specifiek is voor dat apparaat.
Toegang tot IoT Plug en Play-onderdelen voor het apparaat in IoT Explorer:
Selecteer IoT-hubs in de startweergave in IoT Explorer en selecteer vervolgens Apparaten weergeven in deze hub.
Selecteer uw apparaat.
Selecteer IoT Plug en Play-onderdelen.
Selecteer het standaardonderdeel. In IoT Explorer worden de IoT-Plug en Play-onderdelen weergegeven die op uw apparaat zijn geïmplementeerd.
Bekijk op het tabblad Interface de JSON-inhoud in de beschrijving van het apparaatmodel. De JSON bevat configuratiegegevens voor elk van de IoT-Plug en Play-onderdelen in het apparaatmodel.
Elk tabblad in IoT Explorer komt overeen met een van de IoT-Plug en Play-onderdelen in het apparaatmodel.
Tab Type Meting Beschrijving Interface Interface MXCHIP Getting Started Guide
Voorbeeldmodel voor de MXCHIP DevKit Eigenschappen (alleen-lezen) Eigenschappen ledState
De huidige status van de LED Eigenschappen (beschrijfbaar) Eigenschappen telemetryInterval
Het interval dat het apparaat telemetrie verzendt Opdrachten Opdracht setLedState
De LED in- of uitschakelen
Apparaateigenschappen weergeven met Behulp van Azure IoT Explorer:
Selecteer het tabblad Eigenschappen (beschrijfbaar). Het geeft het interval weer dat telemetrie wordt verzonden.
Wijzig de
telemetryInterval
waarde in 5 en selecteer vervolgens Gewenste waarde bijwerken. Uw apparaat gebruikt dit interval nu om telemetrie te verzenden.IoT Explorer reageert met een melding. U kunt de update ook bekijken in Termite.
Stel het telemetrie-interval weer in op 10.
Azure CLI gebruiken om apparaateigenschappen weer te geven:
Voer de opdracht az iot hub device-twin show uit .
az iot hub device-twin show --device-id mydevice --hub-name {YourIoTHubName}
Controleer de eigenschappen voor uw apparaat in de console-uitvoer.
Telemetrie bekijken
Met Azure IoT Explorer kunt u de stroom telemetrie van uw apparaat naar de cloud bekijken. U kunt desgewenst dezelfde taak uitvoeren met behulp van Azure CLI.
Telemetrie weergeven in Azure IoT Explorer:
Selecteer in het deelvenster IoT Plug en Play onderdelen (standaardonderdeel) voor uw apparaat in IoT Explorer het tabblad Telemetrie. Controleer of Ingebouwde Event Hub gebruiken is ingesteld op Ja.
Selecteer Starten.
Bekijk de telemetrie terwijl het apparaat berichten naar de cloud verzendt.
Notitie
U kunt ook telemetrie van het apparaat bewaken met behulp van de Termite-app.
Schakel het selectievakje Gemodelleerde gebeurtenissen weergeven in om de gebeurtenissen weer te geven in de gegevensindeling die is opgegeven door het apparaatmodel.
Selecteer Stoppen om het ontvangen van gebeurtenissen te beëindigen.
Azure CLI gebruiken om telemetriegegevens van apparaten weer te geven:
Voer de opdracht az iot hub monitor-events uit. Gebruik de namen die u eerder hebt gemaakt in Azure IoT voor uw apparaat en IoT Hub.
az iot hub monitor-events --device-id mydevice --hub-name {YourIoTHubName}
Bekijk de JSON-uitvoer in de console.
{ "event": { "origin": "mydevice", "module": "", "interface": "dtmi:eclipsethreadx:devkit:gsgmxchip;1", "component": "", "payload": "{\"humidity\":41.21,\"temperature\":31.37,\"pressure\":1005.18}" } }
Selecteer Ctrl+C om de bewaking te beëindigen.
Een directe methode aanroepen op het apparaat
U kunt Azure IoT Explorer ook gebruiken om een directe methode aan te roepen die u op uw apparaat hebt geïmplementeerd. Directe methoden hebben een naam en kunnen eventueel een JSON-nettolading, configureerbare verbinding en time-out van methoden hebben. In deze sectie roept u een methode aan waarmee een LED wordt ingeschakeld of uitgeschakeld. U kunt desgewenst dezelfde taak uitvoeren met behulp van Azure CLI.
Een methode aanroepen in Azure IoT Explorer:
Selecteer in het deelvenster IoT Plug en Play onderdelen (standaardonderdeel) voor uw apparaat in IoT Explorer het tabblad Opdrachten.
Stel voor de opdracht setLedState de status in op true.
Selecteer de opdracht Verzenden. U ziet nu een melding in IoT Explorer en het gele ledlampje van de gebruiker op het apparaat moet worden ingeschakeld.
Stel de status in op onwaar en selecteer vervolgens de opdracht Verzenden. De gele led van de gebruiker moet worden uitgeschakeld.
U kunt desgewenst de uitvoer in Termite bekijken om de status van de methoden te controleren.
Azure CLI gebruiken om een methode aan te roepen:
Voer de opdracht az iot hub invoke-device-method uit en geef de naam en nettolading van de methode op. Voor deze methode moet
method-payload
true
u de LED inschakelen en deze instellen om deze uit tefalse
schakelen.az iot hub invoke-device-method --device-id mydevice --method-name setLedState --method-payload true --hub-name {YourIoTHubName}
In de CLI-console wordt de status van uw methode-aanroep op het apparaat weergegeven, waarbij
204
wordt aangegeven dat het apparaat is geslaagd.{ "payload": {}, "status": 200 }
Controleer uw apparaat om de LED-status te bevestigen.
Bekijk de Termite-terminal om de uitvoerberichten te bevestigen:
Receive direct method: setLedState Payload: true LED is turned ON Device twin property sent: {"ledState":true}
Problemen oplossen en fouten opsporen
Als u problemen ondervindt bij het bouwen van de apparaatcode, het knipperen van het apparaat of het verbinden, raadpleegt u Probleemoplossing.
Zie Foutopsporing met Visual Studio Code voor foutopsporing voor de toepassing.
Resources opschonen
Als u de Azure-resources die in deze quickstart zijn gemaakt niet meer nodig hebt, kunt u de Azure CLI gebruiken om de resourcegroep en alle bijbehorende resources te verwijderen.
Belangrijk
Het verwijderen van een resourcegroep kan niet ongedaan worden gemaakt. De resourcegroep en alle resources daarin worden permanent verwijderd. Zorg ervoor dat u niet per ongeluk de verkeerde resourcegroep of resources verwijdert.
Een resourcegroep verwijderen op naam:
Voer de opdracht az group delete uit. Met deze opdracht verwijdert u de resourcegroep, de IoT Hub en de apparaatregistratie die u hebt gemaakt.
az group delete --name MyResourceGroup
Voer de opdracht az group list uit om te controleren of de resourcegroep is verwijderd.
az group list
Volgende stappen
In deze zelfstudie hebt u een aangepaste installatiekopie gemaakt die Eclipse ThreadX-voorbeeldcode bevat en vervolgens de installatiekopie naar het MXCHIP DevKit-apparaat knipperde. U hebt ook de Azure CLI en/of IoT Explorer gebruikt om Azure-resources te maken, de MXCHIP DevKit veilig te verbinden met Azure, telemetrie weer te geven en berichten te verzenden.
Bekijk als volgende stap het volgende artikel voor meer informatie over ingesloten ontwikkelopties.
Eclipse ThreadX biedt OEM's onderdelen om communicatie te beveiligen en code- en gegevensisolatie te maken met behulp van onderliggende MCU/MPU-hardwarebeveiligingsmechanismen. Elke OEM is echter uiteindelijk verantwoordelijk om ervoor te zorgen dat hun apparaat voldoet aan de veranderende beveiligingsvereisten.