Оглавление:

Виртуальное граффити: 8 шагов
Виртуальное граффити: 8 шагов

Видео: Виртуальное граффити: 8 шагов

Видео: Виртуальное граффити: 8 шагов
Видео: Как создать граффити персонажа: 9 шагов 2024, Июль
Anonim
Виртуальное граффити
Виртуальное граффити

Я видел несколько виртуальных систем граффити в сети, но не нашел опубликованной информации о том, как их создать (хотя см. Последнюю страницу с ссылками). Я подумал, что это было бы здорово для моих семинаров по граффити, поэтому я сделал один и опубликовал здесь все, что вам нужно, чтобы сделать свое собственное! Особенности * все с открытым исходным кодом и оборудование, * стоимость <100 фунтов стерлингов без учета проектора и компьютера, * обнаруживает сопло банки давление и расстояние от экрана, * моделирует капание краски, если вы двигаетесь слишком медленно! Примечания * эта инструкция достаточно высока, но, пожалуйста, дайте мне знать, если я пропустил что-то важное, * компьютерная настройка предназначена для Linux. Если вы заставите его работать на других системах, опубликуйте свои инструкции! Навыки, которые вам понадобятся: * работа с деревом для изготовления деревянного экрана обратной проекции, * электронные схемы и программирование микроконтроллеров Atmel AVR (или Arduino), * возможность установки некоторых библиотеки на вашем компьютере, чтобы обработка могла взаимодействовать с wiimote.

Шаг 1. Как это работает

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

* Аэрозольный баллончик имеет инфракрасный светодиод, который светит через экран проектора и виден камерой wiimote. * Wiimote отправляет координаты X и Y банки на компьютер по радиоканалу Bluetooth. * На компьютере запущена простая программа рисования, которая использует проектор для «рисования» линий, когда вы рисуете с помощью банки. Он также обеспечивает отображение камеры wiimote на экране с помощью системы калибровки по 4 точкам. * Распылитель также может определять расстояние до экрана и давление сопла: чем дальше вы находитесь, тем больше нарисованная точка, чем сильнее вы нажимаете на сопло, тем более непрозрачной становится точка краски.

Шаг 2: Компоненты

Компоненты
Компоненты

Вот все, что вам нужно, чтобы собрать вместе:

* компьютер - должен быть около 1,4 ГГц, bluetooth и порт usb, * среда обработки, * программное обеспечение virtualGraffiti, загружаемое с шага «настройка компьютера», * nintendo wiimote - купите подержанный на ebay, * проектор - потребуется быть ярким, если вы планируете использовать в течение дня или в помещении с включенным светом, * задний проекционный экран - сделайте сами, * виртуальный баллончик - сделайте сами, * виртуальный приемник баллончика - сделайте сами. Стоимость * arduino для приемника баллончиков (встроенный usb-> серийный) 21 фунтов стерлингов * пара радиоприемников / передатчиков 9 фунтов стерлингов * компоненты для строительного баллончика с распылителем 18 фунтов стерлингов плюс дополнительный корпус 12 фунтов стерлингов * дополнительный корпус для приемника 8 фунтов стерлингов * nintendo wiimote - купите бывшее в употреблении на ebay 20 фунтов стерлингов

Шаг 3: Экран обратной проекции

Экран обратной проекции
Экран обратной проекции

Экран должен быть максимально прозрачным! Если он недостаточно прозрачен, изображение не будет видно, а инфракрасный светодиод не будет виден камере wiimote. Если он слишком прозрачный, то проектор будет слепить, а изображение размытым. (Хотя способы смягчения этого см. На последней странице).

Я использовала лайкра, которая эластична, поэтому я могу растянуть ее, чтобы сделать ее более прозрачной. Сейчас я держу его кнопками, но перехожу на липучку, когда получаю доступ к швейной машинке. Я сделал деревянную раму с помощью мастерской и плотника (спасибо Лу!). Мне нужно было, чтобы она рухнула, чтобы я мог перевозить ее на своем велосипеде. Если вы делаете его для фиксированного места, то его будет легче сделать. Просто сделайте его с соотношением сторон 4: 3 и достаточно жестким, чтобы оставаться в вертикальном положении. Я обнаружил, что люди склонны изрядно нажимать на материал экрана, поэтому он должен быть немного прочным.

Шаг 4: аэрозольный баллончик

Аэрозоль
Аэрозоль
Аэрозоль
Аэрозоль

Это самая сложная часть проекта, и на ее выполнение потребовалось больше всего времени. Хорошая новость в том, что вам не нужно все это для того, чтобы забавная система работала. Проще всего получить схему с переключателем, инфракрасным светодиодом и резистором. Когда вы нажимаете переключатель, загорается светодиод, и его видит и отслеживает камера wiimote.

Эта версия более продвинутая, потому что она также измеряет расстояние от экрана и давление сопла. Обе эти вещи важны, когда вы на самом деле рисуете распылением. Я хотел создать систему обучения, поэтому было важно сделать ее как можно более «реальной» (в пределах моих затрат). Схема довольно простая. Взгляните на прилагаемую принципиальную схему, чтобы убедиться в этом. Вам потребуются базовые навыки пайки и возможность установить схему на вероупорте. Кроме того, вы должны быть довольны программированием микроконтроллеров. Создание схемы с нуля или использование платы Arduino Вариант 1: если вы хотите использовать плату Arduino в аэрозольном баллончике. Используйте arduino как есть и уменьшите вдвое скорость передачи радио в коде аэрозольного баллончика. вариант 2: вы хотите сэкономить, но у вас нет программатора предохранителей. Соберите плату и используйте внешний кристалл с частотой 16 МГц. Уменьшите скорость передачи вдвое, как в варианте 1. Вариант 3: вы хотите сэкономить еще больше денег и у вас есть программатор предохранителей. Постройте доску, но опустите внешний кристалл. Используйте программатор предохранителей, чтобы настроить температуру на использование внутренних часов. Я считаю, что этот самодельный параллельный программатор позволит вам программировать предохранители. Я использую программатор olimex. Обзор схемы Микроконтроллер измеряет выходной сигнал от датчика расстояния Sharp 2d120x (подробная информация об этом датчике здесь) и линейного потенциометра. Он также измеряет выходной сигнал светодиодного потенциометра PWM. Это используется для регулировки светоотдачи светодиода. ИК-светодиод, который я использую, составляет 100 мА, а пиковая длина волны - 950 нм (идеально для Wiimote). Микроконтроллер использует ШИМ для очень быстрой вспышки светодиода. Мы используем силовой МОП-транзистор IRF720, чтобы микроконтроллер не сгорел на выходе. Также я хотел добавить емкость для более яркого светодиода в будущем. Имеется светодиодный индикатор состояния, который мигает каждый раз, когда по радио передается пакет данных. Если все в порядке, этот индикатор должен мигать с частотой около 15 Гц. Наконец, модуль радиопередатчика подключается к контакту 3 (цифровой контакт 1 для Arduino) микроконтроллера, чтобы мы могли отправлять измеряемую информацию на компьютер. Вам также НУЖНА антенна, прикрепленная к плате приемника. Я использовал кусок проволоки длиной 12 см. Это половина того, что рекомендуется на этой отличной информационной странице. Программирование микроконтроллера После того, как вы построили схему, вам необходимо загрузить программу (прилагается). Я использую среду программирования / библиотеки arduino. Вы можете скомпилировать это с помощью IDE arduino, а затем запрограммировать, как обычно. Моя схема упрощена за счет использования внутренней тактовой частоты микроконтроллера 8 МГц. Если вы используете это, вам нужно будет установить настройки предохранителя для использования внутреннего откалиброванного 8 МГц RC: 1111 0010 = 0xf2 Это означает, что вам понадобится программист, который может записывать предохранители../avrdude -C./avrdude.conf -V -p ATmega168 -P / dev / ttyACM0 -c stk500v2 -U lfuse: w: 0xf2: m Если у вас нет такого программатора (скажем, у вас просто есть arduino плата), просто используйте кристалл с частотой 16 МГц между контактами 9 и 10, и все должно работать (не проверено - вам может понадобиться конденсатор). Вам также необходимо изменить программный код, чтобы скорость передатчика была уменьшена вдвое. Тестирование После того, как вы собрали все вместе и загрузили программу, вам необходимо отрегулировать яркость ИК-светодиода. Я просто хотел максимизировать светоотдачу без поджаривания светодиода, поэтому я взорвал несколько и в итоге получил среднее потребление около 120 мА. Если у вас есть мультиметр, вы можете легко настроить его, в противном случае просто установите потенциометр на довольно высокое значение, но не до упора! Вы также можете проверить аналоговые входы на контактах 26, 27 и 28 потенциометра регулировки ШИМ, датчика расстояния и потенциометра сопла. Если у вас есть осциллограф, вы можете проверить последовательность импульсов, выходящую из контакта 3 в радиомодуль TX. Проверьте выход ШИМ светодиода на контакте 11. Вы можете использовать камеру мобильного телефона (или большинство камер CCD), чтобы увидеть, как ИК-светодиод включается при нажатии кнопки сопла.

Шаг 5: Приемник баллончика

Приемник баллончика
Приемник баллончика
Приемник баллончика
Приемник баллончика

Если вы собираетесь использовать простой аэрозольный баллончик, этот бит вам не понадобится.

В противном случае я просто использую плату arduino с радиоприемником, подключенным к контакту 2. Это упрощает получение данных в компьютер через USB -> последовательный чип на плате arduino. Если бы я собирался сделать нестандартную схему, я бы, вероятно, использовал оценочную плату FTDI USB -> serial UART. Вам также НУЖНА антенна, прикрепленная к плате приемника. Я использовал кусок проволоки длиной 12 см. Это половина того, что рекомендуется на этой отличной информационной странице. Загрузите скетч graffitiCanReader2.pde в Arduino. Когда банка включена, вы должны увидеть, как светодиоды состояния на банке и плате приемника быстро мигают. Каждый раз, когда светодиод банки мигает, отправляется пакет данных. Каждый раз, когда светодиод на плате приемника мигает, принимается действительный пакет данных. Если вы этого не видите, то с радиосвязью что-то не так. Что-то, что можно попробовать, - это подключить передатчик банки к приемнику приемника с помощью куска провода. Если это не сработает, возможно, у вас несоответствие скорости передачи виртуального провода (см. Код). Предполагая, что на плате приемника происходит много миганий, вы сможете отслеживать это через свой последовательный порт USB. Если вы отслеживаете последовательный порт (обычно / dev / ttyUSB0) на 57600, вы должны увидеть, что данные выдаются, например, Got: FF 02 Got: FF 03… Первое число - давление, второе - расстояние. Теперь вы можете запустить обработку и использовать эту информацию для создания красивых картинок! Загрузите прикрепленный скетч обработки (canRadioReader.pde). Запустите программу и проверьте вывод программы. Вы должны получить частоту (которая сообщает вам, сколько обновлений в секунду получает приемник - вы определенно хотите, чтобы она была не менее 10 Гц). Также вы получите расстояние и размер сопла. Проверьте баллон, перемещая потенциометр сопла и перемещая кусок карты перед датчиком расстояния. Если все работает, переходите к следующему шагу - подготовка компьютера к работе с wiimote!

Шаг 6. Настройка компьютера: обработка и Wiimote

Настройка компьютера: обработка и Wiimote
Настройка компьютера: обработка и Wiimote

Наше главное здесь - получение обработки, обращающейся к wiimote. Эти инструкции относятся к Linux, но все они должны работать на Mac и Windows с некоторыми исследованиями о том, как ввести данные wiimote в обработку. После установки обработки я нашел на форуме какие-то инструкции, но проблемы остались. Вот что мне пришлось сделать:

  1. установка обработки
  2. установить библиотеки bluez: sudo apt-get install bluez-utils libbluetooth-dev
  3. создать./processing/libraries/Loc и./processing/libraries/wrj4P5
  4. загрузите bluecove-2.1.0.jar и bluecove-gpl-2.1.0.jar и поместите в./processing/libraries/wrj4P5/library/
  5. загрузите wiiremoteJ v1.6 и поместите.jar в./processing/libraries/wrj4P5/library/
  6. загрузите wrj4P5.jar (я использовал alpha-11) и поместите в./processing/libraries/wrj4P5/library/
  7. загрузите wrj4P5.zip и распакуйте в./processing/libraries/wrj4P5/lll/
  8. скачайте Loc.jar (я использовал beta-5) и поместите в./processing/libraries/Loc/library/
  9. загрузите Loc.zip и разархивируйте в./processing/libraries/Loc/lll/

Затем я использовал код, вдохновленный Classiclll, чтобы заставить кнопки и сенсорную панель работать. Прилагаемый код / эскиз просто рисует круг, в котором wiimote обнаруживает 1-й источник инфракрасного излучения.

Чтобы проверить свой bluetooth, нажмите кнопку 1 и 2 на wiimote, затем попробуйте $ hcitool scan на терминале. Вы должны увидеть обнаруженный Nintendo Wiimote. Если вы этого не сделаете, вам нужно будет дополнительно изучить настройку bluetooth. Если все в порядке, загрузите программу wiimote_sensor.pde (прилагается) и запустите ее. В нижней части экрана вы должны увидеть: BlueCove версии 2.1.0 на bluez пытается найти wii. Нажмите кнопки 1 и 2 на wiimote. После обнаружения помахайте источником инфракрасного излучения (аэрозольным баллончиком) перед ним. Вы должны увидеть красный кружок, следующий за вашим движением! Прежде чем двигаться дальше, убедитесь, что это работает. Если вы не можете заставить его работать, поищите на форуме обработки.

Шаг 7: Настройка всего

Настройка всего этого
Настройка всего этого

Загрузите программное обеспечение virtualGraffiti ниже. Распакуйте его в папку с альбомом и выполните следующие действия!

* включите аэрозольный баллончик, проверьте, мигает ли светодиодный индикатор состояния. * включите компьютер, подключите приемник аэрозольных баллончиков, * экран настройки и проектор, * убедитесь, что индикатор состояния приемника баллончиков мигает, * начните обработку и загрузите программу virtualGraffiti, * убедитесь, что вы получаете индикаторы серийных номеров RX и TX На плате Arduino мигают светодиоды, * нажмите обе кнопки на wiimote, * при появлении запроса выполните калибровку по 4 точкам (поместите аэрозольный баллончик на каждую цель по очереди, затем нажимайте сопло, пока надпись не станет красной). * повеселись!

Шаг 8: ресурсы, ссылки, благодарности, идеи

Ссылки Вот ссылки, которые оказались бесценными для реализации этого проекта: RF info: https://narobo.com/articles/rfmodules.html Arduino: www.arduino.cc Обработка: www.processing.org Использование wii с обработкой: https://processing.org/discourse/yabb2/YaBB.pl? num = 1186928645/15 Linux: www.ubuntu.org Wiimote: https://www.wiili.org/index.php/Wiimote, https:// wiki.wiimoteproject.com / IR_Sensor # Длина волны 4-точечная калибровка: https://www.zaunert.de/jochenz/wii/ Спасибо! Без большого количества людей, публикующих свои работы, этот проект был бы намного сложнее и дороже. Огромная благодарность всей команде разработчиков ПО с открытым исходным кодом, людям, взломавшим wiimote, Classiclll за то, что сделал wiimote простым в использовании с обработкой, Йохену Заунерту за код для калибровки, команде обработки, команде arduino, Лу за столярную помощь и всем тем, кто исследует, создает а затем опубликуйте их результаты в Интернете! Системы других людей * Я только что нашел https://friispray.co.uk/, с программным обеспечением с открытым исходным кодом и практическими рекомендациями * эта система позволяет использовать трафареты: круто! https://www.wiispray.com/, без кода или инструкций * виртуальная система граффити yrwall, без кода или инструкций. Идеи для исследования * используйте 2 Wi-Fi для отслеживания трехмерного объема и покончите с датчиком расстояния в банке: https://www.cl.cam.ac.uk/~sjeh3/wii/. Это было бы хорошо, потому что датчик расстояния в настоящее время является самой слабой частью системы. Это также означало бы, что мы могли бы использовать правильный экран обратной проекции для более ярких изображений. * Используйте wiimote в баллончике, чтобы определить угол распыления баллончика. Это добавило бы реалистичности модели аэрозольной краски.

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