Борисов Алексей
ООО Разумный дом
Мы уже второй десяток лет занимаемся разработкой устройств для Умного дома.
Для того, чтобы дом стал Умным различные умные устройства должны обмениваться между собой командами. Существует три способа передачи команд: по выделенному кабелю, по существующей электропроводке и по радио. Еще один способ передачи данных по ИК каналу используется только в зоне прямой видимости и применяется только в пультах.
В последнее время назрела острая необходимость в создании радио устройств. Радио канал используется в случае отсутствия возможности прокладки выделенного кабеля.
В арсенале Разумного дома уже есть устройства, работающие по радио. Это радио пульт и радио реле, работающие в ISM диапазоне на частоте 434МГц с амплитудной модуляцией и организацией точка - точка. Так же есть радио пульты и датчики, работающие на протоколе радио Х10 тоже на частоте 433.92 МГц.
Но сейчас созрела острая необходимость в создании радио датчиков, передающих климатические данные по радио каналу на большом расстоянии. Датчики должны работать от батареек и срок службы батареек должен быть большой, больше 3х лет. И большое количество датчиков, расположенных в разных местах должны передавать данные на один концентратор. Таким образом организация сети должна быть Звезда.
Необходимо выбрать платформу, на которой можно было бы собрать данную систему.
Выбор частоты передачи.
Выбор производился из доступных диапазонов, разрешенных для использования и имеющих широкое распространение.
- диапазон 434МГц. Имеет хорошую проницаемость и большую мощность.
- диапазон 868МГц. Имеет хорошую проницаемость и большую мощность.
- диапазон 2.4ГГц. Имеет большую скорость передачи, хорошую мощность. Но большая зашумленность в канале из-за большого количества устройств, работающих в этом диапазоне.
В результате остановился на диапазоне 868МГц. Он имеет оптимальную проницаемость, мощность. В канале не большая загруженность, поэтому маленькая зашумленность.
Выбор микросхем приемопередатчика.
Было проанализировано и изучена документация на несколько радио систем субгигагерцового диапазона.
- Приемопередатчики CC11хх фирмы Texas Instruments. Микросхемы приемника, передатчика и ретранслятора. Имеют хорошую чувствительность и мощность. Необходимо использовать внешний микроконтроллер, что упрощает разработку и позволяет использовать отработанный микроконтроллер. Низкая стоимость. Очень широкое распространение.
- MBee-868 фирмы CMK – это модули построенные на основе микросхем CC430 фирмы TI. Модульная конструкция очень удобна для быстрой сборки новых устройств. Хорошая программная поддержка. Поддержка множества протоколов, в том числе 6LoWPAN.
- XB8xxx фирмы DIGI. Модули этой фирмы мы уже применяли в контроллере RABBIT и хорошо себя зарекомендовали. Модульная конструкция XBee очень удобна для быстрой сборки новых устройств. Хорошая программная поддержка. Отработанный стек.
- SPIRIT фирмы ST. Микросхемы имеют хорошую чувствительность, хорошая программная поддержка. Хорошая распространенность. Поддержка множества протоколов, в том числе 6LoWPAN. Очень низкая стоимость.
- СС13xx фирмы Texas Instruments. Микросхемы приемопередатчика со встроенным микроконтроллером. Имеют хорошую чувствительность и мощность. Поддержка множества протоколов, в том числе 6LoWPAN. Отсутствуют готовые модули, плату с радио частью нужно разрабатывать самостоятельно.
- Ещё множество других микросхем, которые имеют свои достоинства и недостатки. Большинство решений отвергалось из-за плохой доступности этих элементов у поставщиков электронных компонентов в России.
После долгих поисков решений, анализа радио трансиверов, микроконтроллеров было принято решение остановиться на новом и современном решении на микроконтроллере CC1310 компании Texas Instruments. Основная причина выбора, это
- большой радиус действия до нескольких км https://www.youtube.com/watch?v=zMcRYLHCsw0
- большой срок службы от одной батарейки до 10лет
- наличие готового стека
- поставка бесплатных образцов микросхем от производителя http://www.ti.com/
- хорошая техподдержка TI E2E Community http://e2e.ti.com/
Описание микроконтроллера CC1310
Микроконтроллер CC1310 в линейке продукции SimpleLink – это энергоэффективный беспроводный контроллер, оптимизированный для операций в субгигагерцевом диапазоне. Для приложений, связанных с обменом данными, выполнения прикладных задач и опроса датчиков используются выделенные ядра. Приемопередатчик управляется выделенным процессорным ядром Cortex-M0, выполняющим прошитые в его ROM низкоуровневые протоколы. Протоколы верхнего уровня и приложение пользователя выполняются на отдельном ядре Cortex M3 с тактовой частотой до 48 МГц. Опрос датчиков проводится независимым микромощным 16 битным контроллером, который может работать и с аналоговыми, и с цифровыми датчиками.
Значительные объемы встроенной памяти (до 128 кбайт Flash, 20 кбайт + 8 кбайт оперативной памяти и ПЗУ) совместно с разделением функций на различные процессорные ядра (Cortex-M0 и Cortex-M3) позволяют поддерживать несколько протоколов в рамках одной микросхемы, включая различные режимы модуляции сигнала.
Среди поддерживаемых линейкой протоколов:
- IEEE 802.15.4g/e TI MAC;
- 6LoWPAN;
- Bluetooth Low Energy;
- wM-Bus;
- SimpliciTI; ZigBee;
- RF4CE.
Отличием микроконтроллера является выделение под основные задачи, характерные для беспроводного сетевого приложения, отдельных процессорных ядер – для управления PHY-, MAC- и LLC-уровнями, для приложения и выполнения операций сетевого уровня и для работы с внешними датчиками.+
Данный микроконтроллер состоит из трех ядер:
1. Радиочастотный блок RFcore
Радиочастотный блок, благодаря техпроцессу 65 нм, выходит на новый уровень по энергоэффективности.
Основные параметры встроенного трансивера:
- высокая чувствительность, селективность;
- чувствительность: -121 дБм (2,4 кбит/с), -111 дБм (50 кбит/с, модуляция GFSK);
- поддержка модуляций: MSK, FSK, GFSK, OOK, ASK, 4GFSK, CPM (shaped 8 FSK);
- программируемая выходная мощность: до +14 дБм;
- поддержка нескольких антенн;
- программируемое усиление аналогового тракта.
В дополнении к трансиверу, сочетающему в себе аналоговую часть и цифровую обработку сигналов, радио процессор содержит процессорное ядро Cortex M0 и выделенный таймер. Это позволяет легко обрабатывать несколько протоколов PHY-уровня, осуществлять управление модемом, заниматься формированием пакетов. Основной процессор обращается к сервисам радио ядра посредством API-команд.
2. Основное контроллерное ядро ARM® Cortex™ M3 (CM3)
Приложения пользователя и верхние уровни стека протоколов (сам стек протоколов, в случае сетевого процессора) выполняются на 32-битном процессорном ядре ARM® Cortex™ M3 (СМ3).
Flash-память предназначена для хранения прикладных программ и может быть перезаписана, в том числе, и в готовом устройстве. В оперативной памяти могут располагаться и выполняемый код, и данные. Оперативная память разделена на блоки по 4 кбайта. Для снижения энергопотребления неиспользуемые блоки памяти можно отключать (с потерей данных).
В ROM-памяти прошиты драйверы периферии, а также стек протоколов 802.15.4 MAC. В постоянной памяти располагается начальный загрузчик, позволяющий перепрограммировать устройство посредством SPI или UART.
Контроллерное ядро Cortex M3 имеет богатый набор периферийных устройств:
- датчик температуры;
- четыре таймерных модуля общего назначения (2*16или 1*32-битных, с режимом ШИМ);
- 8-канальный 12-битный АЦП (до 200 квыб/с);
- сторожевой таймер;
- аналоговый компаратор;
- интерфейсы: UART, I2C;
- три SPI-интерфейса (один из них – микромощный);
- AES-модуль;
- 10…31 линия ввода-вывода (в зависимости от корпуса).
3. ULP Sensor Controller
Контроллер датчиков (ULP Sensor Controller) отвечает за управление периферийными устройствами независимо от основного ядра. Периферийные устройства, подключенные к данному домену, могут быть сконфигурированы таким образом, что будут активны даже в режиме Power-down.
Сам контроллер представляет собой специализированный малопотребляющий 16-разрядный RISC-процессор. ULP Sensor controller освобождает основной контроллер от задач опроса датчиков, что позволяет сохранять общее низкое потребление при одновременном выполнении задач сбора данных. В его состав входит несколько аналоговых и цифровых узлов. Аналоговые узлы:
- 8-канальный 12-битный АЦП (200 квыб/с);
- FIFO-буфер на четыре слова;
- два компаратора: микромощный и высокоскоростной;
- программируемый источник тока: 0,25…20 мкА.
- Цифровые узлы:
- преобразователь «время-код»;
- два 8-битных таймера с предделителями;
- 16 линий ввода-вывода;+
- интерфейсы: SPI, I2C.
Контроллер датчиков программируется отдельно от основного контроллера утилитой Sensor Controller Studio.
Типовые задачи, выполняемые контроллером датчиков:
- опрос аналоговых датчиков;
- опрос цифровых датчиков посредством линий ввода-вывода и интерфейсов I2C и SPI;
- реализация емкостных датчиков;
- генерация сигналов;
- калибровка генераторов;
- квадратурный декодер датчиков угла поворота;
- датчики движения;
- сканеры клавиатуры и так далее.
Использование TI-RTOS как основы для разработки приложений для CC1310
Наиболее оптимальным и, если можно так сказать, правильным путем работы с «системами-на-кристалле» CC13хх является создание приложений для операционной системы реального времени TI-RTOS. Она сочетает многозадачное ядро реального времени с поддержкой TCP/IP и USB-стеков, файловой системы FAT и драйверов устройств, позволяя разработчикам сосредоточиться на особенностях своего устройства. TI-RTOS дополнена документацией, примерами и соответствующими API для тестирования и применения многозадачности, а также для проверки совместной работы всех компонентов.
Можно использовать графические инструменты или текстовый редактор для настройки TI-RTOS и свести к минимуму объем используемой памяти. Для оказания помощи при отладке сложной системы на уровне задач TI-RTOS может быть построена с дополнительными инструментами, позволяющими отслеживать работу системы. Операционная система поставляется в виде программного кода с включенными компонентами XDCtools, обеспечивающими графический редактор конфигурации.
TI-RTOS можно рассматривать как масштабируемый и гибкий инструментарий для создания приложений для широкого спектра контроллеров TI. Включая в себя набор программных компонентов и проверенных и протестированных драйверов периферийных устройств, TI-RTOS позволяет разработчику сосредоточиться на основной функциональности приложения.
Основные компоненты операционной системы:
- TI-RTOS Kernel — SYS/BIOS – масштабируемое ядро реального времени, осуществляющее планирование выполнения и взаимодействия задач и потоков.
- Драйвера периферийных устройств и конфигурации отладочных плат и наборов– драйвера устройств совместимы с многозадачностью, реализованной в системе, и допускают совместное использование, файлы конфигурации позволяют настроить контроллер на работу в различном окружении.
- Unified Instrumentation Architecture (UIA) – унифицированная инструментальная архитектура, позволяющая создавать необходимое окружение для сбора данных (например, лог-файлов).
- CC13xxWare – набор программных компонент, содержащих низкоуровневые драйвера для систем на базе устройств серии CC13хх.
- XDCtools – инструментарий для конфигурирования и сборки TI-RTOS и ее компонент при сборке программного проекта (устанавливается как часть среды CCS v6.x).
TI-RTOS включает в себя драйвера для периферийных устройств контроллеров CC13хх:
- Crypto – драйвер модуля AES для шифрования/дешифрирования данных;
- GPIO – набор API-функций для управления режимами портов, линий ввода-вывода и прерываниями от них;
- I2C – API-функции для работы с I2C-интерфейсом;
- LCD – драйвер ЖК-дисплеев с SPI-интерфейсом типа EDogm1286 [14];
- PIN – обработчик прерываний от линий ввода-вывода;
- Power – функции управления режимами энергопотребления и оптимизации тока потребления;
- PWM – генератор ШИМ-сигналов;
- SPI – работа с устройствами на шине SPI;
- UART – функции для настройки последовательного асинхронного порта и обмена данными по нему;
- RF – драйвер трансивера (радиочасти) для устройств серии CC13хх.
Управление питанием является интегрированной частью TI-RTOS. Операционная система учитывает, какие именно периферийные устройства активны в данный момент. TI-RTOS осуществляет автоматический переход в малопотребляющий режим всегда, когда не выполняется задача. TI-RTOS автоматически отключает встроенный DC/DC-преобразователь при разряде батареи ниже определенного порога и динамически рассчитывает длительность импульсов DC/DC в режиме ожидания таким образом, чтобы при минимальном потреблении энергии иметь надежное питание для всей периферии, активной в данный момент.
В приложении под TI-RTOS программист освобожден от необходимости задумываться об управлении режимами питания и оптимизации тока потребления в ходе работы приложения.
TI-RTOS поддерживает четыре режима энергопотребления:
- активный (Active);
- режим паузы (Idle);
- режим ожидания (Standby);
- «выключено» (Shutdown).
Выбор текущего режима энергопотребления определяется ядром операционной системы в зависимости от действий приложения, времени до следующего выхода в активный режим и ресурсов, которые будут необходимы приложению, например, трансивера или других периферийных устройств. Если следующая активная деятельность приложения планируется через интервал времени, меньший, чем 1 мс, система не уводит контроллер в режим ожидания. Если приложению требуется выдерживать точные временные интервалы, система автоматически устанавливает время пробуждения на 64 мкс раньше назначенного интервала для того чтобы система питания контроллера гарантировано отработала во время процедуры выхода из спящего режима.
В TI-RTOS существуют четыре типа задач (потоков). Перечислены в порядке убывания приоритета:
- HWI – аппаратное прерывание: сохранение текущего контекста, сброс флагов, возвращение к потоку с наибольшим приоритетом. Как правило, производятся только необходимые действия с периферийным устройством, вызвавшим прерывание, дальнейшие действия передаются SWI-потоку через функцию swi_post().
- SWI – программное прерывание. Потоки данного типа могут иметь до 32 уровней приоритета.
- Task – потоки прикладных задач.
- Idle – одна из разновидностей потоков типа task, так называемый фоновый поток, выполняющийся после того, как закончена обработка всех остальных потоков.
Организация взаимодействия потоков и управления ими осуществляется посредством механизмов – семафоров, мьютексов, очередей, «почтовых ящиков».
TI-RTOS поставляется с полным исходным кодом и не требует никаких лицензионных отчислений, протестирована в среде разработки Code Composer Studio.
Беспроводной стек протоколов 802.15.4e/g для CC1310
Самым оптимальным вариантом было бы использование готового стека радиоканала, который подходил бы для решения нашей задачи.
Texas Instruments выпустил беспроводной стек протоколов TI-15.4 MAC, построенный на основе стандарта IEEE802.15.4e/g. Новое программное обеспечение для беспроводных микроконтроллеров CC1310 позволяет создавать беспроводные сети с топологий “Звезда” в диапазоне 868 МГц (Sub-1 GHz).
ПО TI-15.4 MAC имеет ряд преимуществ перед другими сетевыми протоколами, а именно – большую дальность действия и устойчивость к помехам, благодаря использованию технологии “прыгающих частот” (frequency hopping). Использование готового стека существенно сокращает время разработки устройств для Интернета вещей, т.к. включает в себя софт как для беспроводных сенсоров, так и для центрального узла сбора данных.
Программное обеспечение предоставляется без лицензионных отчислений и предназначено для работы на линейке беспроводных систем на кристалле SimpleLink Sub-1 GHz CC1310 wireless MCU.
Особенности TI-15.4 MAC
- Базируется на стандартах IEEE 802.15.4e/g;
- Топология Звезда: Точка-Точка, один-ко-многим, концентратор данных;
- Управление сетью и устройствами (joining, commissioning, service discovery);
- Режимы: синхронный (маяк) и асинхронный (non-beacon);
- Механизм подтверждений и повторной отправки пакетов;
- Шифрование и проверка целостности (AES -128 ; integrity check);
- Прыгающие частоты (WiSUN FAN specification in 915 MHz);
- Алгоритм доступ к среде CSMA/CA;
- Пример приложения отправки данных с датчика в Интернет (CCS version 6.1.2);
- Простой процесс разработки на базе готовых примеров и API;
- Режим сопроцессора для работы с любым внешним микроконтроллером, Linux или консольным приложением.
Среда разработки CCS.
Для создания приложений под CC1310 можно использовать различные среды разработки, например, IAR, KEIL, Eclipse и др. Но наиболее оптимальным вариантом является использование интегрированной среды разработки Code Composter Studio. Эта среда создана компанией TI и распространяется абсолютно бесплатно.
Приложение взаимодействует с аппаратной платформой, то есть, с отладочной платой или собственной платой, через низкоуровневые драйверы периферии, расположенные в ROM CC1310. Верхние слои стека радио протокола исполняются из Flash-памяти. Для CC1310 в качестве этого верхнего слоя может использоваться собственный радио протокол. Как радио протокол, так и, собственно, пользовательское приложение выполняются на встроенном ядре Cortex-M3. Дополнительно для задач фонового опроса периферийных датчиков или контроля состояния выводов может быть задействован контроллер датчиков (Sensor Controller).
Иерархия программных уровней при разработке приложений для контроллеров серий CC1310
Code Composer Studio (CCS) является интегрированной средой разработки производства компании Texas Instruments. Она содержит инструменты для управления проектами, редактор, а также средства разработки и отладки программного кода. Начиная с версии среды 6.1 включена встроенная поддержка контроллеров линейки CC13xx/CC26xx и улучшена интеграция с операционной системой реального времени. CCS поддерживает программаторы-отладчики серий XDS – XDS100v3, XDS110 и XDS200.
При работе с программаторами XDS100/XDS110, а также с отладочными платами TI со встроенными отладчиками (практически вся серия LaunchPad-ов) не требуется приобретение лицензии на среду разработки Code Composer Studio.
CSS позволяет по мере необходимости добавлять компоненты из центра приложений AppCenter, а также предоставляет доступ к облачным сервисам TI и примерам проектов.
Аппаратная платформа для реализации проекта.
Для создания радио системы были выбраны отладочные средства:
LaunchPad для концентратора данных и Evaluation Module Kit для радио датчиков.
SimpleLink™ CC1310 Sub-1 GHz wireless microcontroller (MCU) LaunchPad™ development kit
Эта отладочная плата используется в качестве программатора XDS110 и в качестве концентратора по сбору данных с беспроводных датчиков.
На плате есть разъём для подключения внешней антенны, но сейчас используется для работы только PCB антенна. Для использования внешней антенны нужно перепаять перемычку.
В саму плату никаких изменений я не вносил.
Плата передает данные в ПК через UART по выводам RX, TX. Для подключения к ПК используется преобразователь UART в USB, встроенный в программатор. Для работы используется драйвер виртуального COM порта. Далее ПО терминал работает с новым СОМ портом.
Два модуля CC1310EMK используются в качестве радио датчиков. На этих платах есть встроенная PCB антенна и разъем для внешней антенны. Сейчас на этих платах используется внешняя антенна. Для использования внутренней антенны нужно перепаять перемычку.
Платы работают автономно, хотя они предназначены для использования как модули расширения для основного отладочного кита SmartRF06 Evaluation Board. К платам припаяны дополнительные отладочные платы с батарейкой CR2032 и выключателем питания. Больше никаких изменений в отладочные платы не вносил.
Дополнительно был изготовлен кабель для программирования. А также кабель и плата со светодиодами и кнопками. Программатор, кнопки и светодиоды подключаются через разъёмы.
Для программирования плат радио датчиков необходимо подключить кабель к плате CC1310EMK к разъему Р2. Второй разъем кабеля подключить к плате CC1310 LaunchPad, предварительно сняв все перемычки. Подключить согласно рисунку:
Первый контакт кабеля, где написано G необходимо соединить с контактом GND. Контакт SWO должен остаться свободным. Теперь красная плата CC1310 LaunchPad используется в качестве программатора для зеленых плат CC1310EMK. Так же подключаем её к ПК через USB, запускаем программатор и заливаем ПО.
Для программирования сначала заливаем операционную систему из проекта timac_cc13xx. Затем заливаем проект датчика sensor_cc13xx_lp.
Для красной платы, которая используется в качестве концентратора сначала заливаем операционную систему из проекта timac_cc13xx. Затем заливаем проект collector_cc13xx_lp.
За основу взят проект со стеком TI-15.4 MAC и затем мною немного исправлен. Из проекта удалён вывод на дисплей, добавлена работа с UART, добавлены сообщения и добавлена работа с датчиками, изменены идентификаторы, частота.
Работа с радио системой.
Подключите CC1310 LaunchPad через USB кабель к ПК и запустите терминал.
Можно использовать либо встроенный терминал в CCS, например:
Настройки порта указаны на следующем рисунке:
Текст выводится кириллицей, поэтому необходимо выбрать кодировку CP1251.
Т.к. у меня стоит Windows 10, то у него нет встроенного терминала и я использовал PuTTY. Этот терминал нужно настроить следующим образом:
Так же необходимо поменять кодировку на WIN1251:
И нажать кнопку открыть.
Некоторые сообщения я оставил на английском языке, т.к. они повторяют имена переменных, используемых в стеке TI-15.4.
После включения или нажатия кнопки Сброс, которая расположена сверху возле разъема USB, модуль отправит приветствие, стартует и выберет свободный канал.
Загорится светодиод на плате. Второй светодиод будет переключаться из состояния включено и выключено по мере приема посылок от датчиков. При каждом приеме он будет переключаться.
На платах датчиков тоже можно использовать два светодиода. Один сигнализирует об установлении канала связи с приемником, другой будет переключаться из состояния включено и выключено по мере передачи посылок. Каждый светодиод потребляет относительно много энергии, поэтому для экономии ресурса батарейки, рекомендую светодиоды отключить.
Датчики регистрируются, отвечая, ConfigRsp.
Затем каждый датчик отвечает. В пакете передается множество данных, часть из которых выводится в терминал.
- #1 это счетчик принятых посылок.
- Датчик – номер датчика.
- RSSI уровень сигнала.
- Температура – температура процессора датчика.
- Входы – состояние кнопок на входных ножках. 8 входов – подключен к каждому из 8 бит. Выводится в 16-ричном формате.
- Свет – значение датчика освещенности.
- Влажность – значение датчика влажности.
- Температура значение датчика влажности (дополнительный его параметр температура).
Для передачи состояния дискретных входов используется кабель с кнопками:
Нажав на соответствующую кнопку будет меняться значение «Вход 0х0». Для проверки дальности и качества приема плату с кнопками можно не использовать.
Для освещенности используется датчик OPT3001. На данной плате он пока не реализован.
Для влажности используется датчик HDC1080. На данной плате он пока не реализован.
Датчики очень маленького размера и для их подключения необходимо разводить новую плату.
Для регистрации новых датчиков нужно на красной плате нажать правую кнопку BTN2. Начнет мигать светодиод и появится сообщение Permit Join ON. Затем включить питание датчика. Датчик зарегистрируется. Затем снова нажать правую кнопку BTN2. Светодиод будет постоянно гореть и появится сообщение Permit Join OFF. Регистрация закончится.
На зеленых платах датчиков тоже используются две кнопки IO25 и IO27, которые отдельно не выведены. Одна кнопка переключает каналы, другая кнопка переключает номер датчика. Для переключения нужно удержать кнопку до следующей передачи, т.к. модуль уходит в спящий режим.
Период опроса настраивается в концентраторе и настроен на 10 секунд. Маленький период сделан для ускорения проверки работы устройства. Для увеличения срока службы батареи период нужно увеличить от 1 минуты до нескольких часов и более. С этим периодом срок службы составит примерно 1 месяц. С периодом 1 минута, срок службы увеличится до 1-3 года, а с периодом 1 сутки, срок службы батарейки составит 10 лет. Но это мои предположения, т.к. я не ждал, пока сядет батарейка. Реальный срок службы зависит от качества батарейки, дальности действия и периода опроса.
Дальность действия датчика проверялась в здании. Концентратор на 1 этаже принимал показания датчика с 10 этажа через все перекрытия. На улице проверял на расстоянии 300м, дальше не уходил. Так же датчик проверил в холодильнике. Из морозилки внутри железного холодильника датчик уверенно передавал данные температуры.
Выводы.
Радио система показала себя работоспособной и готова для дальнейшей разработки уже серийных устройств. Можно приступать к разводке печатных плат датчиков и концентратора. Датчик уходит в спящий режим и без светодиодов потребляет 0мА. Стек TI-15.4 работает и уверенно передает данные даже через железобетонные перекрытия 10 этажного офисного здания. Так же данные уверенно передаются через стальной корпус холодильника. Основная часть ПО написана и для завершения проекта необходимо для датчика дописать функции для работы с сенсорами. Для модуля концентратора необходимо дописать функции интерфейса связи с ПК.
В статье использовались материалы из раздела "Публикации" сайта Компэл http://www.compel.ru/.
Отладочные средства были куплены в компании МТ Систем: http://www.mt-system.ru/