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

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

  1. Neon_1

    Neon_1 Нерд

    подскажите, у nrf24 когда она приняла данные, они будут лежать в буфере пока не будут прочитаны?

    и флаг в radio.available() будет висеть пока данные не прочитать?

    дело в том что один передатчик передает данные, а два устройства их принимают, прошивка одна и та же, но одно устройство работает на атмеге8, а второе на esp8266 и на esp теряет немного пакетов, на атмеге потерь 0, на данный момент передано около 4000 пакетов, esp потеряла 9 штук, атмега 0, атмега тоже иногда теряет, но единицы и редко
    хочу понять в чем дело

    приемные устройства находятся рядом, передатчик тоже недалеко, в 3 метрах от приемников
     
  2. parovoZZ

    parovoZZ Гуру

    да
     
    DetSimen и Neon_1 нравится это.
  3. Neon_1

    Neon_1 Нерд

    В некоторых скетчах для nrf24l01+ используется библиотеки

    #include <nRF24L01.h>
    #include <RF24.h>
    И ещё бывает nrf24config или как то так

    У меня все работает только с одной RF24.h

    Для чего нужны 2 остальные?
     
  4. NikitOS

    NikitOS Король шутов Администратор

    Читаем объявление и исправляем ошибки
     
  5. Alibek

    Alibek Нуб

    Но ведь тут 115 страниц
     
  6. b707

    b707 Гуру

    не надо читать 115 страниц, блин. Прочитайте правила оформления сообщений на форуме - иначе ваш сообщения удалят.
     
  7. NikitOS

    NikitOS Король шутов Администратор

    Интересный факт: человечеством был придуман инструмент, который называется «Поиск».
    С помощью него можно найти все что угодно, достаточно ввести ключевые слова.
    Можно искать по форуму, по разделу и по теме.
    Где же он находится? Справа вверху страницы, белое поле для ввода текста запроса
     
  8. parovoZZ

    parovoZZ Гуру

    в самих файлах есть аннотации. Также в папках есть примеры. Также можно найти на гитхабе авторов. Там тоже есть readme.
     
    Neon_1 и NikitOS нравится это.
  9. offigate

    offigate Нерд

    a) Несомненно
    б) Нет никакой логической связи с пунктом а). Производители модулей скорей всего настраивают антенну, когда под ней не текстолит, а воздух.
    в) Соответственно, производители все же настраивают антенный тракт, но для антенны, "висящей в воздухе", а не положенной на текстолит.
    г) Если антенна не расположена вплотную к корпусу, а находится где-то в середине, то влиянием материала корпуса можно пренебречь.
    д) "Делай как дОлжно, и будь что будет" - это совсем не то же самое, что "а все пофиг". В частности, влияние материала корпуса (пункт г) если и изменит немножко настройку "висящей в воздухе" антенны, расположенной в середине корпуса, но не выбьет ее из диапазона.

    Я поначалу модули ESP-12 ставил так, что антенна модуля оказывалась над текстолитом несущей платы. А потом стал "вывешивать" антенну за край несущей платы. После модуль стал слышать примерно вдвое больше точек доступа. Из чего я делаю вывод, что производитель (AIthinker) настраивал антенну именно на такие условия.

    В "фирменных" отладочных модулях ESP-32 антенна "вывешена" за край платы. А в более дешевых вариантах с Али антенна стоит над ПП и работает очень плохо. Собственно, эти дешевые модули вообще никуда не годятся, там и регуляторы питания тоже слишком хлипкие. То есть, дешевку делали совсем неграмотные люди.

    В даташитах некоторых 2.4 ГГц модулей (если склероз не подводит, ATWINC1500) встречались прямые указания, что антенна должна "вывешиваться" за край несущей печатной платы.
     
  10. parovoZZ

    parovoZZ Гуру

    каким образом и зачем? У воздуха диэлектрическая проницаемость равна 1, у текстолита 2 ... 6.

    каким образом?

    правильнее говорить - в ближнем поле

    Wi-Fi антенны широкополосные. Другие в этом диапазоне не купишь.

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

    offigate Нерд

    Чтобы не было недопонимания: производители модулей настраивают антенны, выполненные в виде проводников на ПП (или в виде керамических антенн, напаянных на ПП модуля), в положении, когда сами эти модули "висят в воздухе" и под ними нет текстолита.
    • Каким образом? Скажем, подвешивая свои модули на проводах в открытом пространстве.
    • Зачем? Чтобы получить повторяемость и не зависеть от материала ПП, на которую их модули будут установлены
    Вас интересуют детали, каким образом настраивают антенный тракт, или что-то другое?
     
    Последнее редактирование: 13 ноя 2019
  12. parovoZZ

    parovoZZ Гуру

    Антенна настраивается при разработке её в КАДе. На печатке мы имеем возможность её только укоротить путем отрезания дорожки. После такой операции на печатке неизбежно остаются следы. Можно фотографию хоть одного КИТАЙСКОГО модуля, где бы производилась такая операция? На очень серьезных изделиях текстолит проходит входной контроль и геометрические параметры ПА подводятся под эти параметры. Разумеется, что это стоит не 5, и не 10 баксов за дециметровую плату.

    Да, как КИТАЙЦЫ настраивают антенный тракт дешманских модулей? Вся комплектуха собрана в корпусах 0603 и меньше.
     
  13. offigate

    offigate Нерд

    Антенна настраивается во время разработки модуля, перед запуском в серию. После этого при серийном выпуске нет нужды настраивать каждую антенну индивидуально. Достаточно обеспечить повторяемость характеристик антенны от партии к партии. Что достигается путем строгого контроля характеристик материала ПП, а не подрезанием дорожек. Можно также отметить, что в серии трудней поддерживать стабильные свойства антенны, покрытой паяльной маской, поскольку надо помимо ПП надо контролировать свойства паяльной маски. Может быть в этом причина, почему модули ESP-WROOM-32 работают хуже, чем ESP-12F.

    При разработке модуля антенна модуля настраивается "висящей в воздухе". И, соответственно, возвращаясь к тому, с чего начался этот разговор, при использoвании модуля "нехорошо размещать антенну над текстолитом" (с)
     
  14. prohor-nastya

    prohor-nastya Нерд

    Доброго здоровья всем.
    Не могу понять как работает функция
    radio.write(&data, sizeof(data));
    & - указывает на адрес переменной.
    А если там массив то как он его передает?
     
  15. prohor-nastya

    prohor-nastya Нерд

    И главное как передать число 52,123765
     
  16. Neon_1

    Neon_1 Нерд

    data - это должен быть массив, длиной максимум 32 байта, за раз модуль может передать только 32,

    sizeof автоматически указывает длину массива

    Тоесть например вы передаёте два числа 10 и 20

    data(0) = 10;
    data(1) = 20; скобки квадратные, с телефона пишу

    Можно передать строкой как вы написали выше, а можно длину указать явно

    radio.write(&data, 2);
     
    Последнее редактирование: 20 ноя 2019
  17. Neon_1

    Neon_1 Нерд

    Если число которое нужно передать больше чем вмещает int, используйте int32_t, 32 битный int
     
  18. parovoZZ

    parovoZZ Гуру

    умножить до целого, на хосте поделить

    переменная, указывающая на массив, и есть указатель. Учите язык сперва, а потом программируйте!
     
  19. prohor-nastya

    prohor-nastya Нерд

    Спасибо!
    В коде встретил объявление типа byte , а в С++ пишут такого типа нет,
    в справочнике нашел : byte(х) приводит значение к типу byte.
    1. правильно ли я понял, что это функция и она вернет целое число в виде двоичного кода?
    там же в справочнике :
    2. Тип данных byte 8-ми битное беззнаковое целое число, в диапазоне 0..255.
    тут вообще не понятно в одном месте пишут нет такого типа, а в другом есть...
    для чего нужно такое объявление и эквивалентно ли будет использование вместо byte - int?
     
  20. prohor-nastya

    prohor-nastya Нерд

    и кстати 52,123765 такое число спокойно передалось у меня через double...
    но! последняя циферка уменшается, причем у разных чисел по разному и не по правилам округления.
    вот с этим я еще не понял как бороться...