Берлинская художница Симонна Джонс - человек, олицетворяющий слияние искусства, науки и технологий - попросила меня разработать интерактивную систему освещения для ее инсталляции. «Тайны Вселенной» (SOTU) - это арт-инсталляция и музыкальный перформанс в смешанной технике, задуманный Симонной во время ее резиденции художника во Platoon Kunsthalle в Берлине, Германия.
Идея Симонны заключалась в том, чтобы создать полностью захватывающий опыт, который побудил бы зрителей исследовать свое любопытство к существованию в научном контексте. Она разработала новую комбинацию картин в смешанной технике, в которых исследуются концепции физики и космологии (Саймонн Джонс), систему светодиодного освещения с беспроводным управлением и обнаружением движения (от ArbitraryY AKA me) и пользовательские визуальные эффекты + представление виджея (от Jem the Misfit), которое получилось поистине уникальное шоу.
Раньше я проработал 15 лет инженером по программному обеспечению и системам в компании Boeing, занимаясь разработкой программного обеспечения и ИТ-решений и, пока никто не смотрел, увлекался процессом системного проектирования. Концепции операций, требований, моделирования, тестирования, дизайна, о боже! Системное мышление вызывает у меня слюнотечение, как будто мои карманы переполнены Chick-O-Sticks.
SOTU был тем проектом, в котором мне никогда не доводилось участвовать за всю мою карьеру, создавая большие вещи. Этот проект удовлетворил бы мое желание разработать систему от начала до конца. Это было так волшебно, как я и думал.


Что сделал SOTU?
Проще говоря, SOTU представляла собой серию интерактивных, управляемых картин со светодиодной подсветкой, обнаруживающих движение. При срабатывании система SOTU создавала для наблюдателя освещение, дополняющее сюжет картины. Как они функционировали?
Во-первых, во время выставки людям разрешили проходить по сцене и взаимодействовать с произведениями искусства. Когда они входили в «Зону активации» (AZ, настраиваемая область перед картиной), ее светодиоды загорались и работали по запрограммированной схеме освещения, пока они не вышли из этой зоны. Если наблюдатель вошел в (настраиваемую) «Зону предупреждения» (WZ), индикаторы будут хаотично мигать красным (классное приложение для работы с потоками Python), пока он не выйдет из этой области. Это произведение искусства может сказать наблюдателям: «Отойди от картины». (Моне Лизе нужна такая система безопасности.)

Во время выступления Симонна играла свою музыку и легко использовала картины в качестве инструмента исполнения. Она активировала огни, танцуя перед ними и запуская их с помощью своего арсенала музыкальных инструментов.

Обзор системы SOTU
В этой статье я опишу используемое оборудование и связанные с ним функции. Я также коснусь программных подсистем, которые были необходимы для управления картинами с помощью музыкальных инструментов. Подробное описание системы (помните, я проработал инженером-программистом в Boeing более минуты, так что ненавистников документации следует предупредить) можно найти в документе описания системы SOTU.
Схема и описание каждого компонента приведены ниже. В основе SOTU лежит коллаж Raspberry Pi + Arduino. Вычислительная мощность Raspberry Pi и операционная система Raspbian Linux в сочетании с возможностями обработки в реальном времени Arduino создают небольшой, недорогой и мощный вычислительный дуэт, который идеально подходит для этого приложения.

Аппаратное обеспечение и системные функции
Raspberry Pi
Raspberry Pi взял на себя большую часть вычислительной мощности:
- Сервер связи – Сервер открытого управления звуком (OSC), обрабатывающий все входящие сообщения OSC.
- Веб-сервер – Apache httpd. Для веб-элементов управления светодиодами
- Удаленный доступ – SSH и VNC. SSH для удаленной разработки программного обеспечения на Raspberry Pi и VNC для разработки в Arduino IDE.
- Беспроводное подключение – Подключение к беспроводной сети SOTU
- LED Control – Программная широтно-импульсная модуляция (ШИМ) для затемнения светодиодов
Обратите внимание, что каждое устройство Raspberry Pi было подключено к частной беспроводной сети под названием «[PLTN]».
Плата драйвера светодиодов
Я сделал две независимые схемы из транзисторов и резисторов, расположенных на плате Adafruit Pi-Plate для питания светодиодов. Затем эта плата была прикреплена к панели ввода-вывода Raspberry Pi и служила точкой подключения светодиодных лент. Каждая картина была украшена двумя независимо управляемыми полосами.

Arduino и Protoshield
Ардуино и протощит отвечали за следующее:
- Дальномерное измерение и измерение расстояния– Измерение расстояния до наблюдателя
- Распределение питания 12 В и 5 В – Питание Arduino, Raspberry Pi, светодиодов, ЖК-экрана и датчика дальности
- ЖК-экран – Отображение названия картины

Датчик дальности и ЖК-экран
В каждом полотне вырезаем отверстия для установки датчика дальности (центр картины) и ЖК-экрана (справа внизу). Датчик дальности использовался для определения расстояния наблюдателя от картины, что в конечном итоге использовалось для активации светодиодов. На ЖК-экране отобразилось название картины.


Производство
На подготовку всех шести единиц ушло почти два месяца закупок, сборки и испытаний. Мне пришлось купить и получить все детали, паять как сумасшедший, устанавливать операционные системы и программное обеспечение SOTU, проверять их работоспособность и, наконец, наклеивать этикетки на коробку.



Программное обеспечение
SOTU - это сложная программная система, состоящая из модулей с открытым исходным кодом, стороннего программного обеспечения, специальных программ Arduino, алгоритмов обработки данных датчиков дальности, пользовательских программных элементов управления светодиодным освещением и библиотек эффектов, уровня связи, пользовательских интерфейсов, системы. мониторинг работоспособности, сценарии обслуживания, инструменты OSS/COTS, инструменты тестирования и веб-элементы управления. Дышать. Я запрограммировал весь собственный код на Python и PHP.

Управление рисованием с помощью музыкальных инструментов
Важнейшая функция системы заключалась в том, чтобы предоставить Симонне механизм для освещения картин с помощью ее музыкальных инструментов, а именно ее MIDI-клавиатуры и бас-барабана. Нажмите клавишу или ударьте по барабану, и свет загорится. Я создал несколько уровней абстракции, чтобы мне было проще программировать пользовательские функции освещения и активировать свет от удаленных источников.
Регулировка яркости светодиода RGB (ШИМ)
Для управления светодиодами RGB, подключенными к Raspberry Pi, требуется широтно-импульсная модуляция (ШИМ). Модель B имеет только один вывод GPIO, поддерживающий аппаратную ШИМ. Это ограничение потребовало от меня использования программного ШИМ (аппаратная эмуляция ШИМ). Когда я создавал SOTU, лучшими доступными библиотеками были RPi. GPIO v0.5.2a (пакет Python, сейчас очень устаревшая версия) и pi-blaster. Ядро Raspbian Wheezy не предназначено для приложений реального времени; при использовании программного ШИМ вероятен джиттер. pi-blaster нервничал гораздо меньше, чем эта версия RPi. GPIO.
pi-blaster позволяет регулировать выходную мощность на заданном выводе GPIO (т. е. управлять яркостью), просто записывая десятичное значение в файл в файловой системе ОС следующим образом:
echo "2=0.2">/dev/pi-blaster
Это позволит настроить яркость подключенного светодиода на 20%.
Программное управление светодиодами на Python
Далее я использовал pi-blaster для создания слоя абстракции управления светодиодами в Python. Я создал серию классов, которые позволили мне программно:
- Установить любой цвет (RGB) на любой светодиодной ленте на картине
-
Активировать эффекты на любой светодиодной ленте на картине:
- fade – Переход между цветами
- rotate – Поворот по массиву цветов
- pulse – Переключение между цветами вперед и назад
- flashFade – Установите цвет, а затем выключите его исчезновение
Используя эти функции, я создал собственные схемы воспроизведения освещения, которые сопровождали каждую картину, имитируя физические принципы, связанные с темой картины. Посмотрите видео-демонстрацию сценария воспроизведения Большого взрыва: Рождения Вселенной, работающего на моем прототипе SOTU.


Управление Raspberry Pi с помощью OSC
Следующим уровнем абстракции в SOTU было обеспечение удаленного управления. Войдите в «Открыть управление звуком». OSC - это протокол связи, который позволяет музыкальным инструментам, цифровым аудиорабочим станциям (DAW), компьютерам и другим мультимедийным инструментам взаимодействовать друг с другом в сети. Протокол OSC использует простой механизм клиент-сервер; «Клиент OSC» отправляет «сообщения OSC» на «сервер OSC», который их получает и обрабатывает. Типичная обработка включает запуск системной функции на основе полученного конкретного сообщения (так называемого «обратного вызова»). И снова сообщество OSS поддержало меня: есть замечательная библиотека pyOSC, доступная для всех.
Используя механизм обратного вызова pyOSC, я создал адреса OSC, которые были сопоставлены с функциями управления светодиодами Python (эффекты, установка цвета и т. д.). Теперь я мог выполнять все функции светодиодов на картине, просто отправляя сообщения OSC от ЛЮБОГО клиента OSC (подробную информацию о других клиентах см. в SDD), например:
/оск/светодиод r1 1 горит /оск/светодиод b2 0,3 горит
Это приведет к увеличению яркости красного светодиода 1 до 100 %, а яркости синего - до 30 %.
Механизм обратного вызова pyOSC обладал невероятной гибкостью. Я смог использовать его для многих других целей, таких как управление и мониторинг критически важных служб Linux (httpd, ssh, rangeSensor и т. д.).), мониторинг работоспособности систем (состояние службы и т. д. с помощью обработки) и их удаленное выключение (конечно, при предоставлении правильного ключа авторизации).
Интеграция производительности
Симонна использует Ableton Live в качестве своей DAW вместе с арсеналом MIDI-контроллеров и инструментов во время своих живых выступлений. Ableton Live использует MIDI и OSC для внутренней связи. Например, при нажатии клавиши на подключенном внешнем контроллере Ableton получает сообщение MIDI-события и использует его для запуска события, настроенного в Ableton (например, музыкального сэмпла или воспроизведения ноты синтезированного инструмента). Хорошо, теперь у нас есть доступ к сообщениям, связанным с ее нажатиями на клавиатуру. А как насчет бочки?
Нам пришлось превратить ее бас-барабан в устройство с поддержкой MIDI. Мы прикрепили к барабану датчик давления и подключили его к другому MIDI-устройству управления, которое было подключено к ее ноутбуку. С каждым ударом барабана мы получали MIDI-сообщения о включении/выключении.

Ableton изначально предоставляет свои внутренние MIDI- и OSC-коммуникации. Теперь у меня был доступ ко всем сообщениям MIDI-событий, исходящим как от ее клавиатуры, так и от ударной установки. Ableton Live - это BizNiz.
Последним шагом было извлечь эти сообщения из Ableton и направить их на разные изображения, чтобы они осветились.
Сторонние инструменты Message Hungry
Последняя интеграция потребовала от меня извлечь эти сообщения из Ableton, преобразовать их в сообщения OSC системы SOTU и направить их на картины. Здесь не нужно изобретать велосипед. OSCulator - это потрясающий инструмент маршрутизации MIDI/OSC по разумной цене, который также может похвастаться встроенной интеграцией с Ableton Live. Теперь стало проще простого получать сообщения MIDI-сообщений от ее инструментов и маршрутизировать их как сообщения OSC для отправки на картины.
Ниже приведен пример конфигурации OSCulator для шоу SOTU:

Здесь OSCulator прослушивает порт 9001 на наличие входящих сообщений. Если на ее клавиатуре нажата клавиша, соответствующая MIDI-сообщению 99, будет получено значение 1 (включено). OSCulator настроен на отправку этих сообщений OSC на рисунок 3 («PLTN3»), чтобы он стал красным.
/osc/светодиод r1 1 горит /osc/светодиод r2 1 горит
Когда эта клавиша была отпущена, OSCulator получил значение 0 и направил следующее сообщение OSC, чтобы выключить рисование (создав эффект вспышки):
/osc/led allOff
Свет на каждой картине можно настроить по цвету и эффекту, а также управлять им с помощью музыкальных инструментов.
И как всё прошло?
Картины были выставлены полукругом на сцене из ящиков из-под молока, напоминающей игровое поле Q-bert, которая служила макетом выставки и сценой для живого музыкального выступления Симонны. Шоу было очень энергичным, и публике понравилось то, что они увидели:

В течение лета 2013 года «Тайны Вселенной» также демонстрировались на Берлинском фестивале римейков, Берлинском фестивале искусств и музыки и использовались во время ее выступления в Бремене, Германия.



Вывод
SOTU невероятно хорошо выступили на каждой выставке и выступлении. Хотя Raspberry Pi обычно рекламируется как компьютер для хобби, я могу засвидетельствовать тот факт, что он также отлично подходит для приложений интерактивного искусства и производительности в реальном времени. Я объясняю большую часть нашего успеха в этом проекте надежностью Raspberry Pi.
Создание системы такого уровня сложности - это проблема, наполненная проблемами интерфейса, логистики, разработки, эксплуатации, тестирования и развертывания. Я преодолел все эти трудности, создавая SOTU, в результате чего я отточил существующие навыки и приобрел много новых. Хорошо сыгранный Raspberry Pi Foundation, миссия выполнена.
SOTU - это тот тип задач, который объединяет создателей из разных дисциплин и который волнует нас, всех инженеров. Во время этого проекта, моего самого ценного ресурса, я часто использовал ваши коллективные знания.
Con Amor de ArbitraryY
Дополнительно
Симонна описывает свою философию и художественное видение «Тайны Вселенной» в интервью для 3SAT TV.