Источник: http://embedded.ifmo.ru/wiki/index.php5/SDK-2.0_Ethernet-ZigBee
SDK-2.0 Ethernet-ZigBee — программное обеспечение, позволяющее с персонального компьютера получить доступ к ZigBee-устройствам через ЛВС Ethernet с помощью стенда SDK-2.0/E, подключенного к той же ЛВС.
Задачи управления и мониторинга устройств беспроводной ЛВС ZigBee, обычно выполняемые операторами на их рабочих станциях, требуют доступа к сети ZigBee, обеспечение которого с помощью индивидуальных ZigBee-модулей может оказаться затруднительным с экономической, надёжностной и территориальной точек зрения. При этом доступ к ЛВС Ethernet на операторских рабочих станциях, как правило, уже имеется. Таким образом, представляется актуальной задача создания в сети Ethernet сервера, обеспечивающего удалённый доступ к сети ZigBee. Такой сервер должен обладать высокой производительностью и надёжностью, а также низким энергопотреблением. В качестве базы для построения сервера использована вычислительная платформа SDK-2.0/E.
Работа по созданию ПО, обеспечивающего работу сервера, потребовала изучения:
- архитектуры стенда SDK-2.0 (а также микроконтроллерного ядра, контроллеров Ethernet и ZigBee);
- драйверов используемых интерфейсов;
- инструментальной цепочки программирования стенда;
- требуемых сетевых технологий и средств отладки их применения;
- способов создания кросс-платформенного Ethernet-клиента для ПК.
- кросс-компилятор GNU ARM 3.4.3 и др., см. SDK-2.0;
- анализатор трафика Wireshark;
- генератор пакетов PackETH;
- Java Development Kit.
- программа для SDK-2.0 на языке Си, способная выполнять функции Ethernet/ZigBee-сервера и ZigBee-клиента (для её работы не требуется операционная система);
- Ethernet-клиент для ПК на языке Java.
Клиентская программа получает IP-адрес сервера, адрес ZigBee-устройства и сообщение для него, затем возвращает ответ от ZigBee-устройства или информацию о его недоступности. Интерфейс командной строки позволяет встраивать программу в различные приложения.
Для связи с сервером используется его MAC-адрес, полученный с помощью ARP-запросов. Клиент отправляет UDP-пакет, в котором в качестве порта-источника указывается порт, на который ожидается получение ответа, а в качестве порта-приёмника указывается адрес ZigBee-устройства. Пользовательское сообщение (payload) полностью передаётся ZigBee-устройству, следовательно, сервер работает независимо от протокола обмена между Ethernet-клиентом и ZigBee-клиентом, лишь длина пользовательского сообщения ограничена 102 байтами по стандарту IEEE 802.15.4-2006. Ответ ZigBee-устройства отправляется Ethernet-клиенту в аналогичном UDP-пакете.
Время ответа удалённого ZigBee-клиента на запрос составляет около 300 мс (без вывода отладочной информации на консоль, при прямом соединении ПК и серверного стенда SDK-2.0 по Ethernet; время вычисления ответа незначительно). Цикл обращения к серверу (без обмена информацией по ZigBee) занимает около 0,3 мс.
Исходные коды программ доступны по адресу: https://github.com/kbulygin/sdk20-eth-zb.
Поскольку в ходе работы с драйверами были решены некоторые общие проблемы (использование функции printf при работе через последовательный канал, отправление Ethernet-кадров с малой и нечётной длиной и др.), были добавлены новые функции, в некоторых местах упрощена реализация старых и т.п., можно использовать данный проект в качестве отправной точки для собственных разработок, для чего вместе с исходными кодами размещена вся собранная нами документация, касающаяся SDK-2.0.
Булыгин Кирилл (kirill.bulygin@قmail.com), Пинкевич Василий (группа 4105, январь 2012 г.)
Категория:Студенческие проекты