Съдържание:

Диско-пи: 8 стъпки (със снимки)
Диско-пи: 8 стъпки (със снимки)

Видео: Диско-пи: 8 стъпки (със снимки)

Видео: Диско-пи: 8 стъпки (със снимки)
Видео: БАРБАРИКИ ☺ БАРБА ДИСКО ♥ ЗАЖИГАТЕЛЬНАЯ🔥 МУЛЬТ и ПЕСЕНКА ♫ МУЛЬТИК ДЛЯ ДЕТЕЙ ♫ 0+ 2024, Ноември
Anonim
Диско-пи
Диско-пи

Тази инструкция показва как да използвате Raspberry Pi за управление на цветна LED лента, въз основа на музика, пусната от уеб браузър.

Той показва как да създадете основен уебсайт с помощта на Node.js през HTTPS и да използвате socket.io през WSS (Secure Websocket).

Уебсайтът има една страница, която има много основно оформление. Уеб страницата попълва падащ списък с музикални файлове, които се намират в публичната/аудиопапка на сървъра. Избирането на опция в списъка възпроизвежда музикалния файл в уеб страницата с помощта на аудио елемент HTML 5. Докато възпроизвежда музикалния файл, уеб страницата използва интерфейса AudioContext, за да анализира музиката, която след това се изпраща до сървъра чрез защитена връзка с websocket.

Сървърът, работещ на Raspberry Pi, използва Node RPI WS281x Native library (обгръща WS281X библиотеката на Jeremy Garff), за да промени цветовете на светодиодите на WS2811 LED лента, въз основа на данните, изпратени през websocket.

Примерният код може да бъде намерен тук: disco-pi

Стъпка 1: Оборудване

  1. Raspberry Pi - Използвах Raspberry Pi 2B, който имах около, но можете да получите Raspberry Pi 3 Starter Kit за около 100 CAD
  2. WS2811 LED лента - играех с ALITOVE 16.4ft 150 пиксела WS2811. Той идва с контролер и захранване за около CAD 45-50
  3. Съединител на барел джак - Купих такъв от местния магазин за електроника, нещо подобно. Просто се уверете, че отговаря на вашето захранване
  4. Съединители / проводник на джъмпера

Стъпка 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 инсталиране

Това може да отнеме 2-3 минути

Стъпка 4: Създайте самоподписан SSL сертификат

1. Създайте файл с частен ключ

cd /opt/com.jonhaydock/disco-pi/certs

openssl genrsa -out disco-pi-key.pem 2048

2. Създайте CSR (Заявка за подписване на сертификат)

openssl req -нов-ключ disco-pi-key.pem -out disco-pi-csr.pem

В този момент ще бъдете подканени за някаква информация за заявката за сертификат. Тъй като това е самоподписан сертификат, от вас зависи колко точно ще попълните данните. Ето един пример

Име на държава (двубуквен код) [AU]: CA

Име на щат или провинция (пълно име) [Some-State]: Име на местността в Британска Колумбия (напр. Град) : Име на организацията във Ванкувър (напр. Компания) [Internet Widgits Pty Ltd]: Име на организационното звено на Disco Pi (напр. Раздел) : Общо име (напр. FQDN на сървъра или ВАШЕТО име) : имейл адрес на 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 Parameters

openssl dhparam -out dh_2048.pem 2048

Това може да отнеме 15-20 минути

Стъпка 5: Свързване на хардуера

Свързване на хардуера
Свързване на хардуера
Свързване на хардуера
Свързване на хардуера
Свързване на хардуера
Свързване на хардуера
Свързване на хардуера
Свързване на хардуера

Захранване на LED лентата

LED лентата се захранва от 12 волта. Raspberry Pi може да извежда само 3.3v или 5v и не може да извежда никъде близо до усилвателите, необходими за задвижване на толкова много светодиоди.

Важно е да не свързвате 12 -волтовото захранване към Raspberry Pi.

Моята лента също имаше допълнителни захранващи проводници, свързани към лентата в двата края. Предлагам ви да ги залепите, така че да не влизат в контакт с другото ви оборудване.

Изпълнете следващите стъпки на свой собствен риск. Не поемам отговорност за всичко, което може да се обърка.

LED лента

Моята LED лента има три проводника:

ЧЕРВЕН - +12 волта

ЧЕРЕН - Земя

ЗЕЛЕН - Данни

ЗАБЕЛЕЖКА: има Din и Dout - Data In и Data Out. Уверете се, че работите с края на LED лентата, на която пише Din.

Уверете се, че гнездото на цевта не е свързано към захранването

1. Свържете червения проводник от LED лентата към + страната на жакчето.

Използвах бял тел за свързване с 22 габарити.

Поставете жицата в слота + в гнездото на цевта и я завийте на място.

Натиснете другия край на проводника в гнездото на светодиода. Уверете се, че се свързвате с червения проводник.

2. Свържете черния проводник от LED лентата към - страната на жакчето.

Използвах черен тел за свързване с 22 габарити.

Поставете жицата в гнездото на гнездото на цевта. В този момент също поставете мъжкия край на един от съединителните кабели (кафяв проводник на снимката) в същия отвор и ги завийте и двете на място.

Натиснете другия край на черния проводник в гнездото на светодиода.

Уверете се, че се свързвате с черния проводник.

3. Свържете зеления проводник от LED лентата

Вземете един от женските към мъжки съединителни кабели. На моите снимки това е зеленият проводник.

Поставете мъжкия край в LED гнездото със зеления проводник.

Това е кабелът за данни.

Малина Пи

1. Вземете зеления съединителен кабел и го свържете към Raspberry Pi GPIO.

Трябва да го свържете към PCM_CLK (Pin 12 / GPIO 18)

2. Вземете черния съединителен кабел и го свържете към Raspberry Pi GPIO.

Трябва да го свържете към едно от основанията. Предлагам ви да използвате щифт 14, но можете да използвате и пин 6, 9, 20, 25, 30, 34 или 39.

ЗАБЕЛЕЖКА: за да работи това, LED източникът на захранване и Raspberry Pi трябва да имат обща основа. Също така имайте предвид, че не трябва да свързвате 12 Volt + (червен проводник) към Raspberry Pi.

LED захранване

Не трябва да можете да свържете вашето 12 -волтово захранване към жака за цевта

Всички светодиоди на вашата LED лента сега трябва да светят БЯЛО

Стъпка 6: Код от страна на сървъра

Изпълнение на кода от страна на сървъра

cd /opt/com.jonhaydock/disco-pi

sudo npm старт

Това ще стартира уеб сървъра и ще започне да слуша HTTPS и WSS заявки.

Портът по подразбиране е 443, но можете да го замените, като зададете променлива на средата, преди да стартирате кода. Например

износ DISCO_PI_PORT = 1443

Моята LED лента има 150 светодиода. Те се контролират в групи от тройки. Това означава, че не мога да контролирам всеки светодиод поотделно и трябва да изпратя достатъчно информация, за да контролирам 50.

Ако вашият светодиод има повече или по -малко, можете да отмените броя на светодиодите, които контролирате, като предадете параметър на стартирането. Например, ако можете да управлявате само 10 светодиода

sudo npm начало 10

Основният код на сървъра може да се намери във файла app.js. Този файл стартира HTTPS уеб сървъра и също така добавя към socket.io, за да слуша заявки за websocket на същия порт.

За достъп до уебсайта трябва да отворите уеб браузър на основния си компютър (тествах само това в Chrome) и да използвате IP адреса на Raspberry Pi, напр.

10.0.1.2/

Можете да разберете вашия IP адрес от командния ред на Raspberry Pi.

ifconfig

Уеб сървърът ще обслужва всяко съдържание в публичната папка. По подразбиране се показва страницата index.html.

Той има една крайна точка на API - /api /audio. Тази крайна точка търси всички файлове в публичната/аудио папката и връща списъка. Например

["GYAKO.mp3", "Havana (feat. Young Thug).mp3", "Queen_Bohemian_Rhapsody.mp3", "Set It All Free.mp3", "This Is What Came For (feat. Rihanna).mp3"]

За да добавите музика като опция, копирайте файлове в тази папка. Аз лично използвам Filezilla през ssh. Папката, в която искате да добавите файлове, е /opt/com.jonhaydock/disco-pi/public/audio

Стъпка 7: Код на уебсайта

Код на уебсайта
Код на уебсайта

Когато посетите уебсайта, трябва да видите нещо подобно.

Ако видите предупреждение за сигурност, това е така, защото използваме самоподписан SSL сертификат. Можете да го игнорирате или да го добавите като изключение.

При избора на име на файл, източникът за аудио елемент HTML 5. ще бъде настроен на този файл. След като е готова, музиката ще започне да свири. След като песента приключи, музиката ще спре.

Ако изберете опцията Няма, музиката ще спре да се възпроизвежда.

Докато възпроизвежда музикалния файл, уеб страницата използва интерфейса AudioContext, за да анализира музиката, която след това се изпраща до сървъра чрез защитена връзка с websocket.

Съобщението е от типа, който 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 Native library (обгръща WS281X библиотеката на Jeremy Garff), за да промени цветовете на светодиодите на LED лента WS2811, въз основа на данните, изпратени през websocket.

Стъпка 8: Най -накрая

Image
Image

Трябва да видите светодиодите на лентата да променят цвета си с музиката, въз основа на анализа на Fast Fourier Transform, направен на уеб страницата.

Надявам се, че това ви харесва. Кажете ми какво правите с него!

ЗАБЕЛЕЖКА: Ако имате някакви проблеми

Тъй като тази библиотека и вграденият аудиосистема на Raspberry Pi използват PWM, те не могат да се използват заедно.

Може да се наложи да включите в черния списък модула на аудио ядрото на Broadcom, като създадете файл /etc/modprobe.d/snd-blacklist.conf с

черен списък snd_bcm2835

Ако аудио устройството все още се зарежда след черен списък, може да се наложи да го коментирате и във файла /etc /modules. На безглавни системи може да се наложи също да принудите аудио чрез hdmi

Редактирайте config.txt и добавете:

hdmi_force_hotplug = 1

hdmi_force_edid_audio = 1

Изисква се рестартиране, за да влезе в сила тази промяна

Препоръчано: