Использую: Spankfun'овский Usb adapter 2 ардуины 2 шилда Lilypad Xbee 2 Xbee s2 с PCB антенной Все делаю по инструкции DoorBell из книги Wireless Networks Код 1 ардуины: int BUTTON = 2; void setup() { pinMode(BUTTON, INPUT); Serial.begin(9600); } void loop() { if (digitalRead(BUTTON) == HIGH) { Serial.print('D'); delay(10); } } Код 2 ардуины: int BELL = 5; void setup() { pinMode(BELL, OUTPUT); Serial.begin(9600); } void loop() { if (Serial.available() > 0) { if (Serial.read() == 'D'){ digitalWrite(BELL, HIGH); delay(10); digitalWrite(BELL, LOW); } } } Вместо звонка естессно светодиод)) Все мигает,все передатся.... но данные передаются не всегда. Иногда при передаче на обоих шилдах загорается RSSI светодиод и модуль залипает намертво на какое-то время. Подскажите что может быть не так?? Заранее спасибо
Подскажите, а если вы нажимаете кнопку редко: только когда RSSI не горит, случаются ли залипания? Проблема может быть в недостаточном питании XBee
При первой же передаче RSSI загорается. если очень редко то вроде не залипает. Еще заметил что тупит только при передачи с координатора на роутер, в другую сторону нормально
Много, и довольно успешно, поковырявшись с xBee (правда, только со 2-й серией, 1-ю не застал), могу предположить (чисто теоретически), что взятые Вами примеры относятся к старым версиям xBee. Новые железки очень хитрые, в части энергосбережения, и могут прошиваться разными прошивками, для разных сетей в том числе. Скажите точные модели, и установленные прошивки. Первое впечатление по описанным симптомам - одно из устройств спит для энергосбережения, периодически просыпаясь. "Координаторы" не спят никогда, "рутеры" тоже не спят. Вы написали "рутер" - с чего Вы решили, что он "рутер", а не "end device"?
https://www.sparkfun.com/products/11217 вот сами модули, прошивки пробовал разные, но работала только xb-24zb
Xbee, как оказалось, оочень хитрые в плане энергосбережения. Мой координатор еще ко всему прочему перед тем как в спячку уходить еще и reset ардуины нажимал (решилось настройкой DIO7 координатора в DISABLE). Короче говоря проблема залипания координатора решается настройкой адресации этого координатора на конкретный End Device. Как это сделать хорошо написано на вики в разделе «адресация»
Это правильно, она и должна работать: xb-24zb. Роль устройства (и, в том числе, его сонность), задаются прошивкой, отличаются первыми двумя цифрами номера версии прошивки. Вопрос в том, какая версия прошита: роли нумеруются по версиям, координатор 21хх, рутеры 29хх, и так далее. Смотрите номера и роли, смотрите параметр SM, определяющий сонность.
В том то и дело, что у координатора этого параметра нет) у него там только SP, который немного не о том. Задача ТС была — с координатора на энд девайс передача тупит. Повторил эксперимент - все то же самое. Задача решилась назначением координатору конкретного адреса назначения.
Правильно, SM у координатора нет, потому, что он не спит никогда, ему SM не нужен. Второе-то устройство как прошито, номер прошивки?
Номер прошивки не смогу посмотреть в ближайшее время. Второй девайс был прошит как router/endpoint. его SM был выставлен в disable - это я специально проверял. Про то, что координатор не спит я тоже читал, но как-то это расходилось с практикой. Координатор достаточно часто затупливал на пару секунд, а потом выплевывал почти все, что ему свалилось в буфер за это время. Почти - потому что не все) Роль координатора - ZNET 2.5 COORDINATOR AT, версия прошивки 1047. По крайней мере именно это у меня написано в X-CTU было) 21xx почему-то нигде не видно. Код отправки простейший Код (Text): void setup() { Serial1.begin(9600); } void loop() { static int i=0; Serial1.println(i); Serial1.flush(); delay(100); ++i; }
Znet 2.5 - это не номер прошивки, это тип сети. Прошивка с номером 1047 - это версия прошивки xb-24b, без буквы "зэт", роль "ZNET 2.5 COORDINATOR AT" - это морально устаревшая сеть Znet, устройство в роли координатора, в текстовом режиме команд. Спать такое устройство не должно. Про совместимость с новой сетью ZigBee не разбирался. Модули приходят с прошивками Znet, я сразу перешиваю на ZigBee xb-24zb, с буквой "зэт". Железо одинаковое, производитель одобряе. По-первости - не различал прошивки, много времени потратил, смотрите очень внимательно, чем что прошито. Znet и ZigBee - разные сети. И текстовый режим не использую, API=2 наше всё, термометры второй месяц на даче работают
Столкнулся с той же проблемой. В моём случае с одной ардуины на другую шлются команды через xbee радиомодем. команда представляет собой управляющее слово из 8 байт. Каждые 5-10 команд на приёмнике происходит фриз в несколько секунд. Команды шлются каждые 50 (фризы были и при 1000) милисекунд. тормозит именно приёмник, я слежу за источником через монитор порта, работает как пулемёт. Я уже в качестве эксперимента flush вставлял после получения каждого слова в надежде чистить буфер от переполнения, но без результа. Ч то по итогу, кто-то разобрался как справиться с фризами, есть рекомендации, коллеги?
И кстати. Раз уж зашёл разговор. Я в конце управляещего слова пишу контрольную сумму. Её имеет смысл вставлять, может в модеме уже ведётся проверка ошибок?
Решил задачу высокоскоростной передачи данных посредством радиомодемов XBEE. Без лагов, засыпаний и потери данных, с контрольной суммой, подтверждением получения. Когда будет время напишу подробную заметку. Интересующиеся могут изучить вот этот материал и вот эту библиотеку.