Модуль трансивера NRF24L01 (SI24R1) для Arduino (2,4Ггц)
Модуль приемопередатчика 2,4 ГГц NRF24L01
Модуль NRF24L01 позволяет связать приборы радиоканалом передачи данных. С помощью NRF24L01 до семи приборов объединяются в общую радиосеть топологии звезда на частоте 2,4 ГГц. Один прибор в радиосети ведущий, остальные ведомые. При упрощенном рассмотрении модуль приемопередатчика 2,4 ГГц NRF24L01 является конвертером интерфейса SPI в радиосигнал. Берет на себя все функции преобразования проводного интерфейса SPI в радиосигнал, содержит приемник, передатчик и миниатюрную антенну. Специалисту не обязательно знать особенности кодирования модулем данных по радио, достаточно правильно организовать работу SPI и установить настройки каждого модуля работающего в радиомосте.
Установка выходной мощности модуля, каналов радиообмена и настройка протокола производятся через интерфейс SPI. Совместим с модулями nRF2401A, nRF2402, nRF24E1 и nRF24E2.
Применение устройства наиболее актуально для мобильных приборов. Например, можно создать беспроводную связь с пультом управления видеоигрой, джойстиком, компьютерными мышью и клавиатурой. Интересная область применения – управление движущимися системами малой робототехники: колесными и гусеничными платформами, квадрокоптерами. Благодаря NRF24L01 становится возможным решить технические проблемы простой телемеханики и сбора данных с датчиков. Это находит применение в охранно-пожарной сигнализации, в системах «умный дом», устройствах централизованного сбора информации и других.
Характеристики
Питание
Напряжение 1,9–3,6 В
Ток
13,5 мА когда скорость обмена 2 Мбод
11,3 мA если мощность 0 dBм
22 мА пиковое потребление при приеме
Частоты каналов 126
Скорости обмена: 256 Кбод, 1 Мбод, 2 Мбод
Модуляция GFSK
Чувствительность приемника –85 dBм при скорости 1 Мбод
Предельная температура воздуха
работа –40…85 °C
хранение –40…125 °C
Размеры.
Микросхема nRF24L01+
В микросхему входят: синтезатор частоты, усилитель мощности, генератор, демодулятор, модулятор и другие части, образующие многофункциональный трансивер. Связь происходит в диапазоне частот 2,4–2,4835 ГГц. Частота, на которой будут работать модули, определяется номером канала. Они имеют шаг 1 МГц. Каналу 0 соответствует частота 2,4 ГГц, каналу 76 частота 2,476 ГГц. При скорости 250 Кбод связь возможна на большей дистанции. В режиме приема данных RX потребление тока выше, чем в режиме передачи TX. Модуль работает в четырех режимах: Power Down – выключен, Standby – спящий режим, RX Mode – приемник, TX Mode – передатчик. Микросхема nRF24L01+ имеет функции энергосбережения.
Надежный обмен данными гарантирует собственный протокол обмена Enhanced ShockBurst™. Прием данных подтверждает обратная связь в виде ответа. Принимающий данные модуль приемопередатчика 2.4 ГГц NRF24L01 отвечает подтверждением приема. Если подтверждение приема не получено, то передача повторяется.
Приемопередатчик – трансивер, имеет трехуровневый FIFO буфер приема, разделенный на шесть каналов, и трехуровневый FIFO буфер передачи. Одна микросхема nRF24L01+ конфигурируется как центральный принимающий узел и 6 как сообщающие данные. Такие обозначения функций до некоторой степени условны. На самом деле при любой роли МС в обмене данными каждая из них работает поочередно как приемник и передатчик. Обмен данными в такой сети происходит на одном частотном канале. Благодаря большому количеству каналов рядом могут работать еще 7 микросхем и еще и еще…
В пакете передаваемых данных есть 9 бит идентификации после битов адреса. Первые 2 бита используются для индикации данных счетчика приема пакетов для контроля очередности приема. Остальные семь бит не используются и зарезервированы под будущие продукты. Для совместимости с микросхемами nRF2401, nRF24E1 и nRF905, nRF9E5 поле идентификации пакета может не использоваться. Количество повторных попыток передачи пакета задается программно. Если отправить пакет не удалось, то генерируется прерывание для контроллера, а в регистре статуса трансивера устанавливается бит MAX_RT. Для успешной передачи пакета вырабатывается сигнал прерывания (вывод TX_DS IRQ) и передающий FIFO буфер очищается.
Для настройки различных параметров и функций используются регистры микросхемы. Каждый регистр (кроме трех регистров полезной нагрузки) имеет 5-битный адрес, который маскируется в R_REGISTER и W_REGISTER инструкциями, соответственно чтение и запись.
Доступны следующие регистры.
CONFIG – настройка прерываний, контрольной суммы, питания и статуса Tx/Rx.
EN_AA – включение и отключение Enhanced ShockBurst ™ на отдельных каналах Rx.
EN_RXADDR – включение и отключение канала Rx.
SETUP_AW – длина адреса.
SETUP_RETR – настройка задержки повтора и количества попыток связаться, если не получено подтверждение приема.
RF_CH – установка радиочастотного канала.
RF_SETUP – настройка скорости передачи по эфиру, выходной мощности и коэффициента усиления.
STATUS – статус битов состояния прерывания, буфер Tx FIFO полный и количество каналов получивших пакеты.
OBSERVE_TX – количество потерянных и повторно переданных пакетов.
CD – обнаружение несущей частоты.
RX_ADDR_Pn – адрес для Rx канала n.
TX_ADDR – адрес назначения передаваемых пакетов.
RX_PW_Pn – величина постоянной нагрузки на Rx канал n.
FIFO_STATUS – статус автоповтора, буфер Tx FIFO полный / пустой, Rx FIFO полный / пустой.
ACK_PLD – полезная нагрузка отправки пакетов ответа, если ответы пакетов включены (записывается с указанием W_ACK_PAYLOAD).
TX_PLD – Тх FIFO (записывается с инструкциями W_TX_PAYLOAD и W_TX_PAYLOAD_NO_ACK).
RX_PLD – Rx FIFO (читается с инструкцией R_RX_PAYLOAD).
DYNPD – включить или отключить функцию динамического расчета полезной нагрузки на каналы Rx.
FEATURE – включение или отключение динамической полезной нагрузки, ACK полезной нагрузки, и селективные функции ACK.
Подключение
Кроме выводов питания контакты линий сигналов могут подключаться к контактам прибора питающегося напряжением 5 В. Такая совместимость обеспечена внутренними цепями микросхемы. При подключении к порту Р0 МК класса 51 нужен подтягивающий резистор 10 кОм, для других портов он не нужен. Входы устройства подключаемого к модулю должны потреблять ток не более 10 мА. Модуль соединяется с микроконтроллером класса AVR без цепей согласования уровней сигналов.
Расположение контактов соединителя.
Модуль имеет следующие контакты:
GND – общий провод,
VCC – питание 3,3 В,
CE – включение радиотракта микросхемы высоким уровнем,
CSN – Chip Select Not, активный низкий уровень. Если установлен низкий уровень, то модуль отвечает на SPI команды. Это более важный сигнал выбора МС чем сигнал CE,
SCK – тактирование шины SPI, до 10 МГц,
MOSI – используется для передачи данных от микроконтроллера к устройству,
MISO – для передачи данных из устройства в микроконтроллер,
IRQ – выход сигнала для запроса прерывания при отправке и получении пакета.
Подключение является универсальным и подходит для всех плат Arduino UNO, DUE, MEGA, Леонардо, Yun и подобных. Сигналы SPI выведены на соединитель ICSP микроконтроллерного модуля Arduino. Контакт питания VCC соединяется с контактом стабилизатора Arduino напряжения 3,3 В. Общий провод подключается к контакту GND. Сигналы выбора CE и CSN подключаются к контактам, определенным в библиотеке RF24, например 7 и 8.
Особенности программирования
Для программ Arduino используется библиотека RF24 https://github.com/maniacbug/RF24/ Эта библиотека снабжена большим количеством примеров. При записи программы в Arduino модуль приемопередатчика 2,4 ГГц NRF24L01 нужно отключить от Arduino. Перед первой командой инициализации нужна пауза две секунды после подачи питания. Необходимо сделать публичной функцию RF24::flush_tx в библиотеке RF24 и очищать буфер передачи перед отправкой нового сообщения. По умолчанию модуль работает на передающем канале 76h.
Работа модуля в сети топологии звезда
По умолчанию модуль приемопередатчика 2,4 ГГц NRF24L01 сконфигурирован как ведущий и может получать данные по шести каналам. Каждый из шести ведомых модулей должен быть сконфигурирован соответствующим образом, при этом ведомым модулям присваиваются уникальные адреса.
Примечание
Перед первым включением следует смонтировать на модуле 2 конденсатора. Между выводами VCC и GND припать конденсатор в SMD корпусе (планарный) емкостью 0,1 мкФ со стороны пайки к монтажным площадкам на плате, затем к ним припаять электролитический конденсатор емкостью 100 мкФ на напряжение 10 В. Питать лучше не от Arduino, а от отдельного стабилизатора напряжения 3,3 В, способного обеспечить ток нагрузки 200 мА.