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

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

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

Статус темы:
Закрыта.
  1. 2mike
    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415

    2mike

    Живу здесь

    2mike

    Живу здесь

    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415
    Адрес:
    Россия
    Как то в теме обсуждали этот момент - наиболее разумное решение - контроллер никоим образом не завязан на наполнение бака водой. это делается простейшим поплавковым датчиком.
    И кстати капельный полив не требует каких либо "отстаиваний воды".
    просто потому что там прямо на выходе из бака есть фильтр для всякой грязи,
    + скорость движения по ленте настолько мала что обьем воды успевает прогреться до окружающей температуры.
     
  2. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    В прошивке я юзаю всего три пина для управления через сдвиговый (этот функционал ещё, собственно, мной не тестировался). И вот тут самая главная засада: если тупо посадить OE на землю, то на выходах регистров будет что? Правильно - произвольное состояние. Которое может быть и низким уровнем, и тогда - пока мега ничего не пишет в регистры, реле фрамуг автоматически включатся, чего быть не должно. К тому же некоторое время прошивка висит в загрузчике, и в это время также нежелательно переводить выводы регистра в рабочее состояние.

    Выход видится только один - подсоединять выход OE к ещё одному пину меги, и подтягивать его к питанию резистором на десяток килоом, скажем. А когда нужно писать в регистр - кидать этот пин в землю. Я всё правильно понимаю?

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

    В общем, мой вопрос понятен, надеюсь. @2mike, @HANTER333 - подскажите, правильно ли я всё понимаю с ножкой OE микрухи?
     
  3. HANTER333
    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156

    HANTER333

    Живу здесь

    HANTER333

    Живу здесь

    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156
    Вот почитайте, может пригодится https://cxem.net/arduino/arduino166.php
     
  4. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    2mike

    Живу здесь

    2mike

    Живу здесь

    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415
    Адрес:
    Россия
    выходы будут просто подключены, т. е. что записали туда то и будет на выходах 0/1.
    нет, имхо правильнее понимать - разрешить выход в соответствии с записанным.
    там жеж 3в1, регистр, защелка, разрешение выхода.
     
  6. HANTER333
    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156

    HANTER333

    Живу здесь

    HANTER333

    Живу здесь

    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156
    Можно и так, вместо реле можно поставить светодиоды, так наглядней.
     
  7. 2mike
    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415

    2mike

    Живу здесь

    2mike

    Живу здесь

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

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    В общем, решил не мелочиться и разорился на четвёртый пин управления ножкой OE регистра - не нравится мне тупо кидать его на землю сразу - на выходах, как ни крути, могут быть случайные значения. Эту ножку (OE) я завёл на пин 43, и подтянул к питанию резистором в 10К. В результате, в момент подачи питания - выходы регистра в Z-состоянии, что нам и нужно. Когда мега открывает/закрывает форточки - она роняет пин 43 в LOW, и выходы переключаются в рабочее состояние.

    Подключил, проверил, всё работает :super: На гитхабе прошивку обновил, обновил также схему соединения.

    Обращаю внимание: поскольку я вожусь с прошивкой практически каждый день, а также потому, что я не в силах угадать, кому какие настройки нужны - я тупо выкладываю тот Globals. h, который соответствует всем железкам, которые у меня подключены к меге. Это я к чему - сдвиговый регистр с макетки выпиливать не буду, пущай висит теперь. Это значит ровно то, что теперь настройки по умолчанию - это управление форточками через сдвиговый регистр! Призываю быть внимательными и читать комментарии в Global. h - не только для себя ведь их пишу :|:

    По факту у меня сейчас подключены только 4 канала реле для форточек (на две форточки), хотя в прошивке указано 8 каналов - соответственно, остальные 4 канала сдвигового регистра болтаются в воздухе :cool:, про запас (нехорошо, знаю - назовём это стресс-тестом :)]:aga:). Это всё потому, что для тестирования к тому же восьмиканальному модулю реле подключен канал досветки и два канала полива - на форточки каналов реле уже не остаётся, а менять настройки прошивки на две форточки - незачем, у меня их будет всё равно больше четырёх, когда в бой пойду.

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

    DIYMan

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

    DIYMan

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

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

    Просто в очередной раз наблюдаю, с какой вольностью обходятся с такими тонкостями интернет-"уроки": "а мы тупо кинем эту ногу на землю, ничо страшного, хотя в даташите написано, что там будут случайные значения до первой записи". Вон, из даташита же:
    Что значит имхо ровно следующее: если OE положили в LOW - состояние регистров не меняется, но они становятся подключёнными к схеме. Во всяком случае, я понял это именно так.
     
  10. 2mike
    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415

    2mike

    Живу здесь

    2mike

    Живу здесь

    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415
    Адрес:
    Россия
    Там просто есть еще сигнал самой защелки. и будет там высокоимпедансное третье состояние. не случайно на большинстве схем ОЕ прямо сажают на землю. пока на 12 вывод регистра не прилетит защелка.
    Хотите сделать совсем уж дуракоустойчиво - зажигайте светодиод оптопары от регистра, т. е анод оптопары на один вывод регистра, катод на другой (резистор не забываем)
    =- пока нужное не появится - никто никуда не поедет :)
    в нормальном даташите на любую логику есть таблица истинности. там указаны все возможные комбинации на управляющих и выходных пинах соответственно.
    З. Ы, выходит I2C расширитель MCP23017 проще получается. и одним корпусом дает нам сразу 16 каналов (8 каналов форточки + 8 каналов полива, или вообще отвязать все каналы логически и настраивай куда какой хошь).
    если учесть что есть еще "удлинитель" I2C P82B715 то такое решение с железячной точки зрения куда как кошернее.
     
  11. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    Насчёт MCP23017 - не знаю, возможно, и удобнее, хотя и в случае с 74HC595 проблем не вижу - каскадом подключаются на раз, у меня в коде предусмотрена каскадная запись (правда, не тестировал, каюсь). То есть кол-во форточек - неограничено.

    А P82B715 - да, интересно, только, помнится, сильно дороже сдвиговых, раз в десять ;) Да и MCP23017 - тоже не из дешёвых, надо сказать. А тут - 7 рублей штучка, и верти как хочешь :)

    Впрочем, вы заронили червячка внутри - возможно, и поддержку такой фичи для управления форточками стоит подумать на будущее ;)
     
  12. 2mike
    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415

    2mike

    Живу здесь

    2mike

    Живу здесь

    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415
    Адрес:
    Россия
    Просто не забывайте что размещать контроллер в теплице чревато. т. е. на управление должен быть какой то вынос сделан.
    З. Ы, хотя конечно при модульности вашей прошивки сварганить нужный компот потом будет куда как проще.
     
  13. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    Но вы правы - если жизнь покажет, что нужно по I2C фрамугами управлять - сделаем ;)
     
  14. 2mike
    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415

    2mike

    Живу здесь

    2mike

    Живу здесь

    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415
    Адрес:
    Россия
    220вольт по теплице как бы некошерно таскать, влажность знаете ли :) а 12/24 в на актуаторы уже будут критичны к длине проводов изза падения напряжения.
    З. Ы, пины на 23017 двунаправленные, т. е можно считывать состояние (закрыты/открыты форточки и т. п.). кстати после запуска там выставляется сразу чтение пина.
     
  15. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    1. В конфигураторе стало можно добавлять дельту влажности почвы;
    2. В прошивке в лог-файл теперь пишутся показания с датчиков влажности почвы;
    3. На LCD-экран теперь можно выводить показания с датчиков влажности почвы;
    4. В прошивке, везде, где можно - добавил заглушки под будущие датчики pH;
    5. Правила теперь могут следить за показаниями с датчиков влажности почвы и pH.

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

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

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

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

    Что ещё забыл? Ах да, про Nextion: поскольку подписи к показаниям на нём выводятся картинками (помните историю со страшно выглядящими шрифтами), то на него по прежнему можно вывести показания только с трёх типов датчиков - температура, влажность, освещённость. Нет, конечно, можно вывести туда и влажность почвы, но подпись под ней будет просто "Влажность". Без допиливания проекта под Nextion тут не обойтись, если у кого возникнет такая уж серьёзная потребность в этом - допилим потихоньку.

    В общем, изменений очень много и все они разные. По сути - всё должно работать, по факту - если заметите какие косяки - буду благодарен за багрепорт. Особенно с вебмордой - она посвежее и, следовательно, посырее будет. @Shelllonn - на вас уповаю :)
     
Статус темы:
Закрыта.