Как работает радиомодуль nRF24L01 + с Arduino. Описание, распиновка, подключение, datasheet

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

И когда дело доходит до недорогих, но надежных 2-полосных радиочастотных решений, никто не справится с этой задачей лучше, чем приемопередающий модуль nRF24L01 + от Nordic Semiconductor.

Модуль приемопередатчика nRF24L01 + (plus) часто можно приобрести в  онлайн магазинах менее чем за два доллара, что делает его одним из самых недорогих вариантов передачи данных, которые вы можете найти. И что самое приятное, то что эти модули малогабаритные, что позволяет использовать беспроводной интерфейс практически в любом проекте.

Обзор модуля nRF24L01+

Радиочастота

Приемопередающий модуль nRF24L01 + предназначен для работы  по всему миру в диапазоне частот ISM 2,4 ГГц и использует для передачи данных GFSK модуляцию. Скорость передачи данных может составлять 250 Кбит/с, 1 Мбит/с и 2 Мбит/с.

Что такое диапазон ISM 2,4 ГГц?

Полоса 2,4 ГГц является одним из промышленных, научных и медицинских (ISM) диапазонов, зарезервированных на международном уровне для использования в нелицензированных маломощных устройствах. Примерами являются беспроводные телефоны, устройства Bluetooth, устройства ближней радиосвязи (NFC) и беспроводные компьютерные сети (WiFi), которые используют частоты ISM.

Потребляемая мощность

Рабочее напряжение модуля составляет от 1,9 до 3,6 В, но хорошая новость заключается в том, что выводы согласуются с 5 В логикой, поэтому мы можем легко подключить его к Arduino или любому 5 В логическому микроконтроллеру без использования какого-либо преобразователя логического уровня.

Стартовый набор для Arduino Uno R3
Большой набор: датчики, кнопки, сервоприводы...

Модуль поддерживает программируемую выходную мощность, а именно: 0 дБм, -6 дБм, -12 дБм или -18 дБм и потребляет невероятно мало, около 12 мА во время передачи при 0 дБм, что даже ниже, чем у одного светодиода.

И что самое приятное, он потребляет 26 мкА в режиме ожидания и 900 нА в режиме отключения. Вот почему данный модуль является беспроводным устройством для приложений с низким энергопотреблением.

Интерфейс

Модуль nRF24L01 + обменивается данными через 4-контактный последовательный интерфейс (SPI) с максимальной скоростью передачи данных 10 Мбит/с. Все параметры, такие как частотный канал (125 выбираемых каналов), выходная мощность (0 дБм, -6 дБм, -12 дБм или -18 дБм) и скорость передачи данных (250 кбит/с, 1 Мбит/с или 2 Мбит/с), можно настроить через SPI интерфейс.

Шина SPI использует концепцию Master и Slave, и в большинстве распространенных приложений: Arduino является Master, а модуль приемопередатчика nRF24L01 + — Slave. В отличие от шины I2C количество ведомых на шине SPI ограничено, на Arduino Uno можно использовать максимум два ведомых SPI, т.е. два модуля приемопередатчика nRF24L01 +.

Характеристики nRF24L01 +

Частотный диапазон 2,4 ГГц ISM Band
Скорость передачи по воздуху, max 2 Мбит / с
Формат модуляции GFSK
Максимум. Выходная мощность 0 дБм
Рабочее напряжение питания 1,9–3,6 В
Ток потребления, max 13,5 мA
Ток в режиме ожидания, min 26 мкA
Логические Входы 5 В совместимый
Дальность связи 800+ м (по прямой видимости)

Более подробную информацию по модулю можно посмотреть в datasheet.

На основе чипа nRF24L01 + доступно множество модулей. Ниже приведены самые популярные версии.

nRF24L01 + Беспроводной модуль
nRF24L01 + Беспроводной модуль

В первой версии используется встроенная антенна. Это позволило создать более компактную версию модуля. Однако небольшая антенна также означает меньшую дальность передачи. С этой версией модуля вы сможете общаться на расстоянии до 100 метров. Конечно, это на открытом воздухе без препятствий. Дальность передачи в помещении через стены будет немного меньше.

nRF24L01 + PA LNA модуль с внешней антенной
nRF24L01 + PA LNA модуль с внешней антенной

Вторая версия поставляется с разъемом SMA и внешней антенной, но это не основное отличие данной версии. Реальное отличие состоит в том, что эта версия поставляется со специальным чипом RFX2401C, который объединяет схемы коммутации PA, LNA и приема-передачи. Этот чип расширения диапазона вместе с внешней антенной помогает модулю достичь значительно большей дальности передачи — около 1000 м.

Что такое PA LNA?

PA обозначает усилитель мощности. Он просто увеличивает мощность сигнала, передаваемого с чипа nRF24L01 +. LNA означает усилитель с низким уровнем шума. Функция LNA состоит в том, чтобы чрезвычайно слабый и неопределенный сигнал от антенны (обычно порядка микровольт или ниже -100 дБм) усилить  до более приемлемого уровня (обычно около 0,5…1 В)

PA LNA

Малошумящий усилитель (LNA) приемного тракта и усилитель мощности (PA) тракта передачи подключаются к антенне через дуплексер, который разделяет два сигнала и предотвращает перегрузку чувствительного входа LNA относительно мощного выхода PA.

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

Как работает радиомодуль nRF24L01 +?

Частота RF канала

Модуль приемопередатчика nRF24L01 передает и принимает данные на определенной частоте, называемой каналом. Кроме того, чтобы два или более приемопередающих модуля могли обмениваться данными друг с другом, они должны находиться на одном канале. Этот канал может быть любой частоты в диапазоне ISM 2,4 ГГц или, если быть более точным, он может составлять от 2,400 до 2,525 ГГц (от 2400 до 2525 МГц).

Каждый канал занимает полосу частот менее 1 МГц. Это дает нам 125 возможных каналов с интервалом 1 МГц. Таким образом, модуль может использовать 125 различных каналов, что дает возможность иметь сеть из 125 независимо работающих модулей в одном месте.

Частота RF канала

Канал занимает полосу пропускания менее 1 МГц при скорости передачи данных 250 Кбит/с и 1 Мбит/с. Однако при скорости передачи данных 2 Мбит/с полоса пропускания 2 МГц занята (шире, чем разрешение настройки частоты канала RF). Таким образом, чтобы обеспечить неперекрывающиеся каналы и уменьшить перекрестные помехи в режиме 2 Мбит/с, вам нужно сохранить дистанцию в 2 МГц между двумя каналами.

Частота выбранного вами канала устанавливается по следующей формуле:

Например, если вы выберете 108 в качестве канала для передачи данных, частота радиочастотного канала вашего канала будет 2508 МГц (2400 + 108).

NRF24L01+ Multiceiver

NRF24L01 + предоставляет функцию под названием Multiceiver. MultiCeiver — это аббревиатура от «Multiple Transmitters Single Receiver», что переводится как «Много Передатчиков Один Приёмник».

Здесь каждый радиочастотного канала логически разделен на 6 параллельных каналов данных, называемых Data Pipes.  Другими словами, канал данных является логическим каналом в физическом радиоканале. Каждый канал данных имеет свой физический адрес (адрес канала данных) и может быть настроен. Это можно проиллюстрировать следующим образом:

NRF24L01+ Multiceiver
nRF24L01 + Multiceiver — несколько передатчиков, один приемник

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

Расширенный протокол ShockBurst

Модуль приемопередатчика nRF24L01  использует структуру пакета, известную как Enhanced ShockBurst. Эта простая структура пакета разбита на 5 различных полей, что показано ниже:

Первоначальная структура ShockBurst состояла только из полей Preamble, Address, Payload и Cyclic Redundancy Check (CRC). Усовершенствованный ShockBurst обеспечил более широкие функциональные возможности для более совершенной связи с использованием недавно представленного поля управления пакетами (PCF).

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

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

Наконец, самое главное, каждое сообщение может запросить подтверждение, когда оно получено другим устройством.

nRF24L01 + Автоматическая обработка пакетов

Теперь давайте обсудим три сценария, чтобы лучше понять, как два модуля nRF24L01 + взаимодействуют друг с другом.

Транзакция с подтверждением и прерыванием

Транзакция с подтверждением и прерыванием

Это пример положительного сценария. Здесь передатчик начинает связь, отправляя пакет данных получателю. Как только весь пакет передан, он ожидает (около 130 мкс) подтверждения приема пакета (ACK).

Когда приемник получает пакет, он отправляет пакет ACK передатчику. При получении пакета ACK передатчик выдает сигнал прерывания (IRQ), чтобы указать, что  готовы новые данные.

Транзакция с потерянным пакетом данных

Транзакция с потерянным пакетом

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

Если передатчик не получает его в течение времени автоматической повторной передачи (ARD: Auto-Retransmit-Delay), пакет передается повторно. Когда повторно переданный пакет принят приемником, передается пакет ACK, который, в свою очередь, генерирует прерывание в передатчике.

Транзакция с потерянным подтверждением

Транзакция с потерянным подтверждением

Это опять-таки негативный сценарий, когда требуется повторная передача из-за потери пакета ACK. Здесь, даже если приемник получает пакет с первого раза, то из-за потери пакета ACK, передатчик считает, что приемник вообще не получил пакет.

Таким образом, после того, как время ARD истекло, он повторно передает пакет. Теперь, когда приемник получает пакет, содержащий тот же идентификатор пакета, что и предыдущий, он отбрасывает его и снова отправляет ACK-пакет.

Вся эта обработка пакетов выполняется автоматически чипом nRF24L01 + без участия микроконтроллера.

Распиновка модуля приемопередатчика nRF24L01 +

Давайте посмотрим на распиновку обеих версий радиомодуля nRF24L01 +.

  • GND  это контакт заземления.
  • VCC  обеспечивает питание для модуля. Это может быть где-то от 1,9 до 3,9 вольт. Вы можете подключить его к выводу 3,3 В вашей Arduino. Помните, что подключение его к выводу 5 В может привести к повреждению вашего модуля nRF24L01 +!
  • CE (Chip Enable) — активный-HIGH вывод. При выборе nRF24L01 будет либо передавать, либо получать, в зависимости от того, в каком режиме он находится в данный момент.
  • CSN (Chip Select Not) — активный-LOW вывод и обычно поддерживается на высоком уровне. Когда этот вывод становится низким, nRF24L01 начинает прослушивать данные на шине SPI и обрабатывает их соответствующим образом.
  • SCK (Serial Clock) — принимает тактовые импульсы, предоставляемые шиной SPI Master.
  • MOSI (Master Out Slave In) — является входом SPI для nRF24L01.
  • MISO (Master In Slave Out) — это выход SPI от nRF24L01.
  • IRQ — это вывод прерывания, который может предупредить мастер, когда новые данные доступны для обработки.

В следующей статье рассмотрим вопрос подключения модуля nRF24L01 + к Arduino.

 

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

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


*