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

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

  1. Airbus

    Airbus Радиохулиган Модератор

    Такая дорогущая чорная коробочка по цене 500 nrf24l01 которой надо еще научиться пользоваться—та еще Задача! Вам она точно не нужна
     
    DetSimen нравится это.
  2. parovoZZ

    parovoZZ Гуру

    Логический анализатор. Подойдёт самый простой.
    Вместо
    На поиск проблемы уйдёт от силы час.
     
  3. vavab

    vavab Нуб

    наверняка, но я покупал конструктор, а не детали россыпью, как раз потому, что предполагал не вникать в то, как работает осцилограф, изучать краткий курс радиоэлектроники и все прочее...
    при этом и сервоприводы и кнопки и светодиоды прекрасно работают, достаточно было воткнуть, и с минимальным программированием, проблема только с радио.
    прозвонил светодиодом все пины - все нормально, все горит.
     
  4. Airbus

    Airbus Радиохулиган Модератор

    Как правило все ошибки на поверхности. Неправильное подключение. В радиотехнике всего 3 вида неисправностей 1 есть Контакт 2 нету Контакта 3 хреновый Контакт. Я и сам хоть и живу 45 (из 56) лет с паяльником периодически делаю такие тупые ошибки на ровном месте. Проверьте все подключения досконально.
     
  5. parovoZZ

    parovoZZ Гуру

    Какой ещё конструктор? Конструктор - это, например, лего. Там в соединениях ошибиться невозможно. А речь была про это
    Я так понимаю, что это не шилды, а значит вовсе не конструктор.
     
  6. vavab

    vavab Нуб

    я понимаю, хотя в сложных системах это плохо работает... проверить контакты, спаянные китайским автоматом, без спец. оборудования и большого желания трудновато:)... хотя тут в теме была девушка, которой муж погрел феном плату и все заработало... переподключал уже раз пятьдесят, попробую еще, деваться видимо некуда... или забью...:)
     
  7. vavab

    vavab Нуб

    о терминах спорить не готов, это не приближает к решению проблемы. для меня конструктор это когда одно входит в другое, подключается без танцев с бубном по инструкции, и получается третье :) как раз лего и получается. берем радиомодуль, втыкаем проводочки по схеме в него и в плату, загружаем скетч, и все должно работать.
    я звонил во все эти конторы, обрисовывал проект, получил список деталей, все купил. для сервы взял шилд (хотя он тоже местами глючит, отдельно разберусь, если потребуется), для остального шилды не нужны были. можно было их взять, но тогда бюджет уже зашкаливал. кто ж знал, что надо ввалить столько денег, чтобы конструктор из семи проводов заработал... и ведь пока не заработал
     
  8. parovoZZ

    parovoZZ Гуру

    увы и ах - разработка современной цифровой электроники дело весьма дорогое.
    Хочу ещё больше огорчить. Чтобы заниматься электроникой, надо вваливать в неё не только деньги, но и знания. А знания - это талант и стремление к развитию этого таланта.
    Поэтому если что-то не получается, то придётся обзавестись и измерительным инструментом, а также знаниями (штудирование даташитов и учебников).
    И самое главное - иметь терпение.
    И ещё - никогда не слушай того, что говорят на форумах. Всегда надо сверяться или с учебником, или с даташитом.
    А уж байка про контакты...это пошло со старых советских ящиков и их непременный атрибут - пассатижи. Если ящик не кажет, надо по нему стукнуть пассатижами. Надо переключить программу - снова пассатижи...
    Как правило, те, кто рассказывают байки про контакты в электронике, разработкой электроники не занимаются. Максимальный их уровень - это повторение чужих схем.
     
  9. Помогите в какую сторону копать. Имеется Atmega328(уже около 5 лет подряд трудится на улице 24/7) которая читает датчик температуры и отправляет через NRF24L01+ на приемник, приемник так же на Atmega328, получает данные и выводит их на экранчик. Начал изучать STM32, и решил по экспериментировать с NRF. Написал для STM простенькую программу, с идентичными настройками приемника, но за неделю экспериментов получить пакеты данных так и не смог. Причем если передатчиком сделать другую плату STM, данные прилетают. Сегодня сравнил содержимое регистров NRF приемника на Atmega и на STM32, в обоих случаях все одинаково, т.е. оба модуля NRF настроены идентично. Грешил на модули, менял их местами, но результат один, передатчик с Atmega и приемник с STM32 не хотят работать совместно, работают только Atmega-Atmega, или STM-STM. Понимаю что звучит это все бредово, нужно приложить код, но если содержимое регистров идентично, то настроены они одинаково, STM или ATmega не должны играть роли, с их помощью лишь конфигурируются модули, которые потом работают условно "Автономно". Помогите если есть идеи, в какую сторону копать. Заранее спасибо.
     
  10. parovoZZ

    parovoZZ Гуру

    в сторону упаковки данных.
     
  11. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Вариант STM - передатчик, ATmega - приемник тоже не работает ?
    ПС. Скорее всего - тоже.
     
    Последнее редактирование: 7 июл 2023
  12. Всем спасибо, оказалось что на STM адрес трубы нужно писать задом наперед, относительно Atmega, еще не разбирался детально в библиотеки HAL, но выяснил такую особенность
     
  13. parovoZZ

    parovoZZ Гуру

    Да на фиг они не нужны. Своя библа за пару дней пишется. И полностью под свои потребности.
     
  14. Полностью согласен, но с другой стороны использование библиотек это повсеместная практика.
     
  15. al072

    al072 Нерд

    Доброго времени суток! Может кто-нибудь пожалуйста подсказать в чем измеряется уровень зашумленности на каналах?
     
  16. parovoZZ

    parovoZZ Гуру

    В децибеллах.
     
    al072 нравится это.
  17. al072

    al072 Нерд

    Спасибо
     
  18. MaksOne

    MaksOne Нерд

    Доброго времени суток! Тема похоже умерла, но вдруг кто-то еще следит.
    Помогите, кто чем сможет. Ситуация такая: есть две ардуины и два модуля NRF24L01. Один комплект передает информацию, другой принимает, понятное дело. Библиотека RF24.h. Скетчи такие:
    TX:
    Код (C++):
    #include <SPI.h>
    #include "nRF24L01.h"  
    #include "RF24.h"      
    byte data;
    RF24 radio(9, 10);

    void setup() {
      radio.begin();          
      radio.setAutoAck(1);      
      radio.setRetries(0, 15);
      radio.enableAckPayload();
      radio.setPayloadSize(32);
      radio.openWritingPipe(0xAABBCCDD11LL);
      radio.setChannel(27);    
      radio.powerUp();
      radio.setPALevel (RF24_PA_HIGH);
      radio.setDataRate (RF24_250KBPS);
      radio.stopListening();
    }

    void loop() {
        radio.write(&data, sizeof(data));
        data++;
        delay(10);
    }
    RX:
    Код (C++):
    #include <SPI.h>
    #include "nRF24L01.h"
    #include "RF24.h"
    RF24 radio(9, 10);
    uint8_t pipe;

    void setup() {
      Serial.begin(9600);      
      radio.begin();      
      radio.setAutoAck(1);
      radio.setRetries(0, 15);
      radio.enableAckPayload();
      radio.setPayloadSize(32);
      radio.openReadingPipe(1, 0xAABBCCDD11LL);
      radio.setChannel(27);
      radio.setPALevel (RF24_PA_HIGH);
      radio.setDataRate (RF24_250KBPS);
      radio.powerUp();    
      radio.startListening();
    }

    void loop() {
      byte gotByte;
      if (radio.available(&pipe)) {
        radio.read(&gotByte, sizeof(gotByte));
       if (pipe==1) {Serial.print("Recieved: "); Serial.println(gotByte);}  
      }
    }
    Всё хорошо работает: передатчик с задержкой delay(10) передаёт значение "data" о 0 до 255 и по кругу. Приемник принимает и выводит в монитор порта бегущие цифры от 0 до 255.
    НО! Стоит в скетче передатчика, в основном цикле прописать что то типа:
    Код (C++):
    if (millis() - timing > 1000)
    { radio.write(&data, sizeof(data));
      data++;
      timing = millis();
    }
    или просто увеличить значение задержки, чтобы передача была не каждые 10 мс а каждую секунду, то всё, приёмник уже ничего не принимает.
    Иными словами, любой другой способ передачи информации, кроме зацикливания с задержкой 10 мс, не работает.
    Так же пробовал передавать информацию однократно по переключению флага при определённом событии:
    Код (C++):
    if (A==1) {
    radio.write(&data, sizeof(data));
    A=0; }
    но приемник ничего не слышит.
    Менял прошивки местами на платах, всё то же самое.
    Изучал чужие проекты с использованием данных модулей - у всех всё работает.
    Конденсаторы (электролиты и керамику) параллельно питанию модулей nrf24 припаивал. Питание модулей стабильное. Куда копать - непонятно.
    Заранее благодарю откликнувшихся
     
  19. parovoZZ

    parovoZZ Гуру

    а где инициализация timing?

    Приёмник ничего не принимает, потому как передатчик либо не передаёт, либо просто лупит в эфир. А так нельзя. Надо обязательно давать паузу для подстройки радиоузла.