Есть тут кто-нибудь, кто оживил nrf24l01+pa+lna? Да, старая беда :-)

mu_ssina
Offline
Зарегистрирован: 30.08.2013

В общем друзья. Полнедели убил пытаюсь оживить это... г-но :0). Может руки кривые-хз.

Конфигурация такая 2 радиомодуля. Один посажен на arduino ethernet, второй - на arduino mega 2560.

Пытаюсь заставить их общаться между собой. Пока на  канонических ардуинах - потом перекину на esp32.

 

В общем, как только не пытался я оживить это добро:

- самая новая прошивка RF24;

- загрузка тестового скетча, который выводит что библиотека опознала модуль (старые библиотеки не узнавали, писали "неопознанный модуль", т.к. модуль произведён позднее, чем написана библиотека);

- напайка конденсатора для сглаживания пульсаций питания (100 мкф, электролит);

- установка родного стабилизатора питания;

- запитывания от внешнего источника питания, не от ардуины (2 аккума 18650, последовательно);

- обмотка малярным скотчем, а поверх него - фольгой (для экранирования, как советовали в одном мануале);

- 100500 раз проверка распиновки ардуин и правильности соединений;

- установка вместо этих модулей- совершенно других (проверка, может эти сгоревшие) - у меня их много, ажно 10 штук с дуру взял:-)))

НИ-ЧЕ-ГО. НУЛЬ. Не хотят общаться. Я уже хз просто :-))))

 

Есть тут те, заставил их жить? Может поделитесь рецептом?

mu_ssina
Offline
Зарегистрирован: 30.08.2013

Для чего вообще мне это надо: буду делать радиоуправляемые самолёты - из потолочки.

Так как в конечном варианте у меня это всё будет посажено на esp32, а не на ардуины - даже нагуглил вот такой рецепт.

Вкратце: врубаем WiFi Long Range (WiFi LR) на esp32, за счёт падения скорости передачи. Человек в ссылке выжал 240 метров -безо всяких навесных антенн и прочего: https://blog.honzamrazek.cz/2017/08/testing-the-wifi-range-of-esp32/ 

Проблема только в том, что его решение - это использование API функции от esp-idf  (собственная среда разработки от espressif). 

То есть, чтобы эту хрень врубить, нужно или прогать прямо в этой IDE или же (там есть такая опция, но я её еще не пробовал) - интегрировать эту esp-idf в Arduino IDE, как модуль. И тогда станут доступны все API функции от espressif. 

Может быть есть без этого гемора способ включить WiFi LR? Какая то библиотека родная для Arduino IDE...Но опять же: ну включим мы это. Ну ок. Ну будет 240 метров или около того. А на nrf-ках километр...То то и оно...

b707
Offline
Зарегистрирован: 26.05.2017

а в чем там "старая проблема"? Вроде в инете десятки примеров работы этих модулей... Нужно просто заставить модули видеть друг друга?

rkit
Offline
Зарегистрирован: 23.11.2016

mu_ssina пишет:

 

интегрировать эту esp-idf в Arduino IDE, как модуль. И тогда станут доступны все API функции от espressif. 

Оно там уже есть, чего ты порешь

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

совершенно бесполезная трата времени, когда простенький флайскай из коробки даёт под километр при этом имея обратный канал телеметрии, и это при диверсите

mu_ssina
Offline
Зарегистрирован: 30.08.2013

тут просто у меня 2 цели: просто управление как таковое не самоцель. Цель - запрограммировать и управлять. Будем делать со школьниками эти самолёты. Поэтому мне важно не просто "поиграться любой ценой" - но и запрогать это всё. 

Буду дальше разбираться...Я так и думал, что с учётом того, что я уже проделал - мало кто сможет мне подсказать что то дельное. Буду дальше возиться...

И заодно: может кто подскажет что то типа nrf -такое же дальнобойное и недорогое? LoRa хочу попробовать...

b707
Offline
Зарегистрирован: 26.05.2017

Дальнобойное и недорогое - HC-12
А с нрфками все просто - ищете в инете примеры и пробуете все подряд - 10й или 20й подойдет

rkit
Offline
Зарегистрирован: 23.11.2016

Сопли свои выкинь, и собери как положено, ну елки-палки.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

https://disk.yandex.ru/d/rTxeB5rQH5aqMA

Попробуй, с этой либой у меня проблем не было

mu_ssina
Offline
Зарегистрирован: 30.08.2013

Спасибо, попробую и отпишусь!

Green
Offline
Зарегистрирован: 01.10.2015

Как бы, проблема больше не в библиотеках (мне нравилась tmrh), а в китайских модулях. На https://forum.amperka.ru/threads/nrf24l01-побеждаем-модуль.3205/ большая тема по этим модулям. А вообще, уже ранее сказали в #6.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Green пишет:

Как бы, проблема больше не в библиотеках (мне нравилась tmrh), а в китайских модулях. На https://forum.amperka.ru/threads/nrf24l01-побеждаем-модуль.3205/ большая тема по этим модулям. А вообще, уже ранее сказали в #6.

там нормальная антенна потянет на 1т.р. (с алиэкспресса), посмотрел свои модули на мавлинке они идут 430, 800 и 900 Mhz и ужаснулся, раньше брал в районе 1т.р в комплекте  с антеннами и переходниками за пару, а сейчас предлагают за 6 т.р.

mu_ssina
Offline
Зарегистрирован: 30.08.2013

В общем, завёл я это добро! Ура! :-)

Как решил: просто присоединил как оно будет в финальном варианте - каждый модуль к своей esp32 - т.е. пульт ДУ будет на esp и управляющая плата в самолёте - тоже на esp.

Подсоединил - и завелось моментально! Безо всяких бубнов! (правда обмотки фольгой не снимал, равно как и кондеры и стабилизатор родной). Какой то косяк с ардуинами...

Код приёмника и передатчика ниже. Библиотека официальная самая последняя с гитхаба RF24.

Передатчик:

/*
* Arduino Wireless Communication Tutorial
*     Example 1 - Transmitter Code
*                
* by Dejan Nedelkovski, www.HowToMechatronics.com
* 
* Library: TMRh20/RF24, https://github.com/tmrh20/RF24/
*/

#include <SPI.h>  // Подключаем библиотеку для работы с SPI-интерфейсом
#include <nRF24L01.h> // Подключаем файл конфигурации из библиотеки RF24
#include <RF24.h> // Подключаем библиотеку для работа для работы с модулем NRF24L01
#define PIN_POT A7  // Номер пина Arduino, к которому подключен потенциометр
#define PIN_CE  4  // Номер пина Arduino, к которому подключен вывод CE радиомодуля
#define PIN_CSN 5 // Номер пина Arduino, к которому подключен вывод CSN радиомодуля
RF24 radio(PIN_CE, PIN_CSN); // Создаём объект radio с указанием выводов CE и CSN


const byte address[6] = "00001";

void setup() {
  radio.begin();  // Инициализация модуля NRF24L01
  radio.setChannel(5); // Обмен данными будет вестись на пятом канале (2,405 ГГц)
  radio.setDataRate (RF24_1MBPS); // Скорость обмена данными 1 Мбит/сек
  radio.setPALevel(RF24_PA_HIGH); // Выбираем высокую мощность передатчика (-6dBm)
  radio.openWritingPipe(0x7878787878LL); // Открываем трубу с уникальным ID
}

void loop() {
  const char text[] = "Good";
  radio.write(&text, sizeof(text));
  delay(1000);
}

Приёмник:

/*
* Arduino Wireless Communication Tutorial
*       Example 1 - Receiver Code
*                
* by Dejan Nedelkovski, www.HowToMechatronics.com
* 
* Library: TMRh20/RF24, https://github.com/tmrh20/RF24/
*/

#include <SPI.h>  // Подключаем библиотеку для работы с SPI-интерфейсом
#include <nRF24L01.h> // Подключаем файл конфигурации из библиотеки RF24
#include <RF24.h> // Подключаем библиотеку для работа для работы с модулем NRF24L01
#define PIN_LED 3  // Номер пина Arduino, к которому подключен светодиод
#define PIN_CE  4  // Номер пина Arduino, к которому подключен вывод CE радиомодуля
#define PIN_CSN 5 // Номер пина Arduino, к которому подключен вывод CSN радиомодуля
RF24 radio(PIN_CE, PIN_CSN); // Создаём объект radio с указанием выводов CE и CSN

const byte address[6] = "00001";

void setup() {
  Serial.begin(115200);
  pinMode(PIN_LED, OUTPUT); // Настраиваем на выход пин светодиода
  radio.begin();  // Инициализация модуля NRF24L01
  radio.setChannel(5); // Обмен данными будет вестись на пятом канале (2,405 ГГц)
  radio.setDataRate (RF24_1MBPS); // Скорость обмена данными 1 Мбит/сек
  radio.setPALevel(RF24_PA_HIGH); // Выбираем высокую мощность передатчика (-6dBm)
  radio.openReadingPipe (1, 0x7878787878LL); // Открываем трубу ID передатчика
  radio.startListening(); // Начинаем прослушивать открываемую трубу
}

void loop() {
  if (radio.available()) {
    char text[4]="";
    radio.read(&text, sizeof(text));
    Serial.println(text);
  }
}