Nodemcu nrf24l01 arduino

Подключение радио

Подключение радио

Приемопередатчик NRF24L01 + и RFM69 взаимодействует с платой Arduino через интерфейс SPI.

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

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

NRF24L01+ & Arduino

ПРИМЕЧАНИЕ: Входные контакты на NRF24L01 + имеют толерантность 5 В. Однако, вы не можете питать модуль более чем 3.3V на VCC. Если вы используете 5V Arduino, вам нужно использовать понижающий регулятор!

Pro Mini / Nano Mega NRF24L01+ Color
GND GND GND Чёрный
5VReg -> 3.3V 3.3V VCC Красный
9 49 CE Оранжевый
10 53 CSN/CS Жёлтый
13 52 SCK Зелёный
11 51 MOSI Синий
12 50 MISO Фиолетовый
2 2 IRQ Серый

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

Если вы используете Arduino Mega, к вашему эскизу необходимо добавить следующее, перед подключением MySensors.h:

NRF24L01+ & ESP8266

Это также работает с платами на базе ESP8266, такими как NodeMCU и Wemos D1 Mini.

NodeMCU Radio Comment
GND GND Чёрный
3V3 VCC Красный
D2 CE Оранжевый
D8 CSN/CS Жёлтый
D5 SCK Зелёный
D7 MOSI Синий
D6 MISO Фиолетовый

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

RFM69 & Arduino

ПРИМЕЧАНИЕ: NSS, MOSI и SCK не являются толерантным к 5V на RFM69. Вам нужно будет использовать конвертер уровня, если вы используете 5V Arduino.

Arduino RFM69 Color
GND GND Чёрный
3.3V VCC Красный
10 NSS Жёлтый
13 SCK Зелёный
11 MOSI Синий
12 MISO Фиолетовый
2 DI00 Серый
ANA Антенна

RFM69 & ESP8266

Это также работает с другими платами на базе ESP8266, такими как NodeMCU и Wemos D1 Mini.

ESP8266 RFM69 Color
GND GND Чёрный
3.3V VCC Красный
D1 DIO0 Серый
D5 SCK Зелёный
D6 MISO Фиолетовый
D7 MOSI Синий
D8 NSS Жёлтый
ANA Антенна

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

Шлюз и узлы могут использовать одно и тоже подключение, но имейте в виду, что RFM радио использует все контакты, с которыми легко работать, кроме D2, поэтому подключение чего-либо дополнительного может быть сложным. Вместо этого используйте Arduino, если хотите подключить что-то ещё.

Настройка MySensors для RFM69

MySensors настроен на использование радио NRF24 по умолчанию. Чтобы использовать RFM69, необходимо добавить следующее строки: перед подключением MySensors.h

Основные определения для радио не High Power 868Mhz, и Atmel 328p (mini pro, nano, uno и т. д.):

И если вам нужна расширенная конфигурация, вам нужно добавить следующие определения:

Примечание. Драйвер Mysensors RFM69 управляется прерываниями.

Антенна RFM69

ВАЖНО: Вы ДОЛЖНЫ установить антенну на плату. Антенна должна быть одножильной, а не многожильной (не подходит для антенны). Если включить без антенны, передатчик может сгореть.

Взяв провод нужной длины, вы можете создать простую антенну для RFM69 радио. В зависимости от частоты радио, антенна должна быть разной длины. Сделайте вашу антенну немного длиннее, чтобы можно было припаять ее к вашей плате. Вы всегда можете обрезать её после пайки.

Частота Длина (дюймы) Длина (мм)
434 MHz 6.47″ 164.7 мм
868 MHz 3.22″ 82.2 мм
915 MHz 3.06″ 77.9 мм

Вышеуказанная длина антенны составляет 1/4 волны. Есть также в продаже готовые антенны нужной длины.

  • Прямой провод будет работать лучше для всего диапазона и чувствительности.
  • Для устройства с ограниченным пространством, вы можете намотать антенну. Конечно, это ухудшит ваш диапазон, но он по-прежнему будет приличный и конкурентоспособный. Уже было проверено, что подойдёт для вашего случая. Катушка будет работать лучше, если следовать некоторым правилам https://github.com/OpenHR20/OpenHR20/wiki/2.1)—433-MHz-and-868-MHz—Antenna-Design-Examples

Подключение развязывающего конденсатора

Если у вас плохой прием или переданные данные не доходят до адресата, попробуйте добавить развязывающий конденсатор в 4.7 — 47μF (точный размер обычно не имеет значения) между 3.3В и GND как можно ближе к передатчику.

Конденсатор Радио Коментарии
— пин GND Чёрный провод радио
+ пин 3.3V Красный провод радио

Сторона с отметкой « 3,3 В между Arduino и Radio.

Источник

Подключение ESP32 к nRF24L01 и обмен данными с Arduino

Чип nRF24L01 2,4 ГГц от компании Nordic Semiconductor поддерживает интерфейс SPI, имеет аппаратный канальный уровень и многоканальность. При этих достоинствах микросхема очень дешёвая.

По сравнению с модулями Wi-Fi, такими как ESP8266 / ESP32, nRF24L01 имеет меньшее энергопотребление, существенно дешевле (но необходимо микропроцессорное устройство управления), из недостатков — меньшая пропускная способность.

Если у вас есть хорошая сеть Wi-Fi, то вы можете подумать над тем, чтобы использовать модули Wi-Fi для своих систем и устройств.

Также модули Wi-Fi подходят, если нет жёстких ограничений по энергопотреблению. Если мы используем микросхему nRF24L01 для отправки данных в облако через Интернет, то можно применить микроконтроллер ESP или плату Raspberry в качестве шлюза.

Аппаратная часть интерфейса NRF24L01 имеет 8 выводов — Vcc, GND, IRQ, CE, выводы SPI (CSN (инвертированный сигнал выбора микросхемы), SCK, MISO и MOSI). Допускается подача на порты ввода-вывода напряжения до 5 В, в то время, как рабочий диапазон напряжения питания микросхемы 1,9–3,6 В.

Назначение выводов:

  • CSN – выбор режима приёма-передачи
  • SCK – синхронизация
  • MISO – выход данных
  • MOSI – входящие данные

Вывод CSN с активным низким уровнем, обычно находится в высоком уровне. Когда сигнал на этом выводе переключается на низкий уровень, микросхема 24L01 начинает слушать порт SPI.

Порт CE используется для управления отправкой и получением данных в режимах передачи и приёма.

Вывод прерывания IRQ с активным низким уровнем. Предусмотрено три внутренних прерывания, которые могут установить этот сигнал в низкий уровень при активации. Бит каждого из трёх прерываний можно замаскировать, чтобы, состояние вывода IRQ не менялось, когда бит активируется.

Реализация обмена данными с чипом nRF24L01 через SPI

Интерфейс SPI позволяет читать и записывать регистры, передавать и получать данные к и от nRF24L01. На первоначальном этапе мы используем SPI со скоростью 2 Мбит/с. Высокие скорости SPI используются, если необходимо передавать по радиоканалу большие объёмы данных.

Краткая инструкция по работе с SPI

Чтобы отправить данные на микросхему nRF24L01 или получить данные от неё по интерфейсу SPI нужно соблюсти определенные условия передачи:

Вначале сигнал на выводе CSN микросхемы nRF24L01 должен быть высоким, затем переведите его в низкий уровень, чтобы получить данные по SPI. Примечание: этот сигнал останется в низком уровне в течение всего сеанса передачи данных.

Вы отправляете байт с нужной командой. При получении байтов данных по этой команде, отправив команду, вы затем посылаете по одному байту nRF24L01, получая от неё в ответ по одному байту данных. При отправке nRF24L01 данных вам необходимо просто посылать их и не обращать внимания на то, что приходит в ответ.

После того, как вы отправили/прочитали все необходимые байты, переведите сигнал CSN обратно на низкий уровень.

После отправки байта любой команды nRF24L01 всегда возвращает значение регистра состояния STATUS.

Описание буферов FIFO

Предусмотрено по одному буферу FIFO для режима передачи и для режима приёма. Оба буфера содержат по три пакета, которые в них поместили последними. Если вы получите в режиме приёма три пакета и не прочтёте их, первый (самый старый) будет вытолкнут из буфера новым полученным пакетом.

То же самое происходит в режиме передачи: если вы загрузите три пакета и не передадите их (переключив вышеупомянутый сигнал CE), то четвёртый пакет вытолкнет из буфера первый загруженный вами пакет.

Формат пакета данных

В протоколе приёмопередатчика предусмотрено два режима: Shockburst и Enhanced Shockburst. Форматы сообщений для этих режимов различны.

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

Далее посылаются байты адреса. Они устанавливаются пользователем, длина поля — от трёх до пяти байт.

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

Вторая половина пакета одинакова для обоих режимов. Вначале отправляется поле с полезной нагрузкой (с данными). Длина поля данных также устанавливается пользователем (от 1 до 32 байт). Финальная часть пакета — это контрольная сумма, устанавливаемая пользователем (0, 1 или 2 байт).

Давайте создадим два демонстрационных примера:

Демонстрационный пример 1: микроконтроллер ESP32 будет отправлять сообщение «hello» (привет) плате Arduino Nano.

Демонстрационный пример 2: плата Arduino Nano будет отправлять сообщение «hello» микроконтроллеру ESP32.
Если у вас есть два микроконтроллера ESP32, то можно заменить плату Arduino Nano на второй ESP32.

Необходимое аппаратное обеспечение

Для демонстрации понадобятся две платы Arduino/ESP8266/ESP32/Raspberry: Одна плата отправляет сообщение, а другая его принимает.

Для примера мы используем плату Arduino Nano. Соедините выводы по схеме, как показано ниже:

Arduino_D8 NRF24_CSN
Arduino_D7 NRF24_CE
Arduino_D13 NRF24_SCK
Arduino_D11 NRF24_MOSI
Arduino_D12 NRF24_MISO
Arduino_3.3 NRF24_Vcc
Arduino_GND NRF24_GND

Для микроконтроллера ESP32 библиотека RF24 немного изменена, так, чтобы программа могла использовать программный SPI вместо аппаратного. Соедините выводы по схеме, как показано ниже:

NRF24_CE ESP32_IO12
NRF24_CSN ESP32_IO14
NRF24_SCK ESP32_IO26
NRF24_MISO ESP32_IO25
NRF24_MOSI ESP32_IO27
NRF24_Vcc ESP32_3.3V
NRF24_GND ESP32_GND

Необходимое программное обеспечение

Для работы используются библиотеки SPI.h, nRF24L01.h и RF24.

Для микроконтроллера ESP32 изменить библиотеку RF24 так, чтобы программа могла использовать программный SPI вместо аппаратного.

Интерфейс прикладного программирования изменённой библиотеки выглядит следующим образом:
RF24(uint16_t _cepin, uint16_t _cspin, uint16_t sck, uint16_t miso, uint16_t mosi), а чтобы создать экземпляр библиотеки вызовите RF24 radio(12, 14, 26, 25, 27).

Для платы Arduino мы используем аппаратный SPI, поэтому интерфейс прикладного программирования библиотеки будет следующим:

RF24(uint16_t _cepin, uint16_t _cspin), а чтобы создать экземпляр, вызовите RF24 radio(7,8).

Демонстрационный пример 1: микроконтроллер ESP32 будет отправлять сообщение «hello» (привет) плате Arduino Nano.

Источник

Adblock
detector