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

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

Тема в разделе "Умный дом", создана пользователем Анкор Плюс, 27.04.17.

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

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Допилим со временем ;)
     
  2. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    @tchernyavsky, обновил на гитхабе, теперь таймер ничегонеделанья сбрасывается по клику на любую кнопку любого экрана TFT, пробуйте ;)
     
  3. tchernyavsky
    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160

    tchernyavsky

    Живу здесь

    tchernyavsky

    Живу здесь

    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160
    Всё работает! Спасибо! :super:
     
  4. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Тут подумалось: у китайского модуля DS3231 на борту есть микросхема памяти, которая как раз поддерживается прошивкой, и имеет адрес на шине 0x57, т. е., от базового 0x50 - 7-й адрес на шине.

    Соответственно, обновил на гитхабе, добавил настройку EEPROM_MEMORY_INDEX, в которой можно указать адрес микросхемы на шине (от базового, т. е. 0-7), которая будет использоваться для хранения настроек, если юзается внешняя EEPROM. Мелочь, конечно, но чуть-чуть дополнительной свободы манёвров - дает ;)
     
  5. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Вот что нарылось по поводу плат Arduino Due: https://3deshnik.ru/blogs/anry777/problemy-plat-arduino-due-varianty-reshenij-na-chto-obratit-vnimanie-pri-pokupke

    Читаем, пробуем перешить загрузчик, либо - пробуем переделать по железной части. Отписываемся тут - помогло ли или нет ;)

    Посмотрел на свои китайские платы - так и есть, транзистор T3 припаян ВДОЛЬ платы, т. е. могут быть проблемы с резетом проца ;)

    Вот ещё, отсюда: https://forum.arduino.cc/index.php?topic=256771.75

    Вот ещё: http://www.dimdim.gr/2016/03/fixing-startup-issues-with-arduino-dues/

    Короче, проблема решаема ;)
     
    Последнее редактирование: 22.03.18
  6. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Обновил прошивку, наконец-то добавил обработку второго параметра для команды, передающейся с выносного модуля с кнопками: теперь там можно указать для команды открытия окон - проценты их открытия. Если проценты указаны больше 0 - то на контроллере, соответственно, выполнится команда открытия на указанные проценты. Если вторым параметром указан 0 - то просто будет выполнена команда открытия окон (или окна). В прошивку UniversalControlModule добавил в комментариях примеры.

    Т. е. сейчас можно на первую кнопку назначить, например, полное открытие окон, на вторую - открытие до позиции 50%, на третью - до позиции 25%, на четвёртую - до позиции 75%, на пятую - закрыть все окна, ну и т. п.

    Также добавил комплементарность команд - настройка USE_DUAL_STATE_BUTTONS в прошивке UniversalControlModule. В комментариях там всё описано, если вкратце: одну кнопку при раскомментированной настройке можно юзать как пару противоположных команд, например: если к кнопке привязана команда "включить полив", то при первом нажатии на кнопку выполнится команда "включить полив", при повторном - команда "выключить полив". Не тестировал это дело ещё, со страждущих - проверка ;)
     
    Последнее редактирование: 22.03.18
  7. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957

    promavto

    Разработка контроллеров

    promavto

    Разработка контроллеров

    Регистрация:
    27.02.16
    Сообщения:
    1.957
    Благодарности:
    1.957
    Адрес:
    г. Москва, Зеленоград.
    У меня во всех схемах это учтено, но все равно нет четкого запуска микроконтроллера.
    Этот узел предназначен для прошивки микроконтроллера и к сбросу не имеет отношения.
    Лучше обратить внимание на резистор RN1D 100k и уменьшить до 10к.
     

    Вложения:

    • 2018-03-22_11-34-26.png
    • 2018-03-22_11-48-24.png
  8. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Так как его добиться тогда, вот в чём вопрос? Не дело же, когда загружается непредсказуемо ;)

    И да, в предложенных мной ссылках есть рекомендация также перешить загрузчик на Atmega 16U2, дабы обеспечить дополнительный стартовый резет камню Due - как такой вариант, имеет право на жизнь?
     
    Последнее редактирование: 22.03.18
  9. andy117
    Регистрация:
    18.01.18
    Сообщения:
    34
    Благодарности:
    14

    andy117

    Участник

    andy117

    Участник

    Регистрация:
    18.01.18
    Сообщения:
    34
    Благодарности:
    14
    Несколько мелочей, без которых все и так будет работать, но можно и поправить
    1) дата во всех файлах на SD - 1 января 2000. Имена логов и время в них нормальные, но глаз немного режет. Тем более, что исправить легко - вставить где-нибудь что то типа
    Код:
    #include <SdFat.h>
    #include "DS3231Support.h"
    
    /*
    * User provided date time callback function.
    * See SdFile::dateTimeCallback() for usage.
    */
    void dateTime (uint16_t* date, uint16_t* time) {
      DS3231Clock rtc = controller.GetClock();
      DS3231Time tm = rtc.getTime();
    /* или
      DS3231Time tm = MainController->GetClock().getTime();
    или
      DS3231Clock rtc = MainController->GetClock();
      DS3231Time tm = rtc.getTime();
    */
    
      // return date using FAT_DATE macro to format fields
      *date = FAT_DATE (tm.year, tm.month, tm.dayOfMonth);
    
      // return time using FAT_TIME macro to format fields
      *time = FAT_TIME (tm.hour, tm.minute, tm.second);
    }
    
    void setup () { /* или в конструкторе DS3231Clock::S3231Clock(),
    DS3231Clock::begin() и т.д., в зависимости от порядка инициализации */
    ...
      // set date time callback function
      SdFile::dateTimeCallback (dateTime);
    ...
    }
    
    и все даты файла (создание, модификация, доступ) будут правильные

    2) на схеме подключений нет датчика влажности почвы
    3) сам датчик, пишут, из-за постоянного напряжения на нем очень быстро "съедается".
    Можно питать его цифровым пином, а напряжение подавать перед измерением. Единственный минус - нужно ждать пока поданное напряжение устаканится. Хотя сам принцип датчика такой, что он по любому дает показания плюс-минус трамвайная остановка и его нужно калибровать под конкретную почву, так что сильно эти очень примерные показания не исказишь.

    Но, повторюсь, без этих рюшек можно обойтись.
     
    Последнее редактирование: 22.03.18
  10. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Ну да, дата файлов не выставляется, спс за пример, щас попробую его прикрутить ;)

    Да там много чего нету, так-то ;)
    Да, есть такое. Но тут фишка в чём: считаю, что использование китайского датчика влажности почвы - само по себе - не очень: как какашку не оборачивай в красивые обёртки, она не перестанет быть какашкой :) Именно поэтому я пока не форсирую отключаемость питания у датчика и т. п. Я хочу юзать датчики Сергея @HANTER333 - с оказией как-нибудь закажу у него пяток, они не боятся коррозии и вообще - работают по другому принципу, поддержка их в прошивке - есть ;) Так что с китайскими датчиками влажности почвы пока - вопрос открытый, так сказать ;)
     
  11. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    @andy117, обновил на гитхабе, добавил установку времени файлов по вашему примеру - пробуйте ;)

    По поводу китайских датчиков влажности почвы - надо подумать: если получится быстро прикрутить пин управления питанием для всех датчиков (думаю, лучше через один пин, чем на каждый датчик по пину) - то прикручу, не вопрос. Надо подумать ещё и с настройкой ожидания устаканивания питания: по идее - нескольких миллисекунд хватит, кмк. Короче, подумаю сегодня.
     
  12. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    Обновил на гитхабе, добавил возможность управлять питанием всех датчиков влажности почвы, см. настройку USE_SOIL_MOISTURE_SENSORS_POWER_MANAGEMENT. Как обычно - рулить пином можно как напрямую, так и через MCP*

    Посмотрел прошивку модуля с датчиками - там уже есть возможность гасить питание датчиков между замерами - там просто чуть допилил, добавив настройку задержки после подачи питания и до начала чтения с датчиков - см. LINES_POWER_UP_DELAY

    @andy117, по вашему заказу, можете попробовать и отписать - работает как надо, или нет ;) У мну сейчас нет возможности проверить, т. к. на отладочной плате нет возможности управления питанием линий датчиков, емнип. По логике дописанного - всё должно работать, но мало ли, что называется ;)

    Теперь у нас и китайские датчики влажности будут жить подольше, по идее.
     
  13. tchernyavsky
    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160

    tchernyavsky

    Живу здесь

    tchernyavsky

    Живу здесь

    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160
    Последнее редактирование: 24.03.18
  14. andy117
    Регистрация:
    18.01.18
    Сообщения:
    34
    Благодарности:
    14

    andy117

    Участник

    andy117

    Участник

    Регистрация:
    18.01.18
    Сообщения:
    34
    Благодарности:
    14
    Испытать еще не успел.
    В файле Configuration_MEGA.h код
    Код:
    // сколько миллисекунд ждать перед подачей питания до чтения с датчиков
    // (настройка актуальна при раскомментированной USE_SOIL_MOISTURE_SENSORS_POWER_MANAGEMENT)
    #define SOIL_MOISTURE_POWER_ON_DELAY 200.
    
    // режимы управления пином питания датчиков влажности почвы - [DRIVE_DIRECT, DRIVE_MCP23S17, DRIVE_MCP23017]
    // (настройка актуальна при раскомментированной USE_SOIL_MOISTURE_SENSORS_POWER_MANAGEMENT)
    #define SOIL_MOISTURE_POWER_DRIVE_MODE DRIVE_DIRECT // прямое управление пинами, также можно рулить через расширители портов (MCP23S17 и MCP23017)
    
    // адрес микросхемы MCP23S17, через которую рулим питанием датчиков (если управление в режиме DRIVE_MCP23S17)
    // (настройка актуальна при раскомментированной USE_SOIL_MOISTURE_SENSORS_POWER_MANAGEMENT)
    #define SOIL_MOISTURE_MCP23S17_ADDRESS 1
    
    // адрес микросхемы MCP23017, через которую рулим каналами досветки (если управление в режиме DRIVE_MCP23017)
    // (настройка актуальна при раскомментированной USE_SOIL_MOISTURE_SENSORS_POWER_MANAGEMENT)
    #define SOIL_MOISTURE_MCP23017_ADDRESS 0 // 0 - первая микросхема по адресу 0x20, 1 - вторая по адресу 0x21 и т.п.
    
    // пин управления питанием датчиков влажности почвы (или номер канала MCP*, если управление.
    // в режимах, отличных от DRIVE_DIRECT)
    // (настройка актуальна при раскомментированной USE_SOIL_MOISTURE_SENSORS_POWER_MANAGEMENT)
    #define SOIL_MOISTURE_POWER_PIN 34
    
    // уровни для управления питанием датчиков
    // (настройка актуальна при раскомментированной USE_SOIL_MOISTURE_SENSORS_POWER_MANAGEMENT)
    #define SOIL_MOISTURE_POWER_ON LOW // уровень для включения питания датчиков
    #define SOIL_MOISTURE_POWER_OFF HIGH // уровень для выключения питания датчиков
    повторен 2 раза
    Да и
    Код:
    // раскомментировать, если нужно управлять питанием датчиков влажности почвы.
    // при раскомментированной настройке датчики перед опросом включаются,
    // после опроса - выключаются.
    #define USE_SOIL_MOISTURE_SENSORS_POWER_MANAGEMENT
    по сути тоже 2 раза, но один раз закомментирован, другой нет.
     
    Последнее редактирование: 24.03.18
  15. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.888
    Адрес:
    80 км от Краснодара
    А перешить загрузчик попробовать, как здесь описано? https://3deshnik.ru/blogs/anry777/problemy-plat-arduino-due-varianty-reshenij-na-chto-obratit-vnimanie-pri-pokupke

    Может, лучше станет? Надо решать эту проблему ;)
     
Статус темы:
Закрыта.