Оглавление:

DIY 3D-контроллер: 8 шагов (с изображениями)
DIY 3D-контроллер: 8 шагов (с изображениями)

Видео: DIY 3D-контроллер: 8 шагов (с изображениями)

Видео: DIY 3D-контроллер: 8 шагов (с изображениями)
Видео: Электроника для 3D принтера 2024, Ноябрь
Anonim
Сделай сам 3D Контроллер
Сделай сам 3D Контроллер

Создайте трехмерный интерфейс, используя шесть резисторов, алюминиевую фольгу и Arduino. Возьмите это, Wii. Update: гораздо более подробное объяснение этого проекта доступно в журнале Make Magazine. Возможно, будет проще следовать их инструкциям, и я думаю, что их код более актуален. Основная цель здесь заключалась в том, чтобы создать трехмерную систему определения положения руки, которую может построить большинство людей, при этом сохраняя при этом некоторое подобие функциональности. Чтобы получить представление о возможных приложениях, посмотрите демонстрационное видео. Если вы думаете, что можете создать более простой и такой же точный или немного более сложный и точный, поделитесь в комментариях! 3D-интерфейс DIY: крестики-нолики от Кайла Макдональда на Vimeo.

Шаг 1: материалы

Материалы
Материалы
Материалы
Материалы

Инструменты

  • Ардуино
  • Обработка
  • Кусачки
  • Паяльник
  • Канцелярский нож

Материалы

  • (3) резисторы 270 кОм
  • (3) резисторы 10 кОм
  • Припой
  • Проволока
  • Алюминиевая фольга
  • Картон

По желанию:

  • Лента (например, скотч)
  • Экранированный провод (например, коаксиальный кабель, ~ 3 фута)
  • (3) зажимы из кожи аллигатора
  • 3-контактный разъем
  • Стяжка
  • Термоусадочная трубка или горячий клей

Шаг 2: сделайте тарелки

Сделайте тарелки
Сделайте тарелки
Сделайте тарелки
Сделайте тарелки

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

Шаг 3: сделайте соединители

Сделайте соединители
Сделайте соединители
Сделайте соединители
Сделайте соединители
Сделайте соединители
Сделайте соединители

Чтобы подключить Arduino к пластинам, нам понадобится экранированный провод. Если провод не экранирован, сами провода более очевидно действуют как часть конденсатора. Кроме того, я обнаружил, что зажимы из крокодиловой кожи позволяют легко соединять предметы с алюминием, но, вероятно, есть и другие способы.

  • Отрежьте три одинаковых отрезка экранированного кабеля. Я выбрал около 12 дюймов. Чем короче, тем лучше. Коаксиальный кабель работает, но чем легче / гибче, тем лучше.
  • Зачистите последнюю половину дюйма или около того, чтобы обнажить экран, и последнюю четверть дюйма, чтобы обнажить провод.
  • Накрутите зажимы типа «крокодил» на провода на провода и спаяйте их вместе.
  • Добавьте термоусадочную трубку или горячий клей, чтобы скрепить детали.

Шаг 4: Сделайте схему

Сделайте схему
Сделайте схему
Сделайте схему
Сделайте схему
Сделайте схему
Сделайте схему
Сделайте схему
Сделайте схему

«Схема» - это всего два резистора на кусок алюминия. Чтобы понять, почему они там есть, полезно знать, что мы делаем с Arduino. Что мы будем делать с каждым выводом последовательно:

  • Установите вывод в режим вывода.
  • Напишите цифровой "низкий" на штырь. Это означает, что обе стороны конденсатора заземлены, и он разрядится.
  • Установите контакт в режим ввода.
  • Подсчитайте, сколько времени требуется для зарядки конденсатора, дождавшись, пока вывод перейдет в "высокий" уровень. Это зависит от номиналов конденсатора и двух резисторов. Поскольку резисторы фиксированы, изменение емкости можно будет измерить. Расстояние от земли (ваша рука) будет основной переменной, влияющей на емкость.

Резисторы 270 кОм обеспечивают напряжение для зарядки конденсаторов. Чем меньше значение, тем быстрее они будут заряжаться. Резисторы 10 кОм также влияют на синхронизацию, но я не совсем понимаю их роль. Мы сделаем эту схему на основании каждого провода.

  • Припаяйте резистор 10 кОм к концу провода напротив зажима типа «крокодил».
  • Между экраном и проводом (пластиной) впаять резистор 270кОм. Мы защитим провод тем же напряжением 5 В, которое мы используем для зарядки конденсаторов.

Шаг 5: Завершите и прикрепите соединитель

Закончите и прикрепите соединитель
Закончите и прикрепите соединитель
Закончите и прикрепите соединитель
Закончите и прикрепите соединитель
Закончите и прикрепите соединитель
Закончите и прикрепите соединитель

Когда три разъема будут готовы, вы можете добавить термоусадочную трубку или горячий клей, чтобы изолировать их друг от друга, потому что вы будете паять вместе точки экрана / 5 В.

Для меня проще всего было спаять два крайних разъема вместе, а затем добавить третий. После того, как вы припаяли три разъема, добавьте четвертый провод для питания экрана / 5 В.

Шаг 6. Подключите и загрузите код

Подключить и загрузить код
Подключить и загрузить код
Подключить и загрузить код
Подключить и загрузить код
  • Подключите разъем к Arduino (контакты 8, 9 и 10).
  • Закрепите зажимы типа «крокодил» на пластинах (8: x: слева, 9: y: снизу, 10: z: справа).
  • Обеспечьте питание, подключив четвертый провод (мой красный провод) к 5 В на Arduino.
  • Подключите Arduino, запустите среду Arduino
  • Загрузите код на плату (примечание: если вы находитесь за пределами Северной Америки, вам, вероятно, потребуется изменить #define mains на 50 вместо 60).

Код Arduino прикреплен как Interface3D.ino, а код обработки прикреплен как TicTacToe3D.zip.

Шаг 7. Сделайте что-нибудь крутое

Если вы посмотрите на последовательное окно в среде Arduino, вы заметите, что оно выдает необработанные трехмерные координаты со скоростью 115200 бод, примерно при 10 Гц = 60 Гц / (2 полных цикла * 3 датчика). Код выполняет измерения на каждом датчике как можно больше раз в течение двух циклов сетевой частоты (что на удивление стабильно), чтобы нейтрализовать любую связь. Первое, что я сделал с этим, - это сделал простой 3D Tic Интерфейс Tac Toe. Если вы хотите начать с рабочей демонстрации, код доступен здесь, просто поместите папку «TicTacToe3D» в папку «Обработка эскизов». Три полезные вещи, которые демонстрирует код Tic Tac Toe:

  • Линеаризует необработанные данные. Время зарядки на самом деле следует степенному закону относительно расстояния, поэтому вам нужно извлечь квадратный корень из единицы за время (т.е. расстояние ~ = sqrt (1 / время))
  • Нормализует данные. Когда вы запускаете эскиз, удерживайте левую кнопку мыши нажатой, перемещая руку, чтобы определить границы пространства, с которым вы хотите работать.
  • Добавление «импульса» к данным, чтобы сгладить любые колебания.

На практике, используя эту установку с алюминиевой фольгой, я могу получить фольгу самого большого размера (самый большой кусок, который я тестировал, составляет 1,5 квадратных фута).

Шаг 8: вариации и примечания

Вариации

  • Создавайте массивные датчики
  • Оптимизируйте резисторы и код для вещей, которые быстро вибрируют, и используйте его в качестве датчика / микрофона.
  • Вероятно, есть и другие уловки для развязки системы от шума переменного тока (огромный конденсатор между пластинами и землей?)
  • Я экспериментировал с экранированием пластин снизу, но это, кажется, вызывает проблемы.
  • Сделайте палитру цветов RGB или HSB
  • Контролировать параметры видео или музыки; последовательность ритма или мелодии
  • Большая слегка изогнутая поверхность с несколькими пластинами + проектор = интерфейс "Minority Report"

Примечания

На игровой площадке Arduino есть две статьи о емкостном сенсорном датчике (CapSense и CapacitiveSensor). В конце концов, я сделал инверсию схемы, на которую наткнулся в копии книги друга «Физические вычисления» (Салливан / Иго), описывающей, как использовать RCtime (в схеме были зафиксированы конденсатор и один резистор, и было измерено значение Микросекундная синхронизация была достигнута с использованием некоторого слегка оптимизированного кода с форумов Arduino. Опять же: просто начав с тонны схем терменвокса, я не совсем понимаю, я хорошо знаю, что есть лучшие способы сделать емкостное определение расстояния, но я хотел сделать что-то настолько простое, насколько это возможно, но при этом работоспособное. Если у вас такой же простой и функциональный дизайн, опубликуйте его в комментариях! Спасибо Дейну Куттрону за то, что он терпел все мои основные вопросы по электронике и помог мне понять, как работает простая гетеродинная схема терменвокса (изначально я собирался использовать их - и, при правильной настройке, наверное, было бы точнее).

Первый приз в конкурсе книг с инструкциями

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