Предисловие


Около года назад я описал в статье систему для полива моего участка — и теперь опишу дальнейшее её развитие.Год — достаточно большое время, и его удалось потратить с пользой. С удовольствием опишу и расскажу вам, что же у меня получилось.

Решаемые задачи


Теперь наполнение бочки это рутинная и достаточно второстепенная задача. Главным приоритетом сейчас является научить систему автоматически начинать полив, и вот тут как раз и встаёт вопрос — а когда именно надо начинать поливать? Тут же найдётся тот, кто мне посоветует таймерный полив. Действительно, почему бы и нет? Дёшево и сердито, и всегда можно сказать, что у меня всё в полном ажуре. Но увы — это не совсем так. Погода штука непостоянная, и даже самый изощрённый таймерный вариант не сможет уследить за тем, сколько сегодня было облаков и насколько сильно светило солнце. Про дождь даже и говорить не приходится — таймер этот факт проигнорирует. Хотя есть продвинутые варианты таймеров с датчиком дождя — но они увы, стоят как небольшой самолёт.

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

Состав оборудования


В качестве сердца системы был выбран выпускаемый малой серией программируемый логический контроллер «iТеплица -малый контроллер». Фото контроллера со снятой крышкой под спойлером.

Фото контроллера
image

И это именно программируемый логический контроллер — для него есть среда разработки, которая позволяет не только написать программу на промышленных языках стандарта IEC 61131-3, но и произвести онлайн отладку с режимом мониторинга. В качестве среды программирования используется демонстрационная версия программы GX Developer-FX. Сам контроллер полностью совместим с серийным контроллером Mitsubishi FX2N. Как видно на фото, система построена на микроконтроллере STM32F103C8T6.

Немного о его возможностях:

1. Количество шагов выполнения программы -2000. О шагах более подробно расскажу немного ниже.
2. Гальванически изолированная шина интерфейса 1-wire. Позволяет работать со 128 датчиками. При помощи утилиты настройки производит поиск датчиков и сохранение в энергонезависимой памяти контроллера.
3. Гальванически изолированная шина интерфейса RS-485 с поддержкой протокола обмена modbus RTU. При помощи утилиты настройки может работать как в режиме мастера, так и в режиме слейва.Всего может быть поддержано до 64 слейвов( при работе контроллера в режиме мастера).
4. Программирование и отладка производятся при помощи micro -USB кабеля.
5. Имеет 8 дискретных входов и 8 дискретных выходов, из которых 2 выхода снабжены реле с нагрузочной способностью 5A 250V AC. Также имеет 2 аналоговых входа.
6. Имеется 2-й порт протокола modbus RTU — но он имеет TTL интерфейс и предназначен для подключения к системам сбора данных. Может работать тольков режиме слейва.
7. Используется операционная система реального времени.

Следующее действующее лицо — это датчик освещённости. Он построен на основе микроконтроллера STM32F030 с использованием операционной системы реального времени. Имеет последовательный интерфейс стандарта RS-485 с поддержкой протокола обмена Modbus RTU для обмена данными и настройки параметров. Корпус исполнения IP67 позволяет производить установку под открытым небом. Фотография под спойлером.

Датчик освещённости в сборе
image

Для любопытных читателей сразу скажу — сенсор BH1750 позволяет произвести замеры освещённости больше 100 тыс. люкс за счёт изменения ширины окна измерения.
И ещё есть одна отличительная особенность данного датчика от тысяч других — он сам считает накопленную мощность в Дж/см2/час и по запросу передаёт мастеру сети. При поставке каждый сенсор имеет собственный сертификат калибровки на мощность излучения 1000 Дж/см2/час и сразу готов к применению.

Сам объект управления


В качестве объекта используется небольшой участок земли размерами 5,5м х 25 м, оборудованный 6 линиями капельного полива. Капельные трубки 16 мм с капельницами через каждые 30 см с водовыливом 1,6л/час. То есть в теории за один час такая система может израсходовать 800 литров воды. Но так как мы не используем бустерный насос для поднятия давления воды, то под давлением самотёка значения расхода оказываются значительно ниже.

Ход работ: монтаж на объекте


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

Датчики уровня в бочке
image

А вот тут под спойлером вы можете увидеть смонтированный датчик освещённости. Опять же, один шуруп решает все проблемы.

Датчик освещённости - вид сверху
image

И для наглядности вид снизу:

Датчик освещённости - вид снизу
image

А теперь монтаж контроллера и блока питания для клапана — уж не судите строго, монтаж сделан «как есть». Всегда можно сделать намного более аккуратно — но мы тут рассматриваем не качество монтажа, а работу самой системы.

Контроллер на окне
image

А теперь фотография монтажа блока механического дискового фильтра и клапана полива.

Клапан с фильтром
image

Работа программы


Сразу скажу — исходник программы и распечатка в pdf будут в конце этого раздела. Никаких секретов от вас, уважаемые читатели, в этой статье не будет.

Итак — наполнение бочки. При этом контролируется тай-аут времени работы насоса.Если наполнение будет длиться больше, чем 30 минут — то отключаем насос и показываем сигнал аварии. Если бочка наполнена в отведённое время — то ставим флаг готовности к поливу. Полив возможен только между 5:00 и 17:35. Время может быть очень легко изменено. Первый полив будет включен, как только утренняя доза поглощённой солнечной энергии будет больше 180 Дж/см2/час. После этого каждый следующий полив будет включен через 300 Дж/см2/час. Если солнечная активность низка и мы до 10:35 не набрали утренней дозы, то будет один раз включен полив и система будет ждать увеличения солнечной активности. Для опустошения бочки отводится тайм-аут 50 минут. Если время превышено — то значит проблемы с фильтром или клапаном. В этом случае выдаём предупреждающий сигнал и отключаем полив. Также контролируется количество воды, израсходованной на полив — если было использовано больше 8 бочек, то полив останавливается и выдаётся сигнал предупреждения. Сигнал не квитируемый — он будет сброшен утром следующего дня. Время выполнения такой программы в контроллере составляет 2 мсек.

Ниже под спойлером показан процесс отладки — онлайн монитор программы в режиме исполнения.

Онлайн-отладка программы
image

Я не буду тут описывать все временные защитные задержки и логику программы — вы можете посмотреть это всё сами в программе. Вот тут находится архив с программой и распечатанная версия в формате pdf.

Результаты работы и заключение


А теперь самое интересное — результаты работы. После запуска системы полива сразу стало видно, что растения отзываются на полив.Это выражается в качестве ягод. На участке есть несколько кустов малины — если раньше ягоды были мягкие на ощупь и обладали средними вкусовыми качествами, то сейчас они такие, какие должны быть.И вкусовые качества совершенно другие — ягоды стали более ароматными. Также имеется посадка огурца — теперь даже в сильную жару( а территориально я нахожусь на юге -в Краснодарском крае) листья не подвядают. И огурец стал более вкусным.

Самый главный вывод можно сделать такой — с применением данных контроллеров и датчиков освещённости можно построить достойную систему управления поливом не только для теплиц, но и для посадок в открытом грунте. И она может занять достойное место наряду с таймерными системами.

Дальнейший путь


Следующим шагом будет подключение к системе группы дозирования на основе инжекторов Вентури для обеспечения точной подачи удобрений и через систему капельного полива. Этот шаг сделает подобную систему недосягаемой по качеству полива для таймерных систем. Также после оборудования датчиком влажности система будет способна управлять микроклиматом в теплице. Всё это может быть подключено просто и без особых затрат — конфигурирование системы сейчас напоминает простой игровой процесс. О ходе работ я обязательно буду рассказывать вам, мои дорогие читатели.
Поделиться с друзьями
-->

Комментарии (106)


  1. Andronas
    27.07.2017 16:52

    Правильно понимаю что ваш выбор stm32 вместо ардуины атмега чисто субъективный? (Если прочитать ваши комменты на эту тему из первой статьи)


    1. Greeds74
      27.07.2017 19:28

      День добрый, уважаемый коллега. На самом деле всё очень даже объективно.Итак, по порядку. Первое — это помехоустойчивость. Мои первые конструкции были как раз на ардуино — и были проблемы с работой при включении мощных нагрузок. Второе -отлаживаемость. Для STM32 есть оченть замечательный ST-LINK, который позволяет производить пошаговую отладку и не только. Это ещё не всё- надо только припомнить… Кстати, и по цене сейчас STM32 даже немного выигрывает.


    1. Nick_Shl
      28.07.2017 08:40
      +2

      Какая разница STM32 или нет? В данном случае это не имеет никакого значения — все "кишки" спрятаны и используется язык программирования промышленных контроллеров.


      А "сердце"-то китайская платка стоимостью меньше 2$. Интересно, сколько же стоит контроллер в сборе...


      1. Greeds74
        28.07.2017 08:46

        День добрый, коллега. Платки эти кстати являются источником головной боли — входной контроль не проходит около 40% экземпляров.Этот грустный факт заставил разработать свои платы в таком же точно формате — но уже с другим камнем, с STM32F103CBT6. Плюс новое шасси для контроллера — то, что на фото, уже устарело.

        Я лично эти контроллеры не продаю, но знаю, что ценник ниже стоимости программируемого реле ПР200 от ОВЕН.


        1. AlexSam
          28.07.2017 15:25

          Зачем использовать платы если можно было просто впаять МК сразу на плату контроллера. Не понимаю такого извращения. Эти платки по сути ничего не содержат кроме МК и горстки резисторов/кондеров и джемперов.


          1. Greeds74
            28.07.2017 15:31

            Тут как раз всё просто — если вдруг шасси контроллера вышло из строя, то простой манипуляцией вытянул — поставил можно оживить другое шасси. Без необходимости перепрограммирования) Вот и весь смысл. Конечно, часы надо ещё поставить — чтобы правильное было время. Это удобство эксплуатации.


            1. apple01
              28.07.2017 20:15

              Я бы это объяснил дешевизной, т.к. такие платки продаются дешевле компонентов если их покупать врозницу. Насчет удобства выглядит надуманно.


              1. Greeds74
                28.07.2017 21:23

                Вы читаете невнимательно всё, что тут пишут. Платки, которые продаются — не самого лучшего качества. И этим всё сказано.Тем более, что я сейчас перешёл на те процы, которые не ставят на «платки». А удобство для меня и тех, кто уже применяет систему очень даже ощутимое))) Попробуйте сами.


        1. Nick_Shl
          29.07.2017 05:20

          Ну если не проходят только часы… у меня две таких платки запустились и работали на 128 МГц вместо штатных 72. Кстати, там еще с USB проблема — один из резисторов запаян неправильного номинала. Должен быть кажись 1.5к, а стоит 10к.


          1. Greeds74
            29.07.2017 08:47

            А вот этой новостью приятно удивлён! Но для моих применений лучше не выходить за рамки положенных 72МГц.


          1. Alexeyslav
            31.07.2017 11:42

            В этом нет ничего удивительного. Вы нагрейте плату до заявленных 50 градусов, и/или понизьте напряжение питания процессора до нижней планки рабочего значения и косяки полезут.
            А про резистор, так всё как положено — он сообщает хосту о скорости работы шины, если не предполагается высокоскоростной обмен(для эмуляции UART достаточно 10Мбит скорости) то какой смысл работать на FULLSPEED 480M?


            1. Nick_Shl
              02.08.2017 08:28
              +1

              Мда… Full-Speed это 12 мб/c! А Hi-Speed это 480 мб/c. В серии ST32F1 нет Hi-Speed. Есть в ST32F4, но что бы его получить нужна еще одна микросхема.
              Ну и напоследок просто приведу цитату из википедии:

              При инициализации устройство сообщает хосту о режиме, поддерживаемом устройством (англ. Full-Speed или англ. Low-Speed), подтягиванием одной из линий данных к V_BUS через резистор 1,5 кОм (D? для режима Low-Speed и D+ для режимов Full-Speed и High-Speed).
              А теперь смотрим схему платки: резистор R10 подтягивает D+ к питанию и он 10 кОм. В результате USB не работает вообще. А что бы заработало, его нужно поменять на 1,5 кОм и получим Full-Speed 12 мб/c.


              1. Greeds74
                02.08.2017 09:27

                Коллега, по вашей плате у меня есть вопрос — есть ли на другой стороне платы паттерн «сборки» защиты от статики по линиям USB? Если нет — то не мешает поставить, сэкономит кучу нервов в будущем.
                А вот что касается не работающего USB — вот в этом месте поподробнее расскажите, что и как у вас получилось. Вопрос для меня очень интересный.


                1. Nick_Shl
                  03.08.2017 07:50

                  Я USB не мучил… для начала его буду использовать только для подзарядки аккумулятора. Поэтому просто скопировал схему как в китайце, да еще допустил ошибку — подтяжку к +5V вместо +3.3V сделал. Ну да ничего, возьму F4 вместо F1 — там вроде подтяжка вообще не нужна. А стоят в розницу они одинаково. Правда придется две ноги от земли отрывать и подпаивать конденсаторы 2.2 uF.
                  В следующую ревизию вместо всех этих резисторов воткну что-нибудь типа NUF2042 для защиты от статики.


  1. smarthomeblog
    27.07.2017 17:08

    Озаботился тоже автоматизацией полива. Задача проще Вашей — нужно чтобы 6 зон полива просто включались и выключались по расписанию. Самый бюджетный вариант — таймеры, так как цены на умные краны, да еще и беспроводные очень не гуманные. С софтом и железкой все намного проще — есть малинка с платой Z-WAVE или EnOcean, open hub, Vera и т. д. А с кранами прямо беда.


    1. GAttuso
      27.07.2017 19:29

      Присоединяюсь. Очень интересует вопрос с управляемыми кранами, причем как беспроводными, так и проводными.


    1. Greeds74
      27.07.2017 19:30

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


      1. Greeds74
        28.07.2017 08:57

        Вот кстати обещанная ссылка на клапан


        1. GAttuso
          28.07.2017 09:29

          Спасибо!
          Вообще, очень интересная тема. Пишите еще!


          1. Greeds74
            28.07.2017 09:32

            Спасибо за оценку. Вообще, я ожидал намного более скромной реакции на статью — ну контроллер, ну бочку наполняет, ну свет меряет…
            Только вчера получил комплект инжекторов Вентури — так что срочно готовлю pH метр и EC(измеритель проводимости). Новая тема будет обязательно)


        1. foxforfree
          28.07.2017 15:34

          стоит такой клапан для полива, вместе c реле sonoff только латунный и на 3/4, работает но нагревается прилично, хоть это ему и не вредит, боялся что при закрытиии будет гидроудар но оказалось напрасно беспокоился. у гардены используются пластиковые для полива на 12в, их, похоже, даже закапывать полагается


          1. Greeds74
            28.07.2017 15:36

            Да, коллега — нагрев для такого типа клапанов весьма серьёзен. Поэтому у меня имеется запасная катушка. Хотя у меня в системе и стоит латунный клапан, но я всё больше склоняюсь к пластиковому варианту. Он не вступает в реакцию с удобрениями и просто дешевле. И доставка дешевле — он легче латунного.


            1. foxforfree
              28.07.2017 15:40

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


              1. Greeds74
                28.07.2017 15:45

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


                1. foxforfree
                  28.07.2017 15:47

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


                  1. Greeds74
                    28.07.2017 15:51

                    Это получится операция «привести механизмы в исходное положение». Обычно такие привода оборудованы аналоговым выходом типа резистивного. А концевые выключатели только для отключения по достижении конечных положений и наружу не выводятся. Совсем недавно я такой привод гонял на столе — однако, шустро он работает.


    1. Greeds74
      27.07.2017 20:25

      А вот насчёт малины — я её тоже не обошёл стороной. Для неё есть плата типа материнской — поищу фото, если сохранились, то покажу. У меня осталось пару плат — но они взрослые, с гальваникой и со всеми плюшками… От малины я отказался — уж слишком всё-таки сложно гонять целый линукс ради полевого уровня управления…


      1. Greeds74
        28.07.2017 11:24

        А вот и фото нашлось — как раз тестирование работы с панелью оператора Weintek. Работает обмен данными по modbus RTU.

        Фото платы для Raspberry Pi
        image


    1. usego
      28.07.2017 14:30

      У меня ранее полив был собран на Claber'овском meteo контроллере и на клаберовских же клапанах. Работало стабильно, после того как поставил фильтр перед клапанами, а то они забивались мелким песком, но управляемости было маловато. Сейчас подсоеденил их на ebay / xbee 8 relay board и рулю им удалённо сервака.


      1. Greeds74
        28.07.2017 14:35

        К сожалению, я совсем не знаком с этими представителями семейства контроллеров. Однако позволю себе забежать вперед — у меня есть в планах сделать модуль удалённого web- доступа и управления.То есть будет возможность доступа по GPRS напрямую. Сейчас модуль в тестировании. Это не полноценная SCADA-система конечно, но для удалённого мониторинга и подстройки будет самое то.


  1. Andronas
    27.07.2017 17:13

    Ещё задам вопрос про порог вхождения для новичков для разработки на stm32 в сравнении с ардуинкой? stm32 сложнее для новичка и финансово затратней?


    1. Greeds74
      27.07.2017 19:32

      Вечер добрый. Насчёт стоимости — платы на основе STM32 сейчас даже дешевле. Плюс есть ST-Link. А вот аппаратно конечно STM посложнее AVR.Тут надо иногда ночевать в обнимку с документацией)))


      1. NiTr0_ua
        27.07.2017 23:19

        у STM есть HAL. кооторый довольно-таки неплохо убирает работу с железом. + stm32cube, который наглядно конфигурит периферию. я даташит открывал в основном почитать о режимах работы таймеров, да о программировании флэш-памяти (когда еепром реализовывал).

        но — да, есть неочевидные подводные камни. как, к примеру, инициализация LSE в течение 2 секунд…


        1. Greeds74
          28.07.2017 06:06

          День добрый, коллега. Куб хорош тогда, когда уж совсем лень самому писать. Но мне лично не нравится код, который он генерирует. А вот что касается LSE — если у вас есть батарейка, то он будет долго стартовать только первый запуск. Потом всё намного быстрее. И хочу добавить, что у некоторых производителей запуск резонатора занимает 6-7 секунд. И у них, конечно же, проблемы с точностью хода… Я уже больше месяца им это доказываю)


          1. Punk_Joker
            29.07.2017 13:59

            Если вам нравится программировать в стиле ардуино, то стоит присмотреться к mbed


            1. Greeds74
              29.07.2017 14:43
              +1

              Спасибо за предложение, но лично я воздержусь от mbed)) Потому как я пишу чисто и красиво на С)))И периферию предпочитаю ручками настраивать. Конечно, по времени это достаточно долго, требует вдумчивого чтения документации — зато есть уверенность, что всё работает так, как я хочу. Благо доков и аппнотов достаточно)


              1. Punk_Joker
                29.07.2017 14:59

                Для себя я тоже предпочитаю такой подход) А Ардуино тоже как атмегу программировали?


                1. Greeds74
                  29.07.2017 15:20
                  +1

                  Да — использовал Atmel Studio 6.2. Для прошивки — avrdude. Даже операционку под nano портировал. Потом разжился уже Atmel ICE — но стало понятно, что платформу пора менять. И мой коллега дал на пару дней платку с stm32 и ST-Link. С тех пор и подсел(


    1. grossws
      27.07.2017 22:48
      +3

      В данной статье, фактически, нет ничего о программировании stm32. Т. е. на stm32f103 собран ПЛК, который уже может программировать инженер и что на 3-4 порядка проще, чем работа с stm32 по настоящему. Если что, работал с некоторым количеством промышленных ПЛК (Segnetics, TAC, Carel, Danfoss; может ещё что забыл), и с ARM Cortex-M (STM32F10x, STM32F40x).


      1. Greeds74
        28.07.2017 07:42

        Коллега, абсолютно точно подмечено. Данное изделие предоставляет пользователю некий уровень абстрагирования от аппаратной части — и неважно, какая платформа используется,STM,PIC или AVR. Тут можно сосредоточиться на решении задачи, а не думать о том, почему таймер отсчитал неверный временной интервал. Или почему не работает детектор падающего фронта битовой переменной))
        И в данном случае уровень «отвязки» от аппаратной части больше, чем например, для Ардуино.


  1. Gryphon88
    27.07.2017 17:32

    Можете подробнее рассказать про режим полива и почему поливали именно так, почему именно такая зависимость от инсоляции? Можно ли было обойтись только заглубленным датчиком влажности или даже просто заглубленным канатом с одним концов бочке (чтоб капиллярными силами вода разгонялась)?


    1. Greeds74
      27.07.2017 19:34

      Насчёт почвы тут дело такое- уж очень она как субстрат неравномерна. А солнечная радиация падает на все растения одинаково, как и на датчик. У меня кстати есть очень хороший датчик влажности почвы — но как раз вот эта неравномерность и препятствие в его правильному применению. А вот что касается уставок — это уже опытным путём. Так сказать наработки.


  1. GreyPhantom
    27.07.2017 17:45

    датчик освещённости. Он построен на основе микроконтроллера STM32F030 с использованием операционной системы реального времени. Имеет последовательный интерфейс стандарта RS-485 с поддержкой протокола обмена Modbus RTU для обмена данными и настройки параметров
    И это все ради управления поливом? Мерять освещенность в теплице STMкой- это по воробьям даже не из пушки, а как минимум системой «Град». Серьезно- мощности центрального контроллера не хватает для подсчета освещенности по сопротивлению фоторезистора?


    1. Greeds74
      27.07.2017 19:42

      Ох и люблю я «Градом» бабахнуть))) А если серьёзно — тут запас по вычислительной мощности на самом деле очень велик. Вы же заметили, что я описываю только то, что сейчас стоит? Вот буквально только сегодня получил комплект инжекторов Вентури — так что скоро будут новые эксперименты )) Есть куда развиваться. А на фоторезисторе у меня был вариант — но увы, минусов оказалось слишком много.Тем более что я очень легко перенастраиваю цифровой сенсор на другую ширину окна и могу делать замеры как очень больших, так и очень маленьких величин освещённости. На фоторезисторе такое уже сделать проблемно — тем более что надо его линеаризовать…


      1. GreyPhantom
        27.07.2017 21:40

        Ну, если задача стоит так что критически важно получать отсчет уровня с точностью до тысячных долей каждую миллисекунду- то мой Вам почет и уважение.( без сарказма) Меня просто весьма озадачило- зачем такие ресурсы, да еще и ОСРВ в контроллере, который смотрит освещенность и «крутит вентиль». Лет двадцать-двадцатьпять назад такие задачи запросто решались вообще без микросхем. Были даже (может и сейчас где используются) ПИД-регуляторы, не имеющие в себе ни одного электрического компонента- все делал воздух, (и может показаться странным, но по точности регулирования многие электронные приборы сильно уступали пневматическим). Кстати, если уж определять вероятность дождя, то я бы делал это по снижению атмосферного давления- метод, которому уже не один век.


        1. Greeds74
          27.07.2017 21:51

          А вот по снижению атм.давления как раз и есть у меня сенсор — на основе BME280. Очень серьёзный прибор — на его основе я готовил блок измерения влажности воздуха для тепличного комплекса. Я ещё думал, куда бы мне прилепить это атмосферное давление))) Надо будет последить на графиках за связью давления и осадками. Спасибо за подсказку)
          А вообще, мы дождь датчиком дождя определяем. По старинке так сказать- меряем диэлектрическую проницаемость крыши блока теплицы)


          1. NiTr0_ua
            27.07.2017 23:25

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


            1. Greeds74
              28.07.2017 07:46

              Влажность ниже 20% я на себе испытал в Норильске — там из-за этого был просто разгул статического электричества. Снять с себя свитер было равносильно засовыванию пальцев в розетку)
              А в наших краях влажность ниже 40 процентов бывает в первой половине дня- когда воздух разогревается.А вот под вечер бывает и до 90% легко доходит.


            1. Alexeyslav
              28.07.2017 09:21

              И при 90% влажности тоже не факт что падение давления приведёт к дождю. Иногда бывает и наоборот — дожди приносят антициклоны, когда давление РАСТЁТ.
              А бывает так что… давление скачет на десяток милибар а НИФИГА не происходит — циклон прошел вхолостую и условия для дождя не сложились.
              Чтобы повысить информативность надо измерять больше параметров атмосферы — температуру в приземном слое и на высоте не меньше 10 метров, скорость и направление ветра, взаимодействовать с соседними метеостанциями и т.д.


          1. Greeds74
            28.07.2017 07:44

            Вот так он выглядит в сборе
            image


        1. Alexeyslav
          28.07.2017 09:08
          +1

          Метод этот ненадёжен. Изменение давления это только один из десятка признаков начинающегося дождя. Разве что штормы можно так детектировать, но что-то меньшее с очень малой корреляцией. 70% дождей приносит циклон, и даже в этом случае датчик может зарегистрировать только край циклона а дождь пройдёт стороной. Но дождь может принести так же и антициклон…
          Тут скорей всего надо будет анализировать показания десятков различных датчиков и строить прогноз на их показаниях… но больно уж это смахивает на полноценную метеостанцию. Тут уже стоит вопрос, а не проще ли брать прогноз погоды с интернета?


          1. Greeds74
            28.07.2017 09:12

            Я вот и применяю датчик дождя для определения дождя. Принцип простейший — изменение диэлектрической проницаемости покрытия теплицы от наличия воды на ней. Приклеиваются с внутренней стороны 2 плоских электрода и всё. Фото выше — там видны посадочные места под детали датчика. Плата универсальная кстати.


    1. Alexeyslav
      28.07.2017 09:16
      +1

      Это как раз нормально, если стоимость и скорость разработки устраивает. Но мы получаем преимущество — такие датчики легко масштабировать! Теперь не нужна поддержка датчика со стороны контроллера, можно подключать хоть один датчик хоть десяток не изменяя ни схемотехники ни HAL основного контроллера и не надо искать свободные аналоговые входы на контроллере. Отсутствуют помехи при передаче данных на относительно большие расстояния — десятки метров и т.д. Сам датчик может заниматься усреднением и фильтрацией измеряемой величины, разгружая центральный контроллер.
      И да, фоторезистор это плохой прибор для измерения освещённости. Во первых спектральная чувствительность не такая как нужно, во вторых — нелинейность.


      1. Greeds74
        28.07.2017 09:29

        Совершенно согласен, коллега. Именно поэтому упор я и делаю на децентрализованную периферию. Пусть датчик думает сам — а контроллер получает уже готовые значения. Передача данных на большие расстояния очень большая приятность — тем более, что вот такие датчики потребляют всего 10мА в рабочем режиме.


        1. GreyPhantom
          28.07.2017 16:47

          Пусть датчик думает сам — а контроллер получает уже готовые значения
          Теперь Вы заставили меня призадуматься. В самом деле,- если имеем кучу различных датчиков то имеет смысл организовать какую-то шину данных, общую для всех датчиков, нежели когда каждый датчик будет «говорить на своем языке», а контроллер будет вынужден тратить ресурсы «на перевод». Собственно- почти все современные датчики, использующиеся в промышленности примерно так и устроены (не во всех есть фильтрация и усреднение, но выходной сигнал стандартизирован (самое популярное- токовый сигнал 4-20 mA, сейчас все чаще поверх него встречается еще и HART).


  1. apple01
    27.07.2017 18:43

    >не давать поливать ночью и слишком рано утром
    Почему? Если бы я выбирал время полива то как раз бы выбрал вечер, ночь или раннее утро когда солнечная активность низка. Как известно, капли воды работают как линзы собирающие свет и могут попортить растения.

    >Про дождь даже и говорить не приходится — таймер этот факт проигнорирует.

    Вы тоже проигнорировали этот фактор? В чем тогда смысл забивать гвозди микроскопом? Я понимаю если бы вы при помощи навороченного контроллера проверили прогноз погоды и сэкономили воду и энергию.

    >После запуска системы полива сразу стало видно, что растения отзываются на полив.Это выражается в качестве ягод.

    Вот помидорам (кстати они тоже ягоды в ботаническом смысле) например нужен ограниченный полив, иначе они становятся водянистыми и бесфкусными.
    Вообще, режим полива очень отличается для различных растений, и как правило нужно поливать не по расписанию а тогда когда влажность почвы достигла определенного значения. Датчики влажности почвы стоят копейки.

    Принцип по которому контроллера непонятен, разве что вы рекламируете его.


    1. Greeds74
      27.07.2017 19:48
      +1

      >Почему? Если бы я выбирал время полива то как раз бы выбрал вечер, ночь или раннее утро когда солнечная активность низка. Как известно, капли воды работают как линзы собирающие свет и могут попортить растения.
      Тут как раз всё просто — у меня нет ни одной капли воды на самих растениях, так как полив капельный, то есть корневой. И листовую подкормку я даю очень редко…
      >Вы тоже проигнорировали этот фактор? В чем тогда смысл забивать гвозди микроскопом? Я понимаю если бы вы при помощи навороченного контроллера проверили прогноз погоды и сэкономили воду и энергию
      У меня же датчик, смотрящий небо! Дождю предшествуют тучи — и поверьте, тут энергии падает очень и очень мало. Система просто не подаст команду на полив, и всё. Никакие сложности не нужны)))

      >Вот помидорам (кстати они тоже ягоды в ботаническом смысле) например нужен ограниченный полив, иначе они становятся водянистыми и бесфкусными.
      А я и не предлагаю помидоры резать в фруктово-ягодный салат)))) Для помидоров вообще отдельная история.
      >Датчики влажности почвы стоят копейки.
      Те датчики, которые вы имеете в виду, и работают не больше месяца.Причём выход из строя сопровождается жутко непредсказуемым поведением. Проходили такое… Вообще, нормальный датчик стоит 40 евро — так, для информации. Который будет работать годами…

      >Принцип по которому контроллера непонятен, разве что вы рекламируете его.
      Я не зарабатываю на контроллерах. Я экспериментатор и ярый натуралист)))


      1. apple01
        27.07.2017 21:20

        > А я и не предлагаю помидоры резать в фруктово-ягодный салат))))

        Вы вроде описываете поливное устройство общего назначения, или у вас заточено на ягоды определенного вида? Тогда смысл это городить…

        >У меня же датчик, смотрящий небо! Дождю предшествуют тучи
        Вот это совсем не обязательно. Бывают целые пасмурные недели без дождя. Опятьже сильно зависит от климата.

        >Те датчики, которые вы имеете в виду, и работают не больше месяца
        А их и нужно рассматривать как расходные материалы. И вообще все что установлено снаружи (если это не военная техника) имеет ограниченный срок службы, я даже водопроводный кран меняю раз в 2-3 года. Так что смысла вкладываться в дорогие датчики смысла не вижу.


        1. Greeds74
          27.07.2017 21:39

          >Вот это совсем не обязательно. Бывают целые пасмурные недели без дождя. Опятьже сильно зависит от климата.

          Так собственно, когда не жарит солнце, и вода не так испаряется, и растения не кушают. И надо им совсем немного — в моих мерках это 220 литров воды на день. Всё правильно.

          Устройство общего назначения — вот только для разных культур надо разные задания по поливу. И у меня есть блок малообъёмки — так там вообще подача воды производится импульсами длительностью от 200 до 900 мсек. Так что всё зависит от технологии. Контроллер для агропромышленности — на самом деле вещь очень серьёзная. Вот на этом малыше, который я шурупами прикрутил к подоконнику, может и работает здоровенная теплица — от микроклимата до полива и управления системой подготовки питательного раствора.

          >А их и нужно рассматривать как расходные материалы.
          Это можно делать, когда у вас их один или два. Тем более, что в домашних условиях такая поломка не повлечёт за собой катастрофические потери продукции. Когда поломка копеечного датчика приведёт к миллионным потерям, вы с удовольствием купите дорогущий и надёжный датчик. Я такое просто уже видел — у меня даже опытные образцы однажды разобрали))))
          Так что и тут надо понимать, что ардуинные технологии — это игрушки. Я же показываю уже взрослое решение.


          1. apple01
            27.07.2017 21:53

            Я не вижу в чем принципиальная разница «ардуинной» и «STM-ной» технологии применительно к поливу. Что касается вашего «взрослого» решения то это очевидный самопал на базе копеечной китайской stm brakeout board. Хотя бы цвет основной платы сделали соответствующий. Да и к тому же силовые цепи для заявленных 250V x 5A насколько можно видеть по фотографии спроектированы неграмотно.


            1. Greeds74
              28.07.2017 07:57

              Тут коллега надо сразу подметить — полив поливу рознь.Просто управлять клапаном по времени -это одно. А вот система, которая будет работать 24/7, обеспечивая гарантированный контроль и выполнение программы в жутких условиях реального применения — это совершенно другое. Поверьте, я насмотрелся ардуинных поделок) Причём продавалось по совершенно заоблачным ценам реальной системы.
              А насчёт китайской платы — она выполняет свои функции, почему бы и нет.Правда, отбраковка очень большая — больше 40 %. И именно поэтому сейчас в проекте своя плата))) Пробовали и именитых производителей плат — они очень хорошо собраны, а вот схемотехника хромает. Пришлось от них отказаться.
              А теперь давайте поподробнее — что же не так в силовой части?


              1. Greeds74
                28.07.2017 08:14

                А вот и герои статьи- одна из плат именитого производителя, вторая — Китай, третья — наша тестовая мини-плата для всякого рода экспериментов. На ней кстати STM32F103RET6 припаяна снизу.
                image

                А вот что касается самопала — что же, у Вас есть возможность сделать намного лучше)))


              1. NiTr0_ua
                28.07.2017 11:19

                отбраковка? гм… из 5 купленых на пробу штук у меня вроде как все 5 живые. может, повезло.
                в чем именно, если не секрет, проблемы проявлялись?


                1. Greeds74
                  28.07.2017 11:31

                  Да это не секрет конечно — проблемы были со стабильностью работы LSE — внешнего низкочастотного генератора. На некоторых платах он даже не запускался. Тут должны быть правильно подобраны и кварц, и внешние нагрузочные конденсаторы. В той схеме, что свободно гуляет по инету, эта часть очень вольно подобрана. Но эта проблема поддаётся лечению — замена кварца и конденсаторов помогает. По этому поводу даже целый аппнот у ST имеется.
                  И проблема более редкая — простой непропай. Сборка видать ручная или на «утюге» в подвале…
                  Помогает прогрев феном под гелем.


                  1. NiTr0_ua
                    28.07.2017 11:37

                    ну если LSE то полбеды. как по мне — правильнее отдельный RTC ставить, если надо стабильность/предсказуемость. хотя — дело вкуса…


                    1. Greeds74
                      28.07.2017 11:40

                      И вариант с внешним RTC пробовали — DS3231 использовали. Очень классная микруха кстати.


                  1. apple01
                    28.07.2017 17:59

                    свои платы вы тоже феном паяете? Пайка феном офигенно повышает надежность и переводит устройство в разряд «взрослых» решений :)


                    1. Greeds74
                      28.07.2017 18:59

                      Фен это вынужденная мера. Пайка в печке инфракрасной паяльной пастой. А навесуху уже врукопашную.


                      1. apple01
                        28.07.2017 20:09

                        Если есть печка то тогда фен не нужен, им можно ненароком испортить. Кстати инфракрасная печка тоже не лучший вариант, более темные компоненты поглощают больше энергии что чревато локальными перегревами.


                        1. Greeds74
                          28.07.2017 21:25

                          Тогда получается, что вообще нет вариантов ничего собрать правильно! А фен нужен, и печка нужна, и паяльник нужен. И про канифоль тоже надо не забывать))) Если вы пробовали сами что-то делать, то поймёте.


                          1. apple01
                            28.07.2017 21:34

                            У меня есть все из перечисленного выше кроме канифоли. Печь я сделал на основе Controleo2 чтобы избежать недостатков китайской инфракрасной, хотя это и обошлось дороже. Зато возможность порчи компонентов минимизирована.


                            1. Gryphon88
                              31.07.2017 16:24

                              Во сколько Вам обошлась печь Controleo2? Посмотрел их кит на ебее, для домашнего пользования дороговато.


                              1. apple01
                                31.07.2017 17:03

                                Мне кит обошелся порядка $170. Сейчас на ebay цена нереальная потому что они все продали и новую версию начную продавать в августе. Между тем я ради спортивного интереса разработал свою версию на основе Arduino Leonardo micro, контроллер будет дешевым.


              1. apple01
                28.07.2017 17:54

                >Поверьте, я насмотрелся ардуинных поделок

                Я так и не понял в чем будет принципиальное отличие в случае если вместо модуля STM будет установлен аналогичный модуль c ATMEGA применительно к поливу.

                >А теперь давайте поподробнее — что же не так в силовой части?

                Разводка и дизайн не соответствуют заявляенным параметрам как по силе тока 5A (сечение проводника недостаточное), так и по напряжению 250V (недостаточный зазор между проводниками, нету прорезей). К вашему устройству небезопасно подключать серьезную нагрузку в сети переменного тока 220V. Информация легко находится в гугле, на Гиктаймс эта тема обсуждалась неоднократно, можно легко найти. Вообще, ваша статья лучше для Гиктаймс, там вы бы получили гораздо больше просмотров и комментариев.


                1. Greeds74
                  28.07.2017 19:07

                  >Я так и не понял в чем будет принципиальное отличие в случае если вместо модуля STM будет установлен аналогичный модуль c ATMEGA применительно к поливу.
                  Тут надо обращать внимание на нюансы. Вы знаете, сколько каналов DMA я использую? Да, правильно, не знаете. А сколько каналов DMA в Atmega( мы сейчас говорим именно об эотй серии)? Это уже вопросы к вам. Для меня очень важна периферия — и её в STM32 очень и очень много. Если не ответил на вопрос — что же, на сайте ST Microelectronics вы можете найти все ответы.
                  >Информация легко находится в гугле, на Гиктаймс эта тема обсуждалась неоднократно, можно легко найти.
                  Гуглом пользоваться умею и меня пока там не забанили))) Вы так легко определяете толщину меди и ширину дорожек — давайте ка точно скажите мне ширину дорожек, тип материала платы и минимальный зазор. И каким лаком покрыта плата. Не знаете? Жаль.
                  А вы в курсе, что эту часть мы прогревали на 8.5 А и смотрели нагрев тепловизором? Тогда вопрос к вам — до какой температуры нагрелась дорожка при 25 С в комнате?
                  И вообще, остальные 6 выходов с открытым коллектором, так что вопрос управления мощной нагрузкой теряет актуальность.
                  Поверьте -я тоже умею задавать вопросы.


                  1. apple01
                    28.07.2017 20:06

                    >Вы так легко определяете толщину меди и ширину дорожек — давайте ка точно скажите мне ширину дорожек, тип материала платы и минимальный зазор. И каким лаком покрыта плата. Не знаете? Жаль.

                    Точно не скажу но ширину дорожки примерно по фото можно определить в сравнении например с шагом отверстий на stm add-on плате (2.54 mm), стандартные значения толщины меди тоже известны. В общем подсчитайте сечение проводника и получившуюся плотность тока. Думаю что она превысит допустимые значения. Расстояние между дорожками тоже очевидно меньше допустимого для высокого напряжения. Вся информация доступна, надеюсь учтете в следующей версии платы. Кстати коммутация силовых цепей при помощи реле тоже не рекоммендуется, так на всякий случай вам сообщаю.

                    >И вообще, остальные 6 выходов с открытым коллектором, так что вопрос управления мощной нагрузкой теряет актуальность.

                    Вот тут я не понял снова. Выходы каких элементов вы используете для подключения мощной нагрузки? На фото таковых не вижу а схемы вы непривели. Заодно уж скажите какую нагрузку вы подключаете к этим элементам.


                    1. Greeds74
                      28.07.2017 21:36

                      Собственно, когда мы с вами в одинаковых условиях — вы ответить не можете на вопросы.
                      А жаль конечно. Поверьте, закон Ома знаем, проходили. Вот только не пойму, что вы мне хотите доказать?
                      Так как вы с ответом затрудняетесь, правильные ответы в студию!
                      При токе 8,5А(Ампер) через дорожки их температура была выше температуры платы на 22 градуса и не больше. Тут закона Ома уже будет недостаточно для понимания. Конечно, такое сечение будет подогреваться — но за счёт хорошего теплоотвода как самой платы, так и массивных клеммников и(!) подключенных к ним проводников очень даже хорошо удалялось. Вот и всё.Гоняли блок 6 часов.
                      Далее — к выходам с открытым коллектором чудесно подключаются внешние мощные реле, причём как контактного типа, так и бесконтактного. Как-то так — всё очень просто решается) Если не убедил — ну что же, тогда я тут бессилен…

                      У меня такой блок коммутирует клапан с током до 2 ампер -и пока всё нормально. И будет всё нормально.


                      1. Greeds74
                        28.07.2017 21:42

                        >Вот тут я не понял снова. Выходы каких элементов вы используете для подключения мощной нагрузки? На фото таковых не вижу а схемы вы непривели. Заодно уж скажите какую нагрузку вы подключаете к этим элементам.
                        Давайте все вопросы рассмотрим по порядку. Потому что немного сумбурно получается.


                      1. apple01
                        28.07.2017 21:48

                        Я вам ничего не собираюсь доказывать. Ваше дело, хотите подвергать риску себя и ваших клиентов — пожалуйста :) Да и вообще можете не отвечать мне.
                        Охлаждение за счет подключенных к клеммам проводов — вы это серьезно? :)
                        Ну и про возможность пробоя вы умолчали, а это вопрос посерьезнее чем нагрев дорожек.
                        Насчет выходов с открытым коллектором и подключения реле: вы пытаетесь обсуждать схемотехнические решения не показав схемы? Мне трудно что-то сказать.


                        1. Greeds74
                          28.07.2017 22:00

                          Минимальный зазор у меня 3.5 мм. Под маской и лаком. Это для раздумий.
                          А охлаждение за счёт платы? Если учитывать все факторы то давайте учитывать. Потому что тут начинаете считать миллиметры уже)
                          Насчёт схемы — схема классическая, подключение реле к выходу с открытым коллектором. Если у вас есть вопросы — задавайте.А схему как образец дома быстро не накидаю…
                          Я вам предлагаю сделать ставку — через сколько установленный мною блок бабахнет и откажет по причине перегрева или короткого замыкания.Попробуйте стать провидцем) А я честно отпишусь, когда такое произойдёт.


                          1. apple01
                            28.07.2017 22:51

                            По старому госту вроде зазор должен быть не менее 4 мм по плате или 2 мм по воздуху (отсюда прорези). По новым стандартам вроде не менее 6 мм. А вообще для работы при напряжении 220V тестировать предлагают напряжением 3750 V в течение минуты. Сам узнал много нового сегодня здесь
                            http://electronix.ru/forum/lofiversion/index.php/t95040.html


                            1. Greeds74
                              28.07.2017 23:05

                              У меня такого тестового оборудования увы нет… А вообще, что касается реле — это конечно архаизм. Я их оставил только для того, чтобы можно было простые системы строить на одном блоке, не используя внешних компонентов. Тут есть досадное одно обстоятельство — ресурс их уж очень мал под нагрузкой, близкой к номинальной. Но достаточно велик — к тому времени, как блоки морально устареют( к примеру, выйдет новая версия IDE Arduino с поддержкой логики ПЛК и ОСРВ в полном объёме), я уже перейду на новые квантовые мультипоточные процессоры Казанского завода микроэлектронных изделий))) И будет просто стыдно не получить в обмен на старый — новый блок с бесплатной годовой поддержкой)


  1. MegaVaD
    27.07.2017 19:49

    Странно люди выше реагируют на сам процесс создания комплексной системы. Понятно, что F030 отрабатывает неточные измерения фильтрами, режимы полива экспериментальные, а порог вхождения в stm32 и stm vs atmel вообще не имеют отношения к теме. Но Квитировать… словечко из страны, в которой крупная корпорация не научилась делать контроллеры, применяемое в архаичном виде :) Его нужно искоренять.
    По теме — выглядит всё колхозно, конечно. Так оно долго не проработает.


    1. Greeds74
      27.07.2017 19:52

      Спасибо за отзыв, дорогой коллега.

      >По теме — выглядит всё колхозно, конечно. Так оно долго не проработает.

      Колхозно выглядит монтаж. Сам прибор очень живучий — что только не подавали ему на входа))) Я ведь специально вот так его поставил — мне интересно, как он выживет в таких условиях.А если не сгорит — то я его заставлю под водой поработать и ещё видео сниму))))


    1. Greeds74
      27.07.2017 21:00
      +1

      Контроллеры научился делать я))))Да пребудет с тобой STM32)))


  1. Vladimir11183
    28.07.2017 08:34

    В целом впечатляет. Возможность конфигурирования и допиливания равна бесконечности. Фильтр необходимо развернуть на 180 градусов и такой тип фильтров лучше работает в горизонтальном положении с установкой стаканом вниз.


  1. Greeds74
    28.07.2017 08:38

    Спасибо за отзыв. А насчёт установки фильтра спасибо, обязательно учту. При такой установке, как у меня, часть загрязнений при промывке попадает в линию — а это очень нехорошо. У меня в планах сделать сдвоенный дисковый фильтр с автоматической промывкой — вот это будет вещь. Но дешёво и сердито уже не получится…


  1. Greeds74
    28.07.2017 08:59

    Результаты работы — более наглядно.

    Малина и огурцы на заднем плане
    image


  1. elmm
    28.07.2017 14:37

    Это версия клапана на сколько вольт? Искал такие — есть 12 вольтовые, есть 110, 220.
    Не замеряли сколько клапан подребляет? Есть идея поколхозить кой чего, с питанием от батареи.
    Интересно — у него постоянное потребление, или только пик при открытии, а в удержание меньше жрёт?


    1. Greeds74
      28.07.2017 14:44
      +1

      Этот клапан изучен вдоль и поперёк))) Эта версия на 24В постоянного тока, при включении потребляет ток 1,68А на холодную катушку. Клапан прямого действия — то есть будет работать с очень малыми давлениями. Такой большой ток это расплата за эту особенность. Греется как утюг — если у вас вода с большим солесодержанием, то возможно под катушкой выделение соли и отказ клапана работать. Учтите это. Если у вас батарея — то лучший вариант это шаровый кран с приводом, он потребляет энергию только при перемещении. Но если уж очень нужно, то можно уменьшить ток включённого состояния, применив одну хитрую схему с конденсатором. Но всё равно, расход энергии будет высокий.


      1. elmm
        28.07.2017 14:46

        Спасибо за информацию.


  1. Nick_Shl
    29.07.2017 05:22

    Следующее действующее лицо — это датчик освещённости. Он построен на основе микроконтроллера STM32F030 с использованием операционной системы реального времени.
    Для простого датчика RTOS??? Это как из пушки по воробьям стрелять.


    1. Greeds74
      29.07.2017 09:03

      И началась древняя как мир война сторонников и противников ОСРВ для встраиваемых систем)))

      Вы слово в слово( кроме «датчика») повторили ответ службы технической поддержки одной российской именитой компании, когда я им сообщил, что их модуль ввода — вывода в режиме modbus RTU требует тайм — аут между запросами аж в 500 мсек! Вот в этом случае воробей оказался Годзиллой)

      А датчик — то не простой на самом деле. Он не просто производит преобразование физических величин, а ещё и производит их первичную обработку, причём довольно сложную. И при этом отвечает на запросы по шине в чётком соответствии со стандартом modbus RTU.

      Конечно, на самом деле вопрос избыточно или нет применять ОСРВ для вроде бы простых применений будет стоять всегда. Для себя, как для разработчика, я сделал выбор.


      1. Nick_Shl
        30.07.2017 01:49

        Причем тут «война»??? Неспособность обойтись без RTOS и представление, что "если нет RTOS то все делается в одном цикле внутри main()" просто многое о вас говорит. Впрочем, это беда всех современных "программистов", которые понятия не имеют, что делается внутри.
        Для простого проекта типа датчика достаточно псевдо-многозадачности. Передача данных и протокол реализуется внутри прерывания от порта. Опрос самого датчика и вычисления реализуются или в main(), или по прерыванию таймера с заданной периодичностью. Но тогда у прерывания таймера приоритет должен быть ниже прерывания от порта(что бы всегда принимать и отвечать), благо STM32 это позволяет.
        В сложных проектах проще взять готовую RTOS, иначе в лучшем случае получится изобретение велосипеда.

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


        1. Greeds74
          30.07.2017 07:12
          +1

          У меня, как у «программиста», возник вопрос — то есть вы только что предложили каждый раз по прилёту символа дёргать стек протокола в прерывании с высоким приоритетом?

          Правильно будет проверить буфер на переполнение, потом в него запихать принятый символ, перезапустить аппаратный или виртуальный таймер тайм — аута, очистить флаги и быстренько свалить. А стек звать по тайм- ауту. Мы говорим кстати о modbus RTU, и если будете писать его реализацию в будущем — вспомните строки выше.

          А если серьёзно — ОСРВ была выбрана не просто так. Провели тестирование — взяли 4 модуля, вместо датчиков подсунули константы, и запустили тест опроса мастером с примерно 500 000 транзакций. Мастер работал с минимальными тайм-аутами.

          А теперь вопрос к Вам, как к знатоку того, что делается внутри — какие величины ошибок в показаниях интеграторов были получены? И как это можно объяснить?

          Правильный ответ тут
          Для варианта с ОСРВ отклонения были менее 0.5%, а для варианта без — более 10%. Причём тест повторяли более 20 раз — и если для ОСРВ характер ошибок повторялся, то для варианта без — они были хаотичны. Надеюсь, причина выбора теперь стала понятной.


          1. Nick_Shl
            30.07.2017 08:52

            У меня, как у «программиста», возник вопрос — то есть вы только что предложили каждый раз по прилёту символа дёргать стек протокола в прерывании с высоким приоритетом?
            Я понятия не имею, что там у вас за "cтек modbus" и что это за протокол. И уж тем более не понимаю, зачем "дергать стек". Но еще большее понятия я не имею, почему вы мне все это приписали.

            Правильно будет проверить буфер на переполнение, потом в него запихать принятый символ, перезапустить аппаратный или виртуальный таймер тайм — аута, очистить флаги и быстренько свалить. А стек звать по тайм- ауту. Мы говорим кстати о modbus RTU, и если будете писать его реализацию в будущем — вспомните строки выше.
            Ну так и в чем проблема? Приняли байт в прерывании, сунули в буфер, увеличили счетчик приема, запустили(рестартовали) таймер — по прерыванию таймера выгребли пакет, проверили CRC(не сойдется если байт придет во время таймаута), если сходится — сделали что просят и выслали ответку. И зачем тут RTOS?
            Именно так реализовал загрузчик на TI TMS320, только чуть проще: начало пакета и конец всегда заранее известны по framing bytes, поэтому таймер и прерывание лишнее.

            А если серьёзно — ОСРВ была выбрана не просто так. Провели тестирование — взяли 4 модуля, вместо датчиков подсунули константы, и запустили тест опроса мастером с примерно 500 000 транзакций. Мастер работал с минимальными тайм-аутами.
            Провели тестирование модулей конкурентов написанных неизвестно где и не известно как?
            В одном случае криворукие программисты не могут без RTOS обойтись, в другом еще более криворукие — ни про RTOS не знают, ни писать хорошо не умеют.

            Я смотрю вы загадки любите. Вот вам одна:


            1. Greeds74
              30.07.2017 10:14

              >Именно так реализовал загрузчик на TI TMS320, только чуть проще: начало пакета и конец всегда заранее известны по framing bytes, поэтому таймер и прерывание лишнее.
              Я вообще-то описал протокол, для которого применяется такой подход.А вы мне за уши притянули загрузчик, который не обсуждается тут вообще.

              >Провели тестирование модулей конкурентов написанных неизвестно где и не известно как?
              Я вообще-то так тестирую свои разработки. И всем советую — чем больше тестов проведёте, тем меньше будет проблем. Чужие мне тестировать и не надо. Я же не занимаюсь сертификацией)))

              >Я смотрю вы загадки любите. Вот вам одна:
              Ваши загадки мне просто не интересны. Без обид — не хочу своё время тратить впустую на Марио.
              Вот ссылка — там и почитайте https://geektimes.ru/post/285570/
              А когда мне потребовалась доп. память для STM32, я просто на SPI2 прикрутил микруху 23K256 — и всё. Летает как самолёт.


              1. Nick_Shl
                30.07.2017 17:30
                -1

                Я вообще-то описал протокол, для которого применяется такой подход.А вы мне за уши притянули загрузчик, который не обсуждается тут вообще.
                Перед загрузчиком был вопрос. Где ответ???

                Я вообще-то так тестирую свои разработки. И всем советую — чем больше тестов проведёте, тем меньше будет проблем. Чужие мне тестировать и не надо. Я же не занимаюсь сертификацией)))
                Если человек не может реализовать два таска(коммуникация и опрос датчика) без RTOS…

                Вот ссылка — там и почитайте https://geektimes.ru/post/285570/
                Делать ускоритель на STM32 для Arduino??? Хочешь быть программистом — от Arduino надо держаться подальше. В крайнем случае использовать только железо, а для программирования использовать Atmel Studio.
                И прозрачности в том проекте нет, и тайлы фиксированные, и вывести строчку нет возможности… в общем все криво и сыро.

                А когда мне потребовалась доп. память для STM32, я просто на SPI2 прикрутил микруху 23K256 — и всё. Летает как самолёт.
                В данном случае не взлетит. Что бы положить фреймбуфер во внешнюю SPI ОЗУ надо вначале туда картинку загнать(1), потом её оттуда считать(2), потом её загнать в экран(3). И даже если экран с ОЗУ разнести на разные SPI и использовать DMA в лучшем случае(2 и 3 делать параллельно) получится падение пропускной способности в два раза от максимума. А если еще делать с прозрачностью…

                В общем удачи вам в начинаниях. Хоть криво-косо, но работает же. Ведь это главное, так же?
                Вопрос риторический, ответа не жду.


                1. Greeds74
                  30.07.2017 18:23

                  >В данном случае не взлетит.
                  Вы просто не читаете, что вам пишут. Считаю, что смысловая нагрузка диалога потеряна.

                  >Перед загрузчиком был вопрос. Где ответ???
                  Это не поле чудес.Научитесь понимать, что вам пишут. А не искать выгодный себе смысл.
                  Удачи, коллега.


  1. toxic_air
    01.08.2017 11:18

    Можно новичку глянуть схемотехнику «мамки»?


    1. Nick_Shl
      02.08.2017 07:25

      Можно! Поскольку использовалась китайская плата по началу, то и распиновка с ней совпадает. И вряд ли изменения по схеме большие(разве что в номналах). На mbed все очень хорошо расписано. И распиновка удобная имеется, и схема. Смотрите, изучайте.

      Вообще не понимаю, зачем было изобретать велосипед если заменой пары конденсаторов(и возможно кварца) можно было решить проблему. Другое дело когда выводов в 48-мипиновом корпусе оказывается мало. Тут без "велосипеда" не обойтись. Вот мой недавно получаенный:
      image
      Плата длинная, но, как видно по фотке, на 5 мм можно укоротить просто отпилив кусок и используя порт для программирования в торце.


      1. Greeds74
        02.08.2017 07:48

        Спасибо за комментарий, коллега. Но опять же, тут вопрос был про шасси контроллера — а не про схему «синей» платки. Схема, которую вы опубликовали, давно гуляет по инету. Вот в pdf формате.

        >Вообще не понимаю, зачем было изобретать велосипед если заменой пары конденсаторов(и возможно кварца) можно было решить проблему.

        Опять же, я использую сейчас STM32F103CBT6, которая не устанавливается на китайцах. «Сдувать» старый чип и ставить новый — увольте, не мой метод. Поэтому свой дизайн, своя плата. Гарантия того, что всё будет так работать, как я хочу на тех компонентах, которые я хочу, а не которые поставил мне дядюшка Ляо в подвале. И заводская сборка. Ценник конечно получается выше — но это расплата за то, что я и мои коллеги будут спокойно спать по ночам. И клиенты будут уверены и довольны, что купили у нас, а не у других.


        1. Nick_Shl
          02.08.2017 08:19

          Для меня «мамка»(она же материнская плата) — та плата, на которую устанавливается вычислительный модуль(CPU, MCU) и которая обеспечивает его запуск. Будь то материнская плата настольного компьютера с сокетом, плата ноутбука с запаянным процессором или "синяя платка" которая может запустится и поморгать светодиодом. В общем какой вопрос — такой ответ.

          Кстати, открою еще один секрет: в C8T6 на самом деле 128 кБ ПЗУ. Все программируется и все работает(на видео выше как раз так запущено — не влазила программа после добавления всех картинок в 64 кБ). Да, ST не гарантирует их работоспособность и наверное не тестирует на производстве, но… но китайцы выпкускают пачками ST-Link'и на STM32F101 в котором по документации нет USB. А они работают. И даже прошивка утилитой от ST у меня обновилась и он не умер.


  1. Greeds74
    01.08.2017 11:24

    День добрый. Мы пока ещё не решили, будет или нет в открытом доступе схема. Вроде и секрета нет — посмотрите, плата «колхозная», всё просто.Давайте так -если решим, что будет в свободном доступе, то вам обязательно напишу.


    1. toxic_air
      02.08.2017 00:18

      Спасибо!


  1. Greeds74
    02.08.2017 08:33

    >Кстати, открою еще один секрет: в C8T6 на самом деле 128 кБ ПЗУ.

    Это не секрет совершенно. Как и разгон умножителями ядра. Но опять же повторюсь — я не собираюсь применять решений, которые являются отхождением от технической документации производителя. И никому не рекомендую — потому что катастрофические отказы проявляются в самый неподходящий момент. Репутация качественного производителя зарабатывается годами, а вот потерять очень легко.

    А что касается китайцев — то у них процветает перемаркировка чипов, сам несколько раз с этим сталкивался. Поэтому советую всем, кто берёт у них, всегда тщательно проверять, что они купили.