nRF24L01 проблемы.

Тема в разделе "Arduino & Shields", создана пользователем Garry_Poter, 26 фев 2019.

  1. Garry_Poter

    Garry_Poter Нерд

    Есть две ардуинки nano и uno. Одна с ethernet шилдом стоит в помещении другая за окном с датчиками ds18b20 si7021 датчиком осадков и освещенности. Общаются они через модули nRF24L01. Модули питаются от ардуинок через адаптер питания (прикреплен к посту) . Возникла такая проблема каждый раз примерно через сутки , перестают поступать данные от ардуинки за окном. Просто ничего не приходит. Как только отключаю и включаю питание на ней все снова работает. В чем может быть причина?
    Библиотеки которые я использую:
    #include<nRF24L01.h>
    #include<RF24.h>

    Данные отправляю каждые три минуты. Мощность стоит макимальная. Скорость передачи 1Mbps
     

    Вложения:

  2. DetSimen

    DetSimen Guest

    сломалось чота.
     
  3. ImrDuke

    ImrDuke Гик

    У меня была такая же проблема.
    Повесил питание nRF на вывод ардуины и когда модуль долго не отвечает, передергиваю питание с повторной инициализацией модуля.
     
  4. Посмотрите внимательно скетч, может где-то задействованы переменные-счётчики, которые при неправильной организации кода переполняются и сбивают алгоритм работы.
     
  5. Garry_Poter

    Garry_Poter Нерд

    А как решить так чтобы не передергивать питание? Если например подать логическую единицу на вывод irq?
     
  6. Garry_Poter

    Garry_Poter Нерд

    Там и счетчкиков нет особо. Один массив данных состоящий из 4 элементов и delay на 3 минуты.
     
  7. parovoZZ

    parovoZZ Гуру

    Если в лоб, то вачдог в помощь.
     
  8. Daniil

    Daniil Гуру

    Delay это счетчик
     
  9. Garry_Poter

    Garry_Poter Нерд

    Ну а каким образом он может приводить к зависанию?
     
  10. parovoZZ

    parovoZZ Гуру

    а уверен, что зависает МК? Как выяснил?
     
  11. Daniil

    Daniil Гуру

    у вас время проверяется, что оно больше N, после переполнения счётчику до N как до луны, вот и ждет, а выглядит как "зависание".
     
  12. Garry_Poter

    Garry_Poter Нерд

    Я читал описание вызова delay() и просто не пойму почему должно происходить переполнение. Предлагаете заменить delay на millis() ?
     
  13. Garry_Poter

    Garry_Poter Нерд

    Выяснить сложно, оно примерно через сутки но в разное время происходит.
     
  14. ImrDuke

    ImrDuke Гик

    Зачем и какая разница?
    IRQ для других целей
     
  15. Да, параллельно можно было бы добавить светодиод с кодом мигалки и определить зависание МК, ну и сторожевой таймер, конечно будет не лишним на будущее.
     
  16. ImrDuke

    ImrDuke Гик

    В моем случае это не помогало. Зависал именно сам модуль nRF. МК при этом, продолжал работать. Даже перезагрузка МК с кнопки не помогала, только отключение питания.
     
  17. parovoZZ

    parovoZZ Гуру

    Почему решил, что зависает?
     
  18. parovoZZ

    parovoZZ Гуру

    Он не зависает. Там конечный автомат. Зависать ему просто негде.
     
  19. ImrDuke

    ImrDuke Гик

    Отказывается принимать-передавать данные.
    printDetails() - выдает везде нули.
     
  20. parovoZZ

    parovoZZ Гуру

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