Оглавление:

3D AIR Mouse - Обработка Arduino +: 5 шагов
3D AIR Mouse - Обработка Arduino +: 5 шагов

Видео: 3D AIR Mouse - Обработка Arduino +: 5 шагов

Видео: 3D AIR Mouse - Обработка Arduino +: 5 шагов
Видео: Автоматический Дозатор флюса на Ардуино! 2024, Ноябрь
Anonim
3D AIR Mouse | Arduino + Обработка
3D AIR Mouse | Arduino + Обработка

3D-мышь AIR | Arduino + Processing Я изучаю промышленный дизайн, и в прошлом году в рамках курса под названием «Технология как материалы в формате RAW» я построил этот проект в качестве своей заключительной работы. Большую часть времени я работаю с SolidWorks, программным обеспечением САПР для проектирования и инженерии.. Вращение твердого тела на экране осуществляется с помощью средней кнопки мыши. Я искал что-то более интуитивное. Вот как я закончил работу с трехмерной воздушной мышью, где фактическое вращение объекта осуществляется перемещением мыши в воздухе по всем трем осям - точно так же, как вы бы повернули объект, если бы держали его в руке. Я использовал Arduino, пару датчиков и скетч обработки. ПРИМЕЧАНИЯ: - На данный момент это только демонстрация концепции, так как фактического подключаемого модуля для работы с SolidWork нет (но, конечно, не стесняйтесь напишите один, если знаете как:) - Поскольку все оборудование было не моим, реальной 3D-мыши давно нет, и я использую несколько фотографий и видео, чтобы попытаться понять все это и дать вам какая-то идея, если вы хотите попробовать построить ее самостоятельно … Наслаждайтесь … (Это моя первая инструкция) Вот видео-демонстрация готового проекта

Шаг 1. Оборудование и прочее

Оборудование и прочее
Оборудование и прочее
Оборудование и прочее
Оборудование и прочее
Оборудование и прочее
Оборудование и прочее
Оборудование и прочее
Оборудование и прочее

Это не самый дешевый Instructable, так как он основан на 3-осевом акселерометре + датчик компаса. Вещи, которые вам понадобятся: * Мышь - бывшая в употреблении лучше (только потому, что она используется и дешевле), подойдет любая мышь. У вас должно быть место для размещения датчиков и дополнительных проводов, поэтому не покупайте сверхтонкие / очень крошечные мыши. * Модуль компаса с компенсацией наклона - HMC634 - Это 3-осевой датчик, купленный в SpurkFun за ~ 149 $ * Преобразователь логического уровня - ОБЯЗАТЕЛЬНО! Поскольку Arduino составляет 5 В, а 3-осевой датчик - 3,3 В, вам понадобится один из них, чтобы преобразовать 5 В в 3,3 В. У него громкое имя, но он стоит всего 1,95 доллара в SpurkFun. * Большой оптический детектор / фототранзистор - это простой оптический датчик, используемый в этом проекте для определения момента, когда мышь поднимается с рабочей поверхности. Куплен в SpurkFun за 2,25 доллара. Если у вас недостаточно места для размещения этой мыши внутри выбранной вами мыши, вы можете использовать эту, меньшего размера и дешевле. * Один (1) светодиод - не говоря уже о цвете, сверхяркий подойдет лучше. * 2 резистора - один (1) x 100 Ом и один (1) x 100 кОм (для оптического датчика) * Плата Arduino - DA! Я использовал модель Diecimila. Более новый Duemilanove доступен в SpurkFun по цене около 29,95 долларов (тоже должно работать) + установлено программное обеспечение Arduino. * Установлено программное обеспечение для обработки. * Исходный код проекта (не волнуйтесь, вы загрузите его через секунду) Плюс: Некоторые горячий клей (для фиксации предметов на месте) Пара крошечных шурупов. Примерно 10 см деревянного анкера диаметром 6 мм. Несколько дополнительных проводов. Паяльник. Что-то, чем можно разрезать пластик, я использовал режущий нож и напильник (ДЛЯ формовки). ("Хорошо, не ненавидьте меня за этот шаг, английский - мой второй язык, если я ошибся с этим, извините, я уверен, что вы поймете, о чем я говорю, через секунду. Когда вы увидите это на картинках ")

Шаг 2: Электроника

Электроника
Электроника
Электроника
Электроника

Все должно быть спаяно … В некотором смысле … ПРИМЕЧАНИЕ: 3-х осевой датчик - дорогая мелочь, дважды проверьте проводку перед включением всего устройства … См. Прилагаемые схемы для всех проводов, используемых в этом проекте. Прилагаемый исходный код может работать только в том случае, если вы используете те же номера контактов, что и я, но не стесняйтесь изменять их при подключении, если вы меняете соответствующие номера в коде. Подключение 3-осевого датчика к преобразователю логического уровня: Датчик VCC -> Arduino 3V3Sensor GND -> Arduino GndSensor SDA -> Converter TXI (Chan1) Converter TXO (Chan1) -> Arduino ANALOG IN 4Sensor SCL -> Converter TXI (Chan2) Converter TXO (Chan2) -> Arduino ANALOG IN 5Converter GND (по крайней мере один из них) -> Arduino GndConverter HV -> Arduino 5VConverter LV -> Arduino 3V3 Оптический датчик для Arduino: см. Прилагаемое изображение Цифровой вход = Pin 11 на Arduino LED: GND для некоторых GND (я использовал один из оптических датчиков) + к контакту 13 Arduino (это было сделано, поскольку на этом контакте уже есть встроенный резистор, если вы используете другой, обязательно используйте резистор, чтобы не сжечь светодиод)

Шаг 3: подготовка мыши

Подготовка мыши
Подготовка мыши
Подготовка мыши
Подготовка мыши
Подготовка мыши
Подготовка мыши

Именно здесь датчики находят свое место в корпусе мыши. Найдите лучшее место для крепления 3-х осевого датчика. Убедитесь, что он выровнен, и обратите внимание на ориентацию (вы узнаете, когда у вас будет датчик в руке). Вы можете закрепить его как хотите, я использовал 2 коротких деревянных анкера, просверленных для установки 2 крошечных винтов. и приклеивается горячим клеем к основной плате мыши. Для оптического датчика сформируйте прямоугольное отверстие в нижней части мыши. Идея состоит в том, чтобы датчик постоянно «видел» стол. Когда мышь поднята и датчик находится в состоянии «открыто» (таблицы нет), мышь переключается в 3D-режим (запускает эскиз обработки). Сформируйте еще одно отверстие для прокладки дополнительных проводов (от датчиков к Arduino) из пластиковый корпус. Моя была расположена справа от мыши. Исправьте светодиод там, где он будет отображаться. В этом проекте светодиод является индикатором 3D-режима. Свою кладу рядом с силиконовым колесиком мыши. Когда мышь поднята, колесо светится красивым синим светом.

Шаг 4: Исходный код

Код для Arduino был написан Шахаром Гейгером, моим учителем, и был изменен мной для этого проекта. Код 3D-куба - это базовый код, который можно найти на веб-сайте Processing. Я немного изменил его. В коде этот фрагмент преобразует необработанную информацию, поступающую от датчика (обычно от -180 до 180 x 10), в 0-255 getHeading (); Serial.write ('x'); x = (x +1800) / 14; Serial.write (x); Serial.write ('y'); y = (y + 1800) / 14; Serial.write (y); Serial.write ('z'); z = (z + 1800) / 14; Последовательная запись (z); Информация от датчика и Arduino поступает в эскиз обработки для каждой отдельной оси, но с предыдущей буквой оси (для эксп. X12 Y200 Z130) следующий код отбрасывает букву и оставляет только значения для отправки в COM. порт while (port.available () == 0) {} char reading = 0; while (reading! = 'x') {while (port.available () == 0) {} reading = (char) port.read ();} X = port.read (); while (чтение! = 'Y') {while (port.available () == 0) {} чтение = (char) port.read ();} Y = порт.read (); while (чтение! = 'z') {while (port.available () == 0) {} чтение = (char) port.read ();} Z = port.read (); Этот фрагмент кода отбрасывает все отрицательные значения … if ((X! = -1) && (Y! = -1) && (Z! = -1)) {rotateZ (- (float) Y / 25.0); rotateX ((float) X / 25.0); rotateY ((float) Z / 25.0); pX = X; pY = Y; pZ = Z;} else {rotateZ (- (float) pY / 25.0); rotateX ((float) pX /25.0);rotateY((float)pZ/25.0);} Прикрепленный ZIP-файл содержал код Arduino и код обработки.

Шаг 5: видео

Вот и все … Это готовый проект на видео. Есть небольшой сбой (вы можете видеть, что куб иногда "прыгает" на видео), Это из-за оси Z, может не случиться с вами …

Рекомендуемые: