Руководство. Подключение MXCHIP AZ3166 devkit к Центр Интернета вещей с помощью Eclipse ThreadX

Просмотреть код

В этом руководстве вы используете Eclipse ThreadX для подключения MXCHIP AZ3166 IoT DevKit (начиная с этого момента MXCHIP DevKit) к Azure IoT.

Выполните следующие задачи.

  • установка набора встроенных средств разработки для программирования MXChip DevKit на C;
  • создание образа и прошивка этого образа на MXCHIP DevKit;
  • Создание Центра Интернета вещей Azure и управление ими с помощью Azure CLI, к которому безопасно подключается MXCHIP DevKit
  • Использование Azure IoT Explorer для регистрации устройства в вашем Центре Интернета вещей Azure, просмотра свойств устройства, просмотра телеметрии устройства и вызова прямых команд на устройстве

Необходимые компоненты

  • ПК под управлением Windows 10 или Windows 11.

  • Активная подписка Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.

  • Git для клонирования репозитория.

  • Azure CLI. В этом руководстве есть два варианта выполнения команд Azure CLI:

    • Azure Cloud Shell — интерактивная оболочка CLI, которая работает в браузере. Этот вариант предпочтителен, так как не нужно ничего устанавливать. Если вы впервые используете Cloud Shell, войдите на портал Azure. Выполните действия, описанные в кратком руководстве Cloud Shell, чтобы запустить Cloud Shell и выбрать среду Bash.
    • Azure CLI также можно запустить на локальном компьютере. Если интерфейс командной строки Azure уже установлен, запустите az upgrade, чтобы обновить интерфейс командной строки и расширения до текущей версии. Чтобы установить Azure CLI, ознакомьтесь с разделом Установка Azure CLI.
  • Оборудование

    • MXCHIP AZ3166 IoT DevKit (MXCHIP DevKit).
    • Устройство Wi-Fi с частотой 2,4 ГГц.
    • Кабель с разъемами USB 2.0 A и Micro-USB.

Подготовка среды разработки

Чтобы настроить среду разработки, прежде всего клонируйте репозиторий GitHub, который содержит все необходимые ресурсы для работы с этим руководством. Затем установите набор средств программирования.

Клонирование репозитория

Клонируйте указанный ниже репозиторий, чтобы скачать все примеры кода для устройства, скрипты настройки и автономные версии документации. Если вы уже клонировали этот репозиторий, работая с другим руководством, этот процесс повторять не нужно.

Чтобы клонировать репозиторий, выполните следующую команду:

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

Установка средств

Клонированный репозиторий содержит скрипт настройки, который устанавливает и настраивает все необходимые средства. Если вы установили эти средства в другом руководстве по внедренному устройству, вам не нужно делать это снова.

Примечание.

Скрипт настройки устанавливает следующие средства:

  • CMake для сборки;
  • ARM GCC для компиляции;
  • Termite: Мониторинг вывода последовательного порта для ресурсов подключенных устройств

Чтобы установить инструменты:

  1. В проводнике откройте следующий путь репозитория и запустите скрипт настройки, размещенный в файле get-toolchain.bat:

    getting-started\tools\get-toolchain.bat

  2. Когда установка завершится, откройте новое окно консоли, чтобы проверить изменения конфигурации, внесенные скриптом настройки. В этой консоли вы будете выполнять все остальные задачи программирования, описанные в этом руководстве. Вы можете использовать Windows CMD, PowerShell или Git Bash для Windows.

  3. Выполните следующий код и убедитесь, что в системе установлен пакет CMake версии 3.14 или выше.

    cmake --version
    

Создание облачных компонентов

Создание Центра Интернета вещей

Вы можете использовать Azure CLI для создания Центра Интернета вещей Azure, который обрабатывает события и обмен сообщениями для вашего устройства.

Чтобы создать Центр Интернета вещей, выполните:

  1. Запустите приложение CLI. Чтобы выполнить команды интерфейса командной строки, указанные в оставшейся части этого краткого руководства, скопируйте синтаксис команды, вставьте его в приложение CLI, измените значения переменных и нажмите клавишу ВВОД.

    • Если вы используете Cloud Shell, щелкните правой кнопкой мыши ссылку для Cloud Shell и выберите параметр, чтобы открыть ее на новой вкладке.
    • Если вы используете Azure CLI локально, запустите консольное приложение CLI и войдите в Azure CLI.
  2. Запустите az extension add, чтобы установить или обновить расширение azure-iot до текущей версии.

    az extension add --upgrade --name azure-iot
    
  3. Выполните команду az group create, чтобы создать группу ресурсов. Следующая команда создает группу ресурсов с именем MyResourceGroup в регионе centralus.

    Примечание.

    При желании вы можете установить альтернативный location. Чтобы увидеть доступные местоположения, запустите az account list-locations.

    az group create --name MyResourceGroup --location centralus
    
  4. Создайте Центр Интернета вещей с помощью команды az iot hub create. Создание Центра Интернета вещей может занять несколько минут.

    YourIotHubName Замените этот заполнитель в коде именем, выбранным для центра Интернета вещей. Имя центра Интернета вещей должно быть уникальным по всему Azure. Этот заполнитель используется в оставшейся части этого краткого руководства для представления вашего уникального имени центра Интернета вещей.

    Параметр --sku F1 создает Центр Интернета вещей на уровне бесплатного пользования. Концентраторы бесплатного уровня имеют ограниченный набор функций и используются для подтверждения концепции приложений. Дополнительные сведения об уровнях, функциях и ценах Центра Интернета вещей см. в разделе Цены на Центр Интернета вещей Azure.

    az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName} --sku F1 --partition-count 2
    
  5. После создания Центра Интернета вещей просмотрите выходные данные JSON в консоли и скопируйте значение hostName для использования на более позднем этапе. Значение hostName выглядит как в нижеприведенном примере:

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

Настройка IoT Explorer

В остальной части этого краткого руководства вы используете ioT Обозреватель для регистрации устройства в Центре Интернета вещей, просмотра свойств и телеметрии устройства и отправки команд на устройство. В этом разделе описана настройка Интернета вещей Обозреватель для подключения к созданному центру Интернета вещей, а также для чтения моделей подключаемых модулей и воспроизведения из общедоступного репозитория моделей.

Для добавления подключения к Центру Интернета вещей:

  1. Установите Обозреватель Azure IoT. Это кроссплатформенная программа для мониторинга ресурсов Интернета вещей Azure и управления ими.

  2. В приложении с интерфейсом командной строки выполните команду az iot hub connection-string show, чтобы получить строку подключения для вашего центра Интернета вещей.

    az iot hub connection-string  show --hub-name {YourIoTHubName}
    
  3. Скопируйте строку подключения без окружающих кавычек.

  4. В Обозреватель Azure IoT выберите центры Интернета вещей в меню слева.

  5. Выберите + Add connection (+ Добавить подключение).

  6. Вставьте строку подключения в поле Строка подключения.

  7. Выберите Сохранить.

    Снимок экрана: добавление подключения в Обозреватель Интернета вещей.

Если соединение установлено, IoT Explorer переключается на представление Устройства.

Чтобы добавить публичный репозиторий моделей:

  1. В IoT Explorer выберите Дом, чтобы вернуться в главный экран.

  2. В меню слева выберите Настройки IoT Plug and Play, после чего выберите + Добавить и в раскрывающемся меню выберите Публичный репозиторий.

  3. Запись для общедоступного репозитория моделей отображается по адресу https://devicemodels.azure.com.

    Снимок экрана: добавление общедоступного репозитория моделей в Обозреватель Интернета вещей.

  4. Выберите Сохранить.

Регистрация устройства

В этом разделе вы создаете новый экземпляр устройства и регистрируете его в созданном вами Центре Интернета вещей. Сведения о подключении нового зарегистрированного устройства используются для безопасного подключения физического устройства в следующем разделе.

Для регистрации устройства:

  1. На главном экране в IoT Explorer выберите Центры Интернета вещей.

  2. Должно отобразиться ранее добавленное подключение. Выберите Просмотреть устройства в этом концентраторе под свойствами подключения.

  3. Выберите +Создать и введите идентификатор устройства для устройства, например mydevice. Остальные свойства оставьте без изменений.

  4. Нажмите кнопку создания.

    Снимок экрана: удостоверение устройства Обозреватель Azure IoT.

  5. Используйте кнопки копирования для копирования полей идентификатора устройства и первичного ключа.

Прежде чем продолжить переход к следующему разделу, сохраните каждое из следующих значений, извлеченных из предыдущих шагов, в безопасное расположение. Эти значения используются в следующем разделе для настройки устройства.

  • hostName
  • deviceId
  • primaryKey

Подготовка устройства

Чтобы подключить MXCHIP DevKit к Azure, измените файл конфигурации для параметров Wi-Fi и Azure IoT, перестроите образ и вспыхнете изображение на устройство.

Добавление конфигурации

  1. Откройте в текстовом редакторе следующий файл:

    getting-started\MXChip\AZ3166\app\azure_config.h

  2. Закомментируйте следующую строку в верхней части файла, как показано ниже:

    // #define ENABLE_DPS
    
  3. Присвойте следующим константам для Wi-Fi значения, соответствующие вашей локальной среде.

    Имя константы Значение
    WIFI_SSID {Идентификатор SSID для Wi-Fi}
    WIFI_PASSWORD {Пароль для Wi-Fi}
    WIFI_MODE {Одно из значений режима Wi-Fi, перечисленных в файле}
  4. Присвойте константам сведений об устройстве Интернета вещей Azure значения, которые вы сохранили после создания ресурсов Azure.

    Имя константы Значение
    IOT_HUB_HOSTNAME {Значение имени узла}
    IOT_HUB_DEVICE_ID {Значение идентификатора устройства}
    IOT_DEVICE_SAS_KEY {Значение первичного ключа}
  5. Сохранить и закрыть файл.

Создание образа

  1. В консоли или проводнике выполните следующий скрипт rebuild.bat, чтобы создать образ:

    getting-started\MXChip\AZ3166\tools\rebuild.bat

  2. Когда сборка завершится, проверьте наличие следующего двоичного файла:

    getting-started\MXChip\AZ3166\build\app\mxchip_azure_iot.bin

Запись образа

  1. На устройстве MXCHIP DevKit найдите кнопку Reset (Сброс) и порт Micro-USB. Эти элементы используются на следующих шагах. Они оба выделены на следующем рисунке:

    Расположение основных элементов на плате разработки MXChip DevKit

  2. Подключите кабель Micro-USB к порту Micro-USB на устройстве MXCHIP DevKit, а затем к компьютеру.

  3. В проводнике найдите двоичный файл, созданный, как описано в предыдущем разделе.

  4. Скопируйте двоичный файл mxchip_azure_iot.bin.

  5. В проводнике найдите устройство MXCHIP DevKit, подключенное к локальному компьютеру. Это устройство отображается в системе как диск с меткой AZ3166.

  6. Вставьте двоичный файл в корневой каталог устройства MXCHIP DevKit. Запись образа начнется автоматически и завершится через несколько секунд.

    Примечание.

    В это время на устройстве MXCHIP DevKit будет мигать зеленый индикатор.

Проверка сведений о подключении устройства

Приложение Termite позволяет отслеживать обмен данными, чтобы убедиться, что устройство настроено правильно.

  1. Запустите Termite.

    Совет

    Если не удается подключить Termite к DevKit, установите драйвер ST-LINK и повторите попытку. Дополнительные действия см. в разделе Устранение неполадок.

  2. Выберите Параметры.

  3. В диалоговом окне Serial port settings (Параметры последовательного порта) проверьте следующие значений и при необходимости обновите их.

    • Baud rate (Скорость передачи): 115 200.
    • Port (Порт): имя порта, к которому подключено устройство MXCHIP DevKit. Если в раскрывающемся списке есть несколько вариантов, выберите нужный. Откройте Диспетчер устройств Windows и просмотрите раздел Порты, чтобы определить требуемое значение порта.

    Скриншот настроек последовательного порта в приложении Termite

  4. Нажмите ОК.

  5. Нажмите на устройстве кнопку Reset (Сброс). Эта кнопка расположена рядом с разъемом Micro-USB имеет соответствующую маркировку.

  6. В приложении Termite проверьте следующие значения контрольной точки и убедитесь, что устройство инициализировано и подключено к Интернету вещей Azure.

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

Не закрывайте Termite, чтобы отслеживать выходные данные устройства на следующих шагах.

Просмотр свойств устройства

Вы можете воспользоваться службой Explorer Интернета вещей Azure для просмотра свойств ваших устройств и управления ими. В этом разделе и в следующих разделах используются возможности самонастраивающийся, которые отображаются в IoT Обозреватель для управления и взаимодействия с MXCHIP DevKit. Эти возможности зависят от модели устройства, опубликованной для MXCHIP DevKit в общедоступном репозитории моделей. Вы настроили Обозреватель Интернета вещей для поиска в этом репозитории моделей устройств ранее в этом руководстве. Вы можете выполнять много действий без использования подключаемых модулей и воспроизведения, выбрав действие в левом меню панели устройств в Обозреватель Интернета вещей. Однако использование подключаемых модулей и воспроизведения часто обеспечивает расширенный интерфейс. IoT Обозреватель может считывать модель устройства, указанную устройством подключаемого модуля и воспроизведения, и представлять сведения, относящиеся к устройству.

Для получения доступа к компонентам IoT Plug and Play для устройства в IoT Explorer:

  1. На главном экране в IoT Explorer выберите Центры Интернета вещей, после чего выберите Просмотреть устройства в этом концентраторе.

  2. Выберите устройство.

  3. Выберите Компоненты IoT Plug and Play.

  4. Выберите Компонент по умолчанию. IoT Explorer отображает компоненты IoT Plug and Play, реализованные на вашем устройстве.

    Снимок экрана компонента MXCHIP DevKit по умолчанию в IoT Explorer

  5. На вкладке Интерфейс просмотрите содержимое JSON в модели устройства Описание. JSON содержит сведения о конфигурации для каждого из компонентов IoT Plug and Play в модели устройства.

    Каждая вкладка в IoT Explorer соответствует одному из компонентов IoT Plug and Play в модели устройства.

    Вкладка Тип Полное имя Описание
    Интерфейс Интерфейс MXCHIP Getting Started Guide Пример модели для MXCHIP DevKit
    Свойства (только для чтения) Свойство ledState Текущее состояние светодиодных индикаторов
    Свойства (с возможностью записи) Свойство telemetryInterval Интервал, в который устройство отправляет данные телеметрии
    Команды Команда setLedState Включение или выключение светодиода

Для просмотра свойств устройства с помощью службы Explorer Интернета вещей Azure:

  1. Выберите вкладку Свойства (с возможностью записи). Он отображает интервал отправки телеметрии.

  2. Измените telemetryInterval на 5, после чего выберите Обновить требуемое значение. Теперь ваше устройство будет использовать этот интервал для отправки телеметрии.

    Снимок экрана установки интервала телеметрии в MXCHIP DevKit в IoT Explorer

  3. IoT Explorer отвечает уведомлением. Вы также можете наблюдать за обновлением в Termite.

  4. Установите интервал телеметрии обратно на 10.

Чтобы использовать Azure CLI для просмотра свойств устройства:

  1. Выполните команду az iot hub device-twin show.

    az iot hub device-twin show --device-id mydevice --hub-name {YourIoTHubName}
    
  2. Проверьте свойства вашего устройства в выводе консоли.

Просмотр телеметрии

С помощью службы Explorer Интернета вещей Azure вы можете просматривать поток телеметрии с вашего устройства в облако. При необходимости можно выполнить ту же задачу с помощью Azure CLI.

Чтобы просмотреть телеметрию в службе Explorer Интернета вещей Azure:

  1. На панели компонентов IoT Plug and Play (компонент по умолчанию) вашего устройства в IoT Explorer выберите вкладку Телеметрия. Убедитесь, что для параметра Использовать встроенный концентратор событий задано значение Да.

  2. Выберите Пуск.

  3. Просматривайте телеметрию, когда устройство отправляет сообщения в облако.

    Снимок экрана телеметрии устройства в IoT Explorer

    Примечание.

    Вы также можете отслеживать данные телеметрии, передаваемые с устройства, в приложении Termite.

  4. Установите флажок Отобразить смоделированные события, чтобы просматривать события в формате данных, заданном моделью устройства.

    Снимок экрана смоделированных событий телеметрии в IoT Explorer

  5. Выберите Стоп, чтобы прекратить прием событий.

Чтобы использовать Azure CLI для просмотра телеметрии устройства:

  1. Запустите команду az iot hub monitor-events. Используйте имена, которые вы создали ранее в Интернете вещей Azure для своего устройства и Центра Интернета вещей Azure.

     az iot hub monitor-events --device-id mydevice --hub-name {YourIoTHubName}
    
  2. Просмотрите вывод JSON в консоли.

     {
         "event": {
             "origin": "mydevice",
             "module": "",
             "interface": "dtmi:eclipsethreadx:devkit:gsgmxchip;1",
             "component": "",
             "payload": "{\"humidity\":41.21,\"temperature\":31.37,\"pressure\":1005.18}"
         }
     }
    
  3. Выберите CTRL+C, чтобы завершить мониторинг.

Вызов прямого метода на устройстве

Вы также можете использовать службу Explorer Интернета вещей Azure для вызова прямого метода, реализованного на вашем устройстве. У прямых методов есть имя и может быть полезная нагрузка в формате JSON, настраиваемое подключение и время ожидания метода. В этом разделе вы вызываете метод, который включает или выключает светодиод. При необходимости можно выполнить ту же задачу с помощью Azure CLI.

Чтобы вызвать метод в службе Explorer Интернета вещей Azure:

  1. На панели компонентов IoT Plug and Play (компонент по умолчанию) вашего устройства в IoT Explorer выберите вкладку Команды.

  2. Для команды setLedState установите для состояния значение истина.

  3. Выберите Отправить команду. Вы должны увидеть уведомление в IoT Explorer, и на устройстве должен загореться желтый светодиодный индикатор пользователя.

    Снимок экрана с вызовом метода setLedState в IoT Explorer

  4. Установите для состояния значение ложь, после чего выберите Отправить команду. Желтый светодиодный индикатор пользователя должен погаснуть.

  5. При желании вы можете просмотреть вывод в Termite, чтобы отслеживать статус методов.

Чтобы использовать Azure CLI для вызова метода:

  1. Запустите команду az iot hub invoke-device-method и укажите имя метода и полезную нагрузку. Для этого метода установка method-payload на true включает светодиод, в то время как установка на false выключает его.

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

    Консоль CLI отображает состояние вызова вашего метода на устройстве, где 204 указывает на успешное выполнение.

    {
      "payload": {},
      "status": 200
    }
    
  2. Проверьте свое устройство, чтобы проверить состояние светодиода.

  3. Просмотрите терминал Termite, чтобы подтвердить выходные сообщения:

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

Устранение неполадок и отладка

Если возникают проблемы с созданием кода устройства, установкой образа устройства или подключением, см. раздел Устранение неполадок.

Сведения об отладке приложения см. в статье Отладка с помощью Visual Studio Code.

Очистка ресурсов

Если вам больше не нужны ресурсы Azure, созданные в этом кратком руководстве, вы можете использовать Azure CLI для удаления группы ресурсов и всех ее ресурсов.

Внимание

Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления. Будьте внимательны, чтобы случайно не удалить не ту группу ресурсов или не те ресурсы.

Удаление группы ресурсов по имени:

  1. Выполните команду az group delete. При этом будут удалены созданные группа ресурсов, центр Интернета вещей и регистрация устройства.

    az group delete --name MyResourceGroup
    
  2. Выполните команду az group list, чтобы подтвердить удаление группы ресурсов.

    az group list
    

Следующие шаги

В этом руководстве вы создали пользовательский образ, содержащий пример кода Eclipse ThreadX, а затем вспыхнули изображение на устройстве MXCHIP DevKit. Вы также использовали Azure CLI и/или IoT Explorer для создания ресурсов Azure, безопасного подключения MXCHIP DevKit к Azure, просмотра телеметрии и отправки сообщений.

На следующем шаге ознакомьтесь со следующей статьей, чтобы узнать больше о встроенных вариантах разработки.

Eclipse ThreadX предоставляет oem-машины с компонентами для защиты связи и создания кода и изоляции данных с помощью базовых механизмов защиты оборудования MCU/MPU. Но не забывайте, что каждый изготовитель оборудования отвечает за соответствие устройства требованиям безопасности.