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

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

Тема в разделе "Теплицы и парники", создана пользователем DIYMan, 05.01.16.

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

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Вот, уже ближе к телу ;) Такой вариант меня устроит, даже вполне.
     
  2. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Я щас, кстати, потихоньку корёжу конфигуратор и прошивку - добавил команду для рестарта контроллера, на всякий. Плюс потихонечку пишу обвязку для работы через TCP - чтобы не только по последовательному порту можно было соединяться ;)

    А то как-то неаккуратненько - даже не протестировать из конфигуратора связь c ESP - всё через puTTY торчу.

    Но дело это небыстрое - наговнокодил в конфигураторе уже дай боже сколько, архитектуры там никакой, поэтому, скорее всего - где-то полезут глюкофичи. Не впервой, конечно :)
     
  3. D_J_Instruktor
    Регистрация:
    28.01.16
    Сообщения:
    35
    Благодарности:
    18

    D_J_Instruktor

    Участник

    D_J_Instruktor

    Участник

    Регистрация:
    28.01.16
    Сообщения:
    35
    Благодарности:
    18
    А если сделать запись беспроводного датчика вручную на самой меге? Допустим включили беспроводной датчик номер1 провалились в меню меги в функцию (поиск датчиков) и видим какойто датчик и вручную присваемаем ему адрес 0-9. После отключаем датчик и подключаем следующий для записи.
     
  4. olegmak3
    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442

    olegmak3

    Живу здесь

    olegmak3

    Живу здесь

    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442
    Адрес:
    Санкт-Петербург
    "- В то время, когда наши космические корабли бороздят просторы Вселенной..."
    Это я к чему-эа сутки 5 страниц накатали. Снежный ком растет.
    Имхо. Потонем
    Отладить "вариант 1"(минимум),а за тем делать "вариант 2"(максимум).
    Опять Имхо.

    Сделал, работает. Спасибо, Дмитрий !

    А вот с этим
    Проблемы остались.
    Скриншоты самих правил и логи прилагаю в архиве.
    По логам видно, что включаются (4 и 5 датчики) в разное время, позавчера ночью один (5) вовсе не включился.
    Время включения было поставлено в 23 часа. М. б. переход через 0 не корректно работает?
    И вот на что обратил внимание.
    Датчики температуры Т4 и Т5 работают с 9-битным разрешением (0,5 градуса, по логам хорошо виден дискрет).Причем грешил на сами датчики.
    Нет. Программирование их на 12 бит не дает результата, т. к. после подключения к контроллеру сразу улетают в 9 бит. М. б. это влияет? Остальные в режиме 12 бит остаются (в логах все видно)
    Вчера обратил внимание, что и Т0 тоже произвольно ушел в режим 9 бит.
    Вчера поставил время включения этих каналов в 1 час ночи.
    Сегодня гляну результат.
    "-Бэн!
    I need help "
    Что делаю не так?
     

    Вложения:

    Последнее редактирование: 09.04.16
  5. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Я посмотрю, что к чему, надо искать эту багу и нещадно давить :)
     
  6. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    Разархивируйте его, плз, и откройте в браузере. Можно открыть в Блокноте и поменять настройки - там есть комментарии, что к чему.

    Сходу не увидел ошибки перехода через 0. Поэтому предлагаю сделать следующее: убить все правила, и сделать парочку единственных, которые будут включать/выключать досветку, скажем: одно включает, другое, если не сработало первое, выключает. Поставить правилу включения час начала работы в 23, продолжительность - в пару часов и посмотреть, отрабатывает или нет.

    Потому что я не знаю, где ещё искать. Единственное, что могу предположить: правило не работает, когда датчика нет на линии, т. е. с него нет показаний. Если что-то из датчиков подглючивает - это может быть причиной неправильной сработки правил.

    В общем, надо искать проблему. Потому что кусок кода, проверяющий активность правила по времени - отрабатывает нормально. Вроде :|::)]:aga:
     

    Вложения:

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

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Этот кусок вообще не понял. Что значит "включаются в разное время"? Посмотрел показания с 4 и 5 датчика в логах - они есть как бы, и идут рядышком, т. е. всё нормально.
    Я специально ничего не делаю для смены разрешения датчика - читаю с наивысшим фактически. Что предлагаю - поменять местами датчики и посмотреть, как на пинах, на которых сейчас висят датчики 4 и 5 - поведут себя другие. Подозрение такое - может, что-то где-то конфликтует.
     
  8. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    @olegmak3, ещё такой нюанс: найдите в Globals строчку

    #define WRITE_ABSENT_SENSORS_DATA

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

    З. Ы. Тупой вопрос, но всё же: датчики точно все DS18B20? Нет среди них DS18S20?
     
  9. olegmak3
    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442

    olegmak3

    Живу здесь

    olegmak3

    Живу здесь

    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442
    Адрес:
    Санкт-Петербург
    Точно!
    Гонял с помощью Примеров далласовских и не только. Нашел еще прогу на форумах для изменения конфигурации датчиков.
    При подключении к прошивке сразу уходит в 9 бит, причем только 4 и 5 датчики.

    Я имел ввиду вот эти моменты. лог 1.png
    Сегодня гляну, конечно непосредственно саму силовую часть, но думаю там все нормально.

    Вот и мне не понятно, почему меняется разрешение.
    По экспериментирую-отпишусь.

    Посмотрел Ваш HTML файл.
    Вроде все верно, можем работать с 23-00 до 6-50.
     
    Последнее редактирование: 09.04.16
  10. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    C# хорош, конечно, но иногда слишком много прячет с глаз долой. В общем, поэкспериментировал я, психанул - и выпилил весь тестовый код по работе через TCP :) Хотелось, конечно, но, видимо, пока не судьба - что-то не чувствую я в себе сил сейчас прикручивать ещё и это. Вроде и логика работы особо меняться не должна, однако - на практике всё не так радужно: иногда случаются досадные зависания, когда что-то там внутри прочухаться не может. Иногда - при рестарте в порт начинают сыпаться данные, которых там быть не должно - даже не знаю, на что грешить. Может, сама винда глючит, т. к. было вообще такое: смотрю, из конфигуратора после запроса не приходят данные. Ок, думаю, шут с тобой. Открываю puTTY, коннекчусь к ESP - обана, сразу после коннекта в терминал посыпались данные лог-файла. За-ши-бись!

    В таких условиях и при таких вводных выкладывать даже тестовую версию не хочу - мучение одно с ней будет, да и только. Позже что-нибудь придумаю ;) Во всяком случае - очень на это надеюсь.

    З. Ы. Хотя, по-хорошему - надо эту всю байду (конфигуратор, я имею в виду) переписывать с нуля, продумав перед началом переписывания всю архитектуру "от и до". Наверное, со временем так и сделаю.
     
  11. olegmak3
    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442

    olegmak3

    Живу здесь

    olegmak3

    Живу здесь

    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442
    Адрес:
    Санкт-Петербург
    Дмитрий!
    По поводу моих сегодняшних изысканий. Это полный атас! Весь день потрачен.
    Напомню.
    В час ночи оба канала (пина) включились. лог вкл.png
    Рано я обрадовался.
    Снова задаю время включения (оба канала одинаково) 23 часа.
    Меняю время в контроллере на 3 минуты раньше заданного.
    В 23-01-20 включился только 5 канал.
    2 попытка до 23-02-ничего.
    3-я и 4-я тоже ничего не включилось.
    Устанавливаю время включения каналов в 1 час.
    Далее по той же методике (меняется время в контроллере на 3 минуты раньше установленного)
    В 1-00 ничего не включилось. В 1-02 нажал Reset на Меге, каналы включились (связь с конфигуратором прервалась-об этом далее).
    Далее опять танцы с бубном, и в результате - после установки текущего времени контроллера нажимаем Reset на Меге и в положенное время 1-00 оба канала включаются.

    Снова, вооружившись найденным опытом возвращаюсь к 23-00.
    Включился только 4 канал.
    2 попытка-ничего.
    3-япопытка .После установки текущего времени контроллера нажимаем Reset на Меге и в положенное время может включится один из каналов (после ресета связь с конфигуратором сохраняется).
    Если каналы не включились в положенное время жмем ресет и каналы включаются.
    Последующие танцы с бубном стабильных результатов не принесли.

    Снес все правила.
    Создал новые, разрешающие работу пинов 4 и 5 каналов постоянно (0,0) с правилом,
    запрещающим их работу с 7 утра и до 23-00.(960 минут)
    Результатов нет-ничего не включается.
    Стал пошагово уменьшать запрещающее время. Дошел до 15 минут.
    Ни разу ни один канал не включился. Ни с помощью ресета до наступления события, ни с помощью выдергивания кабеля из ноута.
    Срабатывают только при нажатии ресета после наступления события (установленного времени включения).
    Такое ощущение, что время с модулем управлением пинами не дружит.
     
  12. olegmak3
    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442

    olegmak3

    Живу здесь

    olegmak3

    Живу здесь

    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442
    Адрес:
    Санкт-Петербург
    По поводу датчиков температуры.
    Раскоментировал в Global. Результат будет завтра.
    Датчики все ds18b20.Еще раз проверил.
    Обнаружил вот такую штуку.

    Включаю в 5 канал другой датчик (либо 5-й,но прописанный на 12 бит).
    Температуру кажет 12-битную.
    Выдергиваю его из разъема и снова включаю.(можно в место передергивания 5-го просто воткнуть датчик в порт 4 канала-эффект тот же).
    Он определяется (85) и кажет уже 9 битную температуру.
    Заметил это только когда в Мегу грузил примеры Далласа (тестер),а затем грузил Вашу прошивку.
    Все без выключения питания.
    Если питание отключалось, либо ресетилась Мега-сразу начинает работать 9 битовое разрешение.
    Такая же канитель (9 бит) и с 0 датчиком.
    Вот такие дела.
    Эмоции кончились еще днем.
    Так они прописаны в Global #define TEMP_SENSORS_PINS 26,22,27,23,24,25
     
  13. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Очень странно, очень. Там, по сути, никак не связано - флаг работы правила проверяется отдельно, а пин уже читается - отдельно. Смотрите:
    Код:
      if(!linkedModule || !bEnabled || !canWork)
        return false;
    
      case rtPinState: // следим за статусом пина
        {
           pinMode(sensorIdx,INPUT);
           int pinState = digitalRead(sensorIdx); // читаем из пина его значение
           // dataAlert у нас может принимать одно значение: 1, поскольку мы сравниваем
           // это значение с HIGH и LOW на пине. Поэтому не имеют смысла операнды > и <=,
           // вместо них мы принудительно используем операнды >= и <.
         
           switch(operand)
           {
              case roLessThan: return pinState < dataAlert;
              case roLessOrEqual: return pinState < dataAlert;
              case roGreaterThan: return pinState >= dataAlert;
              case roGreaterOrEqual: return pinState >= dataAlert;
              default: return false;
             
           } // switch
    Всё. Флаг canWork проверяется в Update правила по тому алгоритму, что я вам привёл. Я даже не понимаю, в чём может быть дело. Единственное, что могу предположить - что эти пины кто-то постоянно объявляет как OUTPUT, и в процессе вызова

    pinMode (sensorIdx,INPUT);

    их состояние, естественно, теряется. Других предположений у меня пока нет.
     
  14. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Насчёт разрешения: если вы посмотрите код прошивки, то я там ничего из разрешений измерения не устанавливаю - я только читаю scratchpad датчика, всё. То есть от меня не зависит, в каком разрешении выдаст мне показания датчик - я его не прошу установить разрешение. Т. е. физически такого кода в прошивке просто нет. У меня висит DS18B20 и показывает с 12-битным разрешением уже пару месяцев, я даже не знаю, как заставить его перейти на 9 бит.

    Если хотите - можно дописать код установки разрешения для датчиков, чтобы при старте меги разрешение устанавливалось.
     
  15. olegmak3
    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442

    olegmak3

    Живу здесь

    olegmak3

    Живу здесь

    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442
    Адрес:
    Санкт-Петербург
    Думаю так проще будет, нежели танцы с бубном.,их и так хватает.
    Дмитрий, я просто описал обнаруженные эффекты.
    Кто бы еще протестировал работу модуля пинов со временем?
    Желающие есть?
    Так и у меня три из 6 работают с 12 бит, а другие три глючат.
     
Статус темы:
Закрыта.