МИКРОСХЕМЫ БАБОЧКИ ETRX2XX-3XX (ZigBee)

Сеть и ее модули COO, FDD, MED, SED

Система AT-команд поддерживает богатый набор функций, таких как образование и присоединение к беспроводной сети, мониторинг сети, передача и прием сообщений по радиоканалу, ввод/вывод цифровой информации, ввод аналоговых сигналов, работа с таймерами и последовательным интерфейсом. При этом такие сетевые задачи, как ретрансляция сообщений и выбор оптимального маршрута, поддерживаются модемами ETRX2 автоматически. Центральный узел сети Sink назначается путем программирования соответствующего конфигурационного регистра. Таким узлом может стать координатор COO или любой из маршрутизаторов FFD. Вновь поступающий байт, сигнал от таймера или иное прерывание вызывает на исполнение один из пятидесяти возможных стандартных сценариев, номера которых заносятся в конфигурационные регистры модуля MED (спящего SED) прямо по радиоканалу.

Микросхемы - бабочки. Снабжены процессором, несколькими ацп, питаются от батарейки. Занимают мало места. Настоящие бабочки - могут подсаживаться в кусты и деревья и фонить информацией. Радиомодемы. Современная версия модуля ETRX357, более детально | полное. Пример (плохой) про датчик температуры, лучше пример.

Раскладка ножек ETRX35X: 1/13/19/20/31/33 земля, 32 - питание до 3.6 вольт. Альтернативно используются: 17 - PB1-SC1TXD, 18 - PB2-SC1RXD (ножки 30, 31 навесной микросхемы EM35X), для внешнего модуля, возможно, ножки "не актуальны". Совсем не актуально, но важно для эксперимента: на стендовой карточке по вертикали от края идут земля-питание (подать на 19, 32), выше идет провод к Rxd, левее к Txd.

Есть сборные пункты информации: USB-координаторы. Для адресации устройств в сети используется уникальный 64-битный идентификатор, который заносится в энергонезависимую память модемов на этапе производства.

USB-координатор ETRX2USB управляются набором R303-AT-команд (для случая ETRX357), передаваемых через терминал компьютера на частоте 19200bps, Data bits - 8, Parity - none, Stop bits - 1, Flow Control - none. Терминальная программа требует установки .NET Framework 1.1.4322, в версии 3.5 не работает (скачанной по ее же ссылке на источник), проще пользоваться простыми терминальными программами.

AT-команды координатора

На команду ATI (с кодом перевода каретки <13>) USB-координатор отвечает: TELEGESIS ETRX2 R302X 0021ED00000468C9 OK. Перед OK идут идентификационные номера.

Поизучаем AT-команды. AT+DASSL вынуждает модуль покинуть (свою) сеть. ATZ соответствует Reset. AT&F возвращает начальные настройки. AT+N возвращает его статус +N=NoPAN OK. ATS04? возвращает прописанный заводом в регистре S04 номер 0021ED00000468C9.

Команда AT+EN создает сеть, модуль становится координатором, сообщая о присоединении самого себя с параметрами JPAN:25,3D84,7E04AEF1821F433C. Команда AT+N выдает параметры USB-координатора: функциональное назначение, канал, питание, пара идентификационных номеров (назначаются рандомизатором) +N=COO,25,03,3D84,7E04AEF1821F433C.

Распространенные коды ошибок: 02 - неправильная команда, 05 - неверный параметр, 26 - не присоединиться, 27 - не найдена сеть, 28 - устройство уже в сети и команда не может быть выполнена.

Aдрес и команды удаленного управления

После включения ETRX375. По AT+N возвращает атрибуты координатора. По AT+SN возвращает атрибуты подключившихся модулей, в частности, адрес (XXXX).

По AT+PANSCAN (поиск еще модулей) сканирует пространство, пишет OK и через полминуту, подумав, возвращает NEWNODE: 8C86,000D6F00005C4AB7,0000 SR:00,000D6F00005C4AB7,8C86 FFD:000D6F00005C4AB7,8C86. На повторную команду пишет: +PANSCAN:25,3D84,7E04AEF1821F433C,02,01 (сообщая номер координатора COO, который исчезает, если модуль ETRX375 отключаем от питания, что вводит в заблуждение относительно принадлежности этого номера). Если отключить модем ETRX357, то возращает только OK. Если включить снова модем, пишет идентификатор координатора (!)

Для удаленного чтения четвертого регистра ETRX375 подходит адрес, указанный в NEWNODE: ATREMS:000D6F00005C4AB7,04? Возвращает ответ ACK:13 и содержательно верное SREAD:8C86,000D6F00005C4AB7,04,00=000D6F00005C4AB7.

Подходит и укороченный адрес: ATREMS:8C86,04?

Опрос ATREMS:8C86,04? подтверждает содержимым ответа 0000, что ETRX375 маршрутизатор FFD. ATREMS:8C86,0A=8000:password назначает модуль конечным устройством. ATREMS:8C86,04? подтверждает это ответом 8000 до и после временного выключения питания. Если модем выключен, то приходит NACK (нет ответа). Прямое чтение аналогового входа ADC0 возможно после ATREMS:8C86,15=2000 (13-й бит 15-го регистра в 1) по ATREMS:8C86,1F? возвращает FFDB или FFDC.

Пример конфигурирования сети

Небольшой ПРИМЕР содержит пример с температурным сенсором.

РАЗБОР ОПУБЛИКОВАННОГО В СПРАВОЧНИКЕ ПРИМЕРА

Для начала сразу отметим, что в исследовательком наборе (KIT) ETRX357 световой датчик подключен к АЦП 3, тогда как сценарий примера cвязан c функциональностью 8110 - передачей данных с первых двух АЦП. И иной функциональности нет. Следовательно - это не столько рабочий пример, сколько тестовый или показательный.

Посылаем модулю ATREMS:адрес,0A=8000:password - делаем конечным устройством ZED. По SN, он виден по прежнему маршрутизатором. Делаем перезагрузку сети по AT+DASSL, AT+EN, снова ловим модуль (не сразу, но встал), модуль сообщил, что он ZED.

Начинаем разбор сценария опроса температурного сенсора | [2]. С микросхемой можно использовать такой же как в отладочном комплекте температурный датчик - National Semiconductor LM61.


1. Define the module on the data-gathering development board as the network sink with the command ATS104=1
2. Instruct one or more Carrier Boards to send their ADC readings at regular intervals by setting a Timer/Counter on the CB, eg to send every second using Timer/Counter 5 set: S33=0004 S34=8110
3. Activate the temperature sensor ADC on each Carrier Board with the command ATS15D=1
4. Turn on the sensor power on each Carrier Board with the command ATS182=1
5. Activate the graph by selecting Tools -> R2xx Temperature Awareness

1. Первая команда ATS104=1 прозрачная, особых затрудений в понимании назначения координатора точкой слива sink данных нет. В справочнике R303, которыми управляется USB-модуль, координатор, она описана (4-й бит в 1).

2. Следующую команду шлем на модуль по ATREMS:адрес,34=8110, она есть в справочнике 302-й прошивки.

В начале раздела 5 Build in Functionality написано, что для того, чтобы подпрограмма выполнялась циклически (а не один раз по срабатыванию таймера) нужно установить самый старший бит в 1, т.е в данном случае в регистр нужно записать 8110 вместо 0110. Функция 0110 отправляет значения первых двух АЦП, то есть A/D1 и A/D2 на ETRX2 (ADC0 и ADC1 на ETRX357). Сообщение приходит на синк в следующем формате: SDATA: [EUI64,], ioread, A/D1, A/D2, sequenceNo, Vcc. (см. пункт 2.2 Prompt Overview, стр. 7). В версии R304 появилась функциональность 0130, позволяющая отправлять результаты измерений любых активных каналов АЦП. Температурный датчик подключен к A/D1 (9-я нога) ETRX2, ADC0 (30-я нога).

По ATREMS:адрес,33=0004 устанавливаем паузу таймера в 1 секунду. 4-й бит, это 1000, надо так полагать.

3. Шлем коды ATREMS:адрес,15D=1 и ATREMS:адрес,1511=1. Заглянем в команды R303 - регистр S15 отвечает за конфигурацию выходов, бит D отвечает за активацию первого АЦП (температура), бит 11 в шестнадцатиричной системе счисления - за активацию четвертого АЦП (свет). У ETRX2 термодатчик сидит на ножке 9 применительно к конкретной микросхеме A/D1. В наборе ETRX357 сенсоров - четыре (на первом входе по прежнему термодатчик, на 4-м - световой датчик).

4. Шлем коды ATREMS:адрес,182=1 и ATREMS:адрес,183=1. Это касается только комплекта для ETRX357, где с помощью выходного буфера (управляемого регистром S18) подается питание на датчики. Температурный датчик - National Semiconductor LM61 подпаян через джампер к входу АЦП. У комплекта c ETRX2 питание датчиков не отключается.

Световой резистор подключен между резисторами 18 ком и 10 ком (мост) к стабилизированному напряжению питания 3 вольта. Сигнал с него подается на АЦП. После манипуляций (и, в данном случае, переустановки модуля в режим ZED - конечное устройство) от него раз в секунду стали приходить данные на координатор. Сеть управляема.

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

ПРОГРАММА СВЯЗИ ЧЕРЕЗ VISUAL MATLAB


open panel, show
open mouse support 
K=0, G=0, N=120, R=one(N), I=0
e=write(0,'com19200'), do 3, s=read('com16'), end
open timer support
DO, P=R, J=I, if J>0,  
% if J<N, L=P(1:J), J=J+1, P=P(J:N), P=[P;L], end
e=PutMatrix(P), e=PutLine(1,'window')
end 
pause 0.1
END

% TYPICAL MESSAGES
% NEWNODE:B60A,0021ED0000072729,0000
% SR:00,0021ED0000072729,B60A..FFD:0021ED0000072729,B60A
% SDATA:0021ED0000072729,3B33,FFEC,FFDA,0E,2495
% ZED:0021ED00000408B1,8AF4
% ZED:0021ED0000072729,8C7C
% TO AVOID INTERSECTIONS $ USED INSTEAD :

function: click 
play click.wav
  if near Button1 then Button1 lights, 
   S=read('str:ATI'), sendmessage,  else
  if near Button2 then Button2 lights, 
   S=read('str:AT+SN'), sendmessage, else
  if near Button3 then Button3 lights, 
   S=read('str:ATREMS$8C7C,1F?') 
   sendmessage, I=N-30, else
  if near Button4 then Button4 lights, 
   S=read('str:ATREMS$8C7C,22?')
   sendmessage, I=N-30, else
  if near Button5 then Button5 lights, 
   % S=read('str:ATREMS$8C7C,15=00022600')
   S=read('str:ATREMS$8C7C,182=1'), sendmessage
   S=read('str:ATREMS$8C7C,183=1'), sendmessage
end, end, end, end, end

function: timer 1
close timer support
s=read('com'), if s>0, I=I+1, if I>N, I=1, end, R(I)=s, end  
open timer support

function: lights
subject Lamp paints red. pause 0.2
subject Lamp paints green.

function: sendmessage
close timer support, play click.wav
S=[S;13], for i=1:size(S) do, e=write(S(i),'com'), end, 
I=0, R=one(N), open timer support

function: activatedata
S=read('str:ATREMS$8C7C,33=0004'), sendmessage 
% S=read('str:ATREMS$8C7C,34=8110'), sendmessage
 
function: stopdata
S=read('str:ATREMS$8C7C,33=0000'), sendmessage 
% S=read('str:ATREMS$8C7C,34=0000'), sendmessage

function: getDATA
D=read('str:SDATA'), n=size(D)
F=1, for i=1:n, if D(i)<>P(i), F=0, end, end
if F=1, g=0, C=P(29:32), C=? % C=P(24:27),  C=P(29:32), C=P(34:37)  
 for j=1:4, c=C(j), 
 if c>58, c=c-55, else, c=c-48, end, C(j)=c, g=g*16+c, end 
 if J<>K, g=1200-g, 
   if K=0, G=g, else, G=[G;g], end, K=J 
   G=??, % [C;1200-g]=?,   
 end
end 

Command Overview



ATI            Display Product Identification Information
ATZ            Software Reset
AT&F           Restore Factory Defaults
AT+BLOAD       Enter The Boot Loader Menu
ATS            S-Register Access
AT+TOKDUMP     Display All S-Registers
AT+ESCAN       Scan The Energy Of All Channels
AT+PANSCAN     Scan For Active PAN's
AT+EN          Establish Personal Area Network
AT+JN          Join Network
AT+JPAN        Join Specific PAN
AT+N           Display Network Information
AT+POLL        Poll For Data From Parent
AT+REJOIN      Rejoin Network
AT+FINDMTR     Finds A Meter/ESP On The HAN
AT+ATTACHMTR   Pairs The IHD To A Meter/ESP
AT+DETACHMTR   Un Pairs The IHD From A Meter/ESP
AT+LASTMSG     Gets The Last Message From The ESP
AT+ACKMSG      Used To Acknowledge A Message
AT+SETTIME     Set The Time On The IHD
AT+GETTIME     Get The Time On The IHD
AT+SYNCTIME    Sync The IHD's Clock With The ESP
AT+IDENTIFY    Identify The Meter/ESP On The HAN
AT+MTRATR      Gets The Requested Attribute From The Metering ClusterServer
AT+MTRPROFILE  Gets The Energy Consumption For Profiling Purposes
AT+CURPRICE    Gets The Current Pricing From The ESP
AT+SCHPRICE    Gets All The Scheduled Pricing From The ESP
AT+PRICELBL    Gets The Label Assigned To The Price Tier 1 To 6 From The Price Cluster Server

Важным достоинством подключаемых к сети модемов является наличие спящего режима с малым током потребления 1 мкА, при котором продолжает работать таймер, предназначенный для того, чтобы в заданное время вернуть модем из энергосберегающего режима в рабочий. Это дает возможность ZigBee-устройству работать без смены батарей несколько лет. Всего существуют четыре режима энергопотребления, с номерами от 0 до 3. При включении питания энергонезависимый регистр S2A используется для установки стартового значения энергозависимого режима S29. Третий номер (максимальное отключение) используется только после установки в соответствующие регистры условий просыпания. Маршрутизатор имеет буфер для накопления сообщений спящим узлам. Координатор и маршрутизатор не работают в режимах 2-3. Спящий режим 2 предназначен для датчиков с предустановленным таймером на периодическое просыпание. Все ненужные порты переключаются на вывод, входы подтягиваются к линиям питания. Выводы SIF-MOSI через резистор 10 Ком подтягиваются к земле.

Устаревший модем ETRX2

У устаревшего модема ETRX2 ножки идут по периметру, при виде сверху - начало внизу слева: 1/6/15/20 земля, 7 - питание до 3.6 вольт, 27 - Txd, 28 - Rxd. Чтобы не ошибиться в ножках, заметим, что до линий 27-28 расположены нашлепки дополнительного встроенного модуля. Помимо есть 12-ть ножек входа-выхода IO, 2-ва входа аналоговых (измерения до 1.2 вольт, на цифровые входы подаются напряжения не большие, чем на линии питания).

Версии прошивки модулей указываются в артикуле после буквы R. Возможно заказывать модули с прошивками R302 и R212. Модули с разными версиями прошивок не совместимы между собой. Пользователь имеет возможность сменить версию прошивки самостоятельно, см. WLESS.RU.

Настройка модема через Com-порт

Координатор и модем попались с несовместимыми прошивками, см. выше. В таком случае модем подключается через буферную микросхему MAX232 к com-порту на тестирование ATI. Модем ETRX2 отвечает Telegesis ZigBee R212X 0021ED00000408B1. Режим приема-передачи данных по радиоканалу управляется регистром S12=0500, 05 соответствует частоте связи 19200.

AT+EN назначает модем координатором. После включения он передает иноформацию о подключении (у координатора, в собственную) сеть, например, JPAN:20,3352. В этом состоянии он не видит USB-координатор. AT+DASSL вынуждает модем покинуть (свою) сеть. AT+N возвращает теперь его статус +N=NoPAN OK. По AT+PANSCAN сканирует пространство, теперь модем видит сеть USB-координатора, судя по реакции 19,5935,1..OK. Координатор по той же команде не видит ничего (прошивка не та). Команда на соединение со стороны координатора AT+JPAN:канал:номер дает ERROR 28 (модем уже часть некой сети). Команда на соединение со стороны модема AT+JN дает ERROR 26 (не может подсоединиться). Модуль и координатор не совместимы (с отмеченным USB-координатором необходимо использовать ETRX357). Команда ATS04? возвращает содержимое 4-го регистра: модем выдает ETRX2.

Более подробно регистры модуля ETRX2: S00:FFF0 | S01:FFFF | S02:3 | S03:hidden | S04:ETRX2 | S05:0000 | S06:000C | S07:0000 | S08:0000 | S09:hidden | S0A:212X | S0B:0500 | S0C:0000 | S0D:00F8 | S0E:00F8

USB-координатор возвращает EUI-НОМЕР 0021ED00000468C9.

Более подробно регистры USB-координатора: S00:FFFF | S01:03 | S02:0000 | S03:0000000000000000 | S04:0021ED00000468C9 | S05:0000 | S06:0000000000000000 | S07:FFFF | S08:hidden | S09:hidden | S0A:0000 | S0B:Telegesis | S0C:hidden | S0D:ETRX2 R302X | S0E:0000



Rambler's Top100