1 2 3 4 5 6 7 8 9 10 10/10 10,00оценок: 12

Arduino Mega. Контроллер теплицы. Хроники - 4.0

Тема в разделе "Теплицы и парники", создана пользователем Анкор Плюс, 19.05.18.

Статус темы:
Закрыта.
  1. evgeny1241
    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46

    evgeny1241

    Живу здесь

    evgeny1241

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46
    Скайпа нет собак съед микровон с камерой. тим есть
     
  2. evgeny1241
    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46

    evgeny1241

    Живу здесь

    evgeny1241

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46
    Епром врят ли битый тогда бы не работал сенсорный модуль
     
  3. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Вижу, слоты нормально прописаны. У вас в настройках контроллера уровни включения/выключения полива - разные? Не прописано случайно одинаковые уровни вот тут:

    Код:
    // уровни для реле каналов полива
    #define WATER_RELAY_ON LOW // уровень для включения реле
    #define WATER_RELAY_OFF HIGH // уровень для выключения реле
    Если уровни разные, тогда давайте сделаем следующее, новые поправки:

    1. Было
    Код:
     case slotWateringChannel:
                {
                  // состояние канала полива, в slotLinkedData - номер канала полива
                  byte wateringChannel = slotData->slotLinkedData;
                  if(wateringChannel< 16)
                  {
                    if(state->WaterChannelsState & (1 << wateringChannel))
                      slotStatus = RELAY_ON; // выставляем в слоте значение 1
                    
                  }
                }      
                break;
    2. Стало:
    Код:
     case slotWateringChannel:
                {
                  // состояние канала полива, в slotLinkedData - номер канала полива
                  byte wateringChannel = slotData->slotLinkedData;
                
                  Serial.print(F("Watering channel="));
                  Serial.println(wateringChannel);
                
                  if(wateringChannel< 16)
                  {
                    if(state->WaterChannelsState & (1 << wateringChannel))
                    {
                      slotStatus = RELAY_ON; // выставляем в слоте значение 1
                      Serial.println(F("Watering channel ON!"));
                    }
                    else
                    {
                        Serial.println(F("Watering channel OFF!"));
                    }
                    
                  }
                }      
                break;
     
  4. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Немного повозился на компьютере @evgeny1241 - ещё раз убедился, что nRF - та ещё штучка. Но тут не без прикола: одна модель nRF (на контроллере) - у нас стоит nRF24L01+, а вторая (на модуле) - nRF24L01 (без плюса). Соответственно, при работе модуля в режиме передатчика - я предполагаю, что модуль контроллера понимает пакеты более древней версии.

    А вот при работе модуля в режиме приёмника - nRF на модуле сносит крышу, и он постоянно "принимает" один и тот же пакет. При этом контроллер отсылает пакет в эфир, как и положено - только по факту изменения состояния, проверил. Вдобавок ко всему, при использовании nRF24L01 - инициализация модуля толком не проходит, не подхватываются многие настройки.

    Резюме: проблема аппаратная, программист не при чём, следует использовать только модули nRF24L01+, и крайне желательно - из одной партии.
     
  5. evgeny1241
    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46

    evgeny1241

    Живу здесь

    evgeny1241

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46
    Переставил на модуль nRF24L01+ не оттянуло
    на чипе который без + написано что он настоящий ... китайцы...
    так же гонит типа непрерывно принимает
    Debug mode...
    Init nRF...
    RF CHANNEL: 19
    STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
    RX_ADDR_P0-1 = 0xe7e7e7e7e7 0xf0f0f0f0e0
    RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
    TX_ADDR = 0xe7e7e7e7e7
    RX_PW_P0-6 = 0x00 0x1e 0x00 0x00 0x00 0x00
    EN_AA = 0x3f
    EN_RXADDR = 0x02
    RF_CH = 0x13
    RF_SETUP = 0xd7
    CONFIG = 0x0e
    DYNPD/FEATURE = 0x00 0x00
    Data Rate = 1MBPS
    Model = nRF24L01+
    CRC Length = 16 bits
    PA Power = PA_MAX
    nRF inited, payload size: 30
    Setup done.
     
  6. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Ещё раз: я вам продемонстрировал, что у вас разные модули, которые вместе работать не будут. Вывел в "Блокнот" демонстрацию того, что один из модулей - не принимает настройки. Вы что от меня хотите? Чтобы я заставил работать вместе две РАЗНЫЕ железки? Не будут они работать вместе, и всё. Ищите две одинаковые nRF24L01+ - и всё будет работать. В коде - проблем нет, он сделан для одинаковых железок.
     
  7. evgeny1241
    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46

    evgeny1241

    Живу здесь

    evgeny1241

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46
    Вы не поняли. Я поставил два точно одинаковых модуля по крайне мере при старте пишут что это так оба nRF24L01+
    Да Огромное спасибо за помощь
     
  8. evgeny1241
    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46

    evgeny1241

    Живу здесь

    evgeny1241

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46
    ЭТО - nRF КОНТРОЛЛЕРА:

    STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
    RX_ADDR_P0-1 = 0xf0f0f0f0e0 0xf0f0f0f0e1
    RX_ADDR_P2-5 = 0xe2 0xe3 0xe4 0xe5
    TX_ADDR = 0xf0f0f0f0e0
    RX_PW_P0-6 = 0x1e 0x1e 0x1e 0x1e 0x1e 0x1e
    EN_AA = 0x00
    EN_RXADDR = 0x3e
    RF_CH = 0x13
    RF_SETUP = 0x07
    CONFIG = 0x0f
    DYNPD/FEATURE = 0x00 0x00
    Data Rate = 1MBPS
    Model = nRF24L01+
    CRC Length = 16 bits
    PA Power = PA_MAX

    модуль с другой nrf
    Debug mode...
    Init nRF...
    RF CHANNEL: 19
    STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
    RX_ADDR_P0-1 = 0xe7e7e7e7e7 0xc2c2c2c2c2
    RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
    TX_ADDR = 0xe7e7e7e7e7
    RX_PW_P0-6 = 0x00 0x00 0x00 0x00 0x00 0x00
    EN_AA = 0x3f
    EN_RXADDR = 0x03
    RF_CH = 0x13
    RF_SETUP = 0x07
    CONFIG = 0x0e
    DYNPD/FEATURE = 0x00 0x00
    Data Rate = 1MBPS
    Model = nRF24L01+
    CRC Length = 16 bits
    PA Power = PA_MAX
    nRF inited, payload size: 30
     
  9. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Теперь уже лучше. Проверяйте питание nRF - есть конденсаторы по питанию? В коде нет НИ СТРОЧКИ, которая бы вызывала циклический приём пакета, вы сами видели - контроллер отправляет состояние ТОЛЬКО ПРИ ИЗМЕНЕНИИ. При этом модуль делает вид, что постоянно приходит пакет. Это означает ровно то, что что-то с железкой не так, и приемный буфер не сбрасывается. Как вариант - не хватает питания или оно некачественное. Я честно предупреждал, что nRF - капризные железки.

    Всё, я пас, т. к. программной ошибки не вижу, у себя проверял - нет такого поведения, всё работает штатно. Я использую специальный модуль для питания nRF, если что.
     
  10. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Вот эта строчка, например, говорит, что я вижу какой-то мусор, т. к. адрес приема у модуля - 0xf0f0f0f0e0:
    Код:
    uint64_t controllerStatePipe = 0xF0F0F0F0E0LL; // труба, с которой мы слушаем состояние контроллера
    Что-то не нравится железке.
     
  11. evgeny1241
    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46

    evgeny1241

    Живу здесь

    evgeny1241

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46
    Ок. ОГРОМНОЕ СПАСИБО за помощь и терпение попробую разобратся с питанием. решил что с этим все ок так как в режиме датсчиков работает
     
  12. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Датчики только отправляют информацию, периодически. А исполнительный - постоянно слушает эфир, следовательно, более требователен к питанию. Я проверял у себя: при изменении состояния контроллера я вижу только один входящий пакет, а не кучу якобы повторяющихся. Из чего можно сделать вывод, что проблема не в коде, а в чём-то другом. Железки капризные, питание надо в первую очередь проверять. На форуме Амперки есть тема: http://forum.amperka.ru/threads/nrf24l01-побеждаем-модуль.3205/ - читайте, в ней 107 страниц борьбы с китайским ломаным чудом. Если вы не знали - то китайцы продают пиратки, оригинальный nRF от компании Nordic Semiconductor стоит сильно дороже. Ну и работает лучше, естественно.
     
  13. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Кстати - я использую такие модули для теста nRF, чтобы по питанию всё норм было: http://www.yourduino.com/sunshop/index.php?l=product_detail&p=467

    Они есть и на али.
     
  14. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Единственное, что ещё могу предложить попробовать - это в функции ProcessNRF добавить после этой строки:
    Код:
    radio.read(&nrfPacket,sizeof(NRFControllerStatePacket));
    две строчки
    Код:
    radio.stopListening();
    radio.startListening();
    Т. е. принудительный пересброс прослушки. Костыль, конечно, ибо надо разбираться с первопричиной ;) Вы пробовали настройку AUTOACK_INVERTED в другое значение ставить?

    Ещё можно найти строчку
    Код:
    radio.openReadingPipe(1,controllerStatePipe);
    и заменить там единичку на нолик. Чем чёрт не шутит с этими китайцами...
     
    Последнее редактирование: 23.04.19
  15. Gvvit
    Регистрация:
    24.11.12
    Сообщения:
    57
    Благодарности:
    8

    Gvvit

    Живу здесь

    Gvvit

    Живу здесь

    Регистрация:
    24.11.12
    Сообщения:
    57
    Благодарности:
    8
    Адрес:
    Саяногорск
    DIYMan и снова я к тебе со своими проблемами, запихал контроллер в коробку стал проверять работу фрамуг, а они не работают т. е. в конфигураторе, через СМС или в самом контроллере переключаю фрамуги на откр. и закр., а состояние выходов которые управляют релюшкой не меняется.
    Где я накосячил не пойму всё вроде проверил на надцать раз.
    При первых включениях у меня к этим выходам светодиоды были подключены и они моргали однако.
    Подскажи пожалуйста где копнуть чтоб разобраться
     
Статус темы:
Закрыта.