Självstudie: Använda Eclipse ThreadX för att ansluta en MXCHIP AZ3166 devkit till IoT Hub
I den här självstudien använder du Eclipse ThreadX för att ansluta en MXCHIP AZ3166 IoT DevKit (från och med nu MXCHIP DevKit) till Azure IoT.
Du utför följande uppgifter:
- Installera en uppsättning inbäddade utvecklingsverktyg för programmering av MXChip DevKit i C
- Skapa en avbildning och flasha den till MXCHIP DevKit
- Använd Azure CLI för att skapa och hantera en Azure IoT-hubb som MXCHIP DevKit ansluter säkert till
- Använd Azure IoT Explorer för att registrera en enhet med din IoT-hubb, visa enhetsegenskaper, visa enhetens telemetri och anropa direktkommandon på enheten
Förutsättningar
En dator som kör Windows 10 eller Windows 11
En aktiv Azure-prenumeration. Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
Git för kloning av lagringsplatsen
Azure CLI. Du har två alternativ för att köra Azure CLI-kommandon i den här självstudien:
- Använd Azure Cloud Shell, ett interaktivt gränssnitt som kör CLI-kommandon i webbläsaren. Det här alternativet rekommenderas eftersom du inte behöver installera något. Om du använder Cloud Shell för första gången loggar du in på Azure-portalen. Följ stegen i Cloud Shell-snabbstarten för att starta Cloud Shell och välj Bash-miljön.
- Du kan också köra Azure CLI på din lokala dator. Om Azure CLI redan är installerat kör du
az upgrade
för att uppgradera CLI och tillägg till den aktuella versionen. Information om hur du installerar Azure CLI finns i Installera Azure CLI.
Maskinvara
- MXCHIP AZ3166 IoT DevKit (MXCHIP DevKit)
- Wi-Fi 2,4 GHz
- USB 2.0 En hane till Micro USB hane kabel
Förbereda utvecklingsmiljön
För att konfigurera utvecklingsmiljön klonar du först en GitHub-lagringsplats som innehåller alla tillgångar som du behöver för självstudien. Sedan installerar du en uppsättning programmeringsverktyg.
Klona lagringsplatsen
Klona följande lagringsplats för att ladda ned all enhetskodexempel, installationsskript och offlineversioner av dokumentationen. Om du tidigare klonade den här lagringsplatsen i en annan självstudie behöver du inte göra det igen.
Om du vill klona lagringsplatsen kör du följande kommando:
git clone --recursive https://github.com/eclipse-threadx/getting-started.git
Installera verktygen
Den klonade lagringsplatsen innehåller ett installationsskript som installerar och konfigurerar de verktyg som krävs. Om du har installerat dessa verktyg i en annan inbäddad enhetsguide behöver du inte göra det igen.
Kommentar
Installationsskriptet installerar följande verktyg:
Så här installerar du verktygen:
Gå till följande sökväg på lagringsplatsen och kör installationsskriptet med namnet get-toolchain.bat:
komma igång\tools\get-toolchain.bat
Öppna ett nytt konsolfönster för att identifiera de konfigurationsändringar som gjorts av installationsskriptet. Använd den här konsolen för att slutföra de återstående programmeringsuppgifterna i självstudien. Du kan använda Windows CMD, PowerShell eller Git Bash för Windows.
Kör följande kod för att bekräfta att CMake version 3.14 eller senare är installerad.
cmake --version
Skapa molnkomponenterna
Skapa en IoT-hubb
Du kan använda Azure CLI för att skapa en IoT-hubb som hanterar händelser och meddelanden för din enhet.
Så här skapar du en IoT-hubb:
Starta DIN CLI-app. Om du vill köra CLI-kommandona i resten av den här snabbstarten kopierar du kommandosyntaxen, klistrar in den i CLI-appen, redigerar variabelvärden och trycker på Retur.
- Om du använder Cloud Shell högerklickar du på länken för Cloud Shell och väljer alternativet att öppna på en ny flik.
- Om du använder Azure CLI lokalt startar du CLI-konsolappen och loggar in på Azure CLI.
Kör az extension add för att installera eller uppgradera azure-iot-tillägget till den aktuella versionen.
az extension add --upgrade --name azure-iot
Kör kommandot az group create för att skapa en resursgrupp. Följande kommando skapar en resursgrupp med namnet MyResourceGroup i regionen centralus .
Kommentar
Du kan också ange en alternativ
location
. Om du vill se tillgängliga platser kör du az account list-locations.az group create --name MyResourceGroup --location centralus
Kör kommandot az iot hub create för att skapa en IoT-hubb. Det kan ta några minuter att skapa en IoT-hubb.
YourIotHubName. Ersätt platshållaren i koden med det namn du valde för din IoT-hubb. Ett IoT-hubbnamn måste vara globalt unikt i Azure. Den här platshållaren används i resten av den här snabbstarten för att representera ditt unika IoT Hub-namn.
Parametern
--sku F1
skapar IoT-hubben på den kostnadsfria nivån. Hubbar på den kostnadsfria nivån har en begränsad funktionsuppsättning och används för konceptbevisprogram. Mer information om IoT Hub-nivåer, funktioner och priser finns i Prissättning för Azure IoT Hub.az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName} --sku F1 --partition-count 2
När IoT-hubben har skapats visar du JSON-utdata i konsolen och kopierar värdet
hostName
som ska användas i ett senare steg. VärdethostName
ser ut som i följande exempel:{Your IoT hub name}.azure-devices.net
Konfigurera IoT Explorer
I resten av den här snabbstarten använder du IoT Explorer för att registrera en enhet till din IoT-hubb, för att visa enhetsegenskaper och telemetri och för att skicka kommandon till enheten. I det här avsnittet konfigurerar du IoT Explorer för att ansluta till den IoT-hubb som du skapade och för att läsa plug and play-modeller från lagringsplatsen för den offentliga modellen.
Så här lägger du till en anslutning till din IoT-hubb:
Installera Azure IoT Explorer. Det här verktyget är ett plattformsoberoende verktyg för att övervaka och hantera Azure IoT-resurser.
Kör kommandot az iot hub connection-string show i CLI-appen för att hämta niska veze för din IoT-hubb.
az iot hub connection-string show --hub-name {YourIoTHubName}
Kopiera niska veze utan omgivande citattecken.
I Azure IoT Explorer väljer du IoT-hubbar på den vänstra menyn.
Välj + Lägg till anslutning.
Klistra in niska veze i rutan Anslutningssträng.
Välj Spara.
Om anslutningen lyckas växlar IoT Explorer till vyn Enheter .
Så här lägger du till lagringsplatsen för den offentliga modellen:
I IoT Explorer väljer du Start för att återgå till hemvyn.
Välj IoT Plug and Play-inställningar på den vänstra menyn.
Bekräfta att det finns en befintlig offentlig lagringsplatspost med en slutpunkt på
https://devicemodels.azure.com
.Kommentar
Om det inte finns någon post på den offentliga lagringsplatsen väljer du +Lägg till, väljer Offentlig lagringsplats på den nedrullningsbara menyn, anger
https://devicemodels.azure.com
slutpunktsvärdet och väljer sedan Spara.Den slutförda posten för den offentliga lagringsplatsen ser ut som följande skärmbild:
Registrera en enhet
I det här avsnittet skapar du en ny enhetsinstans och registrerar den med den IoT-hubb som du skapade. Du använder anslutningsinformationen för den nyligen registrerade enheten för att på ett säkert sätt ansluta din fysiska enhet i ett senare avsnitt.
Så här registrerar du en enhet:
I hemvyn i IoT Explorer väljer du IoT-hubbar.
Anslutningen som du tidigare lade till bör visas. Välj Visa enheter i den här hubben under anslutningsegenskaperna.
Välj + Ny och ange ett enhets-ID för enheten,
mydevice
till exempel . Låt alla andra egenskaper vara desamma.Välj Skapa.
Använd kopieringsknapparna för att kopiera fälten Enhets-ID och Primärnyckel .
Innan du fortsätter till nästa avsnitt sparar du vart och ett av följande värden som hämtats från tidigare steg på en säker plats. Du använder dessa värden i nästa avsnitt för att konfigurera enheten.
hostName
deviceId
primaryKey
Förbereda enheten
Om du vill ansluta MXCHIP DevKit till Azure ändrar du en konfigurationsfil för Wi-Fi- och Azure IoT-inställningar, återskapar avbildningen och blinkar avbildningen till enheten.
Lägga till konfiguration
Öppna följande fil i en textredigerare:
komma igång\MXChip\AZ3166\app\azure_config.h
Kommentera ut följande rad längst upp i filen enligt följande:
// #define ENABLE_DPS
Ange Wi-Fi-konstanterna till följande värden från din lokala miljö.
Konstant namn Värde WIFI_SSID
{Ditt Wi-Fi SSID} WIFI_PASSWORD
{Ditt Wi-Fi-lösenord} WIFI_MODE
{Ett av de uppräknade Wi-Fi-lägesvärdena i filen} Ange konstanterna för Azure IoT-enhetsinformation till de värden som du sparade när du skapade Azure-resurser.
Konstant namn Värde IOT_HUB_HOSTNAME
{Värdnamnets värde} IOT_HUB_DEVICE_ID
{Ditt enhets-ID-värde} IOT_DEVICE_SAS_KEY
{Primärnyckelvärdet} Spara och stäng filen.
Skapa avbildningen
I konsolen eller i Istraživač datoteka kör du skriptet rebuild.bat på följande sökväg för att skapa avbildningen:
komma igång\MXChip\AZ3166\tools\rebuild.bat
När bygget har slutförts bekräftar du att den binära filen skapades i följande sökväg:
komma igång\MXChip\AZ3166\build\app\mxchip_azure_iot.bin
Flasha bilden
På MXCHIP DevKit letar du upp knappen Återställ och Micro USB-porten. Du använder dessa komponenter i följande steg. Båda är markerade i följande bild:
Anslut Micro USB-kabeln till Micro USB-porten på MXCHIP DevKit och anslut den sedan till datorn.
I Istraživač datoteka hittar du den binära fil som du skapade i föregående avsnitt.
Kopiera den binära filen mxchip_azure_iot.bin.
I Istraživač datoteka hittar du MXCHIP DevKit-enheten som är ansluten till datorn. Enheten visas som en enhet i systemet med enhetsetiketten AZ3166.
Klistra in den binära filen i rotmappen för MXCHIP Devkit. Blinkande startar automatiskt och slutförs om några sekunder.
Kommentar
Under blinkande processen växlar en grön LED på MXCHIP DevKit.
Bekräfta information om enhetsanslutning
Du kan använda Termite-appen för att övervaka kommunikationen och bekräfta att enheten är korrekt konfigurerad.
Starta Termite.
Dricks
Om du inte kan ansluta Termite till din devkit installerar du ST-LINK-drivrutinen och försöker igen. Mer information finns i Felsökning.
Välj Inställningar.
I dialogrutan Inställningar för seriell port kontrollerar du följande inställningar och uppdaterar om det behövs:
- Baud-kurs: 115 200
- Port: Porten som MXCHIP DevKit är ansluten till. Om det finns flera portalternativ i listrutan hittar du rätt port att använda. Öppna Windows Upravljač uređajima och visa Portar för att identifiera vilken port som ska användas.
Välj OK.
Tryck på knappen Återställ på enheten. Knappen är märkt på enheten och finns nära Micro USB-anslutningsappen.
I Termite-appen kontrollerar du följande kontrollpunktsvärden för att bekräfta att enheten har initierats och anslutits till 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}.
Håll Termite öppen för att övervaka enhetens utdata i följande steg.
Visa enhetsegenskaper
Du kan använda Azure IoT Explorer för att visa och hantera egenskaperna för dina enheter. I det här avsnittet och följande avsnitt använder du plug and play-funktionerna som visas i IoT Explorer för att hantera och interagera med MXCHIP DevKit. Dessa funktioner förlitar sig på den enhetsmodell som publicerats för MXCHIP DevKit på lagringsplatsen för den offentliga modellen. Du har konfigurerat IoT Explorer för att söka på den här lagringsplatsen efter enhetsmodeller tidigare i den här självstudien. Du kan utföra många åtgärder utan att använda plug and play genom att välja åtgärden från den vänstra menyn i enhetsfönstret i IoT Explorer. Att använda plug and play ger dock ofta en förbättrad upplevelse. IoT Explorer kan läsa enhetsmodellen som anges av en plug and play-enhet och presentera information som är specifik för den enheten.
Så här kommer du åt IoT Plug and Play-komponenter för enheten i IoT Explorer:
I hemvyn i IoT Explorer väljer du IoT-hubbar och sedan Visa enheter i den här hubben.
Välj din enhet.
Välj IoT Plug and Play-komponenter.
Välj Standardkomponent. IoT Explorer visar de IoT Plug and Play-komponenter som implementeras på enheten.
På fliken Gränssnitt visar du JSON-innehållet i enhetsmodellen Beskrivning. JSON innehåller konfigurationsinformation för var och en av IoT Plug and Play-komponenterna i enhetsmodellen.
Varje flik i IoT Explorer motsvarar en av IoT Plug and Play-komponenterna i enhetsmodellen.
Tabb Typ Name beskrivning Gränssnitt Gränssnitt MXCHIP Getting Started Guide
Exempelmodell för MXCHIP DevKit Egenskaper (skrivskyddade) Property ledState
Led-lampans aktuella tillstånd Egenskaper (skrivbara) Property telemetryInterval
Intervallet som enheten skickar telemetri Kommandon Command setLedState
Slå på eller av lysdioderna
Så här visar du enhetsegenskaper med Azure IoT Explorer:
Välj fliken Egenskaper (skrivbar). Det visar intervallet som telemetri skickas.
telemetryInterval
Ändra till 5 och välj sedan Uppdatera önskat värde. Enheten använder nu det här intervallet för att skicka telemetri.IoT Explorer svarar med ett meddelande. Du kan också se uppdateringen i Termite.
Ange telemetriintervallet tillbaka till 10.
Så här använder du Azure CLI för att visa enhetsegenskaper:
Kör kommandot az iot hub device-twin show.
az iot hub device-twin show --device-id mydevice --hub-name {YourIoTHubName}
Granska egenskaperna för enheten i konsolens utdata.
Visa telemetri
Med Azure IoT Explorer kan du visa flödet av telemetri från din enhet till molnet. Du kan också göra samma uppgift med hjälp av Azure CLI.
Så här visar du telemetri i Azure IoT Explorer:
I fönstret IoT Plug and Play-komponenter (standardkomponent) för enheten i IoT Explorer väljer du fliken Telemetri . Bekräfta att Använd inbyggd händelsehubb är inställd på Ja.
Välj start.
Visa telemetrin när enheten skickar meddelanden till molnet.
Kommentar
Du kan också övervaka telemetri från enheten med hjälp av Termite-appen.
Markera kryssrutan Visa modellerade händelser för att visa händelserna i det dataformat som anges av enhetsmodellen.
Välj Stoppa för att avsluta mottagandet av händelser.
Så här använder du Azure CLI för att visa enhetstelemetri:
Kör kommandot az iot hub monitor-events. Använd de namn som du skapade tidigare i Azure IoT för din enhet och IoT Hub.
az iot hub monitor-events --device-id mydevice --hub-name {YourIoTHubName}
Visa JSON-utdata i konsolen.
{ "event": { "origin": "mydevice", "module": "", "interface": "dtmi:eclipsethreadx:devkit:gsgmxchip;1", "component": "", "payload": "{\"humidity\":41.21,\"temperature\":31.37,\"pressure\":1005.18}" } }
Välj CTRL+C för att avsluta övervakningen.
Anropa en direktmetod på enheten
Du kan också använda Azure IoT Explorer för att anropa en direktmetod som du implementerade på enheten. Direkta metoder har ett namn och kan eventuellt ha en JSON-nyttolast, konfigurerbar anslutning och tidsgräns för metoden. I det här avsnittet anropar du en metod som aktiverar eller inaktiverar en lysdiod. Du kan också göra samma uppgift med hjälp av Azure CLI.
Anropa en metod i Azure IoT Explorer:
I fönstret IoT Plug and Play-komponenter (standardkomponent) för enheten i IoT Explorer väljer du fliken Kommandon .
För kommandot setLedState anger du tillståndet till true.
Välj Kommandot Skicka. Du bör se ett meddelande i IoT Explorer och den gula användar-LED-lampan på enheten ska aktiveras.
Ange tillståndet till false och välj sedan Kommandot Skicka. Den gula användar-lysdiod bör stängas av.
Du kan också visa utdata i Termite för att övervaka metodernas status.
Så här använder du Azure CLI för att anropa en metod:
Kör kommandot az iot hub invoke-device-method och ange metodnamnet och nyttolasten. För den här metoden aktiverar du
method-payload
true
lysdioderna och ställer in den så attfalse
den inaktiveras.az iot hub invoke-device-method --device-id mydevice --method-name setLedState --method-payload true --hub-name {YourIoTHubName}
CLI-konsolen visar statusen för metodanropet på enheten, där
204
indikerar att det lyckades.{ "payload": {}, "status": 200 }
Kontrollera enheten för att bekräfta LED-tillståndet.
Visa Termite-terminalen för att bekräfta utdatameddelandena:
Receive direct method: setLedState Payload: true LED is turned ON Device twin property sent: {"ledState":true}
Felsöka och felsöka
Om du har problem med att skapa enhetskoden, flasha enheten eller ansluta kan du läsa Felsökning.
Information om hur du felsöker programmet finns i Felsökning med Visual Studio Code.
Rensa resurser
Om du inte längre behöver de Azure-resurser som skapats i den här snabbstarten kan du använda Azure CLI för att ta bort resursgruppen och alla dess resurser.
Viktigt!
Att ta bort en resursgrupp kan inte ångras. Resursgruppen och alla resurser som ingår i den tas bort permanent. Kontrollera att du inte av misstag tar bort fel resursgrupp eller resurser.
Ta bort en resursgrupp med namnet:
Kör kommandot az group delete. Det här kommandot tar bort resursgruppen, IoT Hub och enhetsregistreringen som du skapade.
az group delete --name MyResourceGroup
Kör kommandot az group list för att bekräfta att resursgruppen har tagits bort.
az group list
Nästa steg
I den här självstudien skapade du en anpassad avbildning som innehåller Eclipse ThreadX-exempelkod och flashade sedan avbildningen till MXCHIP DevKit-enheten. Du använde också Azure CLI och/eller IoT Explorer för att skapa Azure-resurser, ansluta MXCHIP DevKit säkert till Azure, visa telemetri och skicka meddelanden.
Som ett nästa steg kan du utforska följande artikel för att lära dig mer om inbäddade utvecklingsalternativ.
Eclipse ThreadX tillhandahåller OEM-tillverkare med komponenter för säker kommunikation och för att skapa kod- och dataisolering med hjälp av underliggande mekanismer för MCU/MPU-maskinvaruskydd. Varje OEM-tillverkare är dock ytterst ansvarig för att se till att deras enhet uppfyller de växande säkerhetskrav som utvecklas.