Оглавление:
- Шаг 1: оборудование
- Шаг 2: настройка Raspberry Pi
- Шаг 3: Настройка примера кода
- Шаг 4. Создайте самоподписанный сертификат SSL
- Шаг 5: Подключение оборудования
- Шаг 6. Код на стороне сервера
- Шаг 7. Код веб-сайта
- Шаг 8: Наконец
Видео: Диско-пи: 8 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
В этом руководстве показано, как использовать Raspberry Pi для управления цветной светодиодной лентой на основе музыки, воспроизводимой из веб-браузера.
В нем показано, как создать базовый веб-сайт с использованием Node.js через HTTPS и использовать socket.io через WSS (Secure Websocket).
Веб-сайт состоит из одной страницы с очень простым макетом. На веб-странице отображается раскрывающийся список музыкальных файлов, которые находятся в папке public / audio на сервере. При выборе варианта в списке музыкальный файл воспроизводится на веб-странице с использованием аудиоэлемента HTML 5. Во время воспроизведения музыкального файла веб-страница использует интерфейс AudioContext для анализа музыки, которая затем отправляется на сервер через безопасное соединение через веб-сокет.
Сервер, работающий на Raspberry Pi, использует собственную библиотеку Node RPI WS281x (обертывающую библиотеку WS281X Джереми Гарфа) для изменения цвета светодиодов на светодиодной полосе WS2811 на основе данных, отправленных через веб-сокет.
Пример кода можно найти здесь: disco-pi
Шаг 1: оборудование
- Raspberry Pi - я использовал Raspberry Pi 2B, который у меня был, но вы можете получить стартовый комплект Raspberry Pi 3 примерно за 100 канадских долларов.
- Светодиодная лента WS2811 - я играл с ALITOVE 16.4ft 150 Pixels WS2811. Он поставляется с контроллером и блоком питания примерно за 45-50 канадских долларов.
- Разъем Barrel Jack - я купил его в местном магазине электроники, что-то вроде этого. Просто убедитесь, подходит ли он вашему блоку питания
- Разъемы перемычки / провод - у меня было несколько соединительных кабелей между мужчинами и женщинами и несколько сплошных соединительных проводов калибра 22, лежащих вокруг
Шаг 2: настройка Raspberry Pi
Операционная система
Обычно я использую последнюю сборку Raspbian. Скачайте образ и запишите его на SD-карту. Если вы используете компьютер с Windows, вы можете использовать Win32 Disk Imager для записи образа на SD-карту.
Node.js
Установите последнюю версию Node.js. На момент написания я использую 8.9.1
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Установить git
sudo apt-get install git
Шаг 3: Настройка примера кода
Клонировать пример кода
1. Настройте базовую папку для установки в
cd / opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Клонируйте пример репозитория git.
git clone https://github.com/haydockjp/disco-pi.git"
или
git clone [email protected]: haydockjp / disco-pi.git
3. Установите зависимости
CD диско-пи
npm install
Это может занять 2-3 минуты.
Шаг 4. Создайте самоподписанный сертификат SSL
1. Создайте файл закрытого ключа.
cd /opt/com.jonhaydock/disco-pi/certs
openssl genrsa -out disco-pi-key.pem 2048
2. Создайте CSR (запрос на подпись сертификата).
openssl req -new -key disco-pi-key.pem -out disco-pi-csr.pem
На этом этапе вам будет предложено ввести некоторую информацию для запроса сертификата. Поскольку это самоподписанный сертификат, вам решать, насколько точно вы заполните данные. Вот пример
Название страны (двухбуквенный код) [AU]: CA
Название штата или провинции (полное название) [Some-State]: Название населенного пункта Британской Колумбии (например, город) : Название организации в Ванкувере (например, компания) [Internet Widgits Pty Ltd]: Название организационной единицы Disco Pi (например, раздел) : Общее имя (например, полное доменное имя сервера или ВАШЕ имя) : адрес электронной почты disco-pi : [email protected] Пароль вызова : необязательное название компании :
В этом примере просто нажмите клавишу возврата, чтобы оставить пароль проверки пустым.
3. Создайте сертификат.
openssl x509 -req -days 1095 -in disco-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem
4. Для дополнительной безопасности мы также создадим файл параметров Diffie Hellman.
openssl dhparam -out dh_2048.pem 2048
Это может занять 15-20 минут.
Шаг 5: Подключение оборудования
Питание светодиодной ленты
Светодиодная лента питается от 12 вольт. Raspberry Pi способен выводить только 3,3 В или 5 В и не способен выводить сигнал где-либо рядом с усилителями, необходимыми для управления таким количеством светодиодов.
Важно не подключать блок питания 12 В к Raspberry Pi.
У моей ленты также были дополнительные провода питания, подключенные к полосе с обоих концов. Я предлагаю вам закрепить их лентой, чтобы они не соприкасались с каким-либо другим вашим оборудованием.
Следующие шаги выполняете на свой страх и риск. Я не несу ответственности ни за что, что может пойти не так.
Светодиодная полоса
У моей светодиодной ленты три провода:
КРАСНЫЙ - +12 Вольт
ЧЕРНЫЙ - Земля
ЗЕЛЕНЫЙ - Данные
ПРИМЕЧАНИЕ: есть Din и Dout - Data In и Data Out. Убедитесь, что вы работаете с концом светодиодной ленты с надписью Din.
Убедитесь, что Barrel Jack не подключен к источнику питания.
1. Подключите красный провод светодиодной ленты к положительной стороне разъема Barrel.
Я использовал белый провод 22-го калибра.
Вставьте провод в паз «+» в цилиндрическом домкрате и прикрутите его.
Другой конец провода вставьте в гнездо светодиода. Убедитесь, что вы подключаетесь к красному проводу.
2. Подключите черный провод от светодиодной ленты к минусовой стороне разъема Barrel.
Я использовал черный провод 22-го калибра.
Вставьте провод в паз - в цилиндрическом домкрате. На этом этапе также поместите вилку одного из соединительных кабелей (коричневый провод на фото) в то же отверстие и прикрутите их оба на место.
Вставьте другой конец черного провода в гнездо светодиода.
Убедитесь, что вы подключаетесь с помощью черного провода.
3. Подключите зеленый провод от светодиодной ленты.
Возьмите один из соединительных кабелей типа "мама-папа". На моих фото это зеленый провод.
Вставьте вилку в гнездо светодиода с зеленым проводом.
Это кабель для передачи данных.
Raspberry Pi
1. Возьмите зеленый соединительный кабель и подключите его к Raspberry Pi GPIO.
Вам необходимо подключить его к PCM_CLK (контакт 12 / GPIO 18)
2. Возьмите черный соединительный кабель и подключите его к Raspberry Pi GPIO.
Его нужно подключить к одной из площадок. Я предлагаю вам использовать контакт 14, но вы также можете использовать контакт 6, 9, 20, 25, 30, 34 или 39.
ПРИМЕЧАНИЕ: для этого источник питания светодиода и Raspberry Pi должны иметь общее заземление. Также обратите внимание, что вы не должны подключать 12 Вольт + (красный провод) к Raspberry Pi.
LED Мощность
У вас не должно быть возможности подключить источник питания 12 В к гнезду ствола.
Все светодиоды на светодиодной ленте должны загореться БЕЛЫМ цветом.
Шаг 6. Код на стороне сервера
Запуск кода на стороне сервера
cd /opt/com.jonhaydock/disco-pi
sudo npm start
Это запустит веб-сервер и начнет прослушивать запросы HTTPS и WSS.
Порт по умолчанию - 443, но вы можете переопределить это, установив переменную среды перед запуском кода. Например
экспорт DISCO_PI_PORT = 1443
В моей светодиодной ленте 150 светодиодов. Они управляются группами по три человека. Это означает, что я не могу управлять каждым светодиодом по отдельности, и мне нужно передать достаточно информации для управления 50.
Если у вашего светодиода больше или меньше, вы можете переопределить количество светодиодов, которыми вы управляете, передав параметр при запуске. Например, если вы можете управлять только 10 светодиодами
sudo npm start 10
Код основного сервера можно найти в файле app.js. Этот файл запускает веб-сервер HTTPS, а также добавляет socket.io для прослушивания запросов веб-сокетов на том же порту.
Чтобы получить доступ к веб-сайту, вы должны открыть веб-браузер на своем основном компьютере (я тестировал это только в Chrome) и использовать IP-адрес Raspberry Pi, например
10.0.1.2/
Вы можете узнать свой IP-адрес из командной строки Raspberry Pi.
ifconfig
Веб-сервер будет обслуживать любой контент из общей папки. По умолчанию отображается страница index.html.
У него одна конечная точка API - / api / audio. Эта конечная точка ищет любые файлы в папке public / audio и возвращает список. Например
["GYAKO.mp3", "Havana (с участием Young Thug).mp3", "Queen_Bohemian_Rhapsody.mp3", "Set It All Free.mp3", "This Is What You Came For (feat. Rihanna).mp3"]
Чтобы добавить музыку как вариант, скопируйте файлы в эту папку. Я лично использую Filezilla поверх ssh. Папка, в которую вы хотите добавить файлы, - это /opt/com.jonhaydock/disco-pi/public/audio.
Шаг 7. Код веб-сайта
Когда вы заходите на сайт, вы должны увидеть что-то вроде этого.
Если вы видите предупреждение системы безопасности, это связано с тем, что мы используем самозаверяющий сертификат SSL. Вы можете проигнорировать это или добавить как исключение.
При выборе имени файла источник аудиоэлемента HTML 5. будет установлен в этот файл. Когда все будет готово, заиграет музыка. Как только песня закончится, музыка остановится.
Если вы выберете вариант «Нет», музыка перестанет воспроизводиться.
Во время воспроизведения музыкального файла веб-страница использует интерфейс AudioContext для анализа музыки, которая затем отправляется на сервер через безопасное соединение через веб-сокет.
Это сообщение того типа, что socket.io на сервере настроен для прослушивания "ws2811". Он содержит массив из 50 элементов, которые находятся в диапазоне от 0 до 255.
«ws2811», {«0»: 251, «1»: 252, «2»: 241, «3»: 217, «4»: 193, «5»: 164, «6»: 148, «7»: 139, «8»: 110, «9»: 96, «10»: 81, «11»: 67, «12»: 72, «13»: 66, «14»: 60, «15»: 60, «16»: 63, «17»: 54, «18»: 37, «19»: 30, «20»: 31, «21»: 26, «22»: 13, «23»: 3, » 24 »: 10,« 25 »: 7,« 26 »: 6,« 27 »: 0,« 28 »: 0,« 29 »: 0,« 30 »: 1,« 31 »: 8,« 32 »: 12, «33»: 3, «34»: 2, «35»: 2, «36»: 0, «37»: 0, «38»: 0, «39»: 0, «40»: 0, «41»: 0, «42»: 0, «43»: 0, «44»: 0, «45»: 0, «46»: 0, «47»: 0, «48»: 0, « 49 : 0}
Сервер использует собственную библиотеку Node RPI WS281x (обертывающую библиотеку WS281X Джереми Гарфа) для изменения цвета светодиодов на светодиодной полосе WS2811 на основе данных, отправленных через веб-сокет.
Шаг 8: Наконец
Вы должны увидеть, как светодиоды на полосе меняют цвет вместе с музыкой на основе анализа быстрого преобразования Фурье, выполненного на веб-странице.
Надеюсь, вам это понравится. Дай мне знать, что ты с ним делаешь!
ПРИМЕЧАНИЕ: Если у вас есть проблемы
Поскольку эта библиотека и встроенный аудиоблок Raspberry Pi используют ШИМ, их нельзя использовать вместе.
Вам может потребоваться внести в черный список модуль аудио ядра Broadcom, создав файл /etc/modprobe.d/snd-blacklist.conf с
черный список snd_bcm2835
Если аудиоустройство все еще загружается после внесения в черный список, вам также может потребоваться закомментировать его в файле / etc / modules. В безголовых системах вам также может потребоваться принудительное аудио через hdmi.
Отредактируйте config.txt и добавьте:
hdmi_force_hotplug = 1
hdmi_force_edid_audio = 1
Чтобы это изменение вступило в силу, требуется перезагрузка.
Рекомендуемые:
Диско-огни из RGB с использованием Arduino на TinkerCad: 3 шага
Disco Lights From RGB с использованием Arduino на TinkerCad: после того, как вы подключили RGB, легко управлять цветом RGB с помощью вывода PWM или аналогового вывода, для Arduino вы можете использовать analogWrite () на контактах 3, 5, 6 , 9, 10, 11, A0, A1, A2, A3, A4, A5 (для классических Arduinos с использованием Atmega328 или 1
Диско-шлем для 3D-печати !: 11 шагов (с изображениями)
Диско-шлем для 3D-печати! На основе классического шлема Daft Punk «Томас». Осветите комнату и станьте предметом зависти всех своих друзей с этим удивительным диско-шлемом с питанием от Arduino! Для выполнения этого проекта вам понадобится доступ к 3D-принтеру и паяльнику. Если вы хотите
"Диско-шар" в условиях микрогравитации: 13 шагов
Производитель растений в условиях микрогравитации "Диско-шар": Здравствуйте, читатели! Этот проект является профессиональным заявлением на конкурс Growing Beyond Earth Maker. Этот проект является доказательством концепции потенциального дизайна сеялки, который можно было бы использовать для выращивания растений в условиях микрогравитации. правила конкурса я перечислил
Диско-настольный органайзер: 8 шагов (с изображениями)
Disco Desktop Organizer: Материалы: триплекс, толщина: 3 мм. Количество деревянных пластин зависит от размера вашего лазерного резака … отрегулируйте файл на деревянной пластине максимального размера … возможно, вам понадобится более 1 пластины (имейте это в виду). 6 светодиодов вспышки (я использовал 7 цветных светодиодов) ava
Подставка под диско-напитки: 4 шага (с изображениями)
Disco Drinks Coaster: Хотя мы живем недалеко от Кембриджа в Великобритании, моя жена трагически пристрастилась ко всему Лас-Вегасу. Прошло почти шесть месяцев с нашего последнего визита, и она тоскует по яркому свету и коктейлям. Мало что может сделать напиток приятнее, чем