[Перевод] Делаем звёздное небо на потолке при помощи оптоволокна и Arduino
Хотите увидеть кусочек галактики у себя на потолке? Как это сделать — рассказано ниже.
Несколько лет я мечтал о том, чтобы выполнить этот проект, и вот он, наконец, готов. На его реализацию ушло приличное время, но итоговый результат получился настолько замечательным, что оно того стоило.
Немного о самом проекте. Я старался делать всё своими руками по-максимуму, что дало мне полную творческую свободу. В итоге у меня есть созвездия северного полушария, контроль над звёздными скоплениями при помощи пульта д/у (яркость и цвет), реакция на музыку, контроль подсветки, и, что самое важное — возможность изменить всё, что угодно.
В качестве платформы для всего этого я выбрал Arduino, поскольку знаком с его программированием. За реагирование на музыку отвечал чип MSQ7EQ — в интернете полно его описаний. Для связи я использовал завалявшийся у меня NRF24L01. Для управления большим количеством светодиодов хорошо подошёл контроллер сервоприводов PCA9685. Если вам хочется сделать что-то попроще и подешевле, вы можете поискать на Amazon готовые наборы, но если вам интересно делать всё самому, как мне — тогда вам потребуются следующие навыки:
- Знакомство с программированием Arduino.
- Опыт разработки электрических схем и пайки.
- Работа с переменным током.
Многие спрашивают у меня стоимость всего проекта. Довольно сложно дать конкретную цифру, поскольку я потратил много материалов, и всё зависит от того, какую часть вы решите делать самостоятельно, от размера проекта и т.п., однако, я думаю, что он может уложиться в вилку от нескольких сотен до тысячи долларов. Я работал над ним по выходным, и на всё про всё у меня ушло порядка года.
Шаг 1: планирование
Для начала нужно решить, покупать электронную часть или делать самому. Для изготовления схем требуется разбираться в Arduino и основах электроники, и кроме того, есть шанс где-то накосячить. На Amazon и в других магазинах можно найти множество наборов по фразе «Fiber Optic Star Ceiling Kit», так что вариантов тут масса. Но если вам нужна полная творческая свобода и контроль, тогда лучше всё делать самому.
Определившись с электроникой, стоит подумать о структуре потолка, размере звёздной карты и количестве звёзд. Я выбрал вариант с обычным потолком из гипсокартона. У меня низкий потолок, и было достаточно сложно устанавливать оптоволокно, поэтому я остановился на относительно небольшом количестве звёзд, 1200 шт, однако результат всё равно получился потрясающим.
Теперь по выбору звёздного рисунка. Я живу в северном полушарии, поэтому выбрал ту часть неба, что здесь видна. Множество приложений демонстрирует рисунки созвездий — я использовал Celestia (как в этой инструкции по изготовлению собственного звёздного неба). Естественно, никто не заставляет делать рисунок звёздного неба реалистичным и в верном масштабе — тут у вас полная творческая свобода, а в интернете можно найти кучу идей.
Шаг 2: материалы
Теперь, когда всё распланировано, можно заказывать материалы.
Материалы для самого потолка я перечислять не буду, тут всё зависит от используемой системы и других факторов. Я использовал потолок от Knauf. То же касается и инструментов — большая их часть понадобится вам только для установки потолка. Для установки самих звёзд и электроники требуется не так уж много — см. список. Много чего я купил в местных магазинах, а остальное заказал на AliExpress — так дешевле, а качество обычно приемлемое.
Для звёзд и электроники потребуются:
- Блок питания для светодиодных полос, мощность зависит от длины. В интернете можно найти ресурсы, помогающие подобрать БП для светодиодов. В моём случае у меня был импульсный БП на 12 В, 30 А, 350 Вт для ленты длиной 15 м. При этом ленты требуют по 14,4 Вт/м, поэтому у меня был хороший запас.
- БП для светодиодов на 3 Вт. Зависит от количества светодиодов, а в моём случае это был БП на 5 В, 7 А, 35 Вт для 15 светодиодов и Arduino. Если вы выберете стандартные RGB светодиоды 5 мм, тогда можно взять БП попроще, однако звёзды будут уже не такими яркими.
- RGB светодиоды на 3 В с общим анодом и радиатором (или обычные 5 мм светодиоды, если вам не нужна большая яркость). Один светодиод управляет одним скоплением звёзд, поэтому количество зависит от того, сколькими звёздами нужно управлять отдельно.
- Светодиодная ленты 12 В.
- Оптоволокно. Леска не подойдёт. Количество зависит от количества звёзд, размера потолка, местоположения управляющей схемы. Я для усиления эффекта использовал волокна разной толщины.
- Платы PCA9685. С одной платы можно управлять 5-ю RGB светодиодами.
- Arduino Uno/Mega × 2.
- NRF24L01 × 2.
- USB-кабель для питания Arduino.
- Логические транзисторы IRL540N. Количество зависит от количества полосок светодиодов. 1 шт на один цвет одной полоски. Ограничение длины полоски — 5 м. Если нужно больше, используйте дополнительные полоски. Также существуют варианты соединения полосок в одну длинную — смотрите в гугле.
- Транзисторы 2N2222 (или другие n-p-n). На каждые 3 Вт одного цвета светодиодов нужно по транзистору. В моём случае это было 15×3.
- Резисторы. 2 Вт 10 Ом / 2 Вт 6,8 Ом / 2 Вт 6,8 Ом для R, G и B на каждый светодиод 3 Вт соответственно. 5 притягивающих резисторов на 10 кОм, каждый по 0,25 Вт.
- Конденсаторы на 10 мкФ для развязки NRF24L01.
- Алюминиевая пластина для фиксации и охлаждения 3 Вт светодиодов.
- Платы для схем.
- Макетные платы для тестирования.
- Шурупчики, фанера, клейкая лента и всё такое, что есть в любой мастерской.
- Куча проводов разной толщины. Для ШИМ-сигналов можно использовать тонкие провода для прототипирования, но для светодиодных полосок и 3 Вт светодиодов толщину проводов нужно считать в зависимости от расстояния от схемы до светодиодов.
Для пульта д/у и спектрального анализатора:
- MSGEQ7 × 1
- Резисторы — 1 × 470 Ω / 1 × 180k Ω / 1 × 33k Ω.
- Конденсаторы:1 × 33 пФ / 1 × 0.01 мкФ / 1 × 0.1 мкФ.
- Термопаста для процессоров.
- ИК пульт д/у и фотодиод для приёмника
- Куча тонких проводов.
- Небольшая макетная плата. Я использовал Proto Shield.
- Небольшой корпус для Arduino. Я сделал корпус при помощи лазерной резки.
- Другие компоненты, относящиеся к основной схеме. Их количество указано в списке компонентов основной схемы.
Инструменты для установки и пайки:
- Прозрачный клей, не растворяющий оптоволокно. Я использовал простой канцелярский.
- Оборудование для пайки.
- Мультиметр не будет лишним.
- Отвёртка.
- Пассатижи.
- Шило или что-то похожее для проделывания отверстий в потолке. Толщина совпадает с толщиной оптоволокна.
Шаг 3: установка потолка
Детально установку расписывать не буду — в сети есть куча материалов по установке навесного потолка, а я не эксперт в этом вопросе. Такой подход сложнее обычного решения со звёздной панелью, которое выбирает большинство людей. Но зато у меня получился качественный подвесной потолок, который днём смотрится абсолютно нормально.
Специально для обслуживания электроники я сделал лючок в самой малозаметной части потолка.
На этом шаге делается шпатлёвка и грунтовка, а покраска — уже после установки оптоволокна.
Шаг 4: установка оптоволокна
На это у меня ушло больше времени, чем я предполагал… После множества различных импровизаций мы сошлись на том, что в нашем случае лучше всего размещать оптоволокно при помощи удочки и петли из лески — см. мои мастерски исполненные каракули с пояснениями. Сейчас эта идея кажется мне смехотворной –, но кому не нравится иногда повозиться.
Соображения:
- Рекомендую приклеивать оптоволокно в отверстиях, чтобы оно не выпадало. Клей должен быть прозрачным и не реагировать с оптоволокном. Я использовал простой канцелярский.
- Сверлить ничего не надо, отверстия можно проделать простым шилом, совпадающим по диаметру с оптоволокном.
- Для разметки точного местоположения звёзд я использовал только рулетку. Не на 100% точно, но нормально. Для печати карты звёздного неба потолок был великоват.
Шаг 5: окончание отделки потолка — покраска
Мы красили прямо по оптоволокну, поэтому когда оно не светится, его не видно. Всё выглядит как обычный потолок. После двух слоёв краски яркость оптоволокна осталась почти такой же.
Шаг 6: пробная схема
Сама схема не очень сложная, и у меня всё заработало сразу же. Однако всегда лучше сначала проверить, а потом устанавливать — тем более, что в данном случае пайки предстоит очень много. Кроме того, удобно иметь тестовую версию для обновлений в будущем — думаю, никому не захочется закоротить проект, на установку которого в потолок было потрачено несколько дней.
Моя тестовая версия — это одна-две платы PCA9685, NRF24L01 и блоки питания, соединённые с Arduino. Всё можно делать на макетных платах. То же касается и схемы пульта д/у — натыкали всё на макетку, и проверили, что всё работает. Я бы также посоветовал припаять несколько 3 Вт светодиодов для проверки.
Шаг 7: код для Arduino
Библиотеки и другие полезные ссылки я собрал в разделе «полезная информация». Объяснения по работе кода содержатся в комментариях к нему.
Я писал этот код, используя различные ресурсы, некоторые из которых я перечислил в разделе «полезная информация». Однако поскольку я закончил проект уже больше года назад, к тому времени, когда я решил написать эту статью, я уже не смог найти некоторые из них, а некоторые сохранённые ссылки уже не работали.
В коде содержится довольно сложная функция для мигания светодиодами. Для улучшения внешнего вида я использовал обучающий материал, где описано, как сделать «дышащее» мигание: sean.voisen.org/blog/2011/10/breathing-led-with-arduino
Человеческий глаз не воспринимает яркость света линейно, поэтому простое линейное увеличение яркости выглядит ненатурально.
Код приёмника
Код передатчика
Шаг 8: подключение проводов и светодиодных полосок
Время финального подключения! Если всё проверено и всё работает, подключение должно пройти без особых проблем — просто пайка кучи одинаковых комплектующих. Для удобства обслуживания всей схемы я сделал коробку из фанеры по размеру технического лючка — поэтому при необходимости я могу просто вынуть всю схему из потолка. Оптоволокно я провёл по пластиковым сантехническим трубам, размер которых примерно совпадает с 3 Вт светодиодами, а потом просверлил отверстия того же диаметра в фанере и вставил их туда. Таким образом я легко могу отсоединять оптоволокно от светодиодов по необходимости.
Светодиодные полоски предлагаю крепить на алюминиевых пластинах для охлаждения, поскольку они сильно греются.
Шаг 9: отладка и тонкая подстройка
Допустим, вы проверили схему, но после того, как установили её, она не работает… или что-то ещё не работает, как надо. Тогда проблема, скорее всего, в пайке — если в тестовой сборке всё работало, то и в финальной тоже должно. Надеюсь, что это не ваш случай, однако в качестве примера я приведу одну из проблем, с которыми столкнулся сам.
Когда я понижал яркость светодиодов до минимума, полоски могли перестать работать или начать мигать. Потратив огромное количество времени на исследования и отладку, я обнаружил, что проблема была в медленном переключении IRL540, а решение — в простом понижении частоты ШИМ до 50 Гц. Проблема почти решилась, и мигание осталось только на самых низких величинах — однако это не имеет значения, поскольку я их не использую. Проблема вернулась, когда я решил снять ролик об этом потолке, поскольку такую небольшую частоту хорошо видно на камерах — это всё равно, что снимать телевизор. Для решения этой проблемы я собрал на макетной плате небольшую схему, использовав транзисторы 2N2222 вместо IRL540, просто для съёмки видео.
Теперь, когда всё на месте и работает, можно заняться тонкой подстройкой яркости звёзд, реагированием на музыку, режимами затухания и всем остальным.
Шаг 10: полезная информация и ссылки
Шаг 11: идеи для развития
Было бы классно разработать мобильное приложение для управления потолком, возможно, используя OpenHAB на Raspberry Pi, поскольку PCA9685 управлять через RPi довольно легко.
А если использовать OpenHab или его альтернативу, то звёздный потолок легко можно соединить с системой умного дома.