[Перевод] Делаем звёздное небо на потолке при помощи оптоволокна и Arduino

e44b2cc01e2bc91eff3b1b48c25c2fd6.jpg

Хотите увидеть кусочек галактики у себя на потолке? Как это сделать — рассказано ниже.

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

Немного о самом проекте. Я старался делать всё своими руками по-максимуму, что дало мне полную творческую свободу. В итоге у меня есть созвездия северного полушария, контроль над звёздными скоплениями при помощи пульта д/у (яркость и цвет), реакция на музыку, контроль подсветки, и, что самое важное — возможность изменить всё, что угодно.
В качестве платформы для всего этого я выбрал Arduino, поскольку знаком с его программированием. За реагирование на музыку отвечал чип MSQ7EQ — в интернете полно его описаний. Для связи я использовал завалявшийся у меня NRF24L01. Для управления большим количеством светодиодов хорошо подошёл контроллер сервоприводов PCA9685. Если вам хочется сделать что-то попроще и подешевле, вы можете поискать на Amazon готовые наборы, но если вам интересно делать всё самому, как мне — тогда вам потребуются следующие навыки:

  • Знакомство с программированием Arduino.
  • Опыт разработки электрических схем и пайки.
  • Работа с переменным током.


Многие спрашивают у меня стоимость всего проекта. Довольно сложно дать конкретную цифру, поскольку я потратил много материалов, и всё зависит от того, какую часть вы решите делать самостоятельно, от размера проекта и т.п., однако, я думаю, что он может уложиться в вилку от нескольких сотен до тысячи долларов. Я работал над ним по выходным, и на всё про всё у меня ушло порядка года.

Шаг 1: планирование


69fd9ebaaec388a78175ee96d54d8d92.jpg

742b6a4de65d0d96bfc99b7d3a648b13.jpg

Для начала нужно решить, покупать электронную часть или делать самому. Для изготовления схем требуется разбираться в 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: установка потолка


6114d5fa048dc67272abcb016a222255.jpg

Детально установку расписывать не буду — в сети есть куча материалов по установке навесного потолка, а я не эксперт в этом вопросе. Такой подход сложнее обычного решения со звёздной панелью, которое выбирает большинство людей. Но зато у меня получился качественный подвесной потолок, который днём смотрится абсолютно нормально.

Специально для обслуживания электроники я сделал лючок в самой малозаметной части потолка.

На этом шаге делается шпатлёвка и грунтовка, а покраска — уже после установки оптоволокна.

Шаг 4: установка оптоволокна


b5457ccb5e38df6afb891e3d70c9b9af.jpg

babd0e529e8ad57327ca13e13e57d152.jpg

7f20bc9424fe0761b9db11c8b779057a.jpg

2c0998aff3347e9cf4bde900d1c4e2da.jpg

c649faa4e32c4891eab565920d7b4384.jpg

b5acbb97cfc7455de8cc3de3ee6e43d3.jpg

На это у меня ушло больше времени, чем я предполагал… После множества различных импровизаций мы сошлись на том, что в нашем случае лучше всего размещать оптоволокно при помощи удочки и петли из лески — см. мои мастерски исполненные каракули с пояснениями. Сейчас эта идея кажется мне смехотворной –, но кому не нравится иногда повозиться.

Соображения:

  • Рекомендую приклеивать оптоволокно в отверстиях, чтобы оно не выпадало. Клей должен быть прозрачным и не реагировать с оптоволокном. Я использовал простой канцелярский.
  • Сверлить ничего не надо, отверстия можно проделать простым шилом, совпадающим по диаметру с оптоволокном.
  • Для разметки точного местоположения звёзд я использовал только рулетку. Не на 100% точно, но нормально. Для печати карты звёздного неба потолок был великоват.


Шаг 5: окончание отделки потолка — покраска

5eb8a4af57d7c8a025ee62b53d7d11c4.jpg

Мы красили прямо по оптоволокну, поэтому когда оно не светится, его не видно. Всё выглядит как обычный потолок. После двух слоёв краски яркость оптоволокна осталась почти такой же.

Шаг 6: пробная схема


aec66873c93c09ffff47b314c068e832.jpg

e70b3de61ffcf779af6c3c8d20ea47ac.jpg

5c83e775fbf030c71f9385d25c6672fd.jpg

1e258d44a0c85f1d9bfa6c9254afb10d.jpg

Сама схема не очень сложная, и у меня всё заработало сразу же. Однако всегда лучше сначала проверить, а потом устанавливать — тем более, что в данном случае пайки предстоит очень много. Кроме того, удобно иметь тестовую версию для обновлений в будущем — думаю, никому не захочется закоротить проект, на установку которого в потолок было потрачено несколько дней.

Моя тестовая версия — это одна-две платы PCA9685, NRF24L01 и блоки питания, соединённые с Arduino. Всё можно делать на макетных платах. То же касается и схемы пульта д/у — натыкали всё на макетку, и проверили, что всё работает. Я бы также посоветовал припаять несколько 3 Вт светодиодов для проверки.

Шаг 7: код для Arduino


971b5bd373a41e7b8ab7ed39878c9632.jpg

Библиотеки и другие полезные ссылки я собрал в разделе «полезная информация». Объяснения по работе кода содержатся в комментариях к нему.

Я писал этот код, используя различные ресурсы, некоторые из которых я перечислил в разделе «полезная информация». Однако поскольку я закончил проект уже больше года назад, к тому времени, когда я решил написать эту статью, я уже не смог найти некоторые из них, а некоторые сохранённые ссылки уже не работали.

В коде содержится довольно сложная функция для мигания светодиодами. Для улучшения внешнего вида я использовал обучающий материал, где описано, как сделать «дышащее» мигание: sean.voisen.org/blog/2011/10/breathing-led-with-arduino

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

Код приёмника

Код передатчика

Шаг 8: подключение проводов и светодиодных полосок

2d59b6932161f367b3850fe5fa81e993.jpg

063e52f38cf543c467268e4c266e51b1.jpg

96ed137f0823cbe30b55ac9d6f925462.jpg

e53e74ee0a0da475e7bbed01a678e4d9.jpg

f2e3f096d86c457895cae5c477e57e0d.jpg

13de8e1a2d81786623cc727b2cb655ab.jpg

5f0bcb5e88497e9a71913e7efb783a6a.jpg

2f4f02c02d1460a11c1e4689aa9c7a04.jpg

ba09804a3af95c471c2375cf24a52042.jpg

Время финального подключения! Если всё проверено и всё работает, подключение должно пройти без особых проблем — просто пайка кучи одинаковых комплектующих. Для удобства обслуживания всей схемы я сделал коробку из фанеры по размеру технического лючка — поэтому при необходимости я могу просто вынуть всю схему из потолка. Оптоволокно я провёл по пластиковым сантехническим трубам, размер которых примерно совпадает с 3 Вт светодиодами, а потом просверлил отверстия того же диаметра в фанере и вставил их туда. Таким образом я легко могу отсоединять оптоволокно от светодиодов по необходимости.

Светодиодные полоски предлагаю крепить на алюминиевых пластинах для охлаждения, поскольку они сильно греются.

Шаг 9: отладка и тонкая подстройка


5e93122cbc1742128a9a11e40fe23a65.jpg

Допустим, вы проверили схему, но после того, как установили её, она не работает… или что-то ещё не работает, как надо. Тогда проблема, скорее всего, в пайке — если в тестовой сборке всё работало, то и в финальной тоже должно. Надеюсь, что это не ваш случай, однако в качестве примера я приведу одну из проблем, с которыми столкнулся сам.

Когда я понижал яркость светодиодов до минимума, полоски могли перестать работать или начать мигать. Потратив огромное количество времени на исследования и отладку, я обнаружил, что проблема была в медленном переключении IRL540, а решение — в простом понижении частоты ШИМ до 50 Гц. Проблема почти решилась, и мигание осталось только на самых низких величинах — однако это не имеет значения, поскольку я их не использую. Проблема вернулась, когда я решил снять ролик об этом потолке, поскольку такую небольшую частоту хорошо видно на камерах — это всё равно, что снимать телевизор. Для решения этой проблемы я собрал на макетной плате небольшую схему, использовав транзисторы 2N2222 вместо IRL540, просто для съёмки видео.

Теперь, когда всё на месте и работает, можно заняться тонкой подстройкой яркости звёзд, реагированием на музыку, режимами затухания и всем остальным.

Шаг 10: полезная информация и ссылки


Ссылки


Шаг 11: идеи для развития


Было бы классно разработать мобильное приложение для управления потолком, возможно, используя OpenHAB на Raspberry Pi, поскольку PCA9685 управлять через RPi довольно легко.

А если использовать OpenHab или его альтернативу, то звёздный потолок легко можно соединить с системой умного дома.

© Habrahabr.ru