О чем эта статья
Продолжаем цикл статей о 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 модуля и выбирает из списка одну ножку из возможных. Примерно так, как показано на рисунке ниже.
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.
После тяжелых раздумий, я пришел к выводу, что страница должна быть а) информативной и б)не содержать лишнего.
То, что у меня получилось показано на рисунке ниже.
На главной информационной странице два раздела: 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 в разделе документация или тут.
Предложения, пожелания, критику,
Жду отзывов и предложений.
Комментарии (7)
clawham
30.10.2019 22:49Отличная новость СПАСИБО!
будем развиваться в дальнейшем применении вашего контроллера.
ещё интересует в каком формате ваша поделка принимает пакеты по UDP?
суть в том что недостающие входы-выходы/термодатчики/барометры и прочее можно передавать/получать через вашу систему обмена данных… но реверсинженерить её как-то не хочется — можете на эту тему статейку написать а я поделюсь тем что к этому протоколу прикручу!
shiotiny Автор
31.10.2019 05:43ещё интересует в каком формате ваша поделка принимает пакеты по UDP?
суть в том что недостающие входы-выходы/термодатчики/барометры и прочее можно передавать/получать через вашу систему обмена данных…
Формат простейший: в UDP передается пакет-JSON.
{ "d": "имя устройства", "p": "название параметра", "v": значение параметра число или <b>inf</b> или <b>nan</b> }
Gargo
31.10.2019 12:05главный вопрос — почему именно esp8266, а не например, более современная esp32?
shiotiny Автор
31.10.2019 12:28главный вопрос — почему именно esp8266, а не например, более современная esp32?
Так исторически сложилось. Возможно, потом займусь портированием на ESP32 и STM, например.
Balanda911
02.11.2019 07:40Отличная работа. Спасибо. А можно допилить возможность соединения с mqtt сервером через ssl сертификаты? Хотелось бы отправлять данные прямиком в yandex iot.
shiotiny Автор
02.11.2019 07:42А можно допилить возможность соединения с mqtt сервером через ssl сертификаты? Хотелось бы отправлять данные прямиком в yandex iot.
А тот SSL, что у меня уже есть — не работает с yandex iot? MQTT-сервер mosquitto прекрасно работает через SSL с shiotiny — это проверено. С yandex iot я не проверял.
sterr
Вот теперь можно нормально работать. Вроде всего хватает. Не хватает только энергосбережения, но это критично только для автономных проектов. Ну и PWM.