Вопросы по NRF24L01

Evgeniy2020

✩✩✩✩✩✩✩
12 Июл 2020
91
0
В примерах стартовый кож есть. там выводятся 2 строки которые надо покопать:
RX_ADDR_P0-1 = 0xe8e8f0f0e1 0xe8e8f0f0a2
RX_ADDR_P2-5 = 0xa2 0xc4 0xc5 0xc6
их выводит функция
radio.printDetails();
Хм, и в правду ) значит через регистры можно долезть =)
 

Evgeniy2020

✩✩✩✩✩✩✩
12 Июл 2020
91
0
УРА!!!!!!!!!!!!!!
Заработало ) вообщем отключить autoAck и все заработало !
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,159
1,267
Москва
Так это в инструкции есть же, что если несколько модулей связываются по одной трубе, то авто аск криво работает
 

b707_2

★★✩✩✩✩✩
22 Июл 2020
182
51
Так это в инструкции есть же, что если несколько модулей связываются по одной трубе, то авто аск криво работает
по-моему. это и без инструкции очевидно :) если на одной трубе более двух участников. то автоАск до всех доходить не будет...
 

Evgeniy2020

✩✩✩✩✩✩✩
12 Июл 2020
91
0

Старик Похабыч

★★★★★★★
14 Авг 2019
4,159
1,267
Москва
так я даже и не думал, что у тебя эта ситуация :)
Да, приемник непонятно кому будет отсылать подтверждения. Надо отключать. У айардуинщиков про это написано (кажется у них)
 

Evgeniy2020

✩✩✩✩✩✩✩
12 Июл 2020
91
0
Теперь ясно) ну буду дальше пилить:)
Всем еще раз спасибо!
 

b707_2

★★✩✩✩✩✩
22 Июл 2020
182
51
@b707_2,
Так чего ж молчали :LOL:
по-моему я вам об этом говорил еще месяц назад на амперке... когда вы только принцип организации сети выбирали
UPD:
Так ведь приемник у меня на трубе один, это база
это не так. Уже сам режим автоАск подразумевает, что у вас свяь двухсторонняя
 

Evgeniy2020

✩✩✩✩✩✩✩
12 Июл 2020
91
0
по-моему я вам об этом говорил еще месяц назад на амперке... когда вы только принцип организации сети выбирали

это не так. Уже сам режим автоАск подразумевает, что у вас свяь двухсторонняя
Да, на амперке сидел)
Возможно упустил из виду.
Еще раз спасибо
 

Matadon

✩✩✩✩✩✩✩
6 Окт 2019
25
0
Ребят, по теме NRF24L01
Купил себе 2 таких с антенкой
Сижу эксперименирую и столкнулся с одним интересным глюком
Взял для примера скетч Гайвера, где передатчик наматывает counter и отправляет его на приёмник, а с того, в свою очередь, в мониторе порта смотрю на эти "растущие" циферки)
И всё было вроде хорошо, меня радовало, что понемногу начинаю понимать принцип работы т.к. с радио модулями работаю в первый раз, но стоило мне подключить их к разным источникам питания - всё
Передатчик вроде передаёт, диод мигает (поставил паузу перед каждой отправкой 1 сек), а вот в мониторе порта приёмника ничего
Кто-нибудь сталкивался с подобной ситуацией?
 

Evgeniy2020

✩✩✩✩✩✩✩
12 Июл 2020
91
0
Ребят, по теме NRF24L01
Купил себе 2 таких с антенкой
Сижу эксперименирую и столкнулся с одним интересным глюком
Взял для примера скетч Гайвера, где передатчик наматывает counter и отправляет его на приёмник, а с того, в свою очередь, в мониторе порта смотрю на эти "растущие" циферки)
И всё было вроде хорошо, меня радовало, что понемногу начинаю понимать принцип работы т.к. с радио модулями работаю в первый раз, но стоило мне подключить их к разным источникам питания - всё
Передатчик вроде передаёт, диод мигает (поставил паузу перед каждой отправкой 1 сек), а вот в мониторе порта приёмника ничего
Кто-нибудь сталкивался с подобной ситуацией?
Если у вашего питания 5в и 3в земля НЕ общая то могут быть такие приколы, а в остальном должно работать. Если у вас земля не общая, соедините её
 

Matadon

✩✩✩✩✩✩✩
6 Окт 2019
25
0
Если у вашего питания 5в и 3в земля НЕ общая то могут быть такие приколы, а в остальном должно работать. Если у вас земля не общая, соедините её
Дело в том, что мне их нужно использовать на приличном расстоянии, для проекта одного и общая земля там просто физически нереализуема
И оба от 3.3v через адаптер работают
НО через джамперы, хотя и с теми на общем питании работало, а на разных источниках - нет
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,159
1,267
Москва
не совсем понятно. у тебя приемник+ардуино и передатчик+ардуино вообще не должны никак быть связаны проводами, только по эфиру. А вот у каждой пары обязательно должна быть общая земля.

Из советов. уменьшить мощность на минимум. Если питание на ахти, то при максимальной может глючить.
 

Matadon

✩✩✩✩✩✩✩
6 Окт 2019
25
0
не совсем понятно. у тебя приемник+ардуино и передатчик+ардуино вообще не должны никак быть связаны проводами, только по эфиру. А вот у каждой пары обязательно должна быть общая земля.

Из советов. уменьшить мощность на минимум. Если питание на ахти, то при максимальной может глючить.
Есть две ардуинки нано, к каждой прицеплен NRF24L01 с антенной, на одну арду залит скетч TX, на другую RX соответственно
Они расположены в одной комнате (расстояние менее 2 м)
Когда подключаю каждую в USB одного ПК - работают
Как только подключаю TX "дуэт" к БП, а RX "дуэт" оставляю в USB для монитора порта - всё, приём не идёт, но на TX стороне ежесекундно мигает светодиод т.е. отправка идёт

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

Matadon

✩✩✩✩✩✩✩
6 Окт 2019
25
0
не совсем понятно. у тебя приемник+ардуино и передатчик+ардуино вообще не должны никак быть связаны проводами, только по эфиру. А вот у каждой пары обязательно должна быть общая земля.

Из советов. уменьшить мощность на минимум. Если питание на ахти, то при максимальной может глючить.
Есть сдвиги...

1600468528240.png

Что-то начал ловить, но пропускает
Хотя я ничего не менял пока
Это при:
C++:
  radio.setPALevel (RF24_PA_MAX);
  radio.setDataRate (RF24_1MBPS);
 
Изменено:

Matadon

✩✩✩✩✩✩✩
6 Окт 2019
25
0
не совсем понятно. у тебя приемник+ардуино и передатчик+ардуино вообще не должны никак быть связаны проводами, только по эфиру. А вот у каждой пары обязательно должна быть общая земля.

Из советов. уменьшить мощность на минимум. Если питание на ахти, то при максимальной может глючить.
А теперь картина вообще интересная...
C++:
  radio.setPALevel (RF24_PA_MAX);
  radio.setDataRate (RF24_2MBPS);
Сделал так на обоих и теперь на разных источниках питания работает
Это как бы и эврика и проблема одновременно т.к. в перспективе мне нужно будет использовать их на дальних дистанциях, чего не реализуешь при 2Mbps, а когда сделал 250Kbps на обоих поведение было вообще непонятно и необъяснимо:
Приёмник в USB со включённым монитором порта и как только я включаю передатчик, на ПК, с интервалом примерно 5-7 сек, система воспроизводит звук отключения устройства, будто я отключаю приёмник o_O
 

Evgeniy2020

✩✩✩✩✩✩✩
12 Июл 2020
91
0
А теперь картина вообще интересная...
C++:
  radio.setPALevel (RF24_PA_MAX);
  radio.setDataRate (RF24_2MBPS);
Сделал так на обоих и теперь на разных источниках питания работает
Это как бы и эврика и проблема одновременно т.к. в перспективе мне нужно будет использовать их на дальних дистанциях, чего не реализуешь при 2Mbps, а когда сделал 250Kbps на обоих поведение было вообще непонятно и необъяснимо:
Приёмник в USB со включённым монитором порта и как только я включаю передатчик, на ПК, с интервалом примерно 5-7 сек, система воспроизводит звук отключения устройства, будто я отключаю приёмник o_O
Устройство наверное много потребляет при максимальной скорости и мощности и ПК решает отключить такого мощного потребителя
Ещё для самоуспокоения можно намотать провод на антену)
 

Evgeniy2020

✩✩✩✩✩✩✩
12 Июл 2020
91
0
А теперь картина вообще интересная...
C++:
  radio.setPALevel (RF24_PA_MAX);
  radio.setDataRate (RF24_2MBPS);
Сделал так на обоих и теперь на разных источниках питания работает
Это как бы и эврика и проблема одновременно т.к. в перспективе мне нужно будет использовать их на дальних дистанциях, чего не реализуешь при 2Mbps, а когда сделал 250Kbps на обоих поведение было вообще непонятно и необъяснимо:
Приёмник в USB со включённым монитором порта и как только я включаю передатчик, на ПК, с интервалом примерно 5-7 сек, система воспроизводит звук отключения устройства, будто я отключаю приёмник o_O
Да также можете попробовать отключить пакет об успешной передачи. Отключается и на передатчике и на приёмнике.
Отключается по-моему командой
C++:
radio.setAutoAck(false);
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,159
1,267
Москва
Еще заметил у себя во время тестов странную особенность. Иногда, при подключении на макетках, связка сначала не работает, а потом КАК ЗАРАБОТАЕТ, как будто прогрелась. Но это скорее всего из за соединений. Потому как перенеся на печатную плату такая фигня отпала. В связке 2-х NRF самое сложное понять в какой проблема - связок 2, скетчей 2. Поэтому изначально надо тестировать на 100% рабоичх скетчах
 

Matadon

✩✩✩✩✩✩✩
6 Окт 2019
25
0
Да также можете попробовать отключить пакет об успешной передачи. Отключается и на передатчике и на приёмнике.
Отключается по-моему командой
C++:
radio.setAutoAck(false);
Попробую, спасибо
Есть новые результаты наблюдений

На приёмнике вот так:
C++:
  radio.setPALevel (RF24_PA_MIN);
  radio.setDataRate (RF24_250KBPS);
На передатчике вот так:
C++:
  radio.setPALevel (RF24_PA_MAX);
  radio.setDataRate (RF24_250KBPS);
Включаю сперва приёмник и открываю монитор порта
Затем, как только включаю передатчик, успевает прийти первое значение counter'а в виде строки "Recieved: 0" и всё, дальше глухо. При чём если я нажимаю на приёмнике, именно на ардуинке, RESET кнопку, повторяется та же картина - залетает первое значение на приёмник в виде той же строки, а дальше молчит
 

Matadon

✩✩✩✩✩✩✩
6 Окт 2019
25
0
AutoAck не работает на режиме RF24_250KBPS, только 1 или 2 мбит
а вообще надо смотреть код на всякий.
Это код на TX:
#include <Arduino.h>
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

RF24 radio(9,10);

byte address[][6] = {"1Node","2Node","3Node","4Node","5Node","6Node"};

byte counter;
uint64_t myTimer;

void setup(){
  Serial.begin(9600);
  radio.begin();

  //radio.setAutoAck(1);
  radio.setRetries(0, 15);
  radio.enableAckPayload();
  radio.setPayloadSize(32);

  radio.openWritingPipe(address[0]);
  radio.setChannel(0x60);

  radio.setPALevel (RF24_PA_MAX);
  radio.setDataRate (RF24_250KBPS);

  radio.powerUp();
  radio.stopListening();
}

void loop(void) {
  if (millis() - myTimer >= 100) {
    myTimer = millis();
    radio.write(&counter, sizeof(counter));
    counter++;
  }
}
А это на RX:
#include <Arduino.h>
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

RF24 radio(9,10);

byte address[][6] = {"1Node","2Node","3Node","4Node","5Node","6Node"};

void setup(){
  Serial.begin(9600);
  radio.begin();
 
  radio.setAutoAck(1); //Для приёмника включил, иначе не приходит ничего
  radio.setRetries(0, 15);
  radio.enableAckPayload();
  radio.setPayloadSize(32);

  radio.openReadingPipe(1, address[0]);
  radio.setChannel(0x60);
  radio.setPALevel (RF24_PA_MIN);
  radio.setDataRate (RF24_250KBPS);

  radio.powerUp();
  radio.startListening();
}

void loop(void) {
  byte pipeNo, gotByte;
  while (radio.available(&pipeNo)) {
    radio.read(&gotByte, sizeof(gotByte));
    Serial.print("Recieved: "); Serial.println(gotByte);
  }
}
Вроде всё норм
Я даже чипы на NRF-ках проверил - оригиналы оба
 

Evgeniy2020

✩✩✩✩✩✩✩
12 Июл 2020
91
0
Это код на TX:
#include <Arduino.h>
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

RF24 radio(9,10);

byte address[][6] = {"1Node","2Node","3Node","4Node","5Node","6Node"};

byte counter;
uint64_t myTimer;

void setup(){
  Serial.begin(9600);
  radio.begin();

  //radio.setAutoAck(1);
  radio.setRetries(0, 15);
  radio.enableAckPayload();
  radio.setPayloadSize(32);

  radio.openWritingPipe(address[0]);
  radio.setChannel(0x60);

  radio.setPALevel (RF24_PA_MAX);
  radio.setDataRate (RF24_250KBPS);

  radio.powerUp();
  radio.stopListening();
}

void loop(void) {
  if (millis() - myTimer >= 100) {
    myTimer = millis();
    radio.write(&counter, sizeof(counter));
    counter++;
  }
}
А это на RX:
#include <Arduino.h>
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

RF24 radio(9,10);

byte address[][6] = {"1Node","2Node","3Node","4Node","5Node","6Node"};

void setup(){
  Serial.begin(9600);
  radio.begin();

  radio.setAutoAck(1); //Для приёмника включил, иначе не приходит ничего
  radio.setRetries(0, 15);
  radio.enableAckPayload();
  radio.setPayloadSize(32);

  radio.openReadingPipe(1, address[0]);
  radio.setChannel(0x60);
  radio.setPALevel (RF24_PA_MIN);
  radio.setDataRate (RF24_250KBPS);

  radio.powerUp();
  radio.startListening();
}

void loop(void) {
  byte pipeNo, gotByte;
  while (radio.available(&pipeNo)) {
    radio.read(&gotByte, sizeof(gotByte));
    Serial.print("Recieved: "); Serial.println(gotByte);
  }
}
Вроде всё норм
Я даже чипы на NRF-ках проверил - оригиналы оба
По моему Гайвер говорил что и на приёмнике и передатчике должны быть не только скорость одинаковая но и мощность но это не точно) и autoack на 250кбтс у меня работало, тоесть если я отключал приёмник то передатчик это понимал, если заново включал то понимал что он включился
 

Matadon

✩✩✩✩✩✩✩
6 Окт 2019
25
0
По моему Гайвер говорил что и на приёмнике и передатчике должны быть не только скорость одинаковая но и мощность но это не точно) и autoack на 250кбтс у меня работало, тоесть если я отключал приёмник то передатчик это понимал, если заново включал то понимал что он включился
Ну ранее так и было и скорость и мощность одинаковая, только приёмник начал отваливаться с USB