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

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

  1. forfrends

    forfrends Нерд

    Друзья, а кто-нибудь пробовал в использовании вот такие модули: https://aliexpress.ru/item/32949583913.html
    DtS: исправил на обычную ссылку
     
    Последнее редактирование модератором: 31 янв 2020
  2. parovoZZ

    parovoZZ Гуру

    хватит уже чахоточных рекламировать! Давайте ссылки на нормальные магазины, если в амперке нет, а не этот рассадник палева!
     
  3. issaom

    issaom Гуру

    Реферную ссылку не стыдно давать если сам попробовал, понравилось и есть инструкции как всем этим пользоваться.
    Вы хотите чтобы кто-то с этим разобрался, поделился опытом да еще и денег на этом заработать ? Ничего не треснет ?
     
    DetSimen и parovoZZ нравится это.
  4. forfrends

    forfrends Нерд

    Устроили срач из-за рефельной ссылки, и с пальца высосали то, чего нет.
    issaom, нет, не стыдно. Потому что я задал простой вопрос, может у кого-то есть опыт в использовании именно этих модулей. Нет? Ладно...
    parovoZZ, я не живу в России. Покупать на Амперке не могу. На https://lcsc.com модулей много, разных, и непонятных.
    Я ищу NRF с усилителем, для большой дальности работы. У меня выбора особо нет. Либо Алиекспресс, либо Ebay. Короткие ссылки я не умею делать. У меня ссылка выглядит так: https://aliexpress.ru/item/32949583...hweb0_0,searchweb201602_10,searchweb201603_53
     
  5. parovoZZ

    parovoZZ Гуру

    Заходишь в описание и читаешь.
    Нужна лора. Например, Ra-01.
     
  6. AlexAxel

    AlexAxel Нерд

    Здравствуйте.
    Разжился парой вот таких модулей - fds.png
    Изначально был внутрях какой-то скетч, они бодро обменивались между собой, в Serial было видно. Но что за скетч - неизвестно. Попытался стандартным примером из RF24 - не получается залинковать. Подскажите в какую сторону воевать? Запросы в гугль показывают стандартную связку - ардуино и NRFки отдельно. Прозвонил чип

    CE - 7
    CSN-8
    SCK-13
    MISO-11
    MOSI-12

    Скетч из примера RF24

    Код (C++):


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

    bool radioNumber = 0;

    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();
      radio.setPALevel(RF24_PA_LOW);
     

      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() {
     
    if (role == 1)  {
       
        radio.stopListening();                                    // First, stop listening so we can talk.
       
       
        Serial.println(F("Now sending"));

        unsigned long start_time = micros();                             // Take the time, and send it.  This will block until complete
         if (!radio.write( &start_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 end_time = micros();
           
            // Spew it
            Serial.print(F("Sent "));
            Serial.print(start_time);
            Serial.print(F(", Got response "));
            Serial.print(got_time);
            Serial.print(F(", Round-trip delay "));
            Serial.print(end_time-start_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
     
     
    Последнее редактирование: 3 фев 2020
  7. prohor-nastya

    prohor-nastya Нерд

    Здравствуйте!
    модуль nrf24 l 01+ работает в режиме передатчика, но не работает в режиме приемника

    radio.printDetails(); выводит следующее :
    RX_ADDR_P0-1 = 0xe7e7e7e7e7 0x65646f4e31
    TX_ADDR = 0xe7e7e7e7e7
    = 0xe7e7e7e7e7 0x65646f4e31- у работающего модуля значения совпадают...

    кто знает подскажите почему так, пожалуйста.
     
  8. prohor-nastya

    prohor-nastya Нерд

    Я знаю!
    Конденсатор подпаять забыл... Рука лицо.
    просто много модулей и думал что подкидывал кондер...
    вредные модули... один работает без кондера, а другой нет.
     
  9. Neon_1

    Neon_1 Нерд

  10. Neon_1 нравится это.
  11. Plant

    Plant Нерд

    Для тестирования и отладки радиолинии на nrf24 может быть полезна утилитка-конфигуратор nrfLove. С её помощью можно настроить например, плату ссылка на которую была 4 постами выше ( Arduino + Nrf= rf nano), или подпаять к ардуинке пяток проводов от платы с nrf24. В архиве есть файл rf_nano_ardu_v1.hex- это готовая прошивка модуля, которую можно залить в модуль через COM-порт при помощи например, gCuploader ( http://www.getchip.net/download/gcuploader-zip/ ). Или другой программой, предназначеной для заливки в Arduino готового хекса. При помощи утилитки nrfLove можно сконфигурировать биты регистров,которые отвечают только за прием.
    Если в модуль послать команду $c491 (скорость 38400) модуль ответит массивом, который будет считан непосредственно из NRF, начиная с адреса $00 и далее по порядку . Многобайтные регистры- только первый байт. Удобно для отладки; команду можно послать с терминала AccessPort, например, или др.
    Подробнее о работе и прошивке модуля можно прочитать на странице проекта http://dubos.tech/all/projects/nrflove/
    [​IMG]
     

    Вложения:

    • nrf24.zip
      Размер файла:
      172,2 КБ
      Просмотров:
      13
    Последнее редактирование: 12 фев 2020
    Neon_1 нравится это.
  12. Un_ka

    Un_ka Гик

    Жаль прошивка не с открытым исходным кодом. Такое можно и в шапку темы всавить.
     
  13. Plant

    Plant Нерд

    Да, наверное.
     
    Последнее редактирование: 12 фев 2020
  14. b707

    b707 Гуру

    почитал страницу проекта, не увидел, в чем преимущество над просто ардуиной с NRF24.
    Все эти регистры можно настроить из скетча

    Судя по описанию - это для "радиолюбителей", которые готовые прошивки заливать умеют, а сами писать программы - нет. У нас тут на сайте немного другая ситуация...
     
  15. Plant

    Plant Нерд

    Преимущество в том, что на этапе освоения радиолинии на основе данного модуля, на приемной стороне есть готовое устройство, конфигурации которого доступны из окна виндоус. Конечно, когда вопросов железе-софте не останется, то и для приемной стороны прошивку будет проще написать.
    Как вариант- если надо принимать данные на ПК и часто менять конфигурацию канала- постоянная перезаливка конфигурации прошивкой не всегда удобна...
    В основном под эту задачу это и разрабатовалосль. В указанном на странице проекта ресурсе Кансат в России ( roscansat.com) есть технические требования в Регулярной лиге. Кратко- несколько десятков команд (команда - 2-3 школьника 8-11 класс) во время финала привозят модели микроспутников ( 66 мм. диаметр , 190 мм. - высота 350гр. -масса) Их (по очереди) закладывают в ракету и отправляют на высоту 500-1000м, там происходит "расстыквка" и далее модель спускается на парашюте. Для передачи данных (температура, давление, высота, GPS.....) во время полета используется радиомодуль nrf24L01 +LNA_PA. У каждой команды своя частота и другие настройки. Для оперативной смены параметров на приемной станции ( по умолчанию она одна на всех- это оборудованный приемный пункт на возвышености с антенной и ПК) во время финала , который проходит в поле под Владимиром как раз и была и необходима подобная утилита. Команда дает свой файл настроек и они "грузятся" в приемную станцию.
    Плюс оказалось, что данная связка (rf_nano + nrfLove) существенно упрощает освоение модуля nrf24 (напомню, школьники 8-11класс) и подготовку команды дома.
     
    Последнее редактирование: 12 фев 2020
  16. b707

    b707 Гуру

    пожалуй, это может быть полезно как "мост" на модулях NRF между двумя Виндоуз для пользователей уровня "юзер".
    Но где такое может встретится на практике - ума не приложу :)
    Опять же - мало просто принять данные, надо их еще и обработать, а значит все равно писать свою програму для Виндоуз. Зачем в таком случае использовать какой-то посредник, почему не работать с ардуиной напрямую
     
  17. Plant

    Plant Нерд

    Ответ- в отредактированном выше моем посте.
    Посредник нужен, так как затем по принятым данным ( файл), которые команды забирают на приемном пункте,строят кучу графиков ( T(h), P(h), A(t) , H(h), V(t)....) пропорционально взятым на себя обязательствам. Затем "полет" защищается перед комиссией. Выявляются победители. У
    всех команд свой проект и структура данных в пакете. Возложить это все на ардуино (графики) не все смогут, да и не надо это в данном проекте.
     
  18. b707

    b707 Гуру

    да согласен, специфика пользователей, применяют ардуино, не разбираясь в нем...
     
  19. Neon_1

    Neon_1 Нерд

    Какая?
     
  20. b707

    b707 Гуру

    говоря за себя - готовая прошивка с закрытым исходным кодом мне не интересна, я лучше сам напишу,. И таких как я, как мне кажется, тут большинство.
    Повторюсь - проекты с HEX прошивками вместо исходника - характерны для сайтов радиолюбителей, где люди в основном творят, создавая свои схемы, а программировать умеет дай бог один из двадцати. Там повторение чужих проеков с готовой пршивкой - стандартная ситуация.
    На сайтах программистов самое интересное в проектах - исходный код
     
    Neon_1 нравится это.