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



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


    Продолжаем цикл статей о 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 в разделе документация или тут.

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

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

    Похожие публикации

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

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

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

      0
      Вот теперь можно нормально работать. Вроде всего хватает. Не хватает только энергосбережения, но это критично только для автономных проектов. Ну и PWM.
        0
        Отличная новость СПАСИБО!
        будем развиваться в дальнейшем применении вашего контроллера.
        ещё интересует в каком формате ваша поделка принимает пакеты по UDP?
        суть в том что недостающие входы-выходы/термодатчики/барометры и прочее можно передавать/получать через вашу систему обмена данных… но реверсинженерить её как-то не хочется — можете на эту тему статейку написать а я поделюсь тем что к этому протоколу прикручу!
          0
          ещё интересует в каком формате ваша поделка принимает пакеты по UDP?
          суть в том что недостающие входы-выходы/термодатчики/барометры и прочее можно передавать/получать через вашу систему обмена данных…


          Формат простейший: в UDP передается пакет-JSON.
          {
          "d": "имя устройства",
          "p": "название параметра",
          "v":  значение параметра число или <b>inf</b> или <b>nan</b>
          }
            0
            главный вопрос — почему именно esp8266, а не например, более современная esp32?
              0
              главный вопрос — почему именно esp8266, а не например, более современная esp32?


              Так исторически сложилось. Возможно, потом займусь портированием на ESP32 и STM, например.

              0

              Отличная работа. Спасибо. А можно допилить возможность соединения с mqtt сервером через ssl сертификаты? Хотелось бы отправлять данные прямиком в yandex iot.

                0
                А можно допилить возможность соединения с mqtt сервером через ssl сертификаты? Хотелось бы отправлять данные прямиком в yandex iot.


                А тот SSL, что у меня уже есть — не работает с yandex iot? MQTT-сервер mosquitto прекрасно работает через SSL с shiotiny — это проверено. С yandex iot я не проверял.
                  0
                  Авторизация с Yandex iot сервером идет через сертификаты, вот пример отправки с mosquitto
                  $ mosquitto_pub -h mqtt.cloud.yandex.net \
                  -p 8883 \
                  --cafile rootCA.crt \
                  --cert device-cert.pem \
                  --key device-key.pem \
                  -t '$devices/<ID устройства>/events' \
                  -m 'Test data' \
                  -q 1

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

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