Сенсорная панель Walabot
Walabot Touchpad Низкопрофильное решение, которое может превратить любую поверхность в сенсорную панель для вашего ноутбука. Представьте, что вы используете книгу, стол или стену в качестве сенсорной панели. В сочетании с проекторной технологией вы можете воспроизводить сенсорные экраны на любой поверхности.
Этот проект направлен на то, чтобы предоставить эту утилиту и упростить ее использование с помощью простых протоколов сокетов и Walabot, устройства для создания трехмерных изображений потребительского уровня.
Поскольку я хотел, чтобы это решение было как практичным в повседневном использовании, так и универсально доступным, я выбрал установку с наименьшими аппаратными затратами. Чтобы уравновесить простоту настройки и точность изображения, я реализовал базовый цикл настройки, который запускается каждый раз при запуске Walabot.
В этом руководстве рассматривается процедура настройки Raspberry Pi и управление курсором на главном компьютере.
Как это работает?
В основе проекта лежит клиент Raspberry Pi 3, который снимает показания с датчика Walabot Creator (спасибо, Walabot!), и хост-компьютер, которым в данном случае является мой ноутбук.
Общий поток пользователей выглядит следующим образом:
- Raspberry Pi отправляет сигнал запуска на Walabot
- Walabot обнаруживает цель и находит ее.
- Raspberry Pi извлекает эти данные, определяет действия пользователя и отправляет их на узел сокета через локальное соединение Wi-Fi.
- Хост-компьютер получает команду и управляет курсором через PyAutoGUI.
Демонстрация
В Прогресс
Настройка Pi
Во-первых, нам нужно настроить пи так, чтобы его можно было использовать и были установлены все необходимые библиотеки.
- Если на вашем Pi не предустановлена ОС, вы можете следовать этому руководству, чтобы установить Raspbian с NOOBS. Raspbian - это официальная операционная система Raspberry Pi, которая на сегодняшний день является самой популярной.
- Если у вас нет монитора и вы хотите получить доступ к Pi без подключения к сети, я бы порекомендовал вам настроить VNC или SSH и добавить кнопку выключения на Pi.
- Нам не потребуется ввод-вывод, поэтому вы можете оставить контакты заголовка непаянными.
- Вставьте SD-карту в Pi и подключите ее к дисплею и источнику питания. Pi должен загрузиться.
- Подключитесь к Интернету и откройте Chromium.
- Перейдите на страницу загрузки Walabot.
- Загрузите установщик Raspberrypi и нажмите сохранить . для подтверждения загрузки
- Вернитесь на рабочий стол, откройте терминал и введите
sudo apt-get update
Загрузки с компакт-диска
sudo dpkg –i walabot_maker_1.0.34_raspberry_arm32.deb
Таким образом, команды обновляют списки пакетов системы и устанавливают WalabotSDK
- После того, как вы ответите на несколько запросов о соглашении, у вас должен быть установлен Walabot SDK. Затем введите
sudo apt-get dist-upgrade
перезагрузка sudo
Это обновляет установленные пакеты и перезагружает RPi.
Для большей скорости я бы рекомендовал отключить графический интерфейс рабочего стола, как показано здесь.
Walabot Interfacing
И вот здесь на помощь приходит Walabot. Это трехмерный микроволновый датчик изображения, который может выполнять самые разные задачи, включая определение дыхания, способность видеть сквозь стены и обнаруживать несколько целей. Вы можете посмотреть их на их канале на YouTube!
Функциональность, которая действительно полезна для этого проекта, - это трехмерное радиочастотное зондирование, которое может определять координаты x, y и x цели. Кроме того, его способность динамической фильтрации, которая удаляет статические сигналы, может быть объединена с фильтрацией фиксированных отражателей, что позволяет вам точно отслеживать объект даже через другие материалы.
Однако есть одно предостережение при использовании такого мощного устройства - это высокое энергопотребление. Walabot использует 400-900 мА, что слишком много для стандартного USB-выхода Raspberry. Это можно решить, перейдя в /boot/config.txt и добавив следующую строку:max_usb_current =1, что увеличит максимальный ток до 1200 мА.
Обнаружение цели
Убедитесь, что Walabot обнаруживает только мой палец, когда я хочу, чтобы он был ключевым, иначе мой компьютер может случайным образом переместить курсор, возможно, даже за пределы. Для своего проекта я подключился к API Walabot с помощью функции GetSensorTargets () и отключил режим MTI (Идентификация движущейся цели), чтобы предотвратить фильтрацию сигнала пальца в течение более длительных периодов времени. Я установил радиус обнаружения (r) в моем проекте на максимум 10 см, чтобы арена располагалась в области непосредственно над Walabot. Это зависит от толщины материала.
Я попытался установить размеры арены в значениях x, y и z, но это лучше всего сработало только в профиле ближнего действия, который был доступен только в версии для разработчиков Walabot. Когда я попробовал это в режиме сканера по умолчанию, я получил почти нулевое обнаружение цели, вероятно, потому что режим сканера считывает радиально, а не через декартовы координаты. Таким образом, я установил стандартный профиль сканера, установил арену в радиальном направлении и преобразовал радиальные размеры в декартовы координаты.
Целевые объекты имеют параметры x, y, z и амплитуду, из которых я использовал только значения x и y. Поскольку ось Y проходит по длине Walabot, я перевел ее на ось X на экране, когда Walabot размещен горизонтально, как тачпад. Когда я сравниваю координаты с границами арены, я могу найти относительное расположение цели по отношению к арене и преобразовать это в относительное расположение курсора на экране хоста.
Однако, поскольку моя арена была инициализирована на основе значений r, theta и phi, мне пришлось вручную находить используемые границы арены путем измерения наименьшего и наибольшего значений координат x и y. Затем я автоматизировал это при настройке, чтобы программа могла найти границы, когда пользователь водит пальцем по оси x и оси y. Несмотря на то, что существуют формулы для преобразования полярных координат в декартовы, установленные границы отличались от фактически измеряемой арены, так как не учитывались помехи другой поверхности на зарегистрированной области.
Чтобы определить, хочет ли пользователь переместить курсор, щелкнуть правой или левой кнопкой мыши, я использовал функции обнаружения нескольких целей Walabot. При перемещении будет 1 точка контакта, при щелчке правой кнопкой мыши - 2 точки соприкосновения, а при щелчке левой кнопкой - 3 точки. Кажется твердым, пора проверить это.
Ага! Это оказалось намного сложнее настроить. Изначально я планировал, что код будет щелкать соответствующие кнопки мыши, когда Walabot обнаруживает две или более целей, но в тот самый момент, когда пальцы входят в поле зрения, Walabot обнаруживает одну цель, таким образом перемещая мышь перед нажатием .
Сложный баланс максимизации площади арены без увеличения z-диапазона в центре Очевидное решение - уменьшить сам диапазон арены, что естественным образом уменьшает z-диапазон. Это имеет побочный эффект:тачпад становится слишком маленьким для использования. Другой путь, который я выбрал, заключался в том, чтобы вручную отфильтровать цели со слишком высоким z-атрибутом, который не работает, поскольку цель по оси Z по-прежнему регистрируется выше на краю, чем по центру. Амплитуда тоже не работает, так как сосредоточена вокруг наиболее чувствительной части модуля. Я решил вручную изменить значение z-параметра для всех целей, добавив абс (угол фи - 90 градусов) * множитель ко всем целям, но, к сожалению, параметр угла фи не является доступным параметром датчика цели. В конце концов, я мог решить эту проблему только с помощью изогнутой сенсорной панели, соответствующей кривизне диапазона обнаружения, или с помощью выпуска Walabot Developer Edition.
Подробнее:сенсорная панель Walabot
Производственный процесс
- Что такое VMC Machining?
- Сварка MIG против сварки TIG
- Рекомендации по высокопроизводительной швейцарской обработке
- Руководство по созданию прототипов с ЧПУ
- Понимание процесса изготовления вала
- Что такое пассивация нержавеющей стали?
- Приятель осанки с Walabot
- Сенсорная панель Walabot
- Счетчик туалета (на платформе Walabot)
- Walabasquiat:интерактивная генеративная художественная установка!