nRF24L01+ : побеждаем модуль.

Тема в разделе "Проводная и беспроводная связь", создана пользователем ИгорьК, 19 июн 2014.

  1. zaynus

    zaynus Нерд

    "Chip Enable" pin, activates the RX or TX role
    может в скетче засада?
     
    Последнее редактирование: 1 июл 2015
  2. bleur

    bleur Нуб

    Точно, не подумал. Пин CE подключен на 9 пин, код ниже. Получается, он всегда при инициализации встает в режим приема, а когда я его вытаскиваю, переключается в режим передачи, так?

    Код (Text):
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>



    RF24 radio(9,10);
    const uint64_t pipe00 = 0xE8E8F0F0E1LL;
    int out = 556;

    void setup()
    {
    radio.begin();
    radio.setChannel(0x22);
    radio.openWritingPipe(pipe00);
    }

    void loop()
    {
    radio.write( &out, sizeof(out) );
    delay(1000);
    }
     
  3. SergP

    SergP Нуб

    Насколько я знаю, этот пин (Chip Enabled) отвечает за выбор устройства на SPI - т.к. к SPI можно подключить несколько устройств. Но ту же функцию, судя по описанию, выполняет и CSN пин, поэтому я сомневаюсь в своих догадках.
    Но поскольку все прекрасно работает - лучше не трогать, пока работает :D
     
  4. zaynus

    zaynus Нерд

    поменяйте местами csn and ce
     
  5. SergP

    SergP Нуб

    В режим приема модуль встает после вызова функции radio.startListening();
    Если задан канал (pipe) чтения, конечно же.
     
  6. zaynus

    zaynus Нерд

    а не csn?
     
  7. SergP

    SergP Нуб

    А вот я и сомневаюсь, т.к. csn = Chip Select Not.
    Возможно, CE просто является статусом включенного SPI.
     
  8. zaynus

    zaynus Нерд

    ce меняет режим прием-передача
    CS или SS — выбор микросхемы, выбор ведомого (англ. Chip Select, Slave Select).
     
  9. geher

    geher Гуру

    СSN - Chip Select Not так зовется потому, что для селекции чипа значение на нем переводится из HIGH в LOW.
    CE - управление приемом-передачей.
     
  10. bleur

    bleur Нуб

    Правильно я понял вашу мысль?

    Код (Text):
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include <stdint.h>

    #define CE_PIN 9        
    #define CSN_PIN 10
    const uint64_t writingPipe = 0xE8E8F0F0AALL;
    int out = 556;

    RF24 radio(CE_PIN, CSN_PIN); // PIN 9, 10

    void setup() {

        Serial.begin(9600);
        delay(2000);                    
        radio.begin();                    
        radio.setChannel(0); //change channle                  
        radio.setRetries(15,15);            
        radio.setDataRate(RF24_250KBPS);  
        radio.setPALevel(RF24_PA_MAX);    
        radio.setAutoAck(1);              
        radio.openWritingPipe(writingPipe);
     
        radio.stopListening();  
     
     
    }

    void loop()
    {
      radio.write( &out, sizeof(out) );
      digitalWrite(CE_PIN, LOW);
      digitalWrite(CE_PIN, HIGH);
      delay(10);
      digitalWrite(CE_PIN, LOW);
      Serial.println("send");
      delay(1000);
    }
    В принципе, без CE работает, но мне интересно почему так происходит. Несколько дней пытаюсь найти ответ.
     
    Последнее редактирование: 1 июл 2015
  11. zaynus

    zaynus Нерд

    местами менять пробовали csn and ce?
     
  12. bleur

    bleur Нуб

    Да, тогда вообще не работает!
     
  13. zaynus

    zaynus Нерд

    Попробуйте такой сетап
    (только настройки поправьте)
    некоторые модули на 256 скорости плохо работают

    radio.begin();
    radio.setRetries(15, 15);
    radio.setChannel(120);
    radio.setPayloadSize(12);
    radio.powerUp();
    radio.setPALevel(RF24_PA_MAX);
    radio.setDataRate(RF24_2MBPS);
    radio.enableAckPayload();
    radio.openWritingPipe(pipe);
    printf_begin();
    radio.printDetails();
     
  14. zaynus

    zaynus Нерд

    у меня передача идет при отключенном СЕ, если этот контакт RF24 вместо пин9 посадить на землю, передача прекращается
     
  15. geher

    geher Гуру

    Вроде все необходимые манипуляции с этими пинами делаются в самой библиотеке. А потому дополнительно дергать за них вроlе как совсем не нужно. По крайней мере у себя я этим не занимался.
    Только CSN взвел в HIGH в начале setup() на всякий случай.
     
    zaynus нравится это.
  16. SergP

    SergP Нуб

    Пины дергать не надо - библиотека сама все делает.
    Еще, лично у меня, работает без "#include <nRF24L01.h>", попробуйте убрать эту строку, может подгружает что-то лишнее. Если без нее не скомпилирует - верните.
    Вот мой, работающий setup:
    Код (Text):
    Serial.begin(115200);
    delay(2000); // Зарядка конденсатора
    radio.begin();  // Включение модуля;

      radio.setChannel(106);  // Установка канала вещания;
      radio.setRetries(15, 15);  // Установка интервала и количества попыток "дозвона" до приемника;
      radio.setDataRate(RF24_1MBPS);  // Установка минимальной скорости;
      radio.setPALevel(RF24_PA_MAX);  // Установка максимальной мощности;
      radio.openWritingPipe(pipes[0]); // Открываем радио канал передачи
      radio.openReadingPipe(1, pipes[1]);
      radio.printDetails();
      radio.startListening(); // Старт прослушивания
      printf("Wait...\n");
    У меня многие проблемы решились после припаивания конденсатора на 470 мкФ - в частности не шла передача из-за нехватки питания, но без пина не пробовал, может, когда Вы его отключаете, питания начинает хватать (неясно какой ток кушает этот пин).
    Пробовали подключать другой модуль?
     
  17. bleur

    bleur Нуб

    Приветствую.
    Кондер сразу поставил, с передачей нет проблем. Мультиметром посмотрел этот пин, на него подается небольшой импульс каждую секунду, хотя всякие high/low убраны.
    Без <nRF24L01.h> компилится, но все остается по прежнему.
    добавление этой строки radio.printDetails(); убивает радиопередачу.
    Может что-то с самой платой nrf?

    Поменял местами приемник и передатчик, ситуация осталась такая же, пока не вытащишь CE из передатчика, передачи нет. :eek:
     
  18. zaynus

    zaynus Нерд

    printDetails выводит в сериал состояние чипа(работает при подключенном printf и serial)
    там можно посмотреть какие трубы настроены
    какая скорость и т.д. по этому выводу можно определить подключена правильно или нет
    например если в настройках стоит HIGH и 2 Мбит, а детали показывают иначе(1 Мбит по умолчанию), значит косяк в схеме или модуле.
    Где брали библиотеку, от maniacbug?
     
  19. gavru

    gavru Нерд

    Доброго дня знатокам!
    Может кто в курсе таких дел:
    На столе лежат 15 см, друг от друга две NRF24l01+ (с плюсом), не работают, одна исправно шлёт по SPI (гляжу тестером) другая не принимает.
    Касаешься рукой антенны того модуля который передаёт, и ООО чудо передача пошла, кривовато, с потерями, но идёт, пытался играться с настройками мощьности, думал, может из за близкого расстояния приёмник забивает, ан нет, ни фига.
    Полез в загашник и достал 2 точно таких же модуля, но только без знака "ПЛЮС" и о чудо, вотыкнул их на место ни чего не меняя в коде, и ОООО чудо, всё работает, потерь нет, всё как должно быть.

    Мужииикиии ПОМАГИТЕ!!! В чём прикол, единственную разницу между ними знаю, это то, что безплюсой нет 250КБ режима. В чём может быть косяк плюсовой???

    P.S> XMEGA и модуль запитаны от стац блока через 1117 стабилизатор, кондёр по питанию напаян.
    Моск вскипает, 4сутки, только сегодня догадался поменять модули, и сразу такой прикол.
     
    Последнее редактирование: 2 июл 2015
  20. zaynus

    zaynus Нерд

    страницей выше такие же проблемы, вроде как с питанием