ShIoTiny: малая автоматизация, интернет вещей или «за полгода до отпуска»




Основные тезисы или о чем эта статья


Так как интересы людей разные, а времени у людей мало, то кратко о содержании статьи.


Статья эта представляет собой обзор проекта контроллера с минимальной ценой и возможностью визуального программирования посредством WEB-браузера.


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


Рассмотрена мотивация, идеи и результаты построения контроллера на базе WiFI-чипа ESP8266.


Предупреждение


Я не хотел писать эту статью. Я вообще не любитель писать статьи. Это надо думать и причем — много. Думать, как написать так, чтобы количество неправильно тебя понявших свелось к минимуму. Думать, как не скатиться в крайности. И много еще о чем думать.
Но друзья сказали, что раз мои потуги на поприще IoT и прочей малой автоматизации интересны им, то они и другим могут быть интересны и широкой публике. Ну а где собирается публика, которой интересно такое? Конечно, на хабре. И вот я тут. Старый читатель и новый писатель.

За ошибки, неточности, опечатки, несовременный стиль изложения и прочее, что может не понравиться читателю, я никакой ответственности не несу. Читайте на свой страх и риск.

Ещё я сразу предупреждаю, что не буду пояснять что такое MQTT, WiFi и UDP multicast и другие вещи, прямо не относящиеся к теме. Кое-какие ссылки есть в конце статьи.


Рождение идеи или немного лирики


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


Начиналось все довольно буднично: хотелось построить систему управления водопроводом и поливом грядок-кустов на даче.


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


Тема «малой автоматизации» или, как это принято говорить у «этих ваших школоло-хакеров-хипстеров» — тема IoT — Интернета вещей — интересовала меня давно. Задолго до появления интернета как такового в широком пользовании.


Еще в детстве мне хотелось чтобы вещи делали что-то «сами». И желательно, чтобы я мог управлять ими как-то на расстоянии. Но в то время (80е, начало 90х годов прошлого тысячелетия) с этим было сложновато. Интернета не было в широком доступе нигде в мире, как не было нигде и сотовых телефонов, планшетов и даже LCD-дисплеев и USB-флешек. Так что приходилось ограничиваться «выключателями света по хлопку» и простейшими пультами дистанционного управления по радио. Но для тех времен и того возраста и это было неплохо и интересно.


Но это дела прошлые. Нонче на дворе век XXI. И у каждого в кармане смартфон, интернет есть практически везде, где надо и не надо, да и база доступных электронных компонентов сейчас такая, что еще лет 15 назад и не снилась рядовому жителю планеты Земля.


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


Погрузившись в удивительный мир проектов для ESP8266, я с удивлением обнаружил, что несмотря на обалденные возможности этого чипа — проекты на нём, за редким исключением, делятся на два типа: это или крайне примитивные программки типа «щелкаем релюхами со смартфона и глазеем на состояние датчика температуры через интернет»; или хорошие и добротные интерпретаторы JavaScript или Lua, но к сожалению, сжирающие почти всю память и не позволяющие сделать чего-то серьезного.


Первая моя идея была простой как блин — написать простую программу управления насосами по состоянию датчиков и все. Но, как тертый калач в плане скакания по граблям внедрения разных систем, я понимал, что предусмотреть заранее все изгибы алгоритма, которые захочется или будет необходимо выпрямить во время строительства водопровода-полива — я точно не смогу.


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


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


Сразу оговорюсь: я ленив. Очень ленив! Мне откровенно лень каждый раз переписывать программу. Поэтому встала задача — как быстро и просто задавать алгоритм, желательно без программирования? Причем этот алгоритм будет довольно сложен; будет иметь массу параметров; будет индивидуален для моего случая и непригоден для других. А устройство так хочется сделать более или менее универсальным…


Поскольку до отпуска и всяких трубонасосных дел было еще около полугода — я решил не торопясь обдумать: как сделать удобно и красиво? Как программировать не программируя? Как обойтись без триллиона изменяемых при настройке параметров?


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


Идея задавать алгоритм, рисуя его квадратиками не нова. Такие системы были еще в 80е; нонче есть супер-популярная система NodeRed, которая хорошо известна тем, кто уже приобщился к миру малой автоматизации/IoT.


Но вот незадача: такие системы рассчитаны на «большие ПК». На худой конец — на Raspberry PI. Но никак не на ESP8266, у которого всего несколько десятков килобайт ОЗУ и операционки то нет!


Как быть? А выхода всего два: писать-рисовать программу на «большом ПК» или ноуте, а затем в каком-то виде её передавать на ESP8266 или попытаться «впихнуть невпихуемое» в сам контроллер ESP8266.


Поэтому программа-максимум у меня была такой: для программирования своего контроллера не должно быть нужды ни в чем, кроме ноутбука с WEB-браузером! То есть ноутбук с WEB-браузером и мой контроллер — этого должно быть достаточно для полной настройки и написания-рисования программ управления.


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


Поделюсь результатом того, что вышло и получило название «Контроллер ShIoTiny».


И что же вышло?


Аппаратная часть контроллера ShIoTiny стандартна и проста: три входа, рассчитанные на датчики типа «сухой контакт» (кнопки, герконы, они же — датчики уровня воды в баке), один вход АЦП, один вход для подключения датчика температуры и влажности типа DHT22 или аналогичного. И, наконец, три выхода в виде переключающих реле на 220Вольт, 1Ампер. На реле написано 10А, но я реалист и пускать через плату 10Ампер не буду. А для управления пускателями насосов и 1Ампер хватит. Питается все это от источника питания напряжением от 5 до 9 вольт.


Честно говоря, датчик температуры я добавил просто так «шоб было», а вот на АЦП — были надежды измерять напряжение питающей сети. Мало ли что?


Разумеется, все входы, кроме входа для подключения DHT22, имеют защиту из резисторов и диодов: жечь ESP8266 у меня не было никакого желания, а диоды и резисторы стоят всего по несколько копеек.


Фото готового изделия можно увидеть в начале статьи. Таких плат я заказал несколько — вдруг что сожгу или придется резать дорожки-ножки?
Но, к счастью — не пришлось.


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





Вместо датчиков уровня — кнопки Input1..3, вместо пускателей — светодиоды, подключенные к реле Relay1..3. Ну и переменный резистор на АЦП, чтобы имитировать входное напряжение.
Когда реле выключено — горит красный светодиод. А когда включено — зеленый. Так вот и отлаживался я на столе.


Кроме всего этого — слева на плате разъем питания, а справа — две сервисные кнопки: Reset и AP. Ну и DIP-переключатель, переводящий устройство в режим программирования. Разъем программирования ESP8266 через USB-UART адаптер тоже имеется.


Некоторые пояснения по кнопкам. Что такое Reset — и так понятно. А вот кнопка AP нужна для того, чтобы перевести ShIoTiny в режим открытой точки доступа (конфигурационный режим или Config Mode). Зачем это нужно? Ну, например, вы напортачили с настройками сети и хотите их изменить. Жмёте кнопку AP несколько секунд (пока не загорится красивый синенький светодиод). Затем, берете свой смартфон или ноутбук, включаете WiFi и видите там открытую точку доступа с именем esp_8266_xxxx и подключаетесь к ней. После чего заходите в браузер смартфона или ноутбука и набираете в адресной строке: 192.168.4.1. Если всё в порядке — то вы попадаете на страницу контроллера ShIoTiny и можете его настраивать по новой.


Как видим, аппаратно ничего сложного. Поэтому о программной части.


Все заскоки реализации я опишу, но потом. Когда-нибудь. А сегодня я буду рассматривать программное обеспечение только «снаружи», то есть с точки зрения пользователя — себя или другого, рискнувшего использовать мою поделку (есть и такие каскадёры).


С точки зрения пользователя, устройство представляет собой HTTP-сервер, который доступен по WiFi. Все настройки, программирование и так далее — производится с помощью WEB-браузера.


Итак, мы зашли на страницу контроллера. Что мы видим? А видим мы вкладку «Control and status», которая показывает текущее состояние используемых устройств: входов, выходов, АЦП, DHT22. Кроме этого показаны параметры подключения к точке доступа (если работаем в режиме WiFi-станции); параметры точки доступа (если работаем в режиме WiFi-точки доступа) или и того и другого. Ну и вдобавок, показаны параметры соединения с MQTT-брокером, если используется протокол MQTT.





Как видим, ничего особенного и интересного. Даже нажимать не на что! Хотя… Есть ведь еще две вкладки! Настройка сетевых параметров Networking и редактор схем-программ ElDraw.


Как вы догадались, Networking — это настройка сети, но не только. В ней есть ещё пара интересных параметров. «Тыкнем» же на вкладку Networking и увидим там примерно то, что показано на рисунке.
Настройка имени точки доступа и пароля для каждого из режимов — WiFi станции и WiFi точки доступа. Вроде бы все понятно. Равно как и назначение кнопочки «Scan WiFi» вполне прозрачно.
А вот выпадающий список «ShIoTiny mode» требует пояснения. Дело в том, что я никак не мог определиться — в каком режиме мне удобнее будет работать. И поэтому предусмотрел 5 режимов работы устройства.





Перечислим кратко эти режимы работы.


Config mode — режим конфигурации. Это режим открытой точки доступа с неизменным адресом 192.168.4.1 и именем esp_8266_xxxx.


Station mode — режим WiFi-станции, подключенной к вашей точке доступа.


AP mode — режим закрытой точки доступа. Имя и пароль вы задаёте сами.


AP+Station mode — это одновременное включение режимов AP mode + Station mode.


Single mode — работа без подключения к сети вообще. Одинокий контроллер, несущий свою тяжкую долю…


В любом из режимов, кроме «Config mode», можно заблокировать WEB-страницу, установив галочку «Lock Web in Station mode». Это типа из соображений безопасности.


Настройки MQTT-очевидны: сервер, порт, пароль, открытое соединение или по SSL. Не буду тут останавливаться подробно.


Кроме всего прочего, контроллер ShIoTiny умеет посылать и принимать пакеты специального формата по multicast. Настройки его тоже очевидны: адрес группы и порт.
Разумеется, что если описывать все нюансы настроек — получится отдельная статья, а это в мои планы не входит.


Итак, с вкладкой Networking всё более или менее ясно. Перейдем к главной фишке контроллера — редактору схем-программ ElDraw.


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





Слева — палитра элементов или узлов (нод).
Справа — поле схемы или просто «схема».
Сверху — кнопки загрузки-выгрузки на диск и на устройство, а также кнопки редактирования.


Для тех, кто работал с редакторами — управление в общем-то очевидно. Надо добавить элемент на схему — берем его мышкой и тащим из палитры в схему. Надо удалить элемент или связь из схемы — тыкаем на него или на нее мышкой и нажимаем клавишу DEL. Надо соединить элементы — берем вход одного элемента и соединяем его с выходом другого.


Есть еще масштабирование (SHIFT+колесо мыши). К сожалению, нет возможности копирования элементов и групп элементов. Но это не сильно мешает.


Кроме того, из соображений логики вход узла может быть связан только с одним выходом другого узла. Но выход узла — с несколькими входами других узлов. Входы — всегда слева узлов. Выходы — всегда справа.


Какие возможности у нас имеются для реализации алгоритмов?
Возможности — довольно обширные. В палитре имеются узлы, представляющие всю аппаратуру контроллера ShIoTiny: входы, реле, АЦП, DHT11/22.


Для обработки данных имеются логические и арифметические узлы.


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


Если мы хотим, чтобы несколько контроллеров ShIoTiny обменивались информацией между собой — можно использовать узлы передачи и приёма параметров по UDP multicast протоколу.


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


Приведу несколько примеров. Например, вы хотите, чтобы каждые 30 минут данные о температуре и влажности публиковались на MQTT-сервере? Нет ничего проще. Рисуем так.





Жмем кнопочку «Upload». Всё!
Если у вас правильно настроена связь с MQTT брокером на вкладке Networking, то это всё!
Каждые полчаса, температура будет публиковаться на брокере под топиком /T, а влажность — под топиком /H. Или, если вы зададите свои названия топиков — то под ними.
Законный вопрос: почему 18000 это 30 минут? Потому что все времена измеряются в десятых долях секунды.


Теперь хотите добавить к этой схеме возможность включения реле Relay1 через интернет, да ещё и на определенное время? Не проблема. Дорисовываем так.





Опять жмем кнопочку «Upload». Всё! Теперь, кроме того, что каждые полчаса, температура и влажность будут публиковаться на MQTT-брокере, появится возможность включать реле Relay1. Да не просто включать, а ровно на 10 минут. Включать реле можно публикацией топика /r1cmd, установленного в 1. А реальное состояние реле будет публиковаться в топике /r1status.


Вам хочется не только включать, но и отключать реле досрочно? Да как скажете. Рисунок ниже показывает как это сделать!





Принцип понятен? Вы просто рисуете алгоритм мышкой! И немного пишете настроек: время, имя топика и все. Это гораздо нагляднее, чем писать кучу кода.


Кстати, подсветка связей разными цветами — это не «фотошоп» — это одна из функций редактора. Вы можете раскрасить связи по своему усмотрению, чтобы не путаться в них.


Но и это еще не все! Для того, чтобы отлаживать алгоритм, есть кнопочка «Monitor start». Она, как это ни странно, включает режим «монитор». В этом режиме состояние всех выходов всех узлов периодически считывается из контроллера ShIoTiny и выводится на схему. Примерно, как на рисунке ниже.





То есть мы в «почти реальном времени» можем видеть что у нас на входе и выходе каждого узла. Очень помогает, когда что-то не понятно.


Есть еще много «фишек и фич», которые я и хотел бы описать, да совесть не позволит тратить ваше время на них в одной статье. Основная реализованная идея и так понятна: минимум настраиваемых параметров — максимум наглядности.


Ложка дегтя


Конечно, хочется, чтобы не было никакой ложки дегтя, но мир не идеален. Не идеален и мой редактор и мой контроллер. Я обнаружил две главные особенности, которые пока не смог устранить.


Во-первых, иногда проявляются глюки при групповом перемещении элементов. Но это не сильно мешает работе. Скорее "фича", чем "баг".


И, во-вторых, при некоторых условиях после загрузки схемы в устройство кнопочкой «Upload», оно перезагружается. Жить это не мешает, но страницу редактора надо обновить.


Заключение


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


Но, по-моему, объем статьи перерос все разумные пределы. Поэтому я на сегодня закончу.
Позволю лишь сказать, что до отпуска остались считанные недели и я вполне готов перейти от отладки контроллера за столом к отладке его «в поле».
Если кого заинтересовали мои идеи или подробности разработки — пишите на мыло: shiotiny@yandex.ru


Всегда рад буду замечаниям и критике, если она, конечно, по делу.


Жду ваших отзывов, замечаний и предложений.


Ссылки, отсылки и посылки


Сайт проекта ShIoTiny


ESP8266
WiFi
MQTT
UDP Multicast


По просьбам трудящихся


Выкладываю сырую документацию и прошивку (бинарь).


https://github.com/shiotiny/ShIoTinyBin


Прошивка: https://github.com/shiotiny/ShIoTinyBin/blob/master/bin/esp-07-shiotiny.bin


Схема: https://github.com/shiotiny/ShIoTinyBin/blob/master/doc/esp-07-shiotiny.png


Полная инструкция: https://github.com/shiotiny/ShIoTinyBin/blob/master/doc/ShIoT-esp8266-01_obzor.pdf


Инструкция "как шить" там же.

Поддержать автора
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 54

    0

    Шедевральненько.

      +1
      Неплохо, но хотелось бы видеть что-сложное. Все визуальные языки/средства показывают красивые способы написать «хелловорлд» но пасуют на реальных задачах.
        +1
        Вот это — базовая схема станции. Тестировал двое суток. Живёт:)



        Сигналы формировал из NodeRed, подписка и управление MQTT с сотового телефона.

        Так что надежда есть, что не только «хелло ворлд» будет.
          0

          Расскажите это тем, кто написал управление Большим адронным коллайдером на LabVIEW.


          Про ПЛК вообще молчу.

          0
          Эпично. Плюсанул.
          Уже сколько раз пытался освоит подобные графические стреды программирования, например Nodered, но из-за бекграунда программиста все скатывается к коду.
          Что то похожее по железу работает, но реле на выходах заменил SSR на 6А.
          Как показала эксплуатация, китайские реле подгорают, если нагрузка вообще не реактивная (а с китайскими лампочками та еще лотерея)
            +1
            Я не осваивал среду в данном случае. Я её написал и запихал в ESP8266. Разумеется, что собственно рисовалка выполняется в браузере. Но все равно — кроме ноутбука ничего для «программирования» не надо.

            Лично мне очень нравится NodeRed. Пробовали его? На компе, на мой взгляд это самое лучшее для рисования программ. nodered.org

              0
              >>> Пробовали его?
              Конечно. Связка Nodered + HomeAssistant = классика.
              Как пример, ниже скрин моей типичной «автоматизации», в частности — если в туалете включили свет, но не выключили через 18 минут, его надо погасить и сбросить нотификацию в историю.
              Вход и выход логики коннекторы нодред-homeass, а вся логика — в блоках javascript кода.
              Наверняка можно было ее блоками накидать, но как писал выше — лень с учетом бекграунда программера.
              image
            0
            Очень здорово, минималистично и разумно. Интересно, почему не поддержали DS18B20? И еще вопрос — прошивку и трассировку публиковать или продавать не планируете? сейчас у меня модули автоматизации загородного дома живут на другой прошивке, там MQTT без SSL и это начинает понемногу напрягать.
              0
              TLS реально на микроконтроллере запустить?
                0
                ну тут-то есть как-то. И не только тут, в других проектах встречал
                  +1
                  SSL поддержка в ESP8266 есть и работает (я тестировал на www.cloudmqtt.com).
                  WEB у меня без защиты, потому что нужен только при настройке.
                  0
                  DS18B20 не поддержал, потому что не подумал о нём и в наличии нет:) Будет время — попробую.

                  Насчет публикации — пока не планирую. Там такая жудь — комментариев нет почти. Надо ещё причёсывать и причёсывать код.

                  Если продавать — то мне кажется, лучше готовую плату.
                  Минус в том, что эта прошивка годится только для данной комбинации ног. И ног у ESP-07 (она на нем сделана) больше нет. Да и флеш под завязку. Какой смысл тогда брать просто прошивку, если плата с компонентами обойдется в районе 800-1000 руб? Самому разводить? Так тоже самое и получится.

                  Если развивать проект коммерчески — то, как мне кажется, надо сделать линейку устройств. У меня есть поддержка прямого обмена между ESP8266 по UDP. Один модуль собирает данные, второй — рулит реле. Как-то так.

                  Но я совсем не коммерсант. Если дадите пару советов по поводу коммерциализации — то скажу спасибо. Я даже не думал, что кто-то это захочет купить:)
                  +1
                  Где скачать прошивку или исходник с целью допилинга?
                    0
                    Пока нигде. Комментов нет. код написан в припадке вдохновения. :) имена переменных на уровне — провёл пальцами по клаве. Так что в таком виде оно бесполезно для допилинга.
                      +1
                      Эт вы ещё мои поделки не видели. любой код можно привести в порядок. основной функционал в самой веб-оболочке как для меня — сложен а под esp уж какнить допилим.
                        +2
                        Вы все-таки выложите рабочую версию прошивки, исходников и схемы платы на гитхаб.
                      +1
                      Сразу оговорюсь: я ленив. Очень ленив!
                      Ничего себе — ленивый! Забахал целую графическую IDE и ленивый…
                        0
                        Я последнее время только ESP32 использую (микропитон на нем есть, например). Также можно посмотреть на бесплатные возможности Mongoose OS — насчёт удаленного обновления прошивки вроде там было
                        mongoose-os.com/pricing.html
                          0
                          Есть проект FLProg для ардуины. Посмотрите его.
                            +4
                            Я один пытался сложить ребус из жирных, заглавных букв в начале каждого абзаца?
                              +1
                              Пытался до самого конца. Не получилось.
                                0
                                Нет там ребуса) Просто я не знал как абзацы отделять. Тут мне на глаза книга попалась детская — 1967 года издания без обложки. Там так было — каждый абзац жирным. Ну я и сделал как там. Простите, что ввёл в заблуждение:)
                                  0
                                  Прошу прощения, а схемой платы не поделитесь?
                                    0
                                    Она стандартна и проста. Откроете в новой вкладке — будет большая:)

                                      +1
                                      А чем обусловлен выбор управлением реле через биполярные транзисторы, а не через мосфеты?
                                        +1
                                        Только тем, что они были в наличии. Разницы то никакой по сути. Схеме сто лет в обед — отработана на 200%.
                                        0
                                        Притягивающий резистор R10, правильнее будет ставить до резистора R7 а не после. (ну и по остальным входам соответственно) А то получается при замыкании контактов входа, на ножке контроллера будет ненулевое напряжение 0,3в из-за образовавшегося делителя. А в общем идея проекта замечательная.
                                          +1
                                          10k на базу Q1-Q3 не многовато ли? Мне кажется их стоит уменьшить для увеличения помехозащищенности.
                                    +1
                                    Для надежной работы в полевых условиях (куда не было доступа) мы делали аппаратный watchdog на attiny13 который обрубал питание для ESP8266. Да, есть внутренний но он как-то нечетко работает. Надежнее делать reset по питанию. Представляю что будет если контроллер зависнет с включенным насосом когда никого рядом нет.
                                      0
                                      У меня все проще. Я предполагаю поставить датчик уровня дополнительный «выше верхнего» и в случае, если вода его достигнет — рубить питание всей системы. Это очень простая и дешевая защита, а главное — очень надёжная.
                                        +1
                                        Это разумное решение для защиты от глобальных последствий аварии. Но я бы его применил не «вместо» а «вместе». Оно же не спасет ваши растения от засыхания в случае зависания с выключенными реле.
                                          0
                                          Возможно, я потом так и сделаю, спасибо. Но сейчас менять уже поздно решение.
                                          Да и не все так страшно. Если оно вырубится, то я по крайней мере буду знать, что проблема есть. А за день-два растения не засохнут:) Да даже за неделю — маловероятно.
                                      +1
                                      Очень круто, но на задачах сложнее «включить насос» превращается в нечитаемую кашу. Проходили с NodeRED.
                                        0
                                        А как же Labview например? Я думаю что зависит от бэкграунда. Программисту легче читать код, электронщику — схему.
                                          0
                                          У вас есть примеры действительно сложных схем в Labview?
                                          Я просто сталкивался с проектами уровня умного дома(где не пять лампочек и датчик движения, а действительно все системы интегрированы), и поддерживать логику можно было только в виде кода с продуманным разделением на модули. Все остальные способы превращались в полотно, в котором ничего нельзя найти и исправить
                                            0
                                            К сожалению сейчас нет. Последний раз занимался этим в 90-е годы для автоматизации исследовательских экспериментов в биологии. В Labview была (и наверное есть) развитая библиотека готовых модулей и можно было создавать свои (аналог процедур) что упрощало чтение диаграммы в целом.
                                              +1

                                              Более чем. Мне приходилось писать и крупные вещи для академии, и софт для коммерческих железок (для аналитической химии). Можно еще вспомнить LHC, да и в целом LabVIEW в индустрии много кто использует.


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

                                                0
                                                Спасибо за приведенную ссылку. Интересная статистика. Только вот удивляет что в таблице инженерных программ, они почему то упустили matlab. А вот с ним было интересно сравнить labview по популярности.
                                            0
                                            Я подхожу к этому вопросу проще: стоимость модуля невелика и пытаться навешать на него много задач не стоит. Это ж по сути эмулятор электронной схемы. Этакая «программная ПЛИС» с более-менее удобным интерфейсом.
                                              0
                                              Да, как ПЛК. Там другая проблема будет со временем: централизованное хранение логики и ее обновление. Когда логики будет много, станет сложно лазить по устройствам и вспоминать, где хранится тот или иной кусок.
                                                0
                                                А зачем помнить всё?
                                                Есть блок-комментарий. Подписывайте что где. Ресурсов он не жрёт процессорных. А информативность повышает.
                                            0
                                            Глюки с кнопочками это ничто по сравнению с возможными глюками от ЭДС самоиндукции.

                                            Рискованно подключать такие релюшки без гальванической развязки. ESP8266 и так весьма глючный девайс.

                                            Конечно интереснее было посмотреть на реальную практику использования на реальных устройствах.
                                              0
                                              Диодная защита и развязка по питанию — это всё что я мог сделать и сделал.
                                              Реле запитаны от +5Вольт, сам модуль — от +3 вольт. КОнденсаторы есть. Диоды гасят ЭДС самоиндукции.

                                              Не видел, чтобы схема перезагружалась при срабатывании реле. Плата — одна сторона выложена землёй, вторая — питанием.

                                              Вот что будет при включении пускателей вблизи платы — это не знаю. Всё может быть.
                                                0
                                                А землю на «чистую» и «грязную» поделили?
                                                  0
                                                  Неа. Только питание.
                                                  0
                                                  Ничего не будет, год уже включаю пускатель, нагруженный кучей неоновых ламп (дроссели там, вот это все) в 10см от esp8266 никаких проблем не обнаружил
                                                0
                                                Вам хочется не только включать, но и отключать реле досрочно? Да как скажите. Рисунок ниже показывает как это сделать!

                                                Обьясните, пожалуйста, этот фрагмент. Например, почему там И, а не ИЛИ? Как работает блок PULSE?

                                                  0
                                                  Pulse работает просто — при появлении на входе 1, то он формирует импульс «1» заданной длительности (в десятых долях секунды).

                                                  «И» — потому что реле включается единицей.

                                                  Когда на выходе r1cmd появляется 1 — то реле включается, так как на выходе PULSE — единица И на выходе r1cmd — единица. После истечения 600сек (задано в PULSE) — выход PULSE переключается в ноль и реле отключается (0 И 1 = 0).

                                                  Если же до истечения 600сек по MQTT опубликовать ноль, то он выключит реле, потому что поступит на нижний по схеме вход «И» (1 И 0 = 0).
                                                    0
                                                    В общем я выложил прошивку-бинарь и описание узлов в конце статьи.
                                                    0

                                                    Всё это конечно хорошо, но без исходников не интересно :(

                                                      0
                                                      Ну почему?) можете поиграться с бинарником)
                                                        0
                                                        Была бы интересна возможность централизованного управления множеством таких устройств по сети. Если откроете исходники — постараюсь допилить сам. Если проблема в публикации — попрошу вас отправить их в личку мне, потому что я смогу применить ваше устройство в своем случае только если удастся реализовать функционал с управлением по сети. Заранее спасибо

                                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                  Самое читаемое