Руководство: Использование Eclipse ThreadX для подключения STMicroelectronics B-L475E-IOT01A Discovery kit к центру интернета вещей.

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

В этом руководстве вы используете Eclipse ThreadX для подключения набора для разработки STMicroelectronics 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 Explorer для подключения к созданному IoT hub и для чтения моделей Plug and Play из общедоступного репозитория моделей.

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

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

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

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

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

  5. Нажмите кнопку +Добавить подключение.

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

  7. Нажмите Сохранить.

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

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

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

  2. В меню слева выберите настройки IoT Plug and Play.

  3. Убедитесь, что есть существующая запись общедоступного репозитория с конечной точкой https://devicemodels.azure.com.

    Замечание

    Если нет записи общедоступный репозиторий, нажмите кнопку +Добавить, выберите общедоступный репозиторий в раскрывающемся меню, укажите https://devicemodels.azure.com значение конечной точки и нажмите кнопку "Сохранить".

    Завершенная запись для общедоступного репозитория выглядит следующим снимком экрана:

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

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

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

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

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

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

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

  4. Нажмите кнопку "Создать".

    Снимок экрана идентификатора устройства в Azure IoT Explorer.

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

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

  • hostName
  • deviceId
  • primaryKey

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

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

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

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

    get-started\STMicroelectronics\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 в следующем пути, чтобы создать образ.

    getting-started\STMicroelectronics\B-L475E-IOT01A\tools\rebuild.bat

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

    getting-started\STMicroelectronics\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 устарело, необходимо его обновить. Скачайте и установите обновление встроенного ПО модуля Inventek ISM 43362 Wi-Fi из STMicroshellnics. Затем нажмите кнопку сброса на устройстве, чтобы повторно проверить подключение и продолжить работу с этим руководством.

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

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

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

Для получения доступа к компонентам 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. Модель plug-and-play-устройства STM L4S5 также используется для платы STM L475E в этом руководстве.

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

    Tab Тип Имя Описание
    Интерфейс Интерфейс STM Getting Started Guide Пример модели для STM DevKit
    Свойства (только для чтения) Недвижимость ledState Независимо от того, включен или отключен ли индикатор
    Свойства (с возможностью записи) Недвижимость telemetryInterval Интервал, в который устройство отправляет данные телеметрии
    Команды Command 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, чтобы завершить мониторинг.

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

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