Детектор жестов для управления схемами

О преимуществах бесконтактного управления говорить нет смысла. Главное, как это по-удобнее реализовать? Вариант имеется. Этот датчик гравитации объединяет элементы управления жестами с сенсорными переключателями, где есть много комбинаций для разных действий.

Сенсорный модуль объединяет функции распознавания жестов и обнаружения прикосновений в единое целое и обеспечивает регулируемый диапазон обнаружения в пределах 0–30 см. При подключении к микроконтроллеру он может обнаруживать 5-ти сторонний сигнал касания и 7 видов жестов: движение влево, вправо, вперед, назад, вверх, вниз и удаление.

Кроме того, датчик оснащен функцией автоматического сна и пробуждения. Модуль поставляется с алгоритмом распознавания жестов и обеспечивает простой и надежный вывод данных. Используется датчик с прямой связью с компьютером или микроконтроллерами, такими как Arduino и Raspberry Pi, через последовательный порт.

Принципиальная электрическая схема

Здесь 4 красных светодиода подключены к цифровым контактам Arduino NANO. Датчик гравитации подключен к контактам 10 и 11. Rx датчика подключен к контакту Tx, а Tx датчика к Rx, который определен в серийном номере программного обеспечения Arduino. Светодиодам назначаются различные задачи в зависимости от действий и функций, определенных в программе Arduino. Соединения очень просты, для питания схемы можно использовать внешний источник питания 5 В на 1 ампер.

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

Встроенную 5-ти позиционную сенсорную панель на датчике можно использовать непосредственно для обнаружения прикосновения, или удлинить панель с помощью проводов, чтобы она лучше подходила для устройства. Внешний экран датчика сохраняет преимущества серии Gravity, а также делает модуль более прочным. Этот датчик можно использовать для создания умной лампы, умного автомобиля или в других самодельных интерактивных проектах, требующих распознавания жестов.

Функции устройства

  • Источник питания: 3,3 — 6 В
  • Выходное напряжение: 0 — 3,3 В
  • Рабочий ток: около 56 мА
  • Ток в спящем режиме: около 40 мкА
  • Выход: последовательный порт TTL
  • Формат последовательного протокола: скорость полосы 9600; 8 бит данных, без бита четности, 1 стоповый бит

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

При непрерывной отправке байта между концом последнего байта и началом следующего должен быть интервал времени не менее 200 мкс. Датчик может принимать/передавать данные только в рабочем состоянии, а для обработки данных надо чтоб датчик оставался в нерабочем состоянии. То есть, если при приеме/передаче данных над датчиком находится объект, нам необходимо отодвинуть его для выполнения настроек.

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

Функции кода

1) Установите высоту обнаружения (по умолчанию 20 см при включении).

Example: DFGT.setGestureDistance(20);—Unit(cm) Max height: 30cm

2) Установите включение спящего режима или войдите в автоматический спящий режим (спящий режим отключается при включении).

Example: DFGT.setSleep(4);—unit(s)

3) Установите включение распознавания жестов (все 7 жестов могут быть распознаны при включении питания).

Example(1) DFGT.enableFunction(DFGT_FUN_ALL);—enable all gestures sensing fuction

Example(2) DFGT.disableFunction(DFGT_FUN_RIGHT | DFGT_FUN_LEFT);—disable sensing function of part gestures

Example(3) DFGT.enableFunction(DFGT_FUN_RIGHT | DFGT_FUN_LEFT);—enable sensing function of part gestures

Здесь показания датчика также выводились на последовательный монитор через последовательный порт Arduino (UART), а датчик гравитации также поддерживает интерфейс UART. Вот почему в программном коде Arduino используется серийный номер, вывод RX называется D10, Tx — D11. Датчик силы тяжести имеет другую библиотеку, которую можно скачать отсюда и напрямую включить в Arduino IDE в формате ZIP.

Инициализированы все функции, чтобы можно было запускать все движения и сенсорные действия. Для этого в скетче Arduino сделана внешняя функция для переключения красных светодиодов, подключенных к контактам цифрового ввода/вывода.

В шилде используется Arduino Nano, который распаян на плате, и соединения могут быть выполнены через штекерные разъемы рядом с ним. Для отображения любых данных у него есть встроенный OLED 128×64 для цифрового вывода, зуммер и светодиод. Он имеет оптимизированную силовую часть, просто подключите его к разъему от 9 до 12 вольт.

Тестирование датчика жестов

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

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

Оцените материал:

0 / 5. Рейтинг: 0

Может подскажете что улучшить?