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:
|
#define MY_RF24_CE_PIN 49
#define MY_RF24_CS_PIN 53
|
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 |
Антенна |
Для вышеуказанного подключения необходимо использовать следующие строки:
|
#ifdef ESP8266
#define MY_RADIO_RFM69
#define MY_RFM69_FREQUENCY RF69_433MHZ // Установите нужную частоту
#define MY_IS_RFM69HW // Не устанавливайте если ваш RFM не "H"
#define MY_RF69_IRQ_PIN D1
#define MY_RF69_IRQ_NUM MY_RF69_IRQ_PIN
#define MY_RF69_SPI_CS D8 // NSS. Используйте MY_RFM69_CS_PIN для ветви разработки.
#endif
|
Шлюз и узлы могут использовать одно и тоже подключение, но имейте в виду, что RFM радио использует все контакты, с которыми легко работать, кроме D2, поэтому подключение чего-либо дополнительного может быть сложным. Вместо этого используйте Arduino, если хотите подключить что-то ещё.
Настройка MySensors для RFM69
MySensors настроен на использование радио NRF24 по умолчанию. Чтобы использовать RFM69, необходимо добавить следующее строки: перед подключением MySensors.h
Основные определения для радио не High Power 868Mhz, и Atmel 328p (mini pro, nano, uno и т. д.):
|
#define MY_RADIO_RFM69 // Define for using RFM69 radio
|
И если вам нужна расширенная конфигурация, вам нужно добавить следующие определения:
|
#define MY_RFM69_FREQUENCY RF69_433MHZ // Включите для установки частоты. Нужно, если ваш радиомодуль не 868Mhz (868Mhz по умолчанию в lib)
#define MY_IS_RFM69HW // Обязательно, если ваш радиомодуль является версией с высокой мощностью (RFM69HW и RFM69HCW), закомментируйте, если это не так
//#define MY_RFM69_NETWORKID 100 // По умолчанию 100 в lib. Раскомментируйте его и установите предпочтительный идентификатор сети, если необходимо
//#define RF69_IRQ_PIN 4 // По умолчанию в lib используется D2 для обычного Atmel 328p (mini pro, nano, uno и т. Д.). Раскомментируйте его и установите вывод, которую вы используете. Примечание для Atmel 328p, Mysensors и в основной реализации Arduino D2 или D3 только доступны. Но для продвинутых mcus, таких как Atmel SAMD (Arduino Zero и т. Д.), Esp8266 вам нужно будет установить это определение для соответствующего вывода IRQ
// #define MY_RF69_IRQ_NUM 4 // Временное определение (будет удалено в следующей версии драйвера радиоприемника). Нужно, если вы хотите изменить контакт IRQ, к которому подключено ваше радио. Итак, если ваше радио подключено к D3 / INT1, значение равно 1 (INT1). Для других mcu, таких как Atmel SAMD, Esp8266, значение просто совпадает с вашим RF69_IRQ_PIN
// #define MY_RF69_SPI_CS 15 // При использовании другого вывода CS для шины SPI. Используйте MY_RFM69_CS_PIN для ветви разработки.
|
Подробнее об этом можно узнать здесь: https://www.mysensors.org/download/sensor_api_20
Примечание. Драйвер Mysensors RFM69 управляется прерываниями.
Антенна RFM69
ВАЖНО: Вы ДОЛЖНЫ установить антенну на плату. Антенна должна быть одножильной, а не многожильной (не подходит для антенны). Если включить без антенны, передатчик может сгореть.
Взяв провод нужной длины, вы можете создать простую антенну для RFM69 радио. В зависимости от частоты радио, антенна должна быть разной длины. Сделайте вашу антенну немного длиннее, чтобы можно было припаять ее к вашей плате. Вы всегда можете обрезать её после пайки.
Частота |
Длина (дюймы) |
Длина (мм) |
434 MHz |
6.47″ |
164.7 мм |
868 MHz |
3.22″ |
82.2 мм |
915 MHz |
3.06″ |
77.9 мм |
Вышеуказанная длина антенны составляет 1/4 волны. Есть также в продаже готовые антенны нужной длины.
Советы:
Подключение развязывающего конденсатора
Если у вас плохой прием или переданные данные не доходят до адресата, попробуйте добавить развязывающий конденсатор в 4.7 — 47μF (точный размер обычно не имеет значения) между 3.3В и GND как можно ближе к передатчику.
Конденсатор |
Радио |
Коментарии |
— пин |
GND |
Чёрный провод радио |
+ пин |
3.3V |
Красный провод радио |
Сторона с отметкой «<- <-» должна быть подключена к GND
Подключение регулятора напряжения
ПРИМЕЧАНИЕ. Если вы используете мини-версию Arduino Pro Mini 5V (которой нет регулируемого выхода на 3,3 В), вам нужно будет подключить регулятор 5V-> 3,3 В между Arduino и Radio.
Arduino |
Регулятор |
Радио |
5V |
Vin |
|
|
Vout |
VCC |
отсюда