Съдържание:
- Стъпка 1: Оборудване
- Стъпка 2: Настройване на Raspberry Pi
- Стъпка 3: Настройване на примерния код
- Стъпка 4: Създайте самоподписан SSL сертификат
- Стъпка 5: Свързване на хардуера
- Стъпка 6: Код от страна на сървъра
- Стъпка 7: Код на уебсайта
- Стъпка 8: Най -накрая
Видео: Диско-пи: 8 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:54
Тази инструкция показва как да използвате 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: Оборудване
- Raspberry Pi - Използвах Raspberry Pi 2B, който имах около, но можете да получите Raspberry Pi 3 Starter Kit за около 100 CAD
- WS2811 LED лента - играех с ALITOVE 16.4ft 150 пиксела WS2811. Той идва с контролер и захранване за около CAD 45-50
- Съединител на барел джак - Купих такъв от местния магазин за електроника, нещо подобно. Просто се уверете, че отговаря на вашето захранване
- Съединители / проводник на джъмпера
Стъпка 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: Най -накрая
Трябва да видите светодиодите на лентата да променят цвета си с музиката, въз основа на анализа на 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
Изисква се рестартиране, за да влезе в сила тази промяна
Препоръчано:
Диско светлини от RGB с помощта на Arduino на TinkerCad: 3 стъпки
Диско светлини от 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 печат!: Вдъхновен от класическата каска „Thomas“на Daft Punk. Осветете стаята и завиждайте на всичките си приятели с тази невероятна диско каска с Arduino! Ще ви е необходим достъп до 3D принтер и поялник, за да завършите този проект. Ако искате да
Запалителна диско маса: 27 стъпки (със снимки)
Светлинна диско маса: Всеки апартамент се нуждае от страхотни мебели, така че защо да не си направите сами? Тази масичка за кафе съдържа LED ленти, които светят в различни персонализирани модели и цветове. Светлините се управляват от Arduino и скрит бутон, а цялото нещо
Производител на микрогравитационни растения "Диско топка": 13 стъпки
Производител на микрогравитационни растения "Диско топка": Здравейте читатели, този проект е професионално представяне на конкурса Growing Beyond Earth Maker.Този проект е доказателство за концепцията за потенциален дизайн на плантатор, който може да се използва за растеж на план в микрогравитация. правила на конкурса, които изброих
Светодиоди с контролиран звук - Джобно диско: 11 стъпки (със снимки)
Светодиоди с контрол на звука - Pocket Disco: Направете своя собствена джобна дискотека с някои светодиоди, контролирани от музика. Всичко, от което се нуждаете, е малко музика или звук и светодиодите ще танцуват около звука. Това е наистина управляема малка верига за изграждане и се нуждае само от няколко компонента, за да го направи. Основният б