Я постоянно передаю со скоростью 9600 бит/с, используя настройки по умолчанию для обоих моих XBees XB24-B. Связь только в одну сторону, передатчик подключен к ATMega328 UART, а приемник подключен к ПК через USB (FTDI). Вот фактическая скорость передачи данных для данной программы:
Почему это? Могу ли я что-нибудь сделать, чтобы улучшить эти показатели?
Изменить . Для более высоких скоростей передачи (115200) я получаю еще худшие скорости отбрасывания пакетов:
Изменить . Если я сделаю адрес координатора конечным устройством, то скорость отбрасывания пакетов упадет до нормального уровня (6800 бит/с), что не идеально, но лучше, чем в предыдущем сценарии.
Вы можете [свести к нулю отброшенные пакеты][1], назначив правильный адрес назначения перед началом передачи.
как выглядят мощность сигнала и скорость беспроводной связи? Проверьте документы XBee API, у вас должна быть доступ к этой информации. Какие антенны используете?
Необработанная скорость передачи данных Zigbee составляет всего 250 кбит/с в диапазоне 2,4 ГГц, и это протокол с очень высокими накладными расходами. При почти идеальном уровне сигнала и включенном шифровании вы должны ожидать максимальную пропускную способность только ~ 20-25 кбит / с без настройки стека, немного больше без шифрования. Протокол Zigbee на самом деле поддерживает только отправку данных, которые помещаются в один пакет, размер которого, как мне кажется, составляет около 100 байт. Если вы отправляете поток данных, прикладной уровень должен разбить эти данные на пакеты и включить дополнительную информацию в пространство данных пакета, чтобы его можно было собрать. Этот процесс может быть довольно медленным и еще больше сократить пропускную способность данных.
Стек Digimesh немного быстрее, поскольку он сокращает накладные расходы и позволяет использовать пакеты большего размера.
Не знаю, какое конечное приложение вы здесь планируете использовать, но Zigbee вовсе не предназначен для потоковой передачи данных. Это для отправки небольших битов информации, показаний датчиков, инструкций и т. д., которые помещаются в один пакет. Возможно, вы только что выбрали неправильный протокол для своего приложения.
ОБНОВЛЕНИЕ: В связи с недавним подтверждением того, что Zigbee не предназначен для потоковой передачи данных, я бы предложил выбросить его в мусорное ведро и купить лучший трансивер с большей функциональностью, большей пропускной способностью и примерно в 1/4 раза дешевле .
Я настоятельно рекомендую использовать управление потоком, если это возможно, для устранения потерянных пакетов. Скорее всего, небольшие, но значительные периоды времени, когда одно устройство обрабатывает, не смотрит на свои выводы UART и, таким образом, пропускает биты/байты и может зависнуть. Внедряя аппаратное управление потоком (выводы RTS и CTS), каждое устройство может сообщать другому, когда оно готово или нет для получения дополнительных данных.
Как только вы подключите управление потоком, я думаю, вы достигнете более высокой пропускной способности, которую ищете =)
Я работаю с устройствами Bluetooth OBD, которые связывают мое приложение Android с автомобильными сетями, поэтому я немного работаю с беспроводной связью/Bluetooth.
Джейдер Диас
Джейдер Диас
Джейдер Диас
Джейдер Диас