Kurz: Připojení sady MXCHIP AZ3166 devkit ke službě IoT Hub pomocí Eclipse ThreadX

Procházet kód

V tomto kurzu použijete Eclipse ThreadX k připojení sady MXCHIP AZ3166 IoT DevKit (od této chvíle MXCHIP DevKit) k Azure IoT.

Provedete následující úkoly:

  • Instalace sady integrovaných vývojových nástrojů pro programování sady MXChip DevKit v jazyce C
  • Sestavení image a jeho flash na MXCHIP DevKit
  • Použití Azure CLI k vytvoření a správě centra Azure IoT, ke kterému se MXCHIP DevKit bezpečně připojuje
  • Použití Azure IoT Exploreru k registraci zařízení ve službě IoT Hub, zobrazení vlastností zařízení, zobrazení telemetrie zařízení a volání přímých příkazů na zařízení

Požadavky

  • Počítač s Windows 10 nebo Windows 11

  • Aktivní předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.

  • Git pro klonování úložiště

  • Rozhraní příkazového řádku Azure. V tomto kurzu máte dvě možnosti spouštění příkazů Azure CLI:

    • Použijte Azure Cloud Shell, interaktivní prostředí, které spouští příkazy rozhraní příkazového řádku v prohlížeči. Tato možnost se doporučuje, protože nemusíte nic instalovat. Pokud Cloud Shell používáte poprvé, přihlaste se k webu Azure Portal. Postupujte podle kroků v rychlém startu pro Cloud Shell a spusťte Cloud Shell a vyberte prostředí Bash.
    • Volitelně můžete na místním počítači spustit Azure CLI. Pokud je azure CLI už nainstalované, spusťte az upgrade upgrade rozhraní příkazového řádku a rozšíření na aktuální verzi. Pokud chcete nainstalovat Azure CLI, přečtěte si téma Instalace Azure CLI.
  • Hardware

Příprava vývojového prostředí

Pokud chcete nastavit vývojové prostředí, nejprve naklonujete úložiště GitHub, které obsahuje všechny prostředky potřebné pro tento kurz. Pak nainstalujete sadu programovacích nástrojů.

Klonování úložiště

Naklonujte následující úložiště a stáhněte si veškerý ukázkový kód zařízení, instalační skripty a offline verze dokumentace. Pokud jste toto úložiště naklonovali dříve v jiném kurzu, nemusíte to udělat znovu.

Pokud chcete naklonovat úložiště, spusťte následující příkaz:

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

Instalace nástrojů

Klonované úložiště obsahuje instalační skript, který nainstaluje a nakonfiguruje požadované nástroje. Pokud jste tyto nástroje nainstalovali v jiném kurzu k vloženým zařízením, nemusíte to dělat znovu.

Poznámka:

Instalační skript nainstaluje následující nástroje:

  • CMake: Sestavení
  • ARM GCC: Kompilace
  • Termite: Monitorování výstupu sériového portu pro připojené prostředky zařízení

Instalace nástrojů:

  1. V Průzkumník souborů přejděte do následující cesty v úložišti a spusťte instalační skript s názvem get-toolchain.bat:

    getting-started\tools\get-toolchain.bat

  2. Po instalaci otevřete nové okno konzoly, abyste rozpoznali změny konfigurace provedené instalačním skriptem. Pomocí této konzoly dokončete zbývající programovací úlohy v kurzu. Můžete použít windows CMD, PowerShell nebo Git Bash pro Windows.

  3. Spuštěním následujícího kódu potvrďte, že je nainstalovaný CMake verze 3.14 nebo novější.

    cmake --version
    

Vytvoření cloudových komponent

Vytvoření centra IoT

Pomocí Azure CLI můžete vytvořit centrum IoT, které zpracovává události a zasílání zpráv pro vaše zařízení.

Vytvoření centra IoT:

  1. Spusťte aplikaci CLI. Pokud chcete spustit příkazy rozhraní příkazového řádku ve zbytku tohoto rychlého startu, zkopírujte syntaxi příkazu, vložte ho do aplikace CLI, upravte hodnoty proměnných a stiskněte Enter.

    • Pokud používáte Cloud Shell, klikněte pravým tlačítkem myši na odkaz pro Cloud Shell a vyberte možnost otevření na nové kartě.
    • Pokud používáte Azure CLI místně, spusťte konzolovou aplikaci CLI a přihlaste se k Azure CLI.
  2. Spuštěním příkazu az extension add nainstalujte nebo upgradujte rozšíření azure-iot na aktuální verzi.

    az extension add --upgrade --name azure-iot
    
  3. Spuštěním příkazu az group create vytvořte skupinu prostředků. Následující příkaz vytvoří skupinu prostředků MyResourceGroup v oblasti centralus.

    Poznámka:

    Volitelně můžete nastavit alternativní location. Pokud chcete zobrazit dostupná umístění, spusťte příkaz az account list-locations.

    az group create --name MyResourceGroup --location centralus
    
  4. Spuštěním příkazu az iot hub create vytvořte IoT Hub. Vytvoření centra IoT může trvat několik minut.

    YourIotHubName. Nahraďte tento zástupný symbol v kódu názvem, který jste zvolili pro centrum IoT. Název centra IoT musí být v Azure globálně jedinečný. Tento zástupný symbol se používá ve zbývající části tohoto rychlého startu k reprezentaci jedinečného názvu centra IoT.

    Parametr --sku F1 vytvoří centrum IoT na úrovni Free. Rozbočovače úrovně Free mají omezenou sadu funkcí a používají se k testování konceptů aplikací. Další informace o úrovních, funkcích a cenách služby IoT Hub najdete v tématu Ceny služby Azure IoT Hub.

    az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName} --sku F1 --partition-count 2
    
  5. Po vytvoření centra IoT zobrazte výstup JSON v konzole a zkopírujte hostName hodnotu, kterou použijete v pozdějším kroku. Hodnota hostName vypadá jako v následujícím příkladu:

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

Konfigurace IoT Exploreru

Ve zbývající části tohoto rychlého startu pomocí IoT Exploreru zaregistrujete zařízení do centra IoT, zobrazíte vlastnosti a telemetrii zařízení a odešlete do zařízení příkazy. V této části nakonfigurujete IoT Explorer pro připojení k vytvořenému centru IoT a čtení modelů plug-and play z veřejného úložiště modelů.

Přidání připojení ke službě IoT Hub:

  1. Nainstalujte Azure IoT Explorer. Tento nástroj je multiplatformní nástroj pro monitorování a správu prostředků Azure IoT.

  2. Spuštěním příkazu az iot hub connection-string show v aplikaci CLI získejte připojovací řetězec pro centrum IoT.

    az iot hub connection-string  show --hub-name {YourIoTHubName}
    
  3. Zkopírujte připojovací řetězec bez okolních uvozovek.

  4. V Azure IoT Exploreru vyberte v levé nabídce službu IoT Hubs .

  5. Vyberte + Add connection (Přidat připojení).

  6. Vložte připojovací řetězec do pole řetězce Připojení ion.

  7. Zvolte Uložit.

    Snímek obrazovky s přidáním připojení v IoT Exploreru

Pokud připojení proběhne úspěšně, IoT Explorer přepne do zobrazení Zařízení .

Přidání úložiště veřejného modelu:

  1. V IoT Exploreru se výběrem možnosti Domů vraťte do domovského zobrazení.

  2. V nabídce vlevo vyberte IoT technologie Plug and Play Nastavení a pak v rozevírací nabídce vyberte +Přidat a vyberte Veřejné úložiště.

  3. Položka se zobrazí pro úložiště veřejného modelu na adrese https://devicemodels.azure.com.

    Snímek obrazovky s přidáním úložiště veřejného modelu v IoT Exploreru

  4. Zvolte Uložit.

Registrace zařízení

V této části vytvoříte novou instanci zařízení a zaregistrujete ji ve službě IoT Hub, kterou jste vytvořili. Informace o připojení pro nově zaregistrované zařízení použijete k bezpečnému připojení fyzického zařízení v další části.

Registrace zařízení:

  1. V domovském zobrazení v IoT Exploreru vyberte IoT Hubs.

  2. Mělo by se zobrazit připojení, které jste přidali dříve. Pod vlastnostmi připojení vyberte Zobrazit zařízení v tomto centru .

  3. Vyberte + Nový a zadejte ID zařízení pro vaše zařízení, mydevicenapříklad . Ponechte všechny ostatní vlastnosti stejné.

  4. Vyberte Vytvořit.

    Snímek obrazovky s identitou zařízení Azure IoT Exploreru

  5. Pomocí tlačítek kopírování zkopírujte pole ID zařízení a primárního klíče .

Než budete pokračovat k další části, uložte všechny následující hodnoty načtené z předchozích kroků do bezpečného umístění. Tyto hodnoty použijete v další části ke konfiguraci zařízení.

  • hostName
  • deviceId
  • primaryKey

Příprava zařízení

Pokud chcete připojit MXCHIP DevKit k Azure, upravíte konfigurační soubor pro nastavení Wi-Fi a Azure IoT, znovu sestavíte image a blikáte image do zařízení.

Přidání konfigurace

  1. V textovém editoru otevřete následující soubor:

    začínáme\MXChip\AZ3166\app\azure_config.h

  2. Zakomentujte následující řádek v horní části souboru, jak je znázorněno:

    // #define ENABLE_DPS
    
  3. Nastavte konstanty Wi-Fi na následující hodnoty z místního prostředí.

    Název konstanty Hodnota
    WIFI_SSID {Vaše Wi-Fi SSID}
    WIFI_PASSWORD {Vaše heslo k Wi-Fi}
    WIFI_MODE {Jedna z výčtových hodnot v režimu Wi-Fi v souboru}
  4. Nastavte konstanty informací o zařízení Azure IoT na hodnoty, které jste uložili po vytvoření prostředků Azure.

    Název konstanty Hodnota
    IOT_HUB_HOSTNAME {Hodnota vašeho názvu hostitele}
    IOT_HUB_DEVICE_ID {Hodnota ID vašeho zařízení}
    IOT_DEVICE_SAS_KEY {Hodnota primárního klíče}
  5. Soubor uložte a zavřete.

Sestavení image

  1. V konzole nebo v Průzkumník souborů spusťte skript rebuild.bat na následující cestě k sestavení image:

    Začínáme\MXChip\AZ3166\tools\rebuild.bat

  2. Po dokončení sestavení ověřte, že se binární soubor vytvořil v následující cestě:

    začínáme\MXChip\AZ3166\build\app\mxchip_azure_iot.bin

Blikající obrázek

  1. V sadě MXCHIP DevKit vyhledejte tlačítko Obnovit a port Micro USB. Tyto komponenty použijete v následujících krocích. Obě jsou zvýrazněné na následujícím obrázku:

    Vyhledání klíčových komponent na panelu MXChip devkit

  2. Připojení kabel Micro USB k portu Micro USB na MXCHIP DevKitu a pak ho připojte k počítači.

  3. V Průzkumník souborů vyhledejte binární soubor, který jste vytvořili v předchozí části.

  4. Zkopírujte binární soubor mxchip_azure_iot.bin.

  5. V Průzkumník souborů vyhledejte zařízení MXCHIP DevKit připojené k počítači. Zařízení se zobrazí jako jednotka v systému s popiskem jednotky AZ3166.

  6. Vložte binární soubor do kořenové složky sady MXCHIP Devkit. Blikání se spustí automaticky a dokončí se za několik sekund.

    Poznámka:

    Během blikajícího procesu přepíná zelená led dioda na MXCHIP DevKit.

Potvrzení podrobností o připojení zařízení

Pomocí aplikace Termite můžete monitorovat komunikaci a ověřit, že je vaše zařízení správně nastavené.

  1. Spusťte termite.

    Tip

    Pokud se vám nedaří připojit Termite k devkitu, nainstalujte ovladač ST-LINK a zkuste to znovu. Další kroky najdete v tématu Řešení potíží.

  2. Vyberte Nastavení.

  3. V dialogovém okně Nastavení sériového portu zkontrolujte následující nastavení a v případě potřeby aktualizujte:

    • Přenosová rychlost: 115 200
    • Port: Port, ke kterému je váš MXCHIP DevKit připojený. Pokud v rozevíracím seznamu existuje více možností portu, najdete správný port, který se má použít. Otevřete windows Správce zařízení a zobrazte porty a určete, který port se má použít.

    Snímek obrazovky s nastavením sériového portu v aplikaci Termite

  4. Vyberte OK.

  5. Na zařízení stiskněte tlačítko Obnovit. Tlačítko je označeno na zařízení a nachází se v blízkosti konektoru Micro USB.

  6. V aplikaci Termite zkontrolujte následující hodnoty kontrolních bodů a ověřte, že je zařízení inicializované a připojené k 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}.
    

Nechte Termite otevřený pro monitorování výstupu zařízení v následujících krocích.

Zobrazení vlastností zařízení

Pomocí Azure IoT Exploreru můžete zobrazit a spravovat vlastnosti vašich zařízení. V této části a v následujících částech použijete možnosti technologie Plug and Play, které se v IoT Exploreru zobrazí ke správě a interakci s sadou MXCHIP DevKit. Tyto funkce spoléhají na model zařízení publikovaný pro sadu MXCHIP DevKit v úložišti veřejného modelu. IoT Explorer jste nakonfigurovali tak, aby v tomto úložišti hledali modely zařízení dříve v tomto kurzu. Mnoho akcí můžete provádět bez použití modulu plug and play tak, že v IoT Exploreru vyberete akci z levé nabídky podokna zařízení. Použití modulu plug-and play ale často poskytuje vylepšené prostředí. IoT Explorer může číst model zařízení určený zařízením plug and play a prezentovat informace specifické pro dané zařízení.

Přístup k komponentám technologie Plug and Play IoT pro zařízení v IoT Exploreru:

  1. V domovském zobrazení v IoT Exploreru vyberte IoT Hubs a pak vyberte Zobrazit zařízení v tomto centru.

  2. Vyberte své zařízení.

  3. Vyberte komponenty technologie Plug and Play IoT.

  4. Vyberte Výchozí komponentu. IoT Explorer zobrazí komponenty ioT technologie Plug and Play implementované na vašem zařízení.

    Snímek obrazovky s výchozí komponentou MXCHIP DevKit v IoT Exploreru

  5. Na kartě Rozhraní zobrazte obsah JSON v popisu modelu zařízení. Json obsahuje podrobnosti konfigurace pro každou komponentu technologie Plug and Play IoT v modelu zařízení.

    Každá karta v IoT Exploreru odpovídá jedné ze součástí technologie Plug and Play IoT v modelu zařízení.

    Tab Typ Název Popis
    Rozhraní Rozhraní MXCHIP Getting Started Guide Ukázkový model sady MXCHIP DevKit
    Vlastnosti (jen pro čtení) Vlastnost ledState Aktuální stav indikátoru LED
    Vlastnosti (zapisovatelné) Vlastnost telemetryInterval Interval, který zařízení odesílá telemetrii
    Příkazy Příkaz setLedState Zapnutí nebo vypnutí indikátoru LED

Zobrazení vlastností zařízení pomocí Azure IoT Exploreru:

  1. Vyberte kartu Vlastnosti (zapisovatelné). Zobrazí interval odeslání telemetrie.

  2. telemetryInterval Změňte hodnotu na 5 a pak vyberte Aktualizovat požadovanou hodnotu. Vaše zařízení teď používá tento interval k odesílání telemetrie.

    Snímek obrazovky s nastavením intervalu telemetrie v sadě MXCHIP DevKit v IoT Exploreru

  3. IoT Explorer odpoví oznámením. Můžete také sledovat aktualizaci v termite.

  4. Nastavte interval telemetrie zpět na 10.

Použití Azure CLI k zobrazení vlastností zařízení:

  1. Spusťte příkaz az iot hub device-twin show.

    az iot hub device-twin show --device-id mydevice --hub-name {YourIoTHubName}
    
  2. Zkontrolujte vlastnosti vašeho zařízení ve výstupu konzoly.

Zobrazení telemetrických dat

Pomocí Azure IoT Exploreru můžete zobrazit tok telemetrie ze zařízení do cloudu. Volitelně můžete stejnou úlohu provést pomocí Azure CLI.

Zobrazení telemetrie v Azure IoT Exploreru:

  1. V podokně Komponenty technologie Plug and Play IoT (výchozí komponenta) vašeho zařízení v IoT Exploreru vyberte kartu Telemetrie. Ověřte, že je integrované centrum událostí nastavené na Ano.

  2. Vyberte Spustit.

  3. Zobrazte telemetrii, když zařízení odesílá zprávy do cloudu.

    Snímek obrazovky s telemetrií zařízení v IoT Exploreru

    Poznámka:

    Telemetrii ze zařízení můžete také monitorovat pomocí aplikace Termite.

  4. Zaškrtněte políčko Zobrazit modelované události a zobrazte události ve formátu dat určeném modelem zařízení.

    Snímek obrazovky s modelovanými telemetrickými událostmi v IoT Exploreru

  5. Vyberte Zastavit a ukončete příjem událostí.

Použití Azure CLI k zobrazení telemetrie zařízení:

  1. Spusťte příkaz az iot hub monitor-events. Použijte názvy, které jste vytvořili dříve v Azure IoT pro vaše zařízení a Centrum IoT.

     az iot hub monitor-events --device-id mydevice --hub-name {YourIoTHubName}
    
  2. Zobrazte výstup JSON v konzole.

     {
         "event": {
             "origin": "mydevice",
             "module": "",
             "interface": "dtmi:eclipsethreadx:devkit:gsgmxchip;1",
             "component": "",
             "payload": "{\"humidity\":41.21,\"temperature\":31.37,\"pressure\":1005.18}"
         }
     }
    
  3. Výběrem kombinace kláves CTRL+C ukončíte monitorování.

Volání přímé metody na zařízení

Pomocí Azure IoT Exploreru můžete také volat přímou metodu, kterou jste na svém zařízení implementovali. Přímé metody mají název a můžou volitelně mít datovou část JSON, konfigurovatelné připojení a časový limit metody. V této části zavoláte metodu, která zapne nebo vypne indikátor LED. Volitelně můžete stejnou úlohu provést pomocí Azure CLI.

Volání metody v Azure IoT Exploreru:

  1. V podokně Komponenty technologie Plug and Play IoT (výchozí komponenta) pro vaše zařízení v IoT Exploreru vyberte kartu Příkazy.

  2. Pro příkaz setLedState nastavte stav na true.

  3. Vyberte příkaz Odeslat. V IoT Exploreru by se mělo zobrazit oznámení a na zařízení by se mělo zapnout žluté světlo LED uživatele.

    Snímek obrazovky volání metody setLedState v IoT Exploreru

  4. Nastavte stav na false a pak vyberte Příkaz Odeslat. Žlutá uživatelská dioda LED by měla být vypnutá.

  5. Volitelně můžete zobrazit výstup v termite a monitorovat stav metod.

Použití Azure CLI k volání metody:

  1. Spusťte příkaz az iot hub invoke-device-method a zadejte název metody a datovou část. Pro tuto metodu nastavíte method-payloadtrue zapnutí indikátoru LED a jeho nastavení tak, aby false se vypnulo.

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

    Konzola rozhraní příkazového řádku zobrazuje stav volání metody na zařízení, kde 204 značí úspěch.

    {
      "payload": {},
      "status": 200
    }
    
  2. Zkontrolujte své zařízení a potvrďte stav LED.

  3. Zobrazte terminál Termite a potvrďte výstupní zprávy:

     Receive direct method: setLedState
         Payload: true
     LED is turned ON
     Device twin property sent: {"ledState":true}
    

Řešení problémů a ladění

Pokud máte problémy s sestavením kódu zařízení, blikajícím zařízením nebo připojením, přečtěte si téma Řešení potíží.

Ladění aplikace naleznete v tématu Ladění pomocí editoru Visual Studio Code.

Vyčištění prostředků

Pokud už prostředky Azure vytvořené v tomto rychlém startu nepotřebujete, můžete pomocí Azure CLI odstranit skupinu prostředků a všechny její prostředky.

Důležité

Odstranění skupiny prostředků je nevratné. Skupina prostředků i všechny prostředky v ní obsažené se trvale odstraní. Ujistěte se, že nechtěně neodstraníte nesprávnou skupinu prostředků nebo prostředky.

Odstranění skupiny prostředků podle názvu:

  1. Spusťte příkaz az group delete. Tento příkaz odebere skupinu prostředků, IoT Hub a registraci zařízení, kterou jste vytvořili.

    az group delete --name MyResourceGroup
    
  2. Spuštěním příkazu az group list potvrďte odstranění skupiny prostředků.

    az group list
    

Další kroky

V tomto kurzu jste vytvořili vlastní image, která obsahuje ukázkový kód Eclipse ThreadX, a pak jste obrázek blikli na zařízení MXCHIP DevKit. Také jste pomocí Azure CLI nebo IoT Exploreru vytvořili prostředky Azure, bezpečně připojili MXCHIP DevKit k Azure, zobrazili telemetrii a odesílali zprávy.

V dalším kroku se podívejte na následující článek, kde najdete další informace o možnostech integrovaného vývoje.

Eclipse ThreadX poskytuje OEM s komponentami pro zabezpečení komunikace a vytváření kódu a izolace dat pomocí základních mechanismů hardwarové ochrany MCU/MPU. Každý výrobce OEM je ale nakonec zodpovědný za zajištění toho, aby jejich zařízení splňovalo měnící se požadavky na zabezpečení.