Квартира нашпигована умными устройствами, но при этом, как и в самом обычном доме, шесть выключателей только в коридоре. Основной свет, подсветка потолка, подсветка пола, вытяжка, бра у зеркала и общий «выключить всё». Гости нащупывают нужный на третью попытку. Жена — на вторую. Про себя надеюсь, что попаду с первого раза, но только потому что выучил порядок.

Целых шесть штук — а речь только про коридор. Добавьте сценарии «сон», «утро», «кино», «ушёл из дома» — и стена превращается в кабину самолёта. Если же вместо выключателей поставить сенсорную панель с экраном, вместо «вошёл — нажал — свет» получится «вошёл — разбудил экран — нашёл меню — нашёл кнопку — нажал». Справедливости ради, в коридоре постоянно светящийся экран даже полезен — не потеряешь в темноте. Но поставьте такой же в спальню, и ночью он разбудит надёжнее любого будильника.

Всё это подтолкнуло к поиску альтернативы — с гибкостью сенсорного экрана, простотой обычного выключателя и в его же формате. Так появился прототип жестового контроллера: сенсорная матрица 3x3 в корпусе стандартного выключателя. Девять зон, никакого экрана, десятки различимых команд. Ниже — разбор: почему существующие способы управления не закрывают одну конкретную нишу, и как её закрывает матрица.

Что мы вообще обсуждаем

Чтобы не спорить о терминах: под «умным домом» здесь — управление светом (основной, подсветка, шторы), климатом (обогрев, кондиционер, увлажнение) и безопасностью (замки, датчики). Поведение устройств может быть изолированным (включить бра в спальне) или объединённым в сценарии (режим «сон» — свет выключить, шторы закрыть, температуру снизить).

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

Проблема: гибкость убивает удобство

Привычная модель — выключатель рядом с тем, чем он управляет. Свет в комнате — выключатель у двери. Понятно, надёжно, работает без Wi-Fi. Но ёмкость команд — одна штука на один орган управления.

Когда функций становится больше трёх, начинается выбор из плохих вариантов:

Наращивать механику. Пять клавиш, шесть, восемь. Стена перестаёт быть стеной. Переназначить функцию — вызвать электрика.

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

Голосовое управление. Бесконечная ёмкость команд, руки свободны. Но нужен интернет, есть задержка, ложные срабатывания в шумной комнате. Ночью, когда рядом спит ребёнок, говорить «Алиса, выключи всё» — не вариант.

Одиночный сенсор. Дёшево, минимум проводов. Но различимых команд — два-три (короткое, длинное, двойное нажатие). Для одного светильника — нормально. Для сценариев — мало.

Видите паттерн? Либо просто, но мало команд. Либо много команд, но медленно/дорого/зависит от сети. Разрыв — между одиночной кнопкой и полноценным экраном. Именно сюда встаёт матрица.

Идея: кодировать команду траекторией, а не временем

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

Выход — разделить пространство сенсора на зоны. Почему именно 3x3? Рабочая область стандартного выключателя — примерно 6 на 6 сантиметров. При разбивке 4x4 зона получается 15 на 15 мм — попасть вслепую уже сложно. А три позиции по каждой оси — это интуитивное «лево, центр, право». Можно попадать почти не глядя. При этом даже такой грубой сетки хватает для кодирования десятков команд.

Как это работает

Матрица 3x3 добавляет пространство:

0 1 2

3 4 5

6 7 8

Девять зон. Каждая — отдельное нажатие. Проведите пальцем по верхнему ряду (0 → 1 → 2) — это горизонтальный жест. По диагонали (0 → 4 → 8) — диагональный. Справа налево, сверху вниз, L-образный, Z-образный — разных траекторий десятки.

И вот ключевое: траектории мнемоничны. Чем чаще нужна команда, тем короче жест. Нажал верхний сенсор — включил светильник. Нижний — выключил. Ровно как у обычного выключателя — верх/низ. Для частых сценариев простые мнемонические команды. Свайп по верхнему ряду — верхний свет. Свайп по нижнему ряду — подсветка пола. Вправо — включить. Влево — выключить. Для экзотических сценариев можно и более сложные жесты. И это не абстрактные «двойной клик через 200 мс», а жесты, которые привязываются к пространственной модели комнаты.

Три-пять жестов хватает для повседневного управления. Чтобы запомнить и не путаться, хватит одного дня.

Собственно сама матрица. Ни разметки, ни подписей. Абсолютный минимализм
Собственно сама матрица. Ни разметки, ни подписей. Абсолютный минимализм

Делаем прототип

Любая хорошая идея требует проверки, поэтому я потратил вечер и сделал прототип. Некоторые контроллеры (например ESP32) умеют конфигурировать некоторые свои выводы как емкостные сенсоры, но для прототипа пришлось бы формировать сенсорные площадки и бороться с перекрёстными помехами. Проще оказалось взять готовые TTP223. Их размер 10x15 мм отлично вписался в размер. Получилась матрица с достаточным размером чувствительной зоны и при этом разреженная для того, чтобы четко фиксировать зону без двойных нажатий. Раз сенсорный ввод решён готовыми модулями, для обработки сгодился первый попавшийся под руку контроллер.

На промышленный образец похоже мало, но работает
На промышленный образец похоже мало, но работает

Конечный автомат прошивки работает в трёх фазах:

IDLE — матрица пуста, ждём первого касания.

CODING — палец на матрице. При переходе на соседнюю клетку она добавляется в цепочку. Если нажаты несколько зон одновременно — берётся клетка с минимальным индексом (упрощает логику, снижает неоднозначность).

RELEASE — все зоны отпущены. Если пауза превышает 300 мс — жест завершён, цепочка уходит на обработку. Если палец вернулся раньше — обратно в CODING.

На выходе — код жеста: стартовая клетка + последовательность переходов. В реальной системе этот код может маппиться на действие: MQTT-топик, HTTP-запрос, команду локальному реле — зависит от архитектуры дома.

Отладочная прошивка: touch_matrix9_map_cli

Для отладки на железе написана минимальная CLI-прошивка. Подключаешь по USB, открываешь монитор — и получаешь набор команд:

raw — сырые уровни на GPIO. Позволяет увидеть, что физически происходит на линиях, без какой-либо логики. Первое, что делаешь при подключении новой платы.

map / mapping — привязка логических клеток к физическим GPIO. Разводка платы может отличаться от логической сетки 0–8. Команда mapping запускает мастер: нажимаешь девять кнопок по порядку, прошивка запоминает, какой GPIO соответствует какой клетке. Результат сохраняется в NVS — переживает перезагрузку.

path — запись жеста. Проводишь пальцем по матрице, отпускаешь, через 300 мс прошивка печатает цепочку клеток.

demo h1 / demo d1 / ... — сравнение записанного жеста с эталоном. Пишет OK или FAIL с указанием ожидаемой цепочки.

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

На консоли видно, что идея работает
На консоли видно, что идея работает

Где это имеет смысл

У входа в комнату. Одна клетка — основной свет. Свайп по ряду — всё выключить. Диагональ — сценарий «ушёл» (свет, шторы, температура). Заменяет блок из трёх-четырёх клавиш одной панелью.

У кровати. Угловые клетки — бра слева и справа. Центр — ночник. Жест вниз — «сон». Никакого светящегося экрана на тумбочке.

Техническое помещение. Руки в перчатках, касание грубое. Крупные зоны, два-три жеста. Одна клетка — свет, жест — вентиляция.

Резерв при отказе сети. Вся логика — на MCU рядом с нагрузкой. Жест → реле. Ни облака, ни роутера.

Чего матрица не умеет

Было бы нечестно не сказать про ограничения.

Обучение. Нужно запомнить жесты. Для повседневных трёх-пяти действий это реалистично. Для словаря из двадцати — нет. Проще ограничиться необходимыми.

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

Нет обратной связи. Матрица не показывает текущее состояние. Годится, если можешь увидеть результат. Если повесить рядом с LED-индикатор со статусами, то можно совместить удобство (быстрый жест) и контроль результата.

Место в архитектуре

Жестовый контроллер — не замена ни экрану, ни приложению. Это специализированный локальный пульт для частых действий. Он занимает конкретную нишу между механическим выключателем (простой, но негибкий) и сенсорной панелью (гибкая, но дорогая и медленная).

Девять кнопок не решают всё. Но ту задачу, которую они решают — быстрый локальный ввод без экрана и без сети — решают хорошо.

 Если тема интересна, в следующей части могу разобрать кодирование жестов подробнее: как из цепочки клеток получается компактный uint32 код, пригодный для маппинга на сценарии.

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

Комментарии (13)


  1. vbifkol
    04.04.2026 15:49

    А как наощупь попасть в нужную зону в темноте? Первое касание игнорируется?

    За статью и идею спасибо. Тоже думаю над многоклавишным выключателем, пока склоняюсь к тройной "качельке" - это 6 кнопок, с учетом даблкликов 12 команд, с учетом длинных - 18 команд, с учетом комбинаций из двух-трех кнопок - очень много команд.

    Но вообще мне кажется попытка внедрить всё в одно - это решение не той проблемы. Выключатель света - ок, у меня в зале 3 зоны подсветки + 3 верхних света по 2 режима + "включить/выключить всё". Навешивать на тот же контроллер управление кондиционером или телевизором - зачем?


    1. idv2013 Автор
      04.04.2026 15:49

      Спасибо за отклик. Если коротко - смотрел в сторону обычной матрицы без жестов. Показалось не очень очевидно/запоминаемо если просто кодировать последовательностью. А жест на механике не получается.


      1. vbifkol
        04.04.2026 15:49

        А какие команды вешаете что просто кликов не хватает? Клик по верхнему - включение/выключение основного светильника, даблклик по верхнему - включение второго режима основного, клик по нижнему - включение подсветки зоны, длинный по верхнему или нижнему - димминг подсветки. Несколько верхних кнопок - включить последнее состояние, все верхние кнопки - включить всё, все нижние кнопки - выключить всё. Навскидку не понимаю что еще мне от света нужно.


        1. idv2013 Автор
          04.04.2026 15:49

          Клики по верхнему - включение основных светильников по отдельности. Клики по нижнему - выключение. Свайпы снизу вверх/сверху вниз - дополнительная подсветка. влево - вправо готовые сцены. все три вниз - полное отключение. все три вверх - полный свет.


          1. vbifkol
            04.04.2026 15:49

            Клики по верхнему - включение основных светильников по отдельности. Клики по нижнему - выключение.

            Эээ... а зачем выносить выключение на отдельные кнопки? Почему не сделать клик по верхнему переключением?

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


  1. dmitrik4321
    04.04.2026 15:49

    Статья хорошая. Но никто не отменял win+print screen, что бы делать скриншоты.


  1. JBFW
    04.04.2026 15:49

    Идея интересная, но чисто технически - что мешает сделать это на экране? Вместо меню?

    Ловить жесты пальца джаваскриптом, ещё и подсказку выводить, если нужно какую-то загогулину изобразить. И в конце - тык пальцем как подтверждение.

    Вот только насчёт юзабилити жестов непонятно пока.

    К слову, проблемы с экраном как-то нет: висит, светит, на нем на главной странице главные кнопки (отопление - 1..10) и информация (заряд ИБП 80%, температуры, прогноз погоды на ближайшие часы). Всё что не основное - убрано.

    И в спальне тоже непонятны проблемы, неужели кому-то может мешать экран? Если он конечно не 57" и не лупит светом в глаза. А так-то можно ему просто темную тему приделать...


    1. idv2013 Автор
      04.04.2026 15:49

      Никто не мешает. И у меня используется панелька 480х480 для аналогичных целей. Здесь скорее про то, что в каждый угол по панельке вешать не будешь. А это по цене существенно ниже и по дизайну проще. На экране, понятно, можно рисовать, но рисовать пальцем поперек изображения (если оно не подразумевает явных touch зон или свайпов) как-то не очень очевидно. Поэтому для управления сначала домотать до нужного экрана, в потом тык по кнопкам.


  1. Andrey_13
    04.04.2026 15:49

    Интересная идея и реализация. Не рассматривали paj7620 - датчик жестов?


    1. idv2013 Автор
      04.04.2026 15:49

      paj7620 - не пробовал. Можно посмотреть. По документации он вроде не совсем про то. Написано про то, что жесты должны быть на расстоянии 5-30 см, а для датчиков которые я использовал нужно прикоснутся чтобы сработал. Все-таки ближе к привычному “Включить свет”


  1. Traveller0968
    04.04.2026 15:49

    Квартира нашпигована умными устройствами, но при этом, как и в самом обычном доме, шесть выключателей только в коридоре. Основной свет, подсветка потолка, подсветка пола, вытяжка, бра у зеркала и общий «выключить всё». Гости нащупывают нужный на третью попытку. Жена — на вторую. Про себя надеюсь, что попаду с первого раза, но только потому что выучил порядок.

    Музыкой навеяло :))
    Я это называю: преобладание разума над здравым смыслом :)


  1. serafims
    04.04.2026 15:49

    Русский интерфейс - тонкая настройка никому неизвестных (а, может, и ненужных) параметров.


  1. parakhod_1
    04.04.2026 15:49

    С тех пор как купили большой дом, понемногу решаю проблемы с автоматизацией. От старых хозяев даже досталась старая минимальная автоматика в виде реле времени на свет в саду, и финдеровские реле на лестнице и в коридорах, чтобы можно было кнопками из разных мест включать и выключать. Свет и электрику разумеется переделали все, и в некоторых комнатах стало больше чем по 10 регулируемых источников. Тоже думали как лучше делать управление. Программируемые кнопки на шине KNX - хорошо, но всё равно всё на них не посадишь. Голосовое управление есть, но пользуешься редко. Датчик движения - уместно только для котельной или гаража.

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

    И работает в общем отлично. Выключателями пользуемся только чтобы на ночь весь свет в спальне или детской выключить, да прикроватную лампочку включить-выключить. Остальное в 95% случаях правильно работает само.