ShIoTiny: обновления и уведомления

2x3lhz-tej3w7wnbri8k_crqjbs.jpeg

О чем эта статья


Продолжаем цикл статей о ShIoTiny — визуально программируемом контроллере на базе чипа ESP8266.

В этой статье рассказано о том, что изменилось со времени предыдущей прошивки ShIoTiny: как изменился интерфейс пользователя; как переназначить «ножки» и другие менее важные, но не менее долгожданные вещи.

Статья представляет что-то вроде »информационного листка» о состоянии дел на поприще разработки прошивки ShIoTiny. Те, кто не заинтересовался этой моей разработкой могут со спокойной совестью эту статью пропустить.

Те, кто не знает о чем речь, но хотят узнать — могут прочитать мои предыдущие статьи о прошивке ShIoTiny или обратится к документации.

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

Онлайн-версия редактораElDraw — точно такая же как в прошивке, для ознакомления.

Ссылки на схемы, прошивку и прочее — на сайте ShIoTiny в разделе документация.

Предыдущие статьи о ShIoTiny и другие мои статьи

Вступление для успокоения почтенной публики


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

Друзья! Я напоминаю, что проект мой — хобби и кроме него у меня есть работа, жена и детишки. Так что прошу вас: будьте снисходительны! Автор пишет как умеет и может:)

Спешу всех успокоить: проект не умер! Я выловил довольно много блох из кода и кроме того переделал сайт проекта (правда ещё не до конца — набиваю сайт контентом).

С точки зрения большинства философских учений в мире нет ничего постоянного. Даже наша вселенная эволюционирует. Что уж говорить о прошивке микроконтроллера или сайте проекта?

Ключевые изменения в прошивке ShIoTiny коснулись прежде всего двух вещей: возможности переопределения ножек и страницы состояния контроллера. О них мы и поговорим. Что касается нового дизайна сайта проекта — то я его тут касаться не буду: кому любопытно — зайдут, посмотрят и покритикуют.

Переопределение «ножек» ESP8266


Итак, ножки или они же — GPIO. Изначально, ножки микроконтроллера ESP866 переопределять не предполагалось. Они были жестко прибиты к входам и выходам платы ESP-07 (кому интересно — о ней все есть на сайте проекта).

Но внезапно обнаружилось, что моя прошивка безо всякой переделки идет не только на модуле ESP-07 с 1Мб FLASH, но и на ESP-01, ESP-12 и даже на ESP-8285!

Справедливо встал вопрос о том, что одному нужно 5 входов и один выход, другому — 6 выходов и ни одного входа, третьему — три термометра одновременно.

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

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

zn-f9x5xesj70levkx1noewx5ay.jpeg

N/A — означает, что ножка не выбрана.
Если в схеме есть узел с не выбранной ножкой N/A, то такую схему загрузить в устройство нельзя — не позволит редактор ElDraw. Но такую схему можно выгрузить на диск, чтобы продолжить ее редактирование «когда-нибудь потом».

Все очень просто, но есть нюансы.

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

Во-вторых, ножка GPIO15 — зарезервирована под кнопку AP и её нельзя использовать для других целей. Простите, но иначе — никак…

Во-третьих — ножку GPIO16 нельзя использовать как обычный бинарный вход (узел Input).

В-четвертых — ножки GPIO9 и GPIO10 можно использовать только на модуле ESP-8285. На других модулях результат будет плачевный — полный зависон и бесконечный перезагрузон!

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

Новый способ перехода в режим конфигурации


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

То есть в режиме конфигурации можно изменить проблемные ножки GPIO9 и GPIO10 на другие. Но вот беда — попасть в режим конфигурации можно было только удерживая кнопку AP примерно 4 секунды! А за это время контроллер успеет начать выполнять «кривую» схему-программу и зависнуть!

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

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

На практике все выглядит проще пареной репы: давим кнопку Reset и, отпустив кнопку Reset тут же, не мешкая, давим кнопку AP. Сразу примерно на полсекунды загорается синий светодиод STATUS (если вы его, конечно, припаяли к GPIO0) и контроллер перезагрузится в режиме конфигурации.

Если схема-программа работает нормально — то можно всегда перейти в режим конфигурации «старым» способом — нажав и удерживая кнопку AP примерно 4 секунды (пока не загорится синий светодиод STATUS).

Страница состояния ShIoTiny


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

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

То, что у меня получилось показано на рисунке ниже.

c6lrasjcqqtzgd1fhz_gk--k4z4.jpeg

На главной информационной странице два раздела: Info — общая информация и Used GPIOs — информация о использовании ножек ввода-вывода. Рассмотрим их подробнее.

Раздел Info


Name: esp_8266_155da4 — уникальное имя устройства. Оно генерируется автоматически и изменить его нельзя.

Ver: 2019–10–22 22:54:51 +0700 6b5ee82 clean — версия прошивки (дата сборки и идентификатор коммита).

MQTT: Connected to: 192.168.1.2:21064, SSL — соединение с сервером MQTT. показан IP-адрес или URL сервера, порт сервера и режим SSL, если используется защищенное соединение. Помните, что если в схеме-программе нет узлов работы с MQTT — то и соединение устанавливаться никогда не будет!

WiFi: STA ip: 192.168.1.134. — режим работы WiFi ESP8266: STA — станция, AP — точка доступа. Могут быть одновременно выбраны оба режима с различными IP-адресами.

Now: Wed Oct 30 2019 21:49:28 GMT+0700 — текущее время. Показано только есть время установлено узлом Set Time! Иначе будет указано, что время не синхронизировано и не установлено.

Раздел Used GPIOs


В этом разделе показаны все используемые в схеме-программе ножки модуля и их текущее состояние.

Формат вывода очевиден: GPIO <номер ножки> (функция): состояние
Номер ножки — число или, для АЦП — вместо номера будет надпись adc.
Функция: Input — бинарный вход; Relay — бинарный выход; ADC — АЦП или тип датчика: DS182x или DHTxx.

Поле «состояние» — зависит от назначения ножки.
Для бинарных входов и выходов — 0 или 1.
Для датчиков — температура, влажность.
Для АЦП — его показания, пересчитанные по заданной формуле (смотрите описание работы с АЦП в инструкции).

На мой взгляд главная страница содержит всю необходимую информацию о работе контроллера.

Заключение


Вот, собственно, и все главные изменения в прошивке на сегодняшний день. Кроме этих новшеств было исправлено ещё десятков пять мелких ошибок.

Как обычно — подробная инструкция на сайте ShIoTiny в разделе документация или тут.

Предложения, пожелания, критику, деньги, подарки и так далее — присылайте мне в комментарии или на почту: shiotiny@yandex.ru.

Жду отзывов и предложений.

© Habrahabr.ru