ShIoTiny - визуально программируемая плата

shiotiny

New member
Разработал прошивку для ESP8266 (модуль ESP-07)

Возможно, что заинтересует начинающих.

Вкратце: вы рисуете программу в браузере. Ничего на комп устанавливать НЕ НУЖНО! Главное, чтобы был WiFi.

Поддержка MQTT, UDP, трех входов и трех выходов, АЦП, датчики температуры и влажности.

Подробнее - на сайте http://shiotiny.ru/ в разделе Документация

Статьи на хабре.

ShIoTiny: малая автоматизация, интернет вещей или «за полгода до отпуска»
ShIoTiny: узлы, связи и события или особенности рисования программ
ShIoTiny: вентиляция влажного помещения (проект-пример)
ShIoTiny и окружающий мир: подключение датчиков к бинарным входам, дребезг контактов и другие вопросы
ShIoTiny и окружающий мир: аналоговые датчики или АЦП для самых маленьких

Репозиторий с бинарями и документацией.

shiotiny/ShIoTinyBin

И еще - начал делать сайт (есть идеи по портированию и развитию). Но это пока заготовка сайта.

Главная

Пишите, пробуйте, ищите глюки.

Если кому лень прошивать ESP-07 - можете написать мне, платы ещё есть.

shiotiny@yandex.ru
 

nikolz

Well-known member
всегда интересно читать об опыте других.
Но возникает вопрос, почему предложенное вами решение для разработки устройств на ESP Вы считаете лучше и проще чем разработка например на СИ или ардуине?
Поясню
Если чел не знает ничего , то у него есть выбор - изучать вашу уникальную систему кубиков или изучить широко применяемую систему ардуина.
Сравнительная сложно примерно одинаковая
Возможность и поддержка ардуины многократно больше.
Полагаю что выбор очевиден,
 

shiotiny

New member
Если чел не знает ничего , то у него есть выбор - изучать вашу уникальную систему кубиков или изучить широко применяемую систему ардуина.
Сравнительная сложно примерно одинаковая
Я НЕ считаю свою прошивку "самой-самой лучшей".

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

Вы, как мне кажется, смотрите с той точки зрения, что надо вникнуть до самого нутра в каждую железку. Освоить язык С++ и внутренние регистры. Повозиться с TCP на низком уровне. И с этой точки зрения вы, несомненно, правы.

Но попробуйте взглянуть с другой стороны.

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

И вот для этих людей, моя прошивка, возможно подойдет.

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

Насчет сложности - тоже вопрос спорный. У меня все режимы работы точка доступа, станция, автономный; все IP и SSL - настраиваются с веб-страницы. Написать это на ардуине - не шибко то просто.

Вот пример - контроллер управления вентиляцией из моей статьи.



Эту схему можно понять практически не зная как оно работает внутри. Достаточно знать, что Input - то сухой-контакт-кнопка, Relay-реле (выход), ну и что такое MQTT.
Попробуйте то же сделать на ардуине и прикиньте сколько это займет времени. Это даже если вы ее знаете. А если вы вообще не знаете С++ - то вообще задача непростая.

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

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


У моей прошивки есть недостатки: она не быстро работает. Не поддерживает кучи датчиков (но это пока). Работает только на ESP-07 (тоже только пока). Заточена только под одну конкретную распиновку - три бинарных входа, три реле, один датчик DHT11/22 или DS1820/22. Ну и АЦП.

Поэтому, я всего лишь предлагаю свой подход, тем, кому это интересно.

Если человеку интересно сделать что-то на С++ - его право. Но есть же и LUA и JavaScript на ESP8266. Почему не быть визуальному программированию?:)

Каждый выбирает сам. Мое дело - донести свои разработки до людей. Если кому интересно - попробуют, покритикуют. Кому не интересно - я не заставляю:)
 

nikolz

Well-known member
я не против, тем более визуальное программирование - как эпидемия гриппа периодически появляется в различных областях приложения компов
но за почти полувековое существование так и не дало существенных побегов.
Появится энтузиаст -сделает , но без постоянной поддержки и разъяснений оно умирает.
Желаю Вам успехов.
 

shiotiny

New member
Спасибо.
Я изначально для себя делал.
Потом как то заинтересовались знакомые.

И пошло.

Там по ссылкам довольно подробная инструкция.

Ну не взлетит так не взлетит:=)
 

shiotiny

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

ShIoTiny
 

pvvx

Активный участник сообщества
@shiotiny подскажите пожалуйста, как мне на этом визи-вик нарисовать простую программу:

Замыкание кнопки на GSM-WiFi модеме/роутере в 01:00 на 5 сек каждый день.

И более сложную - если нет соединения с AP, то замкнуть кнопку на 5 сек, пробовать соединиться через 30 сек (время загрузки GSM-WiFi роутера). Повторять пока не соединится.
 

pvvx

Активный участник сообщества
Могу объяснить, зачем это. Для модемов у Мегафона существует такое: Интернет на всё ночью (с 1.00 до 06.59) – безлимитно, но требуется перерегистрация в сети. Без разрыва сессии тарификация трафика остается по дневному стандарту.

И ещё вижу несоответствия в объяве о “Есть масса народу-самодельшиков, кто НЕ хочет возиться с установкой компиляторов, разбираться с внутренними регистрами и языком С. А тем более с нюансами программирования MQTT и веб-страниц.”

Вашим же языком: Ведь цели то у людей тоже разные. Но их все объединяет одна задача – надежность работы сети.

Обеспечить это в городе не составляет особых проблем. В пригороде и регионах в основном это GSM связь. У неё не сверх стабильность, что требует дополнительных решений. Например: местного MQTT с прочими серверами… Т.е. вашему “самодельшику” придется погружаться в глубинные дебри программирования многих устройств на многих языках.

Что это всё может означать? Что созданная вами система является узкоспециализированной не только по решаемым задачам, но и по региональному использованию.

На самом деле модули ESP не обладают никакой стабильностью и не годится для простого контроллера полива газона. Исправить это можно, повесив к модулю дополнительный аппаратный WDT. Т.к. у вас предусмотрено исключительно внешнее управление, то и это не решает всей картины стабильности связи с модулем… Тут уже требуется поддержка наличия какой-либо автономности, чего пока нет ...

Представьте, что у вас есть выключатель света или будильник, но он “нестабилен” – то работает, то нет. Зачем нужно такое устройство?

Но и тут есть ответ – для “поиграться” и с целями изучить или получить простейшие навыки в программировании. Это и есть основной ареал ESP8266/ESP32. От туда и растут ноги сообщения (https://esp8266.ru/forum/threads/shiotiny-vizualno-programmiruemaja-plata.4532/#post-64790).
 

shiotiny

New member
Замыкание кнопки на GSM-WiFi модеме/роутере в 01:00 на 5 сек каждый день.
В этой версии платы нет часов реального времени. Поэтому в этой версии можно только раз в 24 часа замыкать кнопку, примерно как я нарисовал.

Я хотел сделать таймер-эмулятор RTC, но как его устанавливать? Откуда время брать?
Следующая версия наверное с RTC будет.

И более сложную - если нет соединения с AP, то замкнуть кнопку на 5 сек, пробовать соединиться через 30 сек (время загрузки GSM-WiFi роутера). Повторять пока не соединится.
Для этого надо будет добавить узел, который показывает есть или нет связь с точкой доступа. Такого узла сейчас нет. Я добавлю и напишу. Спасибо за идею.
 

Вложения

nikolz

Well-known member
полагаю что визуальное программирование - очень подходит для детей даже дошкольников
Вот уж действительно кто не может изучить СИ но может что-то мастерить .
 

pvvx

Активный участник сообщества
Я хотел сделать таймер-эмулятор RTC, но как его устанавливать? Откуда время брать?
C NTP сервера.
Внешняя микросхема RTC хорошо, но это дополнительный костыль. Если к модулю уже добавлен внешний MCU для обеспечения WDT и прочих плюшек, то его часы обычно стабильнее ESP... Но вы взяли за основу ESP-глюк...
Если на ESP обеспечена достаточная стабильность работы, то его точности счета может вполне хватить. Но беда в его нестабильности - зависаниях от внешних сигналов WiFi с выводом из этого глюка только аппаратным сбросом. Остальное - программные ошибки...
Для этого надо будет добавить узел, который показывает есть или нет связь с точкой доступа. Такого узла сейчас нет. Я добавлю и напишу. Спасибо за идею.
Да, тогда можно будет написать какое условие...
 

pvvx

Активный участник сообщества
НЕ хочет возиться с установкой компиляторов, разбираться с внутренними регистрами и языком С.
Для этого есть Arduino с примерами. Большинство просто копирует куски кода как кубики.
Развитие этой темы - программируемый модуль в вашу систему. В web-свалке был разобран и испытан данный подход и модули названы "оверлеями". Их свойства - они могут быть загружены на исполнение с сети или со встроенного диска. Это кусок программного кода с данными, грузящегося в остаток IRAM. Собирается и транслируется используя карту процедур и данных основной прошивки полученных после её сборки. Устанавливать компиляторы пользователю не требуется - это всё размещается на внешнем Cloud/сервере...
В итоге с сервера можно скачать во внутренний диск сотни этих оверлеев. Но, из аппаратных ограничений ESP, в одно время может использоваться только один - возможно последовательное исполнение с передачей данных в выделенной RAM области...
Почему так - такие модули позволяют работать на низком уровне без ограничения встроенными функциями, чего невозможно обеспечить языками типа LUA. Нужен какой-то драйвер внешней микросхемы-датчика - скачал оверлей и он есть.
Система поддерживающая "оверлеи" имеет преимущество и в коммерческих версиях...
 

shiotiny

New member
И ещё вижу несоответствия в объяве о “Есть масса народу-самодельшиков, кто НЕ хочет возиться с установкой компиляторов, разбираться с внутренними регистрами и языком С. А тем более с нюансами программирования MQTT и веб-страниц.”

Вашим же языком: Ведь цели то у людей тоже разные. Но их все объединяет одна задача – надежность работы сети.

Обеспечить это в городе не составляет особых проблем. В пригороде и регионах в основном это GSM связь. У неё не сверх стабильность, что требует дополнительных решений. Например: местного MQTT с прочими серверами… Т.е. вашему “самодельшику” придется погружаться в глубинные дебри программирования многих устройств на многих языках.
Зачем? Знаю кучу самодельщиков, которые вообще не программисты - пользуются готовыми решениями. А самоделки у них в области металл, садоводства и других "искусств".
Да и "надёжность работы сети" не обязательно нужна. Ну дойдут данные чуть позже - для многих задач это не критично.

Что это всё может означать? Что созданная вами система является узкоспециализированной не только по решаемым задачам, но и по региональному использованию.
Да я и не спорю, что область применения ограничена той периферией, что на ней установлена. Но так и большинство задач, что решают на ESP - это померять нару-тройку параметров, проверить несколько условий и кинуть куда-то данные или включить-выключить что-то.

Какая связь с регионом - не понимаю.

На самом деле модули ESP не обладают никакой стабильностью и не годится для простого контроллера полива газона. Исправить это можно, повесив к модулю дополнительный аппаратный WDT. Т.к. у вас предусмотрено исключительно внешнее управление, то и это не решает всей картины стабильности связи с модулем… Тут уже требуется поддержка наличия какой-либо автономности, чего пока нет ...
Так я и не говорю, что мой модуль - супернадёжен или может всё и сразу.

Представьте, что у вас есть выключатель света или будильник, но он “нестабилен” – то работает, то нет. Зачем нужно такое устройство?
Ну есть куча "выключателей света" на ESP. и работают как-то. Значит достаточно стабилен для тех применений.

Но и тут есть ответ – для “поиграться” и с целями изучить или получить простейшие навыки в программировании. Это и есть основной ареал ESP8266/ESP32. От туда и растут ноги сообщения (https://esp8266.ru/forum/threads/shiotiny-vizualno-programmiruemaja-plata.4532/#post-64790).
И это тоже.

Кстати, вот добавил проверку связи с AP. Прошивку обновил.




Вот простейший вариант. При пропадании связи с АР - каждуюу минуту будет включать реле на 5 сек.
 

Вложения

shiotiny

New member
Для этого есть Arduino с примерами. Большинство просто копирует куски кода как кубики.
Ну если кому-то хочется ардуину - да за ради бога:) Хоть С++, хоть голый ассемблер.
Система поддерживающая "оверлеи" имеет преимущество и в коммерческих версиях...
Не знаю как там - в коммерческих версиях.
На ESP с 2-4 мегабайтами можно и такое замутить.

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

pvvx

Активный участник сообщества
Зачем? Знаю кучу самодельщиков, которые вообще не программисты - пользуются готовыми решениями. А самоделки у них в области металл, садоводства и других "искусств".
Но он сможет обратиться к соседу/ребенку и тот на айфоне слепит ему нужный модуль/драйвер.
Ну есть куча "выключателей света" на ESP. и работают как-то. Значит достаточно стабилен для тех применений.
При наличии оператора.
Кстати, вот добавил проверку связи с AP. Прошивку обновил.
Хорошо, спасибо. Жду встроенные часы с NTP :)
 

shiotiny

New member
Но он сможет обратиться к соседу/ребенку и тот на айфоне слепит ему нужный модуль/драйвер.
Вы думаете, что каждый.. ну хотя бы десятый в состоянии слепить драйвер? Ребенок?
Нет, есть, конечно и такие дети. Но их очень немного. То, что они сидят за компом - не значит, что они умеют программировать. Для них там есть куда более интересные вещи - игры, соцсети...


Хорошо, спасибо. Жду встроенные часы с NTP
Со встроенными часами сложнее - время ж надо ещё и обрабатывать. И что делать, если нет связи с NTP. Без часов реального времени тяжко.
 

pvvx

Активный участник сообщества
Вы думаете, что каждый.. ну хотя бы десятый в состоянии слепить драйвер? Ребенок?
Нет, есть, конечно и такие дети. Но их очень немного. То, что они сидят за компом - не значит, что они умеют программировать. Для них там есть куда более интересные вещи - игры, соцсети...
Вы сами написали опровержение - "соцсети...", данный сайт, ...
Тут, за историю этого форума, 99% таких. Сюда и обратятся.
Со встроенными часами сложнее - время ж надо ещё и обрабатывать. И что делать, если нет связи с NTP. Без часов реального времени тяжко.
Что делать если нет MQTT. Так вроде стоит вопрос? :)
Есть MQTT, но нет NTP - парадокс.
В крайнем случае напишите скрипт в роутере - передать время через MQTT :)
 

shiotiny

New member
Вы сами написали опровержение - "соцсети...", данный сайт, ...
Тут, за историю этого форума, 99% таких. Сюда и обратятся.
На этом сайте доля процента от доли процентов пользователей соцсетей сидит. Большинство "детей" сроду ни о каком ESP и ардуино не слышали.

Есть MQTT, но нет NTP - парадокс.
Ничего парадоксального. Есть масса задач, где RTC не нужен.

Проблема не в том, чтоб к NTP законнектится, а в том как построить обработку времени. Это же не число. А в виде таймстампа - неудобно пользователю.
 

shiotiny

New member
Вот еще один вариант опредедения пропадания связи. С посощью пинга. Можно пинговать до 8 IP


 

pvvx

Активный участник сообщества
Проблема не в том, чтоб к NTP законнектится, а в том как построить обработку времени. Это же не число. А в виде таймстампа - неудобно пользователю.
Пользователь у вас смотрит на картинки, где всё отображается через javascript -> до балды в каком формате часы.
Возможно неудобно вам в ESP, но не javascript-у перевести в любой формат...
 
Сверху Снизу