alex_avr (alex_avr2) wrote,
alex_avr
alex_avr2

Categories:

Дальность связи модулей на NRF24L01+

В последнее время в моих проектах понадобилось организовывать двухстороннюю цифровую радиосвязь между компьютером и носимыми устройствами в пределах нескольких смежных помещений.

Первая реализация была сделана на Wi-Fi модулях ESP8266. Так как в конечном счете мне было желательно иметь на выходе RS-232/485 - была найдена прошивка(даже не одна), для этих модулей, реализующая мост TCP-RS232. Решение оказалось вполне рабочим, но, как показала практика - все-таки не слишком удачным. Wi-Fi - слишком навороченная технология для такой простой задачи, а китайские микросхемы с самописными прошивками - слишком ненадежны. основная проблема технологии в том, что если связь по каким-то причинам теряется (а происходит это периодически), то на восстановление соединения уходит довольно много времени, что в моем случае критично - связь должна быть достаточно стабильной и постоянной, без задержек. Кроме того, разные прошивки обладают разными глюками, которые, например могут увеличивать пинги до неприличных значений (>1000мс), просто наглухо завешивать модуль, а некоторые "фичи" декларируемые авторами, при определенных раскладах даже самопроизвольно сбрасывать все настройки.

В общем для избавления от этого всего геморроя было принято решение перейти на более "дубовую" радиосвязь, в которой понятие соединения отсутствовало бы в принципе. Выбор пал сразу на знакомую многим норвежскую(мимими) микросхему NRF24L01+, модули с которой в бесчисленном количестве продают китайцы.



Несколько лет назад я уже делал устройство на базе этих модулей, но тогда у меня не было ни времени ни желания вникать в детали, поэтому я просто взял готовую библиотеку и быстренько сваял устройство, наполовину из скотча, которое, впрочем успешно работает до сих пор и не раз помогло :)

Сейчас же нужно было более глубоко разобраться в работе этих микросхем и сделать систему связи на них, которая бы интегрировалась с существующей.

Существует несколько основных видов модулей, которые делают китайцы с этими микросхемами. Отличаются они антеннами или разъемом для них, наличием усилителя, размером. Самые распространенные и самые дешевые модули (около 40р), разумеется без усилителя и с простой антенной выполненной на печатной плате. К внешнему миру он подключается через обычный штырьковой разъем. Удобно для макетирования, но может быть немножко громоздко для компактных носимых устройств.

Первый вопрос, который всех, конечно, интересует - это дальность связи. Для проверки на личном опыте я быстренько сделал два одинаковых устройства, одно передающее, другое приемное. Передающее 4 раза в секунду передает пакет данных, приемное если видит этот пакет, то мигает светодиодиком. Итого - если связь есть и все стабильно работает, то диодик довольно часто и равномерно мигает. Если пакет по каким-то причинам не дошел, то это сразу видно.

Тут надо добавить, что микросхема позволяет настраивать много параметров связи, которые существенно могут влиять на дальность. А именно:
-Мощность - 4 уровня. Я поставил на максимум, конечно.
-Длина адреса - 3 или 5 байт, я выбрал 3. Короче пакет - больше вероятности что дойдет.
-Длина пакета - 1..32 байта, я поставил 16, тут уж ограничено нуждами.
-Размер CRC - 8 или 16 бит. Я выбрал 16, хотя во внутреннем пакете данных есть своя CRC.
-Автоматический повтор передачи. Микросхема умеет автоматически передавать пакет подтверждения и пытаться еще раз отправить пакет с данными до 16 (кажется) раз, если пакет подтверждения не пришел от приемника. Эту функцию я выключил по четырем причинам. Во-первых - у меня будет много приемников с одним адресом, что делает автоматическое подтверждение не только бессмысленным,но и вредным. Во-вторых у меня на чуть более верхнем уровне итак реализовано все тоже самое, дублировать большого смысла нет. В-третьих, для теста нагляднее видеть все "как есть", без повторов передач. В-четвертых - связь в разные стороны может быть разного качества. Особенно это касается случая с использованием модулей разного типа. Автоподтверждение автоматом ограничит дальность связи худшим из этих двух направлений.
-Частота. 2400..2525 МГц. Я выбрал канал около 2500МГц, т.к. он в стороне от частоты работы Wi-Fi, впрочем не уверен, что это лучший выбор.
-Скорость передачи 0.25..2 Мбит/с. Чем меньше, тем дальше связь, поэтому, разумеется 0.25, особые скорости мне не нужны. Кстати, заявленные скорости - это лишь скорости передачи пакетов. Если учесть всю служебную информацию в пакете, все задержки между пакетами и, в особенности (если включено) автоподтверждение, то получим реальные скорости передачи данных в разы ниже.

Итак, первый тест (крайне субъективный) с самыми простыми модулями - берем два модуля и располагаем в двух разных углах квартиры. Прием есть, но не очень стабильный. Сильно зависит от ориентации и конкретного положения. Доходит от примерно 50 до 100% пакетов. Между модулями одна ЖБ стена и три гипсовых, расстояние метров 10-12. Выходим в подъезд(еще + пара гипсовых стен) - прием почти пропадает, иногда редкие пакеты принимаются. Однако, в целом, по квартире связь довольно стабильна, если же передатчик расположить в центре квартиры, то покрытие будет 100%.

Второй тест (более объективный) - вешаем передатчик на окно 11 этажа и выходим на улицу. Под окном связь стабильная. Начинаем отходить. Где-то на расстоянии метров 80 от дома связь начинает теряться и вскоре совсем пропадает. Итого дальность по прямой видимости чуть меньше 100 метров. Примерно как и заявлено.

После этих тестов я решил попробовать купить более интересный вариант модуля - он крайне компактный, однако на нем есть усилитель мощность и керамическая антенна вместо печатной. Конечно стоит он дороже около 300 рублей. На фото он снизу. Повторяем эксперименты.

По квартире связь крайне стабильная, даже если модули в разных углах. Иногда может один пакет потеряться - скорее всего из-за внешних шумов. Выходим в подъезд - все также стабильно. А вот стоит зайти в железный лифт - связь пропадает наглухо.

Вешаем передатчик так же на окно 11го этажа с идем гулять. Первое, что сразу бросается в глаза - при выходе из дома с другой стороны от окна связь сразу появляется, как и везде вокруг дома. Уже интересно. Подхожу со стороны окна, начинаю отходить. Давно прошел уже ту точку, где на простых модулях связь оборвалась, но сейчас она и не думает теряться. И тут возникла совершенно непредвиденная проблема - прямая видимость закончилась. Я подозревал, что усилитель и керамическая антенна дадут лучший результат, но не думал, что настолько. дальше пришлось идти уже в городской застройке, однако и тут прием был достаточно стабильным, хотя, при попадании в "тень" от больших домов связь, конечно, терялась. В итоге, дальняя точка, на которой мне удалось принять пакет оказалась на расстоянии 470 метров. очень неплохо. Для организации надежной связи в помещении этого однозначно хватит :)

Еще есть модули с SMA разъемом и внешней антенной. такие я тоже заказал на робу. как доедут - проведу аналогичный эксперимент - интересно будет сравнить.

П.С. Как всегда, с радиосвязью - все эти эксперименты крайне субъективны. На дальность связи влияет огромное количество параметров,одинаковых ситуаций не бывает. Однако, общий порядок они дают понять и, тем более провести сравнительный анализ разных решений в одинаковых условиях.

П.С.2 - очень качественное и подробное описание микросхем на русском: http://aterlux.ru/index.php?page=article&art=nrf24l01p

Tags: Электроника
Subscribe
promo alex_avr2 july 2, 2018 13:00 41
Buy for 200 tokens
Думаю многие слышали рассказы про огромные бункеры под Москвой, подземные города, секретное метро на случай ядерной войны. Многое в этих рассказах очевидно преувеличено, что-то придумано, но безусловно, основаны они не на пустом месте. Совсем недавно небольшой кусочек этих подземных тайн был…
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 64 comments