Мазмуну:

Disco-pi: 8 кадам (Сүрөттөр менен)
Disco-pi: 8 кадам (Сүрөттөр менен)

Video: Disco-pi: 8 кадам (Сүрөттөр менен)

Video: Disco-pi: 8 кадам (Сүрөттөр менен)
Video: Мен уурулук менен ооруймун (Клептоманкамын) / менин сырым / кызыктуу окуялар 2024, Июль
Anonim
Disco-pi
Disco-pi

Бул көрсөтмө веб браузерден ойногон музыканын негизинде түстүү LED тилкесин башкаруу үчүн Raspberry Pi кантип колдонууну көрсөтөт.

Бул HTTPS аркылуу Node.jsти колдонуп, WSS (Secure Websocket) аркылуу socket.io колдонуу менен кантип негизги вебсайтты түзүүнү көрсөтөт.

Вебсайтта эң негизги макети бар бир барак бар. Веб баракча сервердин коомдук/аудио папкасында жайгашкан музыкалык файлдар менен ачылуучу тизмени толтурат. Тизмедеги вариантты тандоо HTML 5 аудио элементин колдонуп веб -баракчадагы музыкалык файлды ойнотот. Музыкалык файлды ойнотуу учурунда веб -баракча музыканы талдоо үчүн AudioContext интерфейсин колдонот, ал серверге коопсуз веб -туташуу аркылуу жөнөтүлөт.

Raspberry Piде иштеген сервер WS2811 LED тилкесиндеги светодиоддордун түстөрүн өзгөртүү үчүн Node RPI WS281x Native китепканасын (ороо Жереми Гарфтын WS281X китепканасын) колдонот.

Мисал кодун бул жерден тапса болот: disco-pi

1 -кадам: жабдуулар

  1. Raspberry Pi - Мен Raspberry Pi 2B колдонгон элем, бирок сиз CAD 100 тегерегинде Raspberry Pi 3 башталгыч комплектин ала аласыз.
  2. WS2811 LED Strip - Мен ALITOVE 16.4ft 150 пиксел WS2811 менен ойночумун. Бул болжол менен CAD 45-50 үчүн контроллер жана электр менен камсыздоо менен келет
  3. Barrel Jack Connector - Мен муну жергиликтүү электроника дүкөнүнөн сатып алдым. Жөн гана сиздин электр булагыңызга туура келерин текшериңиз
  4. Jumper Connectors / Wire - Менде кээ бир Аялдан Эркекке туташтыргыч кабелдер жана кээ бир 22 Габариди Катуу кармоочу зым бар болчу

2 -кадам: Raspberry Pi орнотуу

Иштетүү системасы

Мен адатта эң акыркы Raspbian түзүлүшүн колдоном. Сүрөттү түшүрүп, SD картка жазыңыз. Эгерде сиз Windows компьютерин колдонуп жатсаңыз, сүрөттү SD картага жазуу үчүн Win32 Disk Imager колдоно аласыз.

Node.js

Node.js акыркы версиясын орнотуу. Жазуу учурунда мен 8.9.1 колдонуп жатам

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

sudo apt-get nodejs орнотуу

Git орнотуу

sudo apt-get install орнотуу

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 disco-pi

npm орнотуу

Бул 2-3 мүнөткө созулушу мүмкүн

4 -кадам: Өз алдынча кол коюлган SSL сертификатын түзүү

1. Жеке ачкыч файлын түзүңүз

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

openssl genrsa -жылы дискотека-pi-key.pem 2048

2. CSR түзүү (Тастыктамага кол коюу талабы)

openssl req -yew -key disco-pi-key.pem -out disco-pi-csr.pem

Бул жерде сизден сертификат сурамы боюнча кээ бир маалымат талап кылынат. Бул өз алдынча кол коюлган күбөлүк болгондуктан, чоо -жайын канчалык туура толтуруу өзүңүздөн көз каранды. Бул жерде бир мисал

Өлкөнүн аталышы (2 тамгалык код) [AU]: CA

Штаттын же провинциянын аталышы (толук аты-жөнү) [Кээ бир штаттар]: Британ Колумбиясынын жергиликтүү аталышы (мисалы, шаар) : Ванкувер уюмунун аталышы (мисалы, компания) [Internet Widgits Pty Ltd]: Disco Pi Уюштуруу бөлүмүнүн аталышы (мис., Бөлүм) : Жалпы ат (мис. Сервер FQDN же СИЗДИН атыңыз) : disco-pi Email Address : [email protected] Чакыруучу сырсөз : Кошумча компания аталышы :

Бул мисалда, чакырыктын сырсөзүн бош калтыруу үчүн кайтууну басыңыз

3. Сертификатты түзүү

openssl x509 -req -days 1095 -ниското-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem

4. Кошумча коопсуздук үчүн биз дагы Diffie Hellman Parameters файлын түзөбүз

openssl dhparam -ch_2048.pem 2048

Бул 15-20 мүнөткө созулушу мүмкүн

5 -кадам: Аппаратты туташтыруу

Аппаратты туташтыруу
Аппаратты туташтыруу
Аппаратты туташтыруу
Аппаратты туташтыруу
Аппаратты туташтыруу
Аппаратты туташтыруу
Аппаратты туташтыруу
Аппаратты туташтыруу

LED тилкесин иштетүү

LED тилкеси 12 вольттон иштейт. Raspberry Pi 3.3v же 5v чыгарууга жөндөмдүү жана ушунчалык көп светодиоддорду айдоо үчүн керектүү ампердин жанында эч жерде чыгара албайт.

12 вольттук электр энергиясын Raspberry Pi менен туташтырбоо маанилүү.

Менин тилкемде эки учунда дагы кошумча электр зымдары туташтырылган. Мен буларды башка жабдууларыңа тийбеши үчүн жаздырып алууну сунуштайм.

Кийинки кадамдарды өзүңүздүн тобокелге салуу менен аткарыңыз. Мен туура эмес болуп калышы мүмкүн болгон эч нерсе үчүн жоопкерчиликти албайм.

LED Strip

Менин LED тилкемде үч зым бар:

КЫЗЫЛ - +12 Вольт

КАРА - Жер

GREEN - маалыматтар

ЭСКЕРТҮҮ: Дин жана Даут бар - Маалыматтарды киргизүү жана чыгаруу. Дин деп аталган LED тилкесинин учу менен иштеп жатканыңызды текшериңиз.

Barrel Jack электр булагына туташпаганын камсыздоо

1. Кызыл тилкени LED тилкесинен Barrel Jackдин + капталына туташтырыңыз.

Мен ак түстөгү 22 калибрлүү зымды колдондум.

Зымды баррелдин уячасындагы + уячасына салып, ордуна бурап коюңуз.

Зымдын экинчи учун LEDдагы розеткага басыңыз. Кызыл зым менен туташып турганыңызды тактаңыз.

2. LED тилкесинен Кара зымды Баррель Джекинин жагына туташтырыңыз.

Мен кара 22 калибрлүү зымды колдондум.

Зымды баррелдин уячасындагы - уячасына салыңыз. Бул жерде ошондой эле туташтыргыч кабелдердин биринин эркек учун (сүрөттөгү күрөң зым) ошол эле тешикке салып, экөөнү тең ордуна сайыңыз.

Кара зымдын экинчи учун LEDдагы розеткага басыңыз.

Кара зым менен туташып турганыңызды тактаңыз.

3. Жашыл зымды LED тилкесинен туташтырыңыз

Ургаачыдан эркекке туташтыруучу кабелдердин бирин алыңыз. Менин сүрөттөрүмдө бул жашыл зым.

Жашыл зым менен LED розеткага эркектин учун коюңуз.

Бул маалымат кабели.

Raspberry Pi

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 жалпы негизге ээ болушу керек. Ошондой эле Raspberry Pi менен 12 Вольт + (Кызыл зым) туташпашыңыз керек экенин эске алыңыз.

LED кубаты

Сиз 12 вольт электр энергияңызды баррель уясына туташтыра албашыңыз керек

Сиздин LED тилкеңиздеги бардык светодиоддор ак түстө күйүшү керек

6 -кадам: Server Side Code

Сервердин кодун иштетүү

cd /opt/com.jonhaydock/disco-pi

Sudo npm башталат

Бул веб -серверди иштетип, HTTPS жана WSS сурамдарын уга баштайт.

Демейки порт 443, бирок кодду баштоодон мурун аны чөйрөнүн өзгөрмөсүн коюу менен жокко чыгарсаңыз болот. Мисалы

экспорттоо DISCO_PI_PORT = 1443

Менин LED тилкесинде 150 светодиод бар. Булар үч топко бөлүнүп көзөмөлдөнөт. Бул мен ар бир LEDди жекече башкара албайм дегенди билдирет жана 50 көзөмөлдөө үчүн жетиштүү маалыматты жөнөтүшүм керек.

Эгерде сиздин LEDде аздыр -көптүр бар болсо, анда сиз баштоо үчүн параметрди киргизип, сиз көзөмөлдөп турган LED диапазонун жокко чыгара аласыз. Мисалы, эгер сиз 10 гана LEDди башкара алсаңыз

Sudo npm 10 башталат

Негизги сервер кодун app.js файлынан тапса болот. Бул файл HTTPS веб -серверин баштайт жана ошол эле порттогу вебсокет сурамдарын угуу үчүн socket.ioго кошулат.

Вебсайтка кирүү үчүн, сиз негизги компьютериңизде веб браузерди ачышыңыз керек (мен муну Chromeдо гана сынап көрдүм) жана Raspberry Piнин IP дарегин колдонуңуз, мис.

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 For You For (feat. Rihanna).mp3"]

Опция катары музыканы кошуу үчүн, файлдарды бул папкага көчүрүңүз. Мен жеке ssh үстүнөн Filezilla колдоном. Файлдарды кошкуңуз келген папка /opt/com.jonhaydock/disco-pi/public/audio

7 -кадам: Вебсайттын коду

Вебсайттын коду
Вебсайттын коду

Вебсайтка киргенде, сиз мындай нерсени көрүшүңүз керек.

Эгерде сиз коопсуздук эскертүүсүн көрсөңүз, бул биз өзүбүз кол койгон SSL сертификатын колдонуп жатканыбызга байланыштуу. Сиз аны этибарга албай же өзгөчө абал катары кошо аласыз.

Файлдын атын тандоодо, HTML 5 аудио элементинин булагы. ошол файлга орнотулат. Даяр болгондон кийин музыка ойноло баштайт. Ыр бүткөндөн кийин музыка токтойт.

Эгерде сиз None опциясын тандасаңыз, музыка ойнобой калат.

Музыкалык файлды ойнотуу учурунда веб -баракча музыканы талдоо үчүн AudioContext интерфейсин колдонот, ал серверге коопсуз веб -сокет туташуусу аркылуу жөнөтүлөт.

Билдирүү - бул сервердеги socket.io "ws2811" угуу үчүн орнотулган түрү. Бул 0 жана 255 ортосундагы 50 элементтин массивин камтыйт.

"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}

Сервер WS2811 LED тилкесиндеги светодиоддордун түстөрүн өзгөртүү үчүн Node RPI WS281x Native китепканасын (ором Жереми Гарфтын WS281X китепканасын) колдонот, вебсокет аркылуу жөнөтүлгөн маалыматтарга негизделген.

8 -кадам: Акыры

Image
Image

Сиз веб баракчасында жасалган Fast Fourier Transform анализинин негизинде музыканын түсү өзгөргөн тилкенин диоддорун көрүшүңүз керек.

Бул сизге жагат деп ишенем. Мага муну менен эмне кылганыңды айт!

ЭСКЕРТҮҮ: Эгер кандайдыр бир көйгөйлөр болсо

Бул китепкана жана Raspberry Pi аудиотабы PWMди колдонгондуктан, аларды бирге колдонууга болбойт.

Сиз /etc/modprobe.d/snd-blacklist.conf файлын түзүп, Broadcom аудио ядро модулун кара тизмеге киргизишиңиз керек болот.

кара тизме snd_bcm2835

Эгерде аудио аппарат кара тизмеден кийин дагы эле жүктөлүп жатса, аны /etc /modules файлына комментарийлешиңиз керек болот. Башы жок системаларда аудиону hdmi аркылуу мажбурлоо керек болушу мүмкүн

Config.txt түзөтүү жана кошуу:

hdmi_force_hotplug = 1

hdmi_force_edid_audio = 1

Бул өзгөртүү күчүнө кириши үчүн, кайра жүктөө керек

Сунушталууда: