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

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

  1. parovoZZ

    parovoZZ Гуру

    разумеется. Для согласования с антенной 50 Ом в даташите приведен расчет тракта. Если антенна имеет входное сопротивление отличное от 50 Ом, то её необходимо согласовать.
     
  2. Neon_1

    Neon_1 Нерд

    вот с такой антенной , там есть еще и другой вариант антенны
     

    Вложения:

    • nrf24.jpg
      nrf24.jpg
      Размер файла:
      151,4 КБ
      Просмотров:
      36
  3. parovoZZ

    parovoZZ Гуру

    ну вот китайцы выбрали другой дизайн платы. Видимо, из-за размеров.
     
  4. prohor-nastya

    prohor-nastya Нерд

    всем привет, столкнулись с такой проблемой:
    NRF 24L01 Нормально работает с Ардуино нано и Ардуино Уно,
    а с Ардуино Микро при сканировании каналов выдает сплошником одни четверки.
    в radio.Printdetails() не выводит ничего.
    питание радио отдельное, конденсатор стоит, пины пробовали менять на 2,3
    Почему с микро проблема может кто знает?
     
  5. prohor-nastya

    prohor-nastya Нерд

    И снова здравствуйте!
    как оказалось у микро выводы SPI не подключены ни к каким цифровым вход/выходам, как на Arduino Uno, они доступны только на соединителе ICSP и ближайших выводах, маркированных MISO, MOSI и SCK.
    подключив NRF на соответствующие пины она стала видеть каналы. Но информация о настройках модуля все равно не выводится....
    может нужно на других пинах инициализировать?
    используем следующий код.
    Код (C++):

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

    RF24 radio(9,10); // инициализировать модуль на пинах 9 и 10 Для Уно
    //RF24 radio(9,53);// Для Меги

    const uint8_t num_channels = 128;
    uint8_t values[num_channels];

    void setup(void)
    {
      Serial.begin(9600);
      printf_begin();
      radio.begin();
      radio.setAutoAck(false);
      radio.startListening();

      radio.printDetails();  // Вот эта строка напечатает нам что-то, если все правильно соединили.
      delay(5000);              // И посмотрим на это пять секунд.

      radio.stopListening();
      int i = 0;    // А это напечатает нам заголовки всех 127 каналов
      while ( i < num_channels )  {
        printf("%x",i>>4);
        ++i;
      }
      printf("\n\r");
      i = 0;
      while ( i < num_channels ) {
        printf("%x",i&0xf);
        ++i;
      }
      printf("\n\r");
    }
    const int num_reps = 100;

    void loop(void)
    {
      memset(values,0,sizeof(values));
      int rep_counter = num_reps;
      while (rep_counter--) {
        int i = num_channels;
        while (i--) {
          radio.setChannel(i);
          radio.startListening();
          delayMicroseconds(128);
          radio.stopListening();
          if ( radio.testCarrier() )
            ++values[i];
        }
      }
      int i = 0;
      while ( i < num_channels ) {
        printf("%x",min(0xf,values[i]&0xf));
        ++i;
      }
      printf("\n\r");
    }
    int serial_putc( char c, FILE * ) {
      Serial.write( c );
      return c;
    }

    void printf_begin(void) {
      fdevopen( &serial_putc, 0 );
    }
     
     
  6. Neon_1

    Neon_1 Нерд

    а вообще монитор работает? может проверить на другом скетче

    возможно это связано с тем, что на микро немного по другому передается информация в комп


    Связь
    Micro
    имеет несколько средств для связи с компьютером, другим Arduino, или иными микроконтроллерами. Контроллер ATmega32U4 предоставляет UART TTL (5V) для последовательной связи, доступный на цифровых выводах 0 (RX) и 1 (TX). Также 32U4 разрешает последовательный обмен (CDC) через USB и появляется для компьютерного программного обеспечения как виртуальный COM-порт. Кроме того, кристалл работает как «full speed» USB устройство при использовании стандартных драйверов USB COM. Для Windows требуется .inf файл (смотри пункт 4 для Arduino Uno). Программное обеспечение Arduino включает монитор последовательной шины (Serial monitor), позволяющий принимать и посылать с платы Arduino простые текстовые данные. Светодиоды RX и TX на плате будут вспыхивать при передаче данных через USB соединение с компьютером (но не при последовательной связи через выводы 0 и 1) В библиотеке SoftwareSerial предусмотрена последовательная связь через любой из цифровых выводов Micro.

    http://arduino.ru/Hardware/ArduinoMicro

    кстати это там тоже есть
    SPI: на разъеме ICSP. Данные выводы поддерживают связь по SPI с использованием библиотеки SPI. Обратите внимание, что выводы SPI не подключены ни к каким цифровым вход/выходам, как на Arduino Uno, они доступны только на соединителе ICSP и ближайших выводах, маркированных MISO, MOSI и SCK.
     
  7. prohor-nastya

    prohor-nastya Нерд

    Здравствуйте!
    Так вот номера каналов и зашоренность каналов выводятся в порт, а данные о модуле не выводятся...
    Короче не понятно что делать...
    Библиотеки ставить код дописывать подключение менять?
     
  8. Neon_1

    Neon_1 Нерд

    На приемнике можно как либо узнать были ли повторные попытки передачи пакета?

    autoAck включен
     
  9. parovoZZ

    parovoZZ Гуру

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

    Про структуру пакета:
    Взято отсюда
    https://aterlux.ru/article/nrf24l01p
    Крайне рекомендуется к прочтению.
     
  10. Neon_1

    Neon_1 Нерд

    Спасибо, да, я читал там инфу и понял, что приемник считает попытки передач

    Думал, может он автоматически передает эту инфу преемнику
     
    Последнее редактирование: 21 янв 2020 в 16:12