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

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

  1. ИгорьК

    ИгорьК Гуру

    Нет. Я это редко делаю. Помогаю с направлением мысли. (Все что я знаю - рассказано на этом форуме. Вам лень читать - а мне лень писать все одно и то же заново.)
    Заходите вот сюда: http://tmrh20.github.io/RF24/classRF24.html
    Устанавливаете эту библиотеку.
    Там есть раздел Optional Configurators - разбираетесь с каждым из них. Каждый параметр должен быть установлен. Есть и примеры: http://tmrh20.github.io/RF24/examples.html
    Пробуете их. Но и в примерах не устанавливаются все параметры. Ваша задача - сделать примеры рабочими, путем как раз установления недостающих параметров.

    Можете просто пошерстить тему - здесь успешные юзеры отчитывались о своих начальных установках, с которыми модули запускались. Тот же уважаемый Ostrov. Да и еще есть.
     
  2. vlad123419

    vlad123419 Нерд

    Спасибо за наводку!
     
  3. vlad123419

    vlad123419 Нерд

    Не могу найти кнопку для скачивания...
     
  4. ИгорьК

    ИгорьК Гуру

  5. vlad123419

    vlad123419 Нерд

  6. DIYMan

    DIYMan Guest

    У мну таких 6 штук валяется, плюс пара nRF - тоже никак не заставлю себя начать пробовать :)
     
  7. ИгорьК

    ИгорьК Гуру

    Работает оно. Эта штука для питания плюс инициализация - см. от Ostrov.
     
    DIYMan нравится это.
  8. vlad123419

    vlad123419 Нерд

    Здравствуйте, обнаружена новая проблема...
    Я подключаю модуль с усилителем к Ардуино, а питание к DC-DC преобразователю, на котором выставлено напряжение 3,33В +-0,02, как только я подключаю все, вкл Ардуино, плата усилителя начинается греться, причем довольно прилично, но сама плата NRF24L01 не греется...
    Сначала думал, что то замкнул, все просмотрел, замыкание не обнаружил, что может быть? Почему нагревается модуль?
    Заранее спасибо!
     

    Вложения:

  9. ИгорьК

    ИгорьК Гуру

    Честно скажу - не знаю. Может Вы не правильно подключили, может Вы не правильно ПОДКЛЮЧАЛИ, может - неисправен, может Вы его SPI-вход (MOSI) уже подпалили пятивольтовой Ардуиной и он "взбесился" и делает что-то неконтролируемое. Все что угодно.
     
  10. vlad123419

    vlad123419 Нерд

    Короче, новый модуль нужен?
     
  11. ИгорьК

    ИгорьК Гуру

    Не знаю. Не уверен. Поработайте пока с другим - убедитесь что Вы все понимаете. Научитесь общаться с ним, научитесь менять значения, которые видны на картинке из поста: http://forum.amperka.ru/threads/nrf24l01-побеждаем-модуль.3205/#post-25291
     
  12. vlad123419

    vlad123419 Нерд

    Попробовал, греется даже если просто подключен к питанию
     
  13. PepsDD

    PepsDD Нуб

    Всем привет
    Решил собрать RC на базе этих модулей но ни чего не выходит, HELP!!!!
    Имеем два модуля две nano (CH340). Питание на модули подаю через AMS1117-3.3, использую стандартную библиотеку nrf24master. Подключено , как я думаю, все правильно т.к. пример из библиотеки nrf24scan, эфир сканирует, а вот дальше ни чего не выходит. Пример GettingStarted пишет, что пакеты не доставлены.
    Пробовал свои примеры та же хрень:
    ПЕРЕДАТЧИК:
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #define CE_PIN 9
    #define CSN_PIN 10

    const uint64_t pipe = 0xE8E8F0F0E1LL;
    RF24 radio(CE_PIN, CSN_PIN);
    int joystick[4];

    void setup()
    {
    delay(1000);
    radio.begin();
    radio.openWritingPipe(pipe);
    }


    void loop()
    {
    for(int i=10;i<=180;i=i+180)
    {
    joystick[0] = i;
    joystick[1] = i;
    joystick[2] = i;
    joystick[3] = i;
    radio.write( joystick, sizeof(joystick) );
    }
    }

    ПРИЕМНИК:
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include <Servo.h>
    Servo myservo;
    Servo myservo2;
    #define CE_PIN 9
    #define CSN_PIN 10
    int pwm = 0;
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    RF24 radio(CE_PIN, CSN_PIN);
    int joystick[4];
    void setup()
    {
    delay(1000);
    radio.begin();
    radio.openReadingPipe(1,pipe);
    radio.startListening();;
    myservo.attach(4);
    }
    void loop()
    {
    if ( radio.available() )
    {
    bool done = false;
    while (!done)
    {
    done = radio.read( joystick, sizeof(joystick) );
    myservo.write(joystick[0]);
    }
    else
    {

    }

    }


    Помогите разобраться, что не так.
     
  14. ИгорьК

    ИгорьК Гуру

    Предлагаю почитать тему. Хотя бы первый пост в ней.
     
  15. PepsDD

    PepsDD Нуб

    Так читал. В место емкости сделал задержку при старте скетча, плюс радио питается от своего акума через as1117 3.3V.
     
  16. ИгорьК

    ИгорьК Гуру

    И это все что там написано? Мне казалось что больше.
     
  17. PepsDD

    PepsDD Нуб

    Я не электронщик вот и не знаяю насколько критична подпайка емкости. Я думал 1117 хватит. Объясните, а то у нас переписка как в анекдоте про железячника и прогера :)
     
  18. ИгорьК

    ИгорьК Гуру

    Это да. Вы считаете, что я заново должен лично Вам разъяснять все возможные причины? Ну, пожалуйста, ну очень-очень прошу: пройдите на первый пост и прочитайте его! Ага? Уговорил?
     
  19. PepsDD

    PepsDD Нуб

    Критично припайка емкости к плате приемника нашел только один подходящий электролит, а ехать за копеечной деталью через пол города влом :)
     
    Последнее редактирование: 19 июл 2016
  20. Oleg_7

    Oleg_7 Гик


    Обратим внимание еще на некоторые полезные функции.
    setPayloadSize (uint8_t size); - функция определяет размер буфера обмена. По умолчанию размер буфера 32 байта. Если меняем это значение, то обязательно как на приемнике, так и на передатчике.
    void setRetries (uint8_t delay, uint8_t count); - функция изменяет время повтора и количество попыток передатчика "достучаться" до приемника, пример:
    setRetries (15, 15); - с задержкой 15 мс 15 попыток.
    void setPALevel (rf24_pa_dbm_e level); - устанавливает уровень мощности передатчика, и может принимать значения RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX. Пример:
    setPALevel (RF24_PA_MAX); - максимальный уровень мощности передатчика.
    bool setDataRate (rf24_datarate_e speed); - одна из трех скоростей, должна быть одинаковой на приемнике и передатчике. Принимает значения RF24_1MBPS, RF24_2MBPS, RF24_250KBPS. 250 кбит занимает более узкую полосу и является наиболее чувствительной скоростью приема. По умолчанию - 1Мбит Пример:
    setDataRate (RF24_250KBPS); ...



    Игорь, добрый день!
    У меня размер структуры для передачи =40 байт, подскажите, вsetPayloadSize (uint8_t size); какой размер можно указывать, можно ли 40 ? или только 64 ?