Хм, и в правду ) значит через регистры можно долезть =)В примерах стартовый кож есть. там выводятся 2 строки которые надо покопать:
RX_ADDR_P0-1 = 0xe8e8f0f0e1 0xe8e8f0f0a2
RX_ADDR_P2-5 = 0xa2 0xc4 0xc5 0xc6
их выводит функция
radio.printDetails();
Хм, и в правду ) значит через регистры можно долезть =)В примерах стартовый кож есть. там выводятся 2 строки которые надо покопать:
RX_ADDR_P0-1 = 0xe8e8f0f0e1 0xe8e8f0f0a2
RX_ADDR_P2-5 = 0xa2 0xc4 0xc5 0xc6
их выводит функция
radio.printDetails();
по-моему. это и без инструкции очевидноТак это в инструкции есть же, что если несколько модулей связываются по одной трубе, то авто аск криво работает
@b707_2,Так это в инструкции есть же, что если несколько модулей связываются по одной трубе, то авто аск криво работает
по-моему я вам об этом говорил еще месяц назад на амперке... когда вы только принцип организации сети выбирали
это не так. Уже сам режим автоАск подразумевает, что у вас свяь двухсторонняяUPD:
Так ведь приемник у меня на трубе один, это база
Да, на амперке сидел)по-моему я вам об этом говорил еще месяц назад на амперке... когда вы только принцип организации сети выбирали
это не так. Уже сам режим автоАск подразумевает, что у вас свяь двухсторонняя
Если у вашего питания 5в и 3в земля НЕ общая то могут быть такие приколы, а в остальном должно работать. Если у вас земля не общая, соедините еёРебят, по теме NRF24L01
Купил себе 2 таких с антенкой
Сижу эксперименирую и столкнулся с одним интересным глюком
Взял для примера скетч Гайвера, где передатчик наматывает counter и отправляет его на приёмник, а с того, в свою очередь, в мониторе порта смотрю на эти "растущие" циферки)
И всё было вроде хорошо, меня радовало, что понемногу начинаю понимать принцип работы т.к. с радио модулями работаю в первый раз, но стоило мне подключить их к разным источникам питания - всё
Передатчик вроде передаёт, диод мигает (поставил паузу перед каждой отправкой 1 сек), а вот в мониторе порта приёмника ничего
Кто-нибудь сталкивался с подобной ситуацией?
Дело в том, что мне их нужно использовать на приличном расстоянии, для проекта одного и общая земля там просто физически нереализуемаЕсли у вашего питания 5в и 3в земля НЕ общая то могут быть такие приколы, а в остальном должно работать. Если у вас земля не общая, соедините её
Есть две ардуинки нано, к каждой прицеплен NRF24L01 с антенной, на одну арду залит скетч TX, на другую RX соответственноне совсем понятно. у тебя приемник+ардуино и передатчик+ардуино вообще не должны никак быть связаны проводами, только по эфиру. А вот у каждой пары обязательно должна быть общая земля.
Из советов. уменьшить мощность на минимум. Если питание на ахти, то при максимальной может глючить.
Есть сдвиги...не совсем понятно. у тебя приемник+ардуино и передатчик+ардуино вообще не должны никак быть связаны проводами, только по эфиру. А вот у каждой пары обязательно должна быть общая земля.
Из советов. уменьшить мощность на минимум. Если питание на ахти, то при максимальной может глючить.

radio.setPALevel (RF24_PA_MAX);
radio.setDataRate (RF24_1MBPS);
А теперь картина вообще интересная...не совсем понятно. у тебя приемник+ардуино и передатчик+ардуино вообще не должны никак быть связаны проводами, только по эфиру. А вот у каждой пары обязательно должна быть общая земля.
Из советов. уменьшить мощность на минимум. Если питание на ахти, то при максимальной может глючить.
radio.setPALevel (RF24_PA_MAX);
radio.setDataRate (RF24_2MBPS);
Устройство наверное много потребляет при максимальной скорости и мощности и ПК решает отключить такого мощного потребителяА теперь картина вообще интересная...
Сделал так на обоих и теперь на разных источниках питания работаетC++:radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_2MBPS);
Это как бы и эврика и проблема одновременно т.к. в перспективе мне нужно будет использовать их на дальних дистанциях, чего не реализуешь при 2Mbps, а когда сделал 250Kbps на обоих поведение было вообще непонятно и необъяснимо:
Приёмник в USB со включённым монитором порта и как только я включаю передатчик, на ПК, с интервалом примерно 5-7 сек, система воспроизводит звук отключения устройства, будто я отключаю приёмник![]()
Да также можете попробовать отключить пакет об успешной передачи. Отключается и на передатчике и на приёмнике.А теперь картина вообще интересная...
Сделал так на обоих и теперь на разных источниках питания работаетC++:radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_2MBPS);
Это как бы и эврика и проблема одновременно т.к. в перспективе мне нужно будет использовать их на дальних дистанциях, чего не реализуешь при 2Mbps, а когда сделал 250Kbps на обоих поведение было вообще непонятно и необъяснимо:
Приёмник в USB со включённым монитором порта и как только я включаю передатчик, на ПК, с интервалом примерно 5-7 сек, система воспроизводит звук отключения устройства, будто я отключаю приёмник![]()
radio.setAutoAck(false);
Попробую, спасибоДа также можете попробовать отключить пакет об успешной передачи. Отключается и на передатчике и на приёмнике.
Отключается по-моему командойC++:radio.setAutoAck(false);
radio.setPALevel (RF24_PA_MIN);
radio.setDataRate (RF24_250KBPS);
radio.setPALevel (RF24_PA_MAX);
radio.setDataRate (RF24_250KBPS);
AutoAck не работает на режиме RF24_250KBPS, только 1 или 2 мбит
а вообще надо смотреть код на всякий.
#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++;
}
}
#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);
}
}
По моему Гайвер говорил что и на приёмнике и передатчике должны быть не только скорость одинаковая но и мощность но это не точно) и autoack на 250кбтс у меня работало, тоесть если я отключал приёмник то передатчик это понимал, если заново включал то понимал что он включилсяЭто код на 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-ках проверил - оригиналы оба
Ну ранее так и было и скорость и мощность одинаковая, только приёмник начал отваливаться с USBПо моему Гайвер говорил что и на приёмнике и передатчике должны быть не только скорость одинаковая но и мощность но это не точно) и autoack на 250кбтс у меня работало, тоесть если я отключал приёмник то передатчик это понимал, если заново включал то понимал что он включился