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

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

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

Статус темы:
Закрыта.
  1. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
    нет конечно, между ними 15см
     
  2. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Ну я код привёл, там видно, что читается из пинов концевиков. Проверьте настройки, разные ли пины указаны для концевиков. Ну не должны они срабатывать вместе, если вы хотите, чтобы работало в соответствии с заложенной логикой ;)
     
  3. tchernyavsky
    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160

    tchernyavsky

    Живу здесь

    tchernyavsky

    Живу здесь

    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160
    @DIYMan, Дмитрий! А можно ли припилить к прошивке исполнительного модуля кнопочную клавиатуру, или хотя-бы 3 кнопки - 1) "Ручной режим" т. е. всё выключено, и не реагирует на основной контроллер, но реагирует на другие кнопки, при повторном нажатии - в основной режим, 2)" Открыть окна" и 3)"Закрыть окна", или что-то подобное.
    У меня для проветривания используются не форточки, а двери с двух сторон.
    Дело в том, что контроллер будет находиться не в теплице, а пожилым людям трудно ходить, и когда бабуля подходит к закрытой теплице, и не понимает, как её открыть - это проблема!
    Сообразить, что надо сделать - тоже трудно, но если можно будет нажать пару кнопок и дверь открылась - вот оно счастье! Главное, чтобы не закрылась, пока бабуля внутри, ну или придётся и там делать кнопки - дублёры.:)
    Сейчас так и работает, хотелось-бы при переходе на новый контроллер оставить привычный для пожилых интерфейс. :super:
     
    Последнее редактирование: 16.02.18
  4. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    DIYMan

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

    DIYMan

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

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

    Вина, конечно, не моя, вернее - не только моя, т. к. к настройкам надо относиться вдумчиво ;)
     
  6. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    Если устроит такой вариант - допилю прошивку контроллера, для RS-485 добавлю ещё один тип пакета данных, и напишу ещё одну прошивку, которая сможет отправлять команды контроллеру.

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

    DIYMan

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

    DIYMan

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

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

    Прошивка для модуля управления лежит в папке UniversalControlModule, и позволяет вынести поддержку до 7 команд по шине RS-485. Т. е., другими словами - 7 кнопок, к каждой кнопке можно в прошивке настроить привязку определённой команды.

    Прямо здесь и сразу обращаю внимание: КНОПКИ ПОДТЯНУТЫ К ПИТАНИЮ, и срабатывают по низкому уровню.

    Такой модуль на шине RS-485 может быть только один (во всяком случае, пока). Дискретность его опроса - каждые две секунды. В прошивке по умолчанию настроена одна кнопка на команду "включить полив", тестировал - пашет аж за здрасьте ;) Там же (в прошивке модуля) есть комментарии для каждой из поддерживаемых команд - как её прописать.

    Собственно, это то, о чём просил @tchernyavsky - иметь рядом с теплицей коробушку с кнопками, чтобы к контроллеру посылать команды.

    Получите, распишитесь ;)

    З. Ы. Помнится мне, пару месяцев тому я поднимал тему по поводу такого модуля, правда, не помню, чем закончилось обсуждение (вроде решили отложить). Ну я и отложил, до сегодняшнего вечера :)]:aga:

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

    DIYMan

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

    DIYMan

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

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

    Моргает, работает. Аж плату сделать захотелось, хоть на макетке (есть текстолитовых несколько, нормального качества, да и Pro Mini завалялись без дела). А уж кнопок тактовых, в своё время купленных кучкой на али - штук сто где-то, надо как-то использовать :)
     
  9. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Обновил ArduinoCore, добавил классы для удобного общения с Nextion - надо вводить поддержку дисплеев, решил начать с Nextion, т. к. там всё просто :) В *.ino-файле примеров не стал давать, если кому надо вдруг, то скетч вместе с примерами валятся тут: https://drive.google.com/file/d/15Lc7PBysHaMPMSf-gYHDpwkWR5i-eN0C/view?usp=sharing

    Строго говоря, вся работа с Nextion легко выкусывается вообще в любой проект, при желании ;) В ядре оставил, чтобы всё было в одном месте.
     
  10. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
    @DIYMan, универсальный исполнительный, при срабатывании концевиков, двигатель должен останавливаться? Получается при открыть закрыть из конфигуратора он крутит по таймеру, В дебаге модуля показывает 0 - 100, калибровка есть.
     
  11. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Да, в коде так и прописано, при срабатывании концевиков устанавливается чёткая позиция:

    Код:
      if(isCloseSwitchTriggered || isOpenSwitchTriggered) // если сработал один из концевиков, то это значит, что нам надо выключить моторы, и обновить позицию
      {
        if(IsBusy())
        {
          // двигаемся, надо останавливаться
          flags.OnMyWay = false;
          SwitchRelays(); // держим реле выключенными
          flags.Direction = dirNOTHING; // уже никуда не движемся
        }
      
          // говорим, что мы сменили позицию, модуль правил при этом очистит очередь обработанных правил, и сможет нами рулить
          SAVE_STATUS(WINDOWS_POS_CHANGED_BIT,1);
    
         // теперь смотрим, какой концевик сработал
         if(isCloseSwitchTriggered)
         {
          // концевик на закрытие
          CurrentPosition = 0;
         }
         else
         if(isOpenSwitchTriggered)
         {
          // концевик на открытие
          CurrentPosition = interval;
         }
      
       return;  // поскольку сработали концевики - мы установили позицию по ним, и переданную можно игнорировать
    
      } // if(isCloseSwitchTriggered || isOpenSwitchTriggered)
    Этот кусок кода по приходу обратной связи с исполнительного модуля. Как видно - реле выключаются, если сработал хотя бы один из концевиков.

    Откройте TempSensors. cpp, найдите там эти строчки, и после этого:
    Код:
    if(isCloseSwitchTriggered || isOpenSwitchTriggered)
    {
    Вставьте вывод в Serial, чтобы убедиться, что передаётся информация по положению концевиков. Исполнительный модуль не должен быть в дебаг-режиме!
     
  12. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    @Shelllonn, рассказываю:

    1. Подключил кнопку к пину D8 на исполнительном модуле - это концевик закрытия;

    2. Кнопка подтянута к питанию, поэтому сделал в настройках срабатывание концевика по низкому уровню;

    3. Два светодиода на пины D6 и D7 - чтобы было видно, как управляется;

    4. При регистрации модуля первые два слота привязал к окну номер 0 - левый и правый канал;

    5. Выставил время работы моторов в 30 секунд.

    Далее: в конфигураторе жмакаю "открыть окна" - открываются 30 секунд. Жмакаю "закрыть окна" - начинают закрываться, жму концевик закрытия, вижу, что первое окно в состоянии "закрыто", остальные - закрываются.

    Т. е. на первый взгляд всё работает как надо. Прошу заметить, что в конфигураторе инфа по состоянию окон обновляется раз в 5 секунд, т. е. есть небольшая задержка.

    Однако, ВНЕЗАПНО меня осенило, что с введением обратной связи всё не так гладко, а именно: концевик при закрытии или открытии окна остаётся зажатым (сработавшим). И если попросить окно закрытое окно открыться (у меня один концевик, поэтому в таких терминах) - то концевик-то сработавший, оно может и не открыться, если по времени всё так удачно совпадёт, что пакет о состоянии окна отправится в "ненужный момент".

    Сейчас погонял этот нюанс - вроде обходится, однако, не исключён вариант, что это дело придётся допиливать.

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

    С компасом надо, по хорошему, делать рабочий макет, с движущейся форточкой - уже думал об этом, ибо руками и на весу - всё это баловство, конечно. Будем думать в этом направлении.
     
    Последнее редактирование: 18.02.18
  13. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
    @DIYMan, напомните команду на открытие закрытие в процентах
     
  14. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    CTSET=STATE|WINDOW|0|OPEN|50%
     
  15. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    Также добавил настройку - время игнорирования состояний концевиков (ENDSTOPS_IGNORE_TIME) - если окно не двигалось и пришло в движение, то в течение этого времени состояние концевиков игнорируется, это нужно для того, чтобы концевик отщёлкнулся при движении окна. По умолчанию там стоит одна секунда.

    Подключил вторую кнопку, обе по низкому уровню срабатывают, т. е. проверил на двух концевиках и 30 сек. на время работы моторов: открываешь окно, идёт открытие. Зажал кнопку - статус "открыто" в конфигураторе до истечения 30 секунд. При закрытии - точно так же: идёт закрытие, если зажать концевик - статус "закрыто" появляется до истечения 30 секунд.

    Т. е. по факту мы теперь имеем возможность настраиваемой обратной связи: или её вообще нет, или только концевики, или - концевики и компас.

    Конечно, надо всё это дело ещё гонять/тестировать - я уже давно замахиваюсь, чтобы собрать макет теплицы, но всегда почему-то не хватает времени - ленивая я жопа :)

    @Shelllonn, пробуйте. Советую для начала не морочиться с компасом, ибо его реально нужно на натурном макете юзать - а вместо этого откатать концевики (хотя и их тоже лучше на натурном макете). Естественно, всякие настройки надо подбирать - вдруг у вас за секунду окно не отодвигается настолько, чтобы концевик отщёлкнулся - надо смотреть.

    Надеюсь, совместными усилиями мы добьём обратную связь ;) Неудобство ещё в том, что не посмотреть дебаг, когда по RS-485 работает, но и это нам не помешает - дайте только время ;)
     
Статус темы:
Закрыта.