Продолжаем рассмотрение документации на SDK и вот следующая тема. Данный раздел документации освещает тему использования TI Z-Stack в приложениях пользователя.
Все демо проекты в SDK содержат README.html
файл, в котором дана детальная информация о самом проекте, из чего он состоит и как работает. Самый простой способ начать разбираться в данной теме это импортировать уже готовый пример из SDK, именно таким является zc_light
, его и откроем. Есть два способа это сделать первый через Resource Explorer и второй через Import Wizard.
Импорт проекта в ccstudio с помощью Resource Explorer
- Открываем ccstudio.
- Открываем Resource Explorer через меню
View > Resource Explorer
→ Software → SimpleLink CC13x2 / 26×2 SDK → Examples → Development Tools → CC13x2 or CC26x2 LaunchPad → Z-Stack → zc_light → TI-RTOS → CCS Compiler → zc_light - Выбираем кнопку с логотипом CCS для импорта проекта в Project Explorer. Если все прошло корректно, то вы увидите импортированный проект в дереве проектов ccstudio.
Несложно, но мне больше нравится второй вариант, к тому же он более универсальный, т.к. чаще вам придется открывать собственные проекты, а их в Resource Explorer конечно же нет.
Импорт проекта в ccstudio с помощью Import Wizard
- Открываем ccstudio.
- Выбираем меню
Project > Import
из главного меню. - Жмем кнопку Browse и ищем нужный нам проект в
<SDK_INSTALL_DIR>/examples
. Для это выбираем примеры с TI Z-Stack и ищем в директорииzc_light
. - Жмем Finish и заканчиваем импорт.
Сборка и загрузка проекта
- Чтобы собрать проект достаточно выбрать в меню
Project > Build all
, перед этим удостоверившись, что выбрана конфигурация Debug для активного проекта. - Далее в меню
Project > Properties > Debug > Flash Settings
устанавливаем чекбокс All Unprotected Sectors в Erase Settings during Program Load как показано на скриншоте ниже. Это обеспечит сброс памяти от предыдущих сборок проекта.
- Для загрузки билда в отладочную плату используем меню
Run > Debug
. После запуска сессии отладки просто жмем красный квадрат.
Перед тем как рассматривать демо проект, немного о полезных настройках ccstudio.
Полезные настройки ccstudio
В ccstudio имеется большое количество настроек, которые могут быть весьма полезными для разработчика. К примеру ccstudio может уменьшить время компиляции за счет использования нескольких ядер компьютера.
Для использования данной функции необходимо выбрать чекбокс Enable Parallel Build в меню Project > Properties > Build > Builder
как показано ниже.
Уменьшение уровня оптимизации в меню Build > ARM Compiler > Optimization
также может уменьшить время компиляции за счет увеличения размера исполняемого кода. Пользователям ccstudio предоставляется возможность контролировать общее количество информации в окне Console в процессе компиляции и линковки от Verbose (Полный вывод всех сообщений) до Super quiet (Вывод только важной информации). Чтобы изменить данные настройки достаточно выбрать соответствующий пункт из выпадающего списка в меню Window > Preferences > Code Composer Studio > Build
.
Доступ к Preprocessor Symbols
В процессе разработки необходимо бывает изменить или добавить определенные макроопределения (Preprocessor Symbols или Predefined Symbols), которые используется в процессе компиляции для сборки проекта.
Доступ к ним можно получить в меню Project > Properties > Build > ARM Compiler > Predefined Symbols
. Для добавления, удаления и редактирования макроопределений препроцессора можно использовать кнопки, выделенные на скриншоте.
Другие параметры проекта, которые берутся из include файлов проекта, можно отредактировать в настройках проекта. Для этого в Project Explorer жмем правой кнопкой на имени проекта и выбираем пункт Properties контекстного меню и далее заходим в меню Build > ARM Compiler > Include Options
. Здесь все редактируется аналогичным способом.
На рисунке ниже представлена последовательность действий в изучении TI Z-Stack:
Разберем же каждый шаг подробнее.
Запуск демо проектов
Пример Light & Switch это тот первый демо проект, который нужен разработчику, начинающему знакомство с Zigbee и стеком TI Z-Stack, так называемый Project Zero для TI Z-Stack. Данный пример поможет быстро ознакомиться со стеком и разработкой в ccstudio.
Пример может быть изменен по желанию разработчика и, имея две разные платы LaunchPad-CC26x2R1, можно быстро создать Zigbee сеть. Одна плата должна работать как Light Coordinator, а вторая как Switch End Device. В данной конфигурации Switch будет управлять светом.
Light Coordinator
Данный проект мы уже запустили немного ранее в этой статье на одной из имеющихся у меня плат LAUNCHXL-CC26x2R1. Данный проект позволяет:
- Настроить конфигурацию базового поведения устройства.
- Осуществляет светодиодную индикацию при поиске и связывании других устройств в сети.
Файлы приложения:
- zcl_samplelight.c / .h содержат цикл событий, вызовы функций иницилизации устройства (для таймеров, периферии, Nvm, светодиодов, кнопок, последовательного порта), уведомления стека Zigbee и всю логику управления светом.
- zcl_samplelight_data.c содержит атрибуты, кластеры и endpoint’ы данного примера.
- main.c определяет задачи и размер стека приложения.
- bdb_interface.h параметры запуска приложения (см.
zclSampleLight_initParameters()
).
Кроме всего прочего есть также графическая утилита настройки. SysConfig это GUI утилита конфигурации, которая позволяет настроить драйвера и TI Stack. Чтобы запустить ее, достаточно дважды щелкнуть на файле *.syscfg
в Project Explorer ccstudio, где *
имя нашего проекта, т.е. zc_light.syscfg
. Откроется окно SysConfig GUI, в котором можно произвести настройки и все изменения будут отражены в сгенерированных файлах.
Данная утилита очень похоже на CubeMX для STM32.
Данный пример уже поставляется с готовыми настройками SysConfig и менять настройки драйверов для работоспособности примера не рекомендуется. Но можно изменить настройки Zigbee стека для вашего применения.
Обратите внимание, что некоторые настройки стека Zigbee сохраняются в энергонезависимой памяти и Z-Stack считает их более приоритетными нежели настройки SysConfig. К таким настройкам относится в частности информация о подключаемых к координатору End-Device устройствах. Поэтому, чтобы гарантировать применение настроек SysConfig необходимо выполнить сброс к заводским настройкам, для очистки энергонезависимой памяти контроллера. Чтобы выполнить сброс сетевых настроек необходимо записать 0x2 (или 0x3) в ZCD_NV_STARTUP_OPTION
, делать это можно по нажатию на кнопку. Но более подробно об этом в других статьях, где я уже буду лезть в настройки стека более глубоко.
Теперь немного о том как использовать проект.
Кнопка BTN-1 начинает процесс сопряжения (более полный обзор данного процесса).
Кнопка BTN-2, если зажать перед сбросом осуществляет сброс к заводским настройкам (стирает данные сети и приложения).
Светодиод DIO6 включен, если включен «Свет», в противном случае выключен.
Светодиод DIO7 включен всегда, в процессе связывания начинает быстро мигать.
При подключении отладочной платы создается последовательное соединение, которое можно найти в Linux /dev/tty*
, для подключения я обычно использую CuteCom, можно также использовать Putty, если вы пользуетесь Windows. Но в данном случае пришлось запустить консольный screen
, который работает адекватно с меню Launchpad.
Параметры соединения следующие:
Baud-rate: 115200 Data bits: 8 Stop bits: 1 Parity: None Flow Control: None
Запуск осуществляется командой screen /dev/ttyACM0 115200
Через последовательный порт можно контролировать процесс сопряжения (реализован в zcl_sampleapps_ui.c / .h.) и поведение приложения.
Zigbee координатор может только создавать сеть, а другие устройства должны подключаться к ней.
На второй плате будет запущен проект Switch End Device.
Switch End Device
Файлы приложения:
- zcl_samplesw.c/.h содержат цикл событий, вызовы функций инициализации устройства (для таймеров, периферии, Nvm, светодиодов, кнопок, последовательного порта), уведомления стека Zigbee и всю логику выключателя.
- zcl_samplesw_data.c содержит атрибуты, кластеры и endpoint’ы данного примера.
- main.c определяет задачи и размер стека приложения.
- bdb_interface.h параметры запуска приложения (см.
zclSampleSw_initParameters()
).
Настройки проекта аналогичны и можно сразу переходить к рассмотрению того, как использовать пример.
Кнопка BTN-1 начинает процесс связывания с координатором сети.
Кнопка BTN-2 при длительном нажатии перед сбросом осуществляет сброс к заводским настройкам (стирает данные сети и приложения).
Кнопка BTN-2 при нажатии осуществляет включение / выключение устройства управления светом, в нашем случае светодиодом DIO6 на первой плате Light Zigbee координатора.
Интерфейс последовательного порта аналогичен координатору.
Соединение Light Coordinator и End Device Switch
Статья получается довольно затянутой, а информации еще много, так что продолжение в следующей статье, которая будет скоро.
Обновление. Статья уже в блоге, ознакомиться можно по ссылке.
Дальнейшее изучение TI Z-Stack
SimpleLink Academy ресурс, который создан для помощи в освоении фундаментальных знаний в Zigbee и TI Z-Stack, а также в освоении микроконтроллерных платформ беспроводной передачи данных.
TI-RTOS Kernel Workshop помогает в изучении TI-RTOS и операционных систем реального времени в целом. Узнать больше об оптимальном энергопотреблении и управлении им можно из обзора.
Разработка нового приложения на базе TI Z-Stack
Для тех, кто готов начать разрабатывать собственное приложение на стеке TI Z-Stack, TI предлагает следующую последовательность действий:
- Скачайте и установите SDK, который уже включает ядро TI-RTOS, драйвера периферии и стеки.
- Начните работать в IDE, как начать работать в ccstudio, а также процесс установки я описал в предыдущей статье.
- Разберите пример проекта Project Zero, данный проект призван ввести разработчика в нюансы работы с SDK и основы Zigbee, дает инструкции по программированию LaunchPad отладочных плат, установке сети Zigbee и перехвату OTA сообщений.
- Ознакомьтесь с руководством пользователя Z-Stack. Для этого есть руководство Z-Stack User’s Guide, которое содержит документацию по архитектуре стека, API и предложения по разработке приложений.
- Выберите пример проекта. TI Z-Stack содержит большое количество демо приложений, которые могут стать отправной точкой в разработке собственного приложения, примеры и их импорт были рассмотрены мной чуть выше.
- Изыскивайте решение проблем. В процессе разработки нередко бывает нужна отладка и сниффер пакетов. Глава об отладке Z-Stack User’s Guide поможет сконфигурировать отладчик правильно. Глава Packet Sniffer даст понимание как правильно работать со сниффером пакетов.
Обновление. Я написал небольшой туториал, который поможет вам начать работать со сниффером пакетов Zigbee на базе CC2531 USB стика.
Усовершенствуйте свой проект
Конкретных рекомендаций в данном пункте TI не дает, изучайте Zigbee, изучайте TI Designs и на этом все.
Получение поддержки
E2E сообщество TI может помочь в поиске ответа на практически любой вопрос, касательно Zigbee и CC26x2. Также вы можете писать в наш чат и я постараюсь найти ответ на ваш вопрос.