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

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

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

Статус темы:
Закрыта.
  1. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Значит, неправильно настроены привязки при регистрации модуля в контроллере. Других проблем - не вижу.
     
  2. evgeny1241
    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46

    evgeny1241

    Живу здесь

    evgeny1241

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46
    Привязки левое 0 правое 0 второе
    может мегу обнулить ? и прощить и зарегить все с 0 ? может хвосты после моих кривых экспериментов
     
  3. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    Если вы все строчки раскомментировали, то должны видеть строчку "Update from nRF". Если не видите - вставьте в пустую строку номер 1360 строчку:
    Код:
    Serial.println(F("OUR CONTROLLER"));
    и посмотрите. Смысл: пакет должен приходить от определённого контроллера, к которому привязан модуль. И контрольная сумма пакета должна совпадать.

    По итогу код будет выглядеть так:
    Код:
    if(radio.available(&pipe_num))
      {
        Serial.println(F("Got packet from nRF"));
       
        memset(&nrfPacket,0,sizeof(NRFControllerStatePacket));
        radio.read(&nrfPacket,sizeof(NRFControllerStatePacket));
    
        if(nrfPacket.controller_id == scratchpadS.controller_id)
        {
           // это пакет с нашего контроллера пришёл, обновляем данные
           byte checksum = OneWireSlave::crc8((const byte*) &nrfPacket,sizeof(NRFControllerStatePacket)-1);
           
    Serial.println(F("OUR CONTROLLER"));
    
           if(checksum == nrfPacket.crc8) // чексумма сошлась
           {
            Serial.println(F("Update from nRF"));
            UpdateFromControllerState(&(nrfPacket.state));
           }
    И скажите - что вы видите в порту.
     
  4. evgeny1241
    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46

    evgeny1241

    Живу здесь

    evgeny1241

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46
    Ot packet from nRF
    Got packet from nRF
    OUR CONTROLLER
    Update from nRF
    Got packet from nRF
    OUR CONTROLLER
    Update from nRF
    Got packet from nRF
    OUR CONTROLLER
     
  5. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Всё работает штатно, состояние модуля обновляется из состояния контроллера. Смотрите настройки привязок, никаких ошибок в прошивке - не вижу.

    Я вас просил предоставить скриншот конфигуратора при настройке модуля - где он?

    З. Ы. USE_FEEDBACK закомментировано в прошивке модуля, надеюсь?
     
  6. evgeny1241
    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46

    evgeny1241

    Живу здесь

    evgeny1241

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46
    upload_2019-4-22_18-9-38.png
    закоментил естественно
     
  7. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    Если ничего не меняется - пойти в функцию UpdateFromControllerState в прошивке модуля, добавить, по вкусу - вывод отладочной информации, там достаточно комментариев, которые объсняют, что происходит.

    Я вообще не вижу проблем, всё должно работать. Возможно, дело в схеме подключения периферии к модулю, кто знает. Пока я вижу, что всё просто обязано работать.

    З. Ы. Часы DS3231 - ПОДКЛЮЧИТЬ К КОНТРОЛЛЕРУ!
     
  8. evgeny1241
    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46

    evgeny1241

    Живу здесь

    evgeny1241

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46
    Часы включил ничего не поменялось. буду смотреть UpdateFromControllerState
     
  9. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Мультиметром для начала на пин, который рулит каналом полива (пятый слот). В конфигураторе вкл/выкл полив.

    Сдаётся мне, что-то вы неправильно делаете/соединяете/меряете.
     
  10. evgeny1241
    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46

    evgeny1241

    Живу здесь

    evgeny1241

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46
    Нога А0 висит 4,5 вольта и не меняется
     
  11. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Строка 1287:
    Код:
     // состояние слота изменилось, запоминаем его
                    SLOTS[i].State = slotStatus;
    Строка 1290:
    Код:
                    if(SLOTS[i].Pin)
                    {
                        digitalWrite(SLOTS[i].Pin, slotStatus);
                    }
    Переделать вот так, чтобы было видно, что что-то пишется:
    Код:
     // проверяем на изменения
                 if(slotStatus != SLOTS[i].State)
                  {
    Serial.println(F("SLOT STATE CHANGED"));
                     // состояние слота изменилось, запоминаем его
                    SLOTS[i].State = slotStatus;
                  
                    if(SLOTS[i].Pin)
                    {
    Serial.print(F("Write to pin #"));
    Serial.print(SLOTS[i].Pin);
    Serial.print(F("; status="));
    Serial.println(slotStatus);
                        digitalWrite(SLOTS[i].Pin, slotStatus);
                    }
                  
                  } // if(slotStatus != SLOTS[i].State)
    Просто добавить отладочную информацию ;)
     
  12. evgeny1241
    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46

    evgeny1241

    Живу здесь

    evgeny1241

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46
    Все таки похоже они не вяжутся - ничего в выводе не изменилось включал и выключал окна и полив
     
  13. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Чуть выше добавьте, перед строками:
    Код:
     if(slotType == 0 || slotType == 0xFF) // нет привязки
              continue;
    
    Чтобы получилось так:
    Код:
    Serial.println(slotType);
    
    if(slotType == 0 || slotType == 0xFF) // нет привязки
              continue;
    
    Что будет выводить? У вас там EEPROM не побитая, случаем? Мне уже становится интересно - что за дичь у вас происходит.
     
  14. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Если у вас есть скайп - стучитесь porokhnya_dmitry, попробуем разобраться, что у вас там творится. И я по-быстрому смогу подсказать, что к чему.

    Если у вас стоит Team Viewer - вообще чудесно, можно будет удалённо быренько поменять код.
     
  15. evgeny1241
    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46

    evgeny1241

    Живу здесь

    evgeny1241

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    472
    Благодарности:
    46
    CONTROLLER
    Update from nRF
    1
    2
    1
    2
    3
    4
    5
    5
    Got packet from nRF
    OUR CONTROLLER
    Update from nRF
    1
    2
    1
    2
    3
    4
    5
    5
    Got packet from nRF
    OUR CONTROLLER
    Update from nRF
    1
     
Статус темы:
Закрыта.