Рубрики
Схемы на Arduino

Радиостанции большого радиуса действия на Arduino и модулях nRF24L01

Мы сегодня живем в эпоху доминирования 4G и наступающей эры средств связи 5G, но, тем не менее, простые УКВ радиостанции (еще их называют walkie-talkie) все еще продолжают играть важную роль в тех ситуациях, когда необходимо организовать простую и дешевую радиосвязь на небольшие расстояния. Например, подобные радиостанции очень удобны для строителей/рабочих, строящих какой-нибудь объект, или туристов/рыбаков/охотников, которые находятся в местах, куда не достает привычная нам сотовая связь. Поэтому в данной статье мы рассмотрим создание на основе платы Arduino и радиочастотных модулей nRF24L01 радиостанций большого радиуса действия.

Принцип работы наших радиостанций

Основными компонентами проектируемых нами радиостанций являются платы Arduino и радиочастотные модули nRF24L01, подключение которых к плате Arduino мы рассматривали в этой статье. Для данного проекта радиостанций радиочастотные модули nRF24L01 были выбраны ввиду их следующих преимуществ:

  • они работают в диапазоне ISM 2.4 ГГц (а на западе в этом диапазоне можно работать без получения лицензии);
  • доступные скорости передачи для этих модулей составляют 250 Кбит/с, 1 Мбит/с и 2 Мбит/с;
  • в данных модулях доступно 125 возможных каналов с шагом сетки частот 1 МГц, что позволяет развернуть в одном месте 125 независимо работающих модемов.

Также одним из достоинств наших радиостанций будет то, что их диапазон работы не будет перекрываться с используемыми частотными диапазонами других УКВ радиостанций, тех, которые используют полиция, экстренные службы, рыбаки, охотники и т.д. Одиночный модуль nRF24L01 может одновременно взаимодействовать с 6-ю другими такими же модулями, находящимися в зоне его действия, то есть он будет передавать информацию, а 6 других модулей будут ее принимать. Также к достоинствам модулей nRF24L01 относится их низкое энергопотребление.

Существуют два типа модулей nRF24L01: NRF24L01+ и NRF24L01+PA+LNA (показанный на рисунке ниже) со встроенной и внешней антеннами.

Модуль NRF24L01+ имеет только встроенную в плату антенну, поэтому диапазон его действия составляет около 100 метров, что подходит для его применения внутри помещений, но является явно недостаточным для связи на большие расстояния на открытом воздухе. Модуль NRF24L01+PA+LNA с внешней антенной имеет в своем составе параметрический усилитель (PA), который усиливает уровень сигнала перед его передачей в антенну. Также этот модуль содержит малошумящий усилитель (LNA — Low Noise Amplifier), который с минимальными шумами усиливает слабые сигналы и тем самым значительно улучшает чувствительность модуля. Таким образом, с внешней антенной (с коэффициентом усиления 2 дБ) и двумя дополнительными усилителями дальность действия модуля NRF24L01+PA+LNA составляет примерно 1000 метров, что вполне подходит для проектируемых нами радиостанций.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress) или другие типы плат Arduino – 2 шт.
  2. Радиочастотный модуль NRF24L01+PA+LNA с внешней антенной с КУ 2 дБ – 2 шт. (купить на AliExpress).
  3. Усилитель звуковой частоты – 2 шт. (купить на AliExpress).
  4. Цепь микрофона – вы можете сделать ее сами (рассмотрено далее в статье) или купить модуль датчика звука.
  5. Преобразователь (step-up booster module) DC to DC – 2 шт. (купить на AliExpress).
  6. Модуль регулятора напряжения (voltage regulator module) 3.3V AMS1117 (купить на AliExpress).
  7. Светодиод для индикации мощности – 2 шт. (купить на AliExpress).
  8. Резистор 470 Ом – 2 шт. (купить на AliExpress).
  9. 4-й дюймовый громкоговоритель (динамик) – 2 шт.
  10. Кнопка PTT (Push-to-Talk — «нажал — говори») – 2 шт.
  11. Конденсатор 104 пФ для кнопки PTT – 2 шт. (купить на AliExpress).
  12. Конденсатор 100 нФ для модуля NRF24L01 – 2 шт. (купить на AliExpress).
  13. Резистор 1 кОм для кнопки PTT – 2 шт. (купить на AliExpress).
  14. Два комплекта литий-ионных батарей.
  15. Модуль заряда и защиты литий-ионных батарей – 2 шт. (купить на AliExpress).
  16. Соединительные провода и джамперы.

Схема радиостанции

Схема радиостанции на основе платы Arduino и модуля nRF24L01 представлена на следующем рисунке.

Важно: питающее напряжение для модуля NRF24L01 составляет от 1.9 В до 3.6 В максимум. Для повышения стабильности питающего напряжения мы подключили конденсатор 100 нФ между контактами +VCC и –GND модуля, остальные контакты модуля NRF24L01 могут выдерживать напряжение до 5 В.

Изготовление радиостанций

Шаг 1. Мы начали изготовление радиостанций с того, что сделали самодельную печатную плату для них как показано на рисунке ниже. Мы подключили микросхему Atmega328p к программатору и загрузили в нее код программы. Затем мы подключили кварцевый генератор на 16 МГц к контактам 9 и 10 микросхемы Atmega328p.

Шаг 2. Далее мы произвели подключение модуля NRF24L01 в соответствии с ранее представленной схемой радиостанции: CE – к контакту 7, CSN – к контакту 8, SCK – к контакту 13, MOSI – к контакту 11, MISO – к контакту 12, IRQ – к контакту 2.

Для того, чтобы запитать модуль NRF24L01, нам необходимо понизить напряжение с 5 до 3,3 В, для этого мы использовали регулятор напряжения MS1117 на 3,3 В, который достаточно компактный и поэтому существенно не повысит габариты нашей радиостанции. Также для повышения стабильности питающего напряжения мы подключили конденсатор на 100 нФ к контакту земли и контакту VCC модуля.

Если вы хотите сделать эту плату регулятора напряжения сами, вам необходимо купить микросхему регулятора напряжения на 3,3 В и добавить к ней необходимые резисторы и конденсаторы. Также подобный регулятор напряжения можно сделать на основе микросхемы LM317.

Шаг 3. Вы можете купить датчик звука (акустический датчик) или сделать простую микрофонную цепь своими руками как показано на следующих рисунках. Эта цепь будет содержать NPN транзистор 2n3904.

Также мы перерисовали схему радиостанции в другом виде – возможно, он кому то покажется более удобным чем ранее представленная схема на основе макетной платы.

Шаг 4. Для усиления звука с выхода платы Arduino (контакты 9 и 10) мы использовали стерео усилитель звуковой частоты PAM8403, поскольку звук с выхода контактов платы Arduino достаточно слабый для того, чтобы подавать его на громкоговоритель (максимум его можно подавать на головные телефоны). С модуля PAM8403 сигнал можно подавать на два громкоговорителя, и при этом модуль достаточно дешево стоит. Модуль PAM8403 содержит достаточно мощный усилитель звуковой частоты в SMD исполнении и занимает очень мало места. Его внешний вид показан на рисунке ниже.

Соединения с этим модулем достаточно простые. Напряжение питания ему требуется от 3.7V до 5V. Левый и правый каналы аудиовходов данного усилителя подключаются к контактам 9 и 10 платы Arduino. В нашем случае в качестве выходной нагрузки данного усилителя мы использовали 4-дюймовый 8-омный громкоговоритель (динамик). Мы задействовали в данном случае только выход правого канала. Если хотите, то вы можете использовать два громкоговорителя в этой схеме – усилитель звуковой частоты позволяет реализовать это.

Шаг 5. Далее мы изготовили тангенту (PTT кнопку) в виде обычной кнопки. Мы подключили к контактам этой кнопки конденсатор емкостью 0.1 мкФ для уменьшения эффекта дребезга контактов и появления непредсказуемых сигналов при нажатии кнопки.

В режиме передачи модуль NRF24L01+PA+LNA потребляет значительно больше электроэнергии, чем во время приема, поэтому во время нажатия кнопки PTT, которая включает режим передачи, значительно увеличивается потребляемый модулем ток. Чтобы сгладить эффект от этого резкого увеличения потребления тока мы использовали конденсатор емкостью 100 нФ, подключенный к контактам +vcc и Ground.

При нажатии кнопки PTT на контакт 3 планы Arduino подается сигнал прерывания – мы далее в программе конфигурируем этот контакт как контакт для обработки прерывания и мы будем отслеживать на нем уровень напряжения. Если на этот контакт поступает напряжение низкого уровня (low), то наша радиостанция продолжает оставаться в режим приема (режим по умолчанию). Если же на контакте 3 будет напряжение высокого уровня (high), то мы будем переключать радиостанцию в режим передачи, в котором мы сможем передавать по радиоканалу сигнал, поступающий с выхода микрофона, естественно, после преобразования его в радиосигнал – то есть первичный электрический сигнал с выхода микрофона модулируется, переносится на рабочую частоту 2,4 ГГц, усиливается и излучается с помощью антенны в окружающее пространство.

Шаг 6. Для питания всех компонентов нашей схемы (платы Arduino, модуля NRF24L01+PA+LNA, усилителя звуковой частоты и цепи микрофона) мы использовали комплект из 2-х литий-ионных батарей (Li-ion battery) как показано на следующем рисунке.

Хорошая литий-ионная батарея обеспечивает уровень напряжения от 3.8 до 4.2 В и заряжается напряжением от 4 до 4.2 В (ранее на нашем сайте мы рассматривали двухрежимное зарядное устройство литий-ионных батарей на основе платы Arduino). Литий-ионные батареи в настоящее время находят широкое применение в портативных устройствах и электромобилях. Но литий-ионные батареи не так надежны и устойчивы в работе как другие типы батарей, поэтому им нужна защита от излишней зарядки и слишком быстрой разрядки – то есть напряжение и ток заряжания/разряжания для них должны поддерживаться в безопасных для них режимах. Поэтому в нашем проекте для защиты этих батарей мы использовали один из самых распространенных модулей заряжания для них — TP4056.

Шаг 7. Также в нашем проекте мы использовали преобразователь постоянного тока на 2А чтобы поднять уровень напряжения с выхода литий-ионной батареи, который составляет от 3.7V до 4.2V, до уровня 5 Вольт, который необходим для питания основных компонентов схемы нашей радиостанции. На нашем сайте мы уже рассматривали подобный, но только понижающий преобразователь постоянного тока на основе платы Arduino, так называемый Buck converter.

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

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Первым делом в программе нам необходимо подключить используемые библиотеки, которые можно скачать по следующим ссылкам:

В программе мы производим подключение заголовочных файлов этих библиотек.

Далее мы произведем инициализацию объекта радио на контактах 7 и 8 платы Arduino и установим номер радиоканала равный 0. Также инициализируем кнопку PPT на контакт 3.

Внутри функции setup мы инициализируем последовательную связь со скоростью 115200 бод для целей отладки программы и произведем инициализацию радиочастотного модуля. Контакт 3 сконфигурируем как контакт прерывания – на нем будут обрабатываться нажатия PPT кнопки. Более подробно о прерываниях в Arduino можно прочитать в этой статье.

Далее мы запрограммируем функцию talk(), которая будет служить функцией обработки прерывания. При нажатии PTT кнопки будет формироваться сигнал прерывания, который будет передавать управление функции talk(), которая, в свою очередь, будет переключать нашу радиостанцию в режим передачи. При отпускании кнопки радиостанция будет снова возвращаться в режим приема.

Подробно работу нашего проекта можно посмотреть на видео, приведенном в конце статьи. Примерно похожий проект радиостанций можно реализовать и на основе модулей Lora.

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

Исходный код программы (скетча)

Видео, демонстрирующее работу радиостанций

Источник статьи

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *