Руководство. Использование Eclipse ThreadX для подключения комплекта обнаружения STMicropilnics B-L475E-IOT01A к Центр Интернета вещей

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

В этом руководстве вы используете Eclipse ThreadX для подключения комплекта средств обнаружения STMicropilnics B-L475E-IOT01A (с этого момента STM DevKit) к Azure IoT.

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

  • установка набора встроенных средств разработки для программирования STM DevKit на C;
  • создание образа и его запись на STM DevKit;
  • Создание Центра Интернета вещей Azure и управление ими с помощью Azure CLI, к которому безопасно подключается STM 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.
  • Оборудование

    • B-L475E-IOT01A (STM 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

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

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

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

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

    get-started\STMicropilnics\B-L475E-IOT01A\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 {Значение hostName вашего концентратора Iot}
    IOT_HUB_DEVICE_ID {Значение идентификатора устройства}
    IOT_DEVICE_SAS_KEY {Значение первичного ключа}
  5. Сохранить и закрыть файл.

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

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

    get-started\STMicropilnics\B-L475E-IOT01A\tools\rebuild.bat

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

    get-started\STMicropilnics\B-L475E-IOT01A\build\app\stm32l475_azure_iot.bin

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

  1. На MCU STM DevKit найдите кнопку сброса (1), порт Micro USB (2), который помечен USB STLink и номер части платы (3). Эти элементы будут приведены в следующих шагах. Все они выделены на следующем рисунке.

    Фотография с ключевыми компонентами на доске STM DevKit.

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

    Примечание.

    Подробные сведения о настройке STM DevKit см. в инструкциях по упаковке или в ресурсах B-L475E-IOT01A

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

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

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

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

    Примечание.

    Во время мигающего процесса светодиодный переключатель между красным и зеленым на STM DevKit.

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

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

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

    Совет

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

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

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

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

    Снимок экрана с настройками последовательного порта в приложении Termite.

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

  5. Нажмите на устройстве кнопку Reset (Сброс). Это кнопка черного цвета с соответствующей меткой на устройстве.

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

    Starting Azure thread
    
    
    Initializing WiFi
        Module: ISM43362-M3G-L44-SPI
        MAC address: ****************
        Firmware revision: C3.5.2.5.STM
    SUCCESS: WiFi initialized
    
    Connecting WiFi
        Connecting to SSID 'iot'
        Attempt 1...
    SUCCESS: WiFi connected
    
    Initializing DHCP
        IP address: 192.168.0.35
        Mask: 255.255.255.0
        Gateway: 192.168.0.1
    SUCCESS: DHCP initialized
    
    Initializing DNS client
        DNS address 1: ************
        DNS address 2: ************
    SUCCESS: DNS client initialized
    
    Initializing SNTP time sync
        SNTP server 0.pool.ntp.org
        SNTP time update: Nov 18, 2022 0:56:56.127 UTC
    SUCCESS: SNTP initialized
    
    Initializing Azure IoT Hub client
        Hub hostname: *******.azure-devices.net
        Device id: mydevice
        Model id: dtmi:eclipsethreadx:devkit:gsgstml4s5;2
    SUCCESS: Connected to IoT Hub
    

    Внимание

    Если инициализация клиента DNS завершается сбоем и отображается уведомление о том, что встроенное ПО модуля Wi-Fi устарело, необходимо его обновить. Скачайте и установите обновление встроенного ПО модуля Wi-Fi Inventek ISM 43362. Затем нажмите кнопку сброса на устройстве, чтобы повторно проверка подключение и продолжить работу с этим руководством.

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

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

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

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

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

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

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

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

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

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

    Примечание.

    Имя и описание компонента по умолчанию относятся к доске STM L4S5. Модель устройства STM L4S5 подключаемых модулей и воспроизведения также используется для доски STM L475E в этом руководстве.

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

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

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

  1. Перейдите на вкладку "Свойства" (только для чтения). Существует одно свойство только для чтения, указывающее, включен ли индикатор или выключен.

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

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

    Снимок экрана: настройка интервала телеметрии в STM DevKit в Обозреватель Интернета вещей.

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

  5. Установите интервал телеметрии обратно на 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. Просматривайте телеметрию, когда устройство отправляет сообщения в облако.

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

    Примечание.

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

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

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

  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. Выберите Отправить команду. Вы увидите уведомление в Обозреватель Интернета вещей, а зеленый светодиодный индикатор на устройстве должен включаться.

    Снимок экрана: вызов метода setLedState в Обозреватель Интернета вещей.

  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, чтобы подтвердить выходные сообщения:

    Received command: setLedState
        Payload: true
        LED is turned ON
    Sending property: $iothub/twin/PATCH/properties/reported/?$rid=15{"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, а затем вспыхнули изображение на устройстве STM DevKit. Вы подключили STM DevKit к Azure и выполнили такие задачи, как просмотр телеметрии и вызов метода на устройстве.

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

Внимание

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