Pull to refresh

Большие проблемы конфигурации маленьких устройств

Reading time5 min
Views5K

Часть 1. Лирическая


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

Что касается устройств из первой категории — там все просто. Интерфейс, по сути, графический и определяется дизайнерами и программистами. А с устройствами второго, по взаимодействию, не не по важности, плана все намного сложнее. Мы их воспринимаем как должное, тот же выключатель света, или материм, когда они выполняют свою работу, как автомат ввода, сработавший на перегрузку.

У совсем простых устройств интерфейс примитивный. Кнопка или тумблер, несколько кнопок для термостата, например. Характеристики задаются производителем и не меняются потребителем. Ток отключения 10А, 16А, 25А… Коммутация до 6А 230В… Но когда устройство чуть сложнее, все становиться очень плохо.

Немного отвлекусь, расскажу о своей неудаче как раз из-за аппаратного интерфейса. Возникла задача распределения нагрузки для частного дома. По сути — многоканальное программируемое реле времени. Сделал прототип буквально за вечер, поставил заказчику, заказчик, сосед по дому, оказался доволен, я решил попробовать наладить мелкосерийное производство, организовать небольшой электронный стартап деревенского масштаба, так как проблема нехватки вводных мощностей актуальна для частного сектора. Осталась одна проблема дизайна — конфигурация прибора. В прототипе интервалы были забиты просто в «фирмварь», если 200 ассемблерных команд так можно назвать. Пару раз пришлось корректировать уставки, делалось это просто сборкой новой прошивки и обновлением по средствам программатора. Понятно, что для серийного, даже мелкосерийного устройства такой метод не подойдет.

Тут я столкнулся со всеми «прелестями» разработки аппаратного пользовательского интерфейса… Простые методы, типа записать 16 вариантов уставок и поставить ползунковый переключатель не давали требуемой гибкости, делать какой либо серьезный интерфейс для связи с ПК или смартфоном — неоправданное усложнение, удорожание. К тому же сразу возникает необходимость разработки пусть и простого, но кросс платформенного приложения (Win / Linux / Android / iOs). Но и это не главное. По сути, пользователь один раз настроит прибор при установке и, в идеале, больше о нем не вспоминает.

В отличии от прототипа, на лицевой панели прибора появился 4х разрядный LED индикатор, кнопочки, светодиоды. Функционал тоже добавлялся, фичи задержек включения нагрузки после перебоя с сетевым питанием, дополнительные режимы для питания от ЛЭП или резервного генератора, подержание температуры непромерзания…

А вот и масса-габаритный макет этого монстра Франкенштейна



(Управляет контакторами, внутри слаботочные цепи коммутации катушек)

Пока присутствовал функционал только программируемого реле, с настройками было не сложно, созданный аппаратный интерфейс оправдывал себя. Но в какой то момент инструкция по конфигурации стала превышать объем кода «фирмвари». Изначальная идея: пользователь сканирует QR код на панели прибора, переходит на страницу с инструкцией — провалилась. Остается либо делать очень простой девайс, либо искать другой метод общения с устройством. Потенциальные покупатели (отважные тестировщики) очень долго разбирались в настройке по инструкции.

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

Что мы имеем на сегодня? Сравнение «классических» способов настройки:

  • Выбор из готовых конфигураций. ЗА: Легко реализуется как программно, так и аппаратно. Дополнительные аппаратные доработки минимальны. Пользователю не надо иметь специального оборудования, достаточно инструкции. ПРОТИВ: Отсутствует гибкость, не интуитивно, требуется наличие инструкции.
  • Последовательность нажатий с обратной связью через простую индикацию (аналогично настройке обычных электронных часов). ЗА: Легко реализуется программно, пользователю не надо иметь специального оборудования, достаточно инструкции. ПРОТИВ: Не интуитивно, сложно настроить большое количество параметров, невозможность клонировать настройки, что является критичным для компаний — инсталляторов.
  • Конфигурация с использованием стандартного проводного интерфейса. ЗА: Интуитивно, если хорошо написано приложение, легкое клонирование настроек, относительно простая реализация, возможно, не очень дорогие аппаратные доработки, возможность обновления firmware. ПРОТИВ: Пользователь должен иметь оборудование, как минимум компьютер или ноутбук с USB портом, преобразователь интерфейсов, если Ваш прибор предоставляет что-то отличное от USB или Ethernet. Необходимость разработки приложения.
  • WiFi + WEB – стрельба из пушки по воробьям и махровая ардуринщина. Но идея неплохая. ЗА: аналогично проводному соединению, нет необходимости разрабатывать кросс платформенное приложение, предоставив встроенный WEB интерфейс конфигуратора, пользователю достаточно иметь любое устройство с поддержкой WiFi и браузером. Даже не обязателен доступ к глобальной сети. Возможно, этот дизайн будет дешевле, чем аппаратные кнопки / индикаторы, так же упрощается корпус. ПРОТИВ: Технически крайне некрасивое решение, переводящее изделие совсем в другой класс устройств. Понижается надежность работы, как из-за усложнения прошивки, так и возросшей чувствительностью к ЭМП.

Резюмирую, что одно из самых красивых решений с точки зрения пользователя — последнее. Но оно и одно из самых ужасных с точки зрения инженера. Я на нем почти остановился, но…
Техническая кривизна не давала покоя. Для того, чтобы записать несколько байт в EEPROM городить огород с таким обширным стеком протоколов нерационально. Но, похоже, я нашел решение своей проблемы, вот характеристики этого метода:

Плюсы:

  • Удорожание аппаратной составляющей сравнимо с решением «выбор из готовых конфигураций», рублей 10 — 15. А возможность отказаться от лишних кнопок, индикаторов и т. д. дают, скорее, удешевление.
  • Программная реализация не представляет проблем.
  • Не требует разработки специального приложения. При желании — приложение можно предоставлять.
  • Интуитивность зависит от качества разработки WEB конфигуратора или приложения.
  • Гальваническая развязка с прибором.

Минусы:

  • Низкая скорость передачи данных в сравнении с проводным или радио интерфейсом.
  • Необходим физический контакт с прибором.
  • Нужен хотя бы однократный выход в Сеть.

К тому же, данный метод передачи информации очень распространен в природе. Это — звуковая волна.

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

  1. Пользователь инсталлирует прибор согласно инструкции.
  2. Создается требуемая конфигурация прибора, прописываются необходимые режимы и уставки.
  3. Пользователь переводит прибор в режим конфигурации, например специальной последовательностью нажатия клавиши, прибор отображает состояние готовности, допустим миганием светодиода с частотой 5Гц.
  4. В конфигураторе нажимается пиктограмма «передать параметры», после чего начинает воспроизводиться кодированная звуковая последовательность (а кто в 90х игры с кассет грузил?).
  5. Пользователь дожидается окончания загрузки данных в прибор (допустим, светодиод стал постоянно включенным) и нажимает пиктограмму «остановить передачу».

Все, новые параметры переданы в прибор. Как думаете, такой способ конфигурации будет достаточно удобен?

Вместо послесловия

Я специально не затрагивал техническую часть реализации. Каждый случай может быть индивидуальным, подход — общая идея. Если статья вызовет интерес, опубликую вторую часть. Практическую. Пока спойлер: затея увенчалась успехом, макет на 8 битном PIC16 + «студенческая» версия компилятора Си без оптимизации, в том числе и ручной, прошивка спокойно уложилась как по памяти (около 1KB), так и по производительности. Самая «тяжёлая» математическая операция — сложение sint8_t и sint16_t. По предварительным расчетам, ядро звукового конфигуратора, переписанное на Ассемблере, уложится менее чем 512 килослов и производительности 2MIPS у PIC16F819 должно хватить.

Всего наилучшего,
Константин.
Tags:
Hubs:
+17
Comments64

Articles