Дальность связи с nRF24L01+

Понадобилась как-то радиосвязь с «улетающей» моделью ракеты. Перебор беспроводных вариантов решения проблемы привел к одному из наиболее недорогих — «норвежскому» решению nRF24L01

Про данное творение масса всего понаписано, а тут еще и с хорошими картинками… если коротко, то это приемопередатчик диапазона 2,4 ГГц собранный в одном корпусе. При минимальной «обвеске» позволяет собрать недорогое беспроводное решение для связи на  небольшие расстояния — своего рода «альтернатива Bluetooth». Преимущество перед стандартной технологией — в цене! Связь с микроконтроллером осуществляется по SPI. Питание — трехвольтовое (про «тонкости» — установку конденсатора — почти везде упоминается), потребление — «сильно скачущее».

Управление тюнером довольно замысловатое, поэтому существует несколько библиотек, облегчающих жизнь разработчика. Я особенно не искал — взял первое попавшееся… Никаких проблем с «неработоспособностью» устройства не испытывал. Использовал библиотеку RF24.

В примерах есть скетч «пинг-понг» — его и использовал для проверки модулей на дальность связи. Принцип работы программы: открывается канал на передачу — отправляется текущее время. На приемном конце принятое значение «заворачивается» обратно (т.е. работает и приемник, и передатчик). Первый модуль после отправки сообщения переводится на прием и ловит ответ. В последовательный канал выводится сообщение о времени прохождения сигнала (точнее — времени обработки его отправки-приема-отправки-приема на обеих сторонах).

С аппаратной точки зрения, подключение модулей стандартное: аппаратный SPI Arduino, CE и CSN — на 9 и 10 выводы Arduino. Использовал «модули-переходники» для подключения nRF24. В них большой надобности нет — там стоит лишь стабилизатор напряжения на 3,3 В, конденсаторы по питанию и переход на более удобную однорядную «гребенку». На питание модулей сразу повесил электролиты по 2200мкф.

Для удобства «работы в поле» в качестве контрольного терминала использовал смартфон с программой Bluetooth Terminal. А к последовательному интерфейсу Arduino Pro mini носимого модуля подключил bluetooth модуль на НС-06. Так сборка модулей на макетке выглядит покрупнее:Питание носимого — от 18650 аккумулятора (так легче носить) с преобразователем на 5В (сверху на фото — модуль с синим подстроечным резистором).

«Стационарный приемопередатчик» выполнен на Arduino UNO и питал я его от аккумулятора 12В.

В скетч пришлось внести несущественные изменения: понизил скорость последовательного интерфейса до 4800 бит/сек (так уж у меня был настроен HC-06, а перенастраивать его — не хотелось); явно указал максимальную мощность передатчика (хотя в begin() она и так стоит); понизил скорость обмена в радиоканале до 250Kbps (хотелось таким образом дальность повысить).

Результат с обычными модулями (тот, что на фото в начале статьи) — максимум 20 метров. Далее связь очень нестабильная. В YouTube есть видео о замере дальности связи — там у автора получилось значительно дальше…

Результат с модулями повышенной мощности (то, что на фото макета) — в прямой видимости — 600 м (дальше идти мешал глубокий снег). На такой дальности сильно сказывается положение антенны — часто просто ее подъем на метр — повышает стабильность; любой наклон приводит к потере данных. Попытка отклониться от прямой видимости (зашел за обычный деревянный деревенский дом) сразу привела к полной потере связи.

Вывод: использовать модули для связи с ракетой можно, но надеяться на стабильность канала — не стоит… И тем более, надежда на получение координат упавшей ракеты таким методом выглядит весьма сомнительной.

Добавить комментарий