Простое радиоуправление на NRF24L01+PA+LNA. Передатчик

В предыдущей системе радиоуправления было выявлено много проблем, к примеру, плохая фиксация дискретных команд на пульте, «тормоза» при обновлении данных на дисплее и т.д. Были и чисто схемотехнические ошибки. В связи с вышеперечисленным, изначально хотел исправить прошивку. Несколько месяцев у меня не было доступа к платам (они в кораблике, а сам кораблик на даче), а потом после некоторого времени копаний сделал вывод, что лишь прошивкой дело ограничить не получиться. Именно так и родилась идея этого варианта радиоуправления.

В отличии от предыдущей версии, передатчик не имеет дисплея, что позволило значительно увеличить скорость передачи. Кроме этого, количество пропорциональных каналов было уменьшено до 2-х (джойстик: Aliexpress — 40 р./шт.), а дискретных — увеличено до 5. Из схемы были исключены детали, отвечающие за измерение температуры, а так же датчик влаги.

Вышеперечисленное не лишь позволило упростить схему и прошивку, но и заменить микроконтроллер приемника на ATmega48. В передатчике используется уже приевшийся ATmega8, в исполнении PDIP28.

Начнем с передатчика. Для управления моделью используется джойстик и 4 кнопки. Индикация осуществляется 4 светодиодами, первые два RGB. Они отвечают за индикацию заряда батарей передатчика и приемника. Третий (желтый или красный) светодиод отображает состояние связи с приемником. Последний — на данный момент просто индикатор питания. Но, впрочем, его можно использовать и для другого — например для индикации передачи данных.

По-хорошему, в передатчике можно было бы применить и более дешевый ATmega48 вместо ATmega8, но на момент проектирования и сборки я ещё не определился с функциями и объемом программного кода, а когда устройство было собрано, уже не хотелось ничего менять. Да и лишний запас свободного места в микроконтроллере не бывает лишним.

Питание передатчика осуществляется через китайский модуль DC-DC step-up преобразователя MT3608 (Aliexpress — примерно 35 р./шт. ), от одного li-ion или li-po элемента. Это позволило сократить размеры и массу передатчика до более-менее приемлемых. Для зарядки аккумулятора так-же применяется китайский модуль 03962A (Aliexpress— примерно 40 р./шт. ).

Для передачи данных, как и указано в заголовке статьи, выступают радио модули NRF24L01+PA+LNA (Aliexpress — примерно 100 р./шт. ). При максимальной мощности передачи они способны держать связь на расстоянии до 1.1 км (во всяком случае, так указано в даташите). Для аппаратуры радиоуправления этого хватит с головой. Но Важно не лишь то, что они достаточно дальнобойные. Ещё один немаловажный фактор — в этих модулях возможно 2-хсторонняя связь.

Схема передатчика представлена ниже:

Для питания ВЧ модуля применен линейный стабилизатор LM1117-3.3 в корпусе SOT-223. Изначально предполагалось использовать его и для задания опорного напряжения АЦП — Vref, но в дальнейшем от этого пришлось отказаться. Так, в данном случае, для Vref используется напряжение питания. Но, на всякий случай, для переключения между внутренним опорным напряжением микроконтроллера и Vref на выводе 21 установлена перемычка JP1. Но лишь одного переключения перемычки мало, необходимо ввести поправки в программе а так же применить резистивный делитель для аналоговых выходов джойстика. В противном случае микроконтроллер не будет реагировать на изменения положения ручки джойстика. Резистор R1 выполняет подтяжку вывода RESET микроконтроллера к питанию, его можно не монтировать. Это несколько увеличит шанс непроизвольного сброса микроконтроллера.

Печатная плата устройства выполнена на одностороннем фольгированном материале. Все отверстия рассчитаны на сверло 1мм. Для перенесения рисунка печатных проводников на фольгированный материал мной был использован метод ЛУТ. Так же, можно изготовить фотошаблон для метода с фоторезистом. Ручная же разводка платы будет не самой легкой.

Топология печатной платы представлена ниже:

Красные проводники — перемычки с лицевой стороны платы. Также, если вы используете для просмотра и печати Proteus, в редакторе они очерчены на слое Top Silk.

Теперь несколько слов о программе. Учитывая прошлый опыт, в данном варианте передатчика можно сконфигурировать кнопки на триггерное срабатывание — один раз нажали, и нагрузка включилась; второй раз нажали — выключилась. Для этого в исходнике необходимо изменить «0» на «1» в следующих строках (естественно, лишь для той нагрузки, которая вам необходима):

#define SWTRIG 1
#define SW0TRIG 0
#define SW1TRIG 0
#define SW2TRIG 0
#define SW3TRIG 0

По-умолчанию, на кнопке джойстика как-раз включен триггер.

Если вы решили изготовить несколько устройств, будет полезно установить различные каналы для связи между парами передатчик — приемник. Это можно сделать, записав соответствующий канал в исходниках приемника и передатчика. Как правило, номера каналов пары должны совпадать. К примеру:

#define CHANNEL 24

*По-умолчанию используется 1 канал.

Следующее. У передатчика, как уже упоминалось, есть светодиод для отображения связи с приемником. Он загорается в том случае, если несколько раз пакет не удалось отправить на принимающий модуль. К слову говоря, именно по-этому мне так приглянулись эти модули — они сами делают практически всю работу, а микроконтроллеру остается лишь лениво нагружать их данными. По-умолчанию (которое можно изменить в исходнике библиотеки nrf24.cpp), каждый пакет модуль пытается передать до 15 раз, или до того момента, пока не получено подтверждение от другого модуля. Для оценки качества связи и использована эта возможность. Количество неудачных попыток сравнивается с константой, и если попыток больше, то светодиод загорается. Количество неудачных попыток передачи, при котором включится светодиод можно задать в исходнике:

#define N_SIGNAL 10

Кроме этого, в массивах const_bat_tx и const_bat_rx находятся значения пороговых напряжений батарей передатчика и приемника соответственно. По-умолчанию, они рассчитаны исходя из того, что передатчик питается от одного li-ion или li-po элемента, а приемник — от 2-х. Но, если вы применили другие батареи, или к примеры liFePO4 (литий-феррум-фосфатный), то необходимо записать другие значения. Первые три элемента массива — это значения напряжения, четвертый — коэффициент резистивного делителя, а пятый — опорное напряжение АЦП.

Для прошивки микроконтроллера был использован программатор USBasp, с программой Khazama AVR Programmer. При прошивке все фузы можно оставить в заводском варианте, лишь выставить внутренний RC-генератор на частоту 8МГц.

Сриншот фуз-битов:

В устройстве использованы smd резисторы типоразмера 0805, другие сопротивления можно взять МЛТ-0.25 или МЛТ-0.125. Номинал резисторов можно менять в небольших пределах. Исключение составляют резисторы R10 и R11. Так как это делитель напряжения, то можно взять любые резисторы 10к — 100к (соответственно одинакового сопротивления). Конденсаторы так-же, как и резисторы: 0805. Электролитический конденсатор, расположенный возле радио модуля, имеет емкость 4,7 — 47 мкФ х 6.3В. Стабилизатор LM1117-3.3 можно заменить на аналогичный (к примеру, AMS1117-3.3), имеющий выходное напряжение 3.3В и корпус SOT-223. Вместо джойстика можно применить обыкновенные переменные резисторы.

Подключение:

Во избежание выгорания важных деталей, передатчика и микроконтроллера в частности, сначала настройте переменным резистором повышающий DC-DC преобразователь, а потом подключайте его к плате. На выходе DC-DC преобразователя должно быть 5 вольт.

Фото устройства и видео его работы:


Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот

R1, R10, R11
Резистор10 кОм3
R1 — 0805, R10 -11 — МЛТ-0.25R4 — R9
Резистор330 Ом6
МЛТ-0.25R2, R3
Резистор220 Ом2
МЛТ-0.25RV1, RV2, SW
Джойстик1
C1, C2, C4, C5
Конденсатор100 нФ4
0805C3
Конденсатор4.7 мкФ х 16 В1
U1
МК AVR 8-битATmega81
PDIP28U2
Линейный регуляторAMS1117-3.31
SOT-223D3
СветодиодЗеленый1
D4
СветодиодЖелтый1
D1, D2
СветодиодRGB2
L1
Катушка индуктивности10 мкГн1

Радио модульNRF24L01+PA+LNA1
SW0 — SW3
Кнопка1
J2 — J7
РазъемPBS-401
J1
РазъемPLS-401
JP1
Перемычка1
2 позиции
DC-DC преобразовательMT36081
На схеме не указанДобавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

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

Ваш адрес email не будет опубликован.