Självstudie: Använda Eclipse ThreadX för att ansluta en MXCHIP AZ3166 devkit till IoT Hub

Sökkod

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

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:

  • CMake: Skapa
  • ARM GCC: Kompilera
  • Termit: Övervaka serieportutdata för anslutna enhetsresurser

Så här installerar du verktygen:

  1. Från Utforskaren navigerar du till följande sökväg på lagringsplatsen och kör installationsskriptet med namnet get-toolchain.bat:

    komma igång\tools\get-toolchain.bat

  2. Efter installationen öppnar du 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.

  3. 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:

  1. 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.
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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ärdet hostName 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:

  1. Installera Azure IoT Explorer. Det här verktyget är ett plattformsoberoende verktyg för att övervaka och hantera Azure IoT-resurser.

  2. Kör kommandot az iot hub connection-string show i CLI-appen för att hämta anslutningssträng för din IoT-hubb.

    az iot hub connection-string  show --hub-name {YourIoTHubName}
    
  3. Kopiera anslutningssträng utan omgivande citattecken.

  4. I Azure IoT Explorer väljer du IoT-hubbar på den vänstra menyn.

  5. Välj + Lägg till anslutning.

  6. Klistra in anslutningssträng i rutan Anslut ionssträng.

  7. Välj Spara.

    Skärmbild av att lägga till en anslutning i IoT Explorer.

Om anslutningen lyckas växlar IoT Explorer till vyn Enheter .

Så här lägger du till lagringsplatsen för den offentliga modellen:

  1. I IoT Explorer väljer du Start för att återgå till hemvyn.

  2. Välj IoT Plug and Play Inställningar på den vänstra menyn och välj sedan +Lägg till och välj Offentlig lagringsplats på den nedrullningsbara menyn.

  3. En post visas för lagringsplatsen för den offentliga modellen på https://devicemodels.azure.com.

    Skärmbild av att lägga till lagringsplatsen för den offentliga modellen i IoT Explorer.

  4. Välj Spara.

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:

  1. I hemvyn i IoT Explorer väljer du IoT-hubbar.

  2. Anslutningen som du tidigare lade till bör visas. Välj Visa enheter i den här hubben under anslutningsegenskaperna.

  3. Välj + Ny och ange ett enhets-ID för enheten, mydevicetill exempel . Låt alla andra egenskaper vara desamma.

  4. Välj Skapa.

    Skärmbild av enhetsidentiteten i Azure IoT Explorer.

  5. 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

  1. Öppna följande fil i en textredigerare:

    komma igång\MXChip\AZ3166\app\azure_config.h

  2. Kommentera ut följande rad längst upp i filen enligt följande:

    // #define ENABLE_DPS
    
  3. 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}
  4. 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}
  5. Spara och stäng filen.

Skapa avbildningen

  1. I konsolen eller i Utforskaren 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

  2. 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

  1. 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:

    Leta upp viktiga komponenter på MXChip devkit-tavlan

  2. Anslut Micro USB-kabeln till Micro USB-porten på MXCHIP DevKit och anslut den sedan till datorn.

  3. I Utforskaren hittar du den binära fil som du skapade i föregående avsnitt.

  4. Kopiera den binära filen mxchip_azure_iot.bin.

  5. I Utforskaren hittar du MXCHIP DevKit-enheten som är ansluten till datorn. Enheten visas som en enhet i systemet med enhetsetiketten AZ3166.

  6. 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.

  1. 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.

  2. Välj Inställningar.

  3. 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 Enhetshanteraren och visa Portar för att identifiera vilken port som ska användas.

    Skärmbild av inställningarna för serieporten i Termite-appen

  4. Välj OK.

  5. Tryck på knappen Återställ på enheten. Knappen är märkt på enheten och finns nära Micro USB-anslutningsappen.

  6. 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:

  1. I hemvyn i IoT Explorer väljer du IoT-hubbar och sedan Visa enheter i den här hubben.

  2. Välj din enhet.

  3. Välj IoT Plug and Play-komponenter.

  4. Välj Standardkomponent. IoT Explorer visar de IoT Plug and Play-komponenter som implementeras på enheten.

    Skärmbild av standardkomponenten MXCHIP DevKit i IoT Explorer

  5. 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:

  1. Välj fliken Egenskaper (skrivbar). Det visar intervallet som telemetri skickas.

  2. 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.

    Skärmbild av inställning av telemetriintervall på MXCHIP DevKit i IoT Explorer

  3. IoT Explorer svarar med ett meddelande. Du kan också se uppdateringen i Termite.

  4. Ange telemetriintervallet tillbaka till 10.

Så här använder du Azure CLI för att visa enhetsegenskaper:

  1. Kör kommandot az iot hub device-twin show.

    az iot hub device-twin show --device-id mydevice --hub-name {YourIoTHubName}
    
  2. 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:

  1. 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.

  2. Välj start.

  3. Visa telemetrin när enheten skickar meddelanden till molnet.

    Skärmbild av enhetstelemetri i IoT Explorer

    Kommentar

    Du kan också övervaka telemetri från enheten med hjälp av Termite-appen.

  4. Markera kryssrutan Visa modellerade händelser för att visa händelserna i det dataformat som anges av enhetsmodellen.

    Skärmbild av modellerade telemetrihändelser i IoT Explorer

  5. Välj Stoppa för att avsluta mottagandet av händelser.

Så här använder du Azure CLI för att visa enhetstelemetri:

  1. 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}
    
  2. 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}"
         }
     }
    
  3. 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 har implementerat 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:

  1. I fönstret IoT Plug and Play-komponenter (standardkomponent) för enheten i IoT Explorer väljer du fliken Kommandon .

  2. För kommandot setLedState anger du tillståndet till true.

  3. Välj Kommandot Skicka. Du bör se ett meddelande i IoT Explorer och den gula användar-LED-lampan på enheten ska aktiveras.

    Skärmbild av att anropa metoden setLedState i IoT Explorer

  4. Ange tillståndet till false och välj sedan Kommandot Skicka. Den gula användar-lysdiod bör stängas av.

  5. 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:

  1. Kör kommandot az iot hub invoke-device-method och ange metodnamnet och nyttolasten. För den här metoden aktiverar du method-payloadtrue lysdioderna och ställer in den så att false 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
    }
    
  2. Kontrollera enheten för att bekräfta LED-tillståndet.

  3. 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:

  1. 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
    
  2. 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.