MySensors - Подключение радио
02:17Приемопередатчик 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:
1
2
|
#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 | Антенна |
Для вышеуказанного подключения необходимо использовать следующие строки:
1
2
3
4
5
6
7
8
|
#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 и т. д.):
1
|
#define MY_RADIO_RFM69 // Define for using RFM69 radio
|
И если вам нужна расширенная конфигурация, вам нужно добавить следующие определения:
1
2
3
4
5
6
|
#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 волны. Есть также в продаже готовые антенны нужной длины.
Советы:
- Прямой провод будет работать лучше для всего диапазона и чувствительности.
- Для устройства с ограниченным пространством, вы можете намотать антенну. Конечно, это ухудшит ваш диапазон, но он по-прежнему будет приличный и конкурентоспособный. Уже было проверено, что подойдёт для вашего случая. Катушка будет работать лучше, если следовать некоторым правилам 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 | Красный провод радио |
Сторона с отметкой «<- <-» должна быть подключена к GND
Подключение регулятора напряжения
ПРИМЕЧАНИЕ. Если вы используете мини-версию Arduino Pro Mini 5V (которой нет регулируемого выхода на 3,3 В), вам нужно будет подключить регулятор 5V-> 3,3 В между Arduino и Radio.
Arduino | Регулятор | Радио |
5V | Vin | |
Vout | VCC |