Проблема с nRF24l01

XanderEVG
Offline
Зарегистрирован: 06.10.2017

Здравствуйте. Приобрел 2  nRF24l01 и переходник для их питания. подключил одну к Nano, другой к про мини. у обоих модулей  CE - 8, CSN-9.

Залил в обе ардуино прошивку nrf_listen_air. оба модуля выводят инфу, выводят каналы, отображают занятые роутером  и свободные каналы.

Далее залил прошивку "время передачи TX-RX", естественно изменив CE и CSN на свои. выдало "Fail". При этом канал 0х60 был свободен, судя по nrf_listen_air. но на всякий случай изменил канал на 0.

Залил прошивку пингпонг из стандартных примеров библиотеки. та же история.

И наконец припаял сначала 4,7uF, затем 1000uF - не помогло.

 

Куда копать дальше или можно выкинуть эти модули?

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

Начните с простого. Создайте максимально простые скетчи приемника и передатчика, установите одну и ту же скорость, канал и трубу, подтверждение ответа выключите - и помотрите, будет ли что-то передаваться хотя бы когда модули лежат рядом. Раз у вас показываются параметры и шум в эфире - значит подключено все правильно и модули рабочие.

XanderEVG
Offline
Зарегистрирован: 06.10.2017

я даже не знаю куда уж проще чем RX-TX_time. там отсылается 1 байт всего. Возможно не хватает каких то настроек, на одном модуле по дефолту так, а на другом сяк...

это меня и удивляет - читать эфир может а отсылать(или читать мою передачу) - нет

Pyotr
Offline
Зарегистрирован: 12.03.2014

Где-то читал, что на нулевом канале модули могут не работать.
Недавно было - собрал на макетке на атмега8 проводами 10 см до нрф-ки, передача работает без доп. кондеров. Спаял всё на плату, проводники до 2 см, передача пропала. Нет ни вблизи, ни вдалеке. Дотрагиваюсь до антенны передатчика - всё пошло. Припаивал кондеры керамику на 0.1 мкФ, электролит на 47-100 мкФ, тантал на 100 мкФ. Ничего. Всё убрал, припаял керамику на 1мкФ - всё заработало. 

XanderEVG
Offline
Зарегистрирован: 06.10.2017

Понял, попробую еще пару каналов из всего диапазона.

антену трогал, не влияет, короче помучаю еще...

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

Pyotr пишет:

Где-то читал, что на нулевом канале модули могут не работать.
Недавно было - собрал на макетке на атмега8 проводами 10 см до нрф-ки, передача работает без доп. кондеров. Спаял всё на плату, проводники до 2 см, передача пропала. Нет ни вблизи, ни вдалеке. Дотрагиваюсь до антенны передатчика - всё пошло. Припаивал кондеры керамику на 0.1 мкФ, электролит на 47-100 мкФ, тантал на 100 мкФ. Ничего. Всё убрал, припаял керамику на 1мкФ - всё заработало. 

да вообще эти китайские NRF - вещь в себе. У кого-то сразу заводится, у кого-то с кондерами, у одного на нулевом канале не пашет, у другого как раз лучше всего на нулевом...

У меня, к примеру, модули при тестах из эфира не ловят ничего, при сканировании одни нули на всех каналах, при этом связываются и отсылают данные сразу. при минимальной настройке.

XanderEVG
Offline
Зарегистрирован: 06.10.2017

Проблема решена. 

Победил модуль намотав на один из них 3 витка жилой из UTP кабеля. намотав 5 витков увеличилась скорость доставки. Второй можуль работает без намотки, но намотав и на него еще чуть чуть повысилась скорость передачи и стабильность.

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

XanderEVG пишет:

Проблема решена. 

Победил модуль намотав на один из них 3 витка жилой из UTP кабеля. намотав 5 витков увеличилась скорость доставки. Второй можуль работает без намотки, но намотав и на него еще чуть чуть повысилась скорость передачи и стабильность.

хм, интересно... А можно подробнее - куда именно наматывали, к чему намотку подключали. Лучше с фото

XanderEVG
Offline
Зарегистрирован: 06.10.2017

намотал как попало и концы между собой скрутил, никуда их не подключал. 

вот так:

 

Появилась вторая проблема: Передатчик, если подключен пин прерывания и чтение ответа происходит в прерывании, после этого прерывания зависает. В прерывание первый раз заходит и все. дуп не крутится, прерывания не возникают.

attachInterrupt(0, check_radio, FALLING);
  
void check_radio(void)
{
  
  bool tx,fail,rx;
  radio.whatHappened(tx,fail,rx);

  if ( tx )
  {
      //Serial.println("Sent");
  }

  
  if ( fail )
  {
      Serial.println("Failed");
  }

  if ( rx )
  {
      unsigned long got_time;
      radio.read( &got_time, sizeof(got_time) );
  }
}

и третья проблема - как редактировать регистр GICR. нужно запретить прерывания только от INT0, а deattach почему то срабатывает не сразу и прерывание выполняется 2-3 раза от дребезга. т е мне нужно войти в прерывание, сразу и быстро одной командой(а не медлительной ардуиновской функцией) запретить  эти прерывания

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Мне кажется, Вы слишком много хотите от прерывания.

Уберите из прерывания печать и читайте в прерывании по одному байту, а не весь пакет сразу.

Прерывание должно только выставлять флаги (и читать уже пришедшие (!) байты), а все остальное - в основном цикле.

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Подскажите. Есть много nRF2401L+ они работают если делать тест каждой. питание надежное 3.3 + кондер как обычно, но почему то идет зависание если пробую отправлять с них. с любой так что думаю что дело в программе( соединение тоже норм. Крч мозг сломал в чем дело( Даже когда nRF не подключен то все равно при отправки зависание( библиотек не менял. Вроде все работало на ней. не знаю в чем может быть причина?

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

выключить подтверждение приема

 radio.setAutoAck(false);

 

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

А как это влияет  на передачу? Попробую щас. Я передаю массив. И самое интересно. что даже без nRF код виснет. Ардуино повисает и или перезагружается или ниче не происходит(

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Не помогает. Т.е. даже без самой nRF подключеной код ребутит дуню. Именно на моменте отправки массива. Без  radio.write(&Protocol, sizeof(Protocol)); все норм а с функцией отправки все виснит и потом видно как дуня перезагружается и все по новой в цикле. В чем может быть беда? Какие идеи? Модули норм дуни тоже разные пробывал все норм. С подключением и питанием как я понял это не связано(( так как даже без модуля виснет

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

значит ищите проблему в вашем секретном коде

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Он элементарен. Вот: 

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>                                      

const uint64_t pipe = 0xF0F1F2F3F4LL;
RF24 radio(9, 10); // CE, CSN

int B=11;  

void setup() {
  Serial.begin(9600);
  radio.begin();  
  delay(200);
  radio.setChannel(100); // канал (0-127)
  radio.setDataRate(RF24_1MBPS);     
  radio.setPALevel(RF24_PA_LOW);   
  radio.openWritingPipe(pipe); // открываем трубу на передачу.
  Serial.println("1");
}

void loop() {  
radio.write(&B, sizeof(B));
Serial.println("2");
delay(2000);
}

 

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Может библиотека. хотя я кочал уже разных кучу пробывал. Смысл такой что даже если я ничего в loop не делаю. Он у меня виснит еще на моменте запуска

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

избавтесь от delay

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Да делал)) сут ьв том что почему то даже при отключенной nRF виснет причем у меня что МК куча что и nRF и все они так себя ведут. Я даже ума не приложу что такое. МОжет из за IDE нового?

sashok88881
Offline
Зарегистрирован: 17.05.2018

как сделать что бы при обрыве связи между nrf24l01 моторчик отключался

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Единственным способом - слать сообщения непрерывно, пока моторчик должен работать.

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

ПРосто зашить в код прошивки проверку присланых пакетов. И поставить таймер отдельный в прошивке и по таймеру проверять был пакет проверочый или нет если нет то связи нет с базой грубо говоря и тогда отключать что надо.

sashok88881
Offline
Зарегистрирован: 17.05.2018

в этом и проблема я не умею прописывать скетч и в какую строку его вставлять.

 

sashok88881
Offline
Зарегистрирован: 17.05.2018
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
 
// Необходимо установить библиотеку для радиомодуля nRF24
#include <Servo.h>
#include <SPI.h>
#include "RF24.h"
Servo servo1;
Servo servo2;
 
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL; 
int msg[1]; 
int data; 
int pos;
int fspeed;           // движение в перед 
int bspeed;           // движение назад
const int in1 = 2;    // управление двигателем 1
const int in2 = 4;    // управление двигателем 1
const int ena = 5;    // ШИМ для пропорциональной скорости машинки
 
void setup()
{
  
  pinMode(in1, OUTPUT);      // подключаем к L298n
  pinMode(in2, OUTPUT);      // подключаем к L298n
  pinMode(ena, OUTPUT);      // подключаем к L298n
  
servo1.attach(6); 
servo2.attach(3); 
 
delay(50);
radio.begin();
radio.openReadingPipe(1,pipe); 
radio.startListening();
 
}
 
void loop()
{
  if (radio.available())radio.read(msg, 1);
  if (msg[0] <63 && msg[0] >-1)data = msg[0], pos = map(data, 0, 62, 10, 50),servo1.write(pos);
  if (msg[0] <=127 && msg[0] >=64)data = msg[0], pos = map(data, 64, 127, 0, 80),servo2.write(pos);
  
  if (msg[0] >=128 && msg[0] <=189)data = msg[0], bspeed = map(data, 255, 201, 0, 255), backward(bspeed);
  if (msg[0] >=201 && msg[0] <=255)data = msg[0], fspeed = map(data, 189, 128, 0, 255), forward(fspeed);
  if (msg[0] >190 && msg[0] <200)data = msg[0], stop();
}
 
void stop()
{
  
  analogWrite(ena, 0);
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
}
 
void forward(int fspeed)
{
  
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  analogWrite(ena, fspeed);
}
 
void backward(int bspeed)
{
  
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  analogWrite(ena, bspeed);
}
ToRcH2565
Offline
Зарегистрирован: 16.05.2015
sashok88881
Offline
Зарегистрирован: 17.05.2018

1) поставил на пульт МТ3608 выставил 11воль. и не работает. а от двух 18650 работает. 2) пульт работает только когда антенка сложана! в положение (прямо) страшно глючит или совсем не работает. но когда антену трогаешь то работает. что не так?

 

ToRcH2565
Offline
Зарегистрирован: 16.05.2015

sashok88881 пишет:

1) поставил на пульт МТ3608 выставил 11воль. и не работает. а от двух 18650 работает. 2) пульт работает только когда антенка сложана! в положение (прямо) страшно глючит или совсем не работает. но когда антену трогаешь то работает. что не так?

Потирая хрустальный шар -

1) ваше питание слишком "шумит".

2) Антена неправильной геометрии для этой длинны волны, ваше тело является лучшей антеной чем ваша "антена" в разложеном состоянии.

Извините за тавтологию =)

а вообще гадать что не так с антенной и антенным трактом без лабораторного оборудования - то еще удовольствие... =)

Allkonafft
Offline
Зарегистрирован: 17.06.2016

Всем привет! Не стал создавать новую тему. Нужна помощь, кто сталкивался с проблемой токого рода. 

Есть две Arduino nano.

Есть такие модули https://ru.aliexpress.com/item/Free-Shipping-NRF24L01-PA-LNA-Wireless-Module-with-Antenna-1000-Meters-Long-Distance-FZ0410-We-are/32810139818.html?spm=a2g0s.9042311.0.0.da1c33edIWwTT8 2 шт.

Такие модули https://ru.aliexpress.com/item/New-Socket-Adapter-plate-Board-for-8Pin-NRF24L01-Wireless-Transceive-module-51/32642877857.html?spm=a2g0v.10010108.1000013.1.70d54a861Nq8DY&scm=1007.13339.90158.0&scm_id=1007.13339.90158.0&scm-url=1007.13339.90158.0&pvid=7da67a70-344c-484c-a2a6-3484b3a12470&_t=pvid%3A7da67a70-344c-484c-a2a6-3484b3a12470%2Cscm-url%3A1007.13339.90158.0 2 шт.

Все спаяно, и соединения проверены.

При тесте обоих выдает:

Скетч из примера GettingStarted:

/*
* Getting Started example sketch for nRF24L01+ radios
* This is a very basic example of how to send data from one node to another
* Updated: Dec 2014 by TMRh20
*/

#include <SPI.h>
#include "RF24.h"

/****************** User Config ***************************/
/***      Set this radio as radio number 0 or 1         ***/
bool radioNumber = 0;

/* Hardware configuration: Set up nRF24L01 radio on SPI bus plus pins 7 & 8 */
RF24 radio(7,8);
/**********************************************************/

byte addresses[][6] = {"1Node","2Node"};

// Used to control whether this node is sending or receiving
bool role = 0;

void setup() {
  Serial.begin(115200);
  Serial.println(F("RF24/examples/GettingStarted"));
  Serial.println(F("*** PRESS 'T' to begin transmitting to the other node"));
  
  radio.begin();

  // Set the PA Level low to prevent power supply related issues since this is a
 // getting_started sketch, and the likelihood of close proximity of the devices. RF24_PA_MAX is default.
  radio.setPALevel(RF24_PA_LOW);
  
  // Open a writing and reading pipe on each radio, with opposite addresses
  if(radioNumber){
    radio.openWritingPipe(addresses[1]);
    radio.openReadingPipe(1,addresses[0]);
  }else{
    radio.openWritingPipe(addresses[0]);
    radio.openReadingPipe(1,addresses[1]);
  }
  
  // Start the radio listening for data
  radio.startListening();
}

void loop() {
  
  
/****************** Ping Out Role ***************************/  
if (role == 1)  {
    
    radio.stopListening();                                    // First, stop listening so we can talk.
    
    
    Serial.println(F("Now sending"));

    unsigned long time = micros();                             // Take the time, and send it.  This will block until complete
     if (!radio.write( &time, sizeof(unsigned long) )){
       Serial.println(F("failed"));
     }
        
    radio.startListening();                                    // Now, continue listening
    
    unsigned long started_waiting_at = micros();               // Set up a timeout period, get the current microseconds
    boolean timeout = false;                                   // Set up a variable to indicate if a response was received or not
    
    while ( ! radio.available() ){                             // While nothing is received
      if (micros() - started_waiting_at > 200000 ){            // If waited longer than 200ms, indicate timeout and exit while loop
          timeout = true;
          break;
      }      
    }
        
    if ( timeout ){                                             // Describe the results
        Serial.println(F("Failed, response timed out."));
    }else{
        unsigned long got_time;                                 // Grab the response, compare, and send to debugging spew
        radio.read( &got_time, sizeof(unsigned long) );
        unsigned long time = micros();
        
        // Spew it
        Serial.print(F("Sent "));
        Serial.print(time);
        Serial.print(F(", Got response "));
        Serial.print(got_time);
        Serial.print(F(", Round-trip delay "));
        Serial.print(time-got_time);
        Serial.println(F(" microseconds"));
    }

    // Try again 1s later
    delay(1000);
  }



/****************** Pong Back Role ***************************/

  if ( role == 0 )
  {
    unsigned long got_time;
    
    if( radio.available()){
                                                                    // Variable for the received timestamp
      while (radio.available()) {                                   // While there is data ready
        radio.read( &got_time, sizeof(unsigned long) );             // Get the payload
      }
     
      radio.stopListening();                                        // First, stop listening so we can talk   
      radio.write( &got_time, sizeof(unsigned long) );              // Send the final one back.      
      radio.startListening();                                       // Now, resume listening so we catch the next packets.     
      Serial.print(F("Sent response "));
      Serial.println(got_time);  
   }
 }




/****************** Change Roles via Serial Commands ***************************/

  if ( Serial.available() )
  {
    char c = toupper(Serial.read());
    if ( c == 'T' && role == 0 ){      
      Serial.println(F("*** CHANGING TO TRANSMIT ROLE -- PRESS 'R' TO SWITCH BACK"));
      role = 1;                  // Become the primary transmitter (ping out)
    
   }else
    if ( c == 'R' && role == 1 ){
      Serial.println(F("*** CHANGING TO RECEIVE ROLE -- PRESS 'T' TO SWITCH BACK"));      
       role = 0;                // Become the primary receiver (pong back)
       radio.startListening();
       
    }
  }


} // Loop

Далее заливаем в передатчик:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h> // https://github.com/maniacbug/RF24
 
  
const uint64_t pipe = 0xF0F1F2F3F4LL; // индитификатор передачи, "труба"
 
RF24 radio(9, 10); // CE, CSN
 

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

  radio.begin();
  delay(2);
  radio.setChannel(9); // канал (0-127)
    
      // скорость, RF24_250KBPS, RF24_1MBPS или RF24_2MBPS
      // RF24_250KBPS на nRF24L01 (без +) неработает.
      // меньше скорость, выше чувствительность приемника.
  radio.setDataRate(RF24_1MBPS); 
   
      // мощьность передатчика, RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_MED=-6dBM,
  radio.setPALevel(RF24_PA_HIGH);   

  radio.openWritingPipe(pipe); // открываем трубу на передачу.
} 


void loop()   
{
  
  int data = analogRead(0); // читаем значение
  
  radio.write(&data, sizeof(data)); // отправляем данные и указываем сколько байт пакет
  
  Serial.print("data: ");
  Serial.println(data);
 
} 

Заливаем в приемник:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h> // https://github.com/maniacbug/RF24

const uint64_t pipe = 0xF0F1F2F3F4LL; // индитификатор передачи, "труба"

RF24 radio(9, 10); // CE, CSN
  
void setup(){
  Serial.begin(9600);
  
  radio.begin();  
  delay(2);
  radio.setChannel(9); // канал (0-127)
  
      // скорость, RF24_250KBPS, RF24_1MBPS или RF24_2MBPS
      // RF24_250KBPS на nRF24L01 (без +) неработает.
      // меньше скорость, выше чувствительность приемника.
  radio.setDataRate(RF24_1MBPS);     
  
      // мощьность передатчика RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_MED=-6dBM,
  radio.setPALevel(RF24_PA_HIGH);   
    
  radio.openReadingPipe(1,pipe); // открываем первую трубу с индитификатором "pipe"
  radio.startListening(); // включаем приемник, начинаем слушать трубу
}
 
//  radio.stopListening(); // останавливает приём (нужно перед началом передачи) 


void loop()   
{  
  int data; 
  
  if (radio.available()){ // проверяем не пришло ли чего в буфер.
    radio.read(&data, sizeof(data)); // читаем данные, указываем сколько байт читать
    
    Serial.print("data: ");
    Serial.println(data); 
  } 
} 

И в мониторе порта передатчика начинается зависание, после отключения модуля NRF зависание прекращается. В мониторе порта приемника также происходит зависание, после отключения модуля NRF соответственно начинает появлятся data:0. Тоже самое происходит при подключении NRF от лабораторного блока питания.

Кто встречался с данной проблемой помогите пожалуйста, уже не знаю куда копать.

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Схему или фото соединения в студию. Те модули что вы показываете давольно много потребляют и самое интересное, ваш переходник питания им не поможет ибо нет гасителя ввиде конденсатора. я лично на них ставлю в любом случии от 40мкФ до 100мкФ достаточно для нормально работы. Т.е. при попытке отправить что то он повисает например. Второй вариант неправильное соединение. Надо начинать не с этого проверку модулей этих а со сканирования частоты там ест ьскетч. Если он работает то все подключено верно. Следовательно проблема в питании. У этих модулей две проблемы питание и не правильное соединение

Allkonafft
Offline
Зарегистрирован: 17.06.2016

Привет. Вот залил в обе ардуины, включена раздача по WI-FI. 

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Значит все соединено правильно! Проблема кроется в питании. Хоть оно и 3.3 НО! в моменты отправок модулями те модули что у вас могут кушать даже 100мА т.е. просадка идет а у вас на линии питания нет компенсирующего кондера. точнее есть они но они чисто для подавления мелких всплесков. А вот при нехватки питания он просто повисает сам и вешает ваш МК вот и все. Крч напаяйте на ножки + - кондер на микрофарад так 47 например и будет вам счастье и запитывайте ваш адаптер от 1А блока питания как минимум. И ещеземля должна быть общая у них с МК

Allkonafft
Offline
Зарегистрирован: 17.06.2016

Я запитывал от лаб. блока питания на 5А, земля общая, ладно сейчас попробую кондеры впаять, потом отпишусь. Я просто думал китайские модули со стабилизатором 3,3В, там на них есть кондеры, и везде где читал, пишут что их хватает. 

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

ну как вам такой мелкой керамики которая там стоит хватит?))) она там на пикофарады или нано фарады от сиолы чисто для компенсации мелочевки. их хвататет частенько но не всегда для обычных которые без усилителя. Так что пробуйте.

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

Мужики спасибо! Конденсатор на 47мФ помог!

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

=) Не за что!

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Крч думал про nRF знаю все но нет! Крч nRF2401+PL питанрие отбельное за глаза отфильтрованное! На компенсацию кондер есть 100мкФ. Суть такая она работает на прием без нареканий. А вот на отправку вешает цикл кристала. Не могу найти причину. думал непропай или по питанию как обычно но нет. Где еще можно глянуть или в чем может быт ьпричина? Может быть причина в самой плате? 

Jon2013
Offline
Зарегистрирован: 18.12.2013

У меня таже проблема. Передатчик виснет через 3-4 цикла обмена с приемником. 

Причем, все работало прекрасно целые сутки. Решил чуток изменить скетч и все....

Грешу на библиотеки. Потому как перед заливкой программы, с дуру, обновил библиотеки с автообновлением.

Там были и ISP и RF24. Попытка откатится на более ранние либы, не помогла, так как номера раб.библиотек не запоминал.

У кого модули хорошо между собой общаются, сообщите пожалуйста номера работчих версий ISP и RF24.

 

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

У меня проблема была аппаратная. Сомневаюсь я в библиотеках. Ибо сами порассуждай если в коде то один фиг раньше суток повиснет. Предлагаю решение включить просто Watch dog на мк и все))) или посмотреть в сторону питания. Какое у вас питание не может просадку давать?

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

А у меня была проблема именно в библиотеке, я давал на нее ссылку. Не только мне помогло

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Всегда надо пробывать все))) 

svm
Offline
Зарегистрирован: 06.11.2016

Мужики, хвтит наезжать на НРФки. Если Вы их не спалили, то все работают прекрасно. Буквально на днях пришлось испытать 11 штук. Из них четыре моих - две с усилителями и две обычных. И еще 7 штук условно неисправных, которые - по словам хозяев  не работают. В результате все обеспечивают уверенную связь на расстоянии 15 метров , через два бетонных перекрытия. При условии, что отключено автоподтверждение. Если его включить, то уверенная связь не более 5 метров, и никаких препятствий. С моими модулями расстояние около 30 метров с обычными и порядка 70 метров с усилителями. Из доработок- кондюк около 10 мкф по питанию и экранирование части модуля ниже антенны. Без экранирования периодически (безсистемно) связь прерывалась, и восстанавливалась, если дотронуться до модуля. После экранирования проблем не было. Для экранирования достаточно обмотать все, что ниже антенны скотчем, затем фольгой и снова скотчем. Правда у меня не фольга, а полоска отрезанная от пивной банки, но думаю, что это не принципиально. Некоторые нюансы по питанию, если модуль с усилителем, то нужно достаточно мощный стабилизатор 3,3 В. Так при питании от ардуинки - при мощности MIN, LOW связь устойчивая, если выставляем HIGH, время достоверного отклика увеличивается на порядок, если ставим MAX, то связь прерывается. От отдельного стабилизатора 3,3 В такого не наблюдается. С обычными модулями - без усилителя , тоже.

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

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

svm
Offline
Зарегистрирован: 06.11.2016

Все может быть, но экраны помогают очень сильно. Особенно в начале. Во всяком случае убирают эти непонятки с поднесение рук к модулю и перемещением его. Когда все работает их влияние не так заметно, но дальность устойчивого соединения увеличивается процентов на 20.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

их не только нужно хорошо готовить, но и можно самому распаивать :)

svm
Offline
Зарегистрирован: 06.11.2016

Ну это уж, слишком радикально. Эффект заметный?

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

это украдено из дш на nrf, с соблюдением размеров, немного переделана под керамическую антену, а так работает лучше чем китайские модули на 0603 элементной базе, родная на 0402, ну и две стены пробивает без проблем

svm
Offline
Зарегистрирован: 06.11.2016

У меня с одной стеной проблема, эадняя стена дома обшита профнастилом. И через нее стандартная НРФка не пробивает, только с усилителями за счет отраженки. 

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

железо пробивать тяжело так как экран получается, так что только на отраженке жить :)

Jon2013
Offline
Зарегистрирован: 18.12.2013

Все же грешу на библиотеки.

Условия для тестирования идиальные: 5В и 3.3В лаб. БП. Конденсаторы, экранировку модуля не рассматриваю как не существенное для теста на столе с растоянием 10 см друг от друга. Модули и Ардуинки из одной партии. Тесты модулей, сети, каналов все проходит на ура.

Самое главное: система заводится. 3 сообшения проходят отлично. Причем, всегда строго 3 шт, а потом на передатчике модуль отваливается, вижу по амперметру: на БП - потребление в ноль. Ардуинка переходит в неуправляемый бесконечный цикл, так как будто непрерывно идет сообщение с модуля. Такое ощущение что переполняется буфер radio.available() . Получается что функция  radio.read( &command, sizeof(command) не очищает буфер до конца. Или я не в ту сторону копаю?

  

Jon2013
Offline
Зарегистрирован: 18.12.2013

jeka_tm пишет:

А у меня была проблема именно в библиотеке, я давал на нее ссылку. Не только мне помогло

Либа не скачивается. Можно еще раз ссылку.