Բովանդակություն:

Disco-pi: 8 քայլ (նկարներով)
Disco-pi: 8 քայլ (նկարներով)

Video: Disco-pi: 8 քայլ (նկարներով)

Video: Disco-pi: 8 քայլ (նկարներով)
Video: 8 Excel գործիքներ, որոնք բոլորը պետք է կարողանան օգտագործել 2024, Հուլիսի
Anonim
Դիսկո-պի
Դիսկո-պի

Այս հրահանգը ցույց է տալիս, թե ինչպես օգտագործել Raspberry Pi- ն ՝ գունավոր LED ժապավենը կառավարելու համար ՝ հիմնված վեբ դիտարկիչից հնչած երաժշտության վրա:

Այն ցույց է տալիս, թե ինչպես կարելի է ստեղծել հիմնական կայք ՝ օգտագործելով Node.js HTTPS- ի միջոցով և օգտագործել socket.io- ն WSS- ի միջոցով (Secure Websocket):

Կայքն ունի մեկ էջ, որն ունի շատ հիմնական դասավորություն: Վեբ էջը համալրում է բացվող ցուցակը երաժշտական ֆայլերով, որոնք տեղակայված են սերվերի հանրային/աուդիո թղթապանակում: Optionանկում տարբերակ ընտրելը նվագում է վեբ էջի երաժշտական ֆայլը ՝ օգտագործելով HTML 5 աուդիո տարրը: Երաժշտական ֆայլը նվագարկելիս վեբ էջը օգտագործում է AudioContext ինտերֆեյսը `երաժշտությունը վերլուծելու համար, որն այնուհետև սերվերին ուղարկվում է ապահով ցանցային կապի միջոցով:

Raspberry Pi- ի վրա աշխատող սերվերը օգտագործում է Node RPI WS281x Native գրադարանը (փաթաթելով remերեմի Գարֆի WS281X գրադարանը) ՝ WS2811 LED շերտի վրա LED- ների գույները փոխելու համար ՝ հիմնվելով ցանցի միջոցով ուղարկված տվյալների վրա:

Օրինակ ծածկագիրը կարելի է գտնել այստեղ ՝ disco-pi

Քայլ 1: Սարքավորումներ

  1. Ազնվամորի Pi - Ես օգտագործեցի Raspberry Pi 2B, որը մոտս էր դրված, բայց դուք կարող եք ձեռք բերել Raspberry Pi 3 Starter Kit- ը մոտ 100 CAD- ով:
  2. WS2811 LED Strip - Ես խաղում էի ALITOVE 16.4ft 150 պիքսել WS2811- ով: Սա գալիս է վերահսկիչով և մոտ 45-50 CAD- ով սնուցման աղբյուրով
  3. Barrel Jack Connector - Ես գնել եմ իմ տեղական էլեկտրոնիկայի խանութից, այսպիսի բան Պարզապես համոզվեք, որ համապատասխանում է ձեր էներգիայի մատակարարմանը
  4. Jumper միակցիչներ / մետաղալարեր

Քայլ 2: Ազնվամորու 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 տեղադրել 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 կլոն 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 -new -key disco-pi-key.pem-out disco-pi-csr.pem

Այս պահին ձեզանից կպահանջվի որոշ տեղեկություններ սերտիֆիկատի հարցման վերաբերյալ: Քանի որ սա ինքն ստորագրված վկայական է, ձեզանից է կախված, թե որքան ճշգրիտ եք լրացնում տվյալները: Ահա մի օրինակ

Երկրի անուն (2 տառի կոդ) [AU]: CA

Նահանգի կամ նահանգի անուն (լրիվ անուն) [Որոշ նահանգներ]. Բրիտանական Կոլումբիա Տեղանքի անուն (օրինակ ՝ քաղաք) : Վանկուվեր կազմակերպության անվանումը (օրինակ ՝ ընկերությունը) [Internet Widgits Pty Ltd] ՝ Disco Pi կազմակերպության միավորի անվանումը (օրինակ ՝ բաժին) : Ընդհանուր անուն (օրինակ ՝ սերվերի FQDN կամ ՁԵՐ անունը) : disco-pi էլ. Փոստի հասցե : [email protected] Մարտահրավեր գաղտնաբառ : Ընկերության պարտադիր անվանում :

Այս օրինակում պարզապես սեղմեք return ՝ մարտահրավերի գաղտնաբառը դատարկ թողնելու համար

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 -առանց dh_2048.pem 2048

Սա կարող է տևել 15-20 րոպե

Քայլ 5: Սարքաշարի միացում

Սարքաշարի միացում
Սարքաշարի միացում
Սարքաշարի միացում
Սարքաշարի միացում
Սարքաշարի միացում
Սարքաշարի միացում
Սարքաշարի միացում
Սարքաշարի միացում

LED ժապավենի սնուցում

LED ժապավենը սնուցվում է 12 վոլտ հզորությամբ: Raspberry Pi- ն կարող է միայն 3.3v կամ 5v ելք թողնել և ի վիճակի չէ որևէ տեղ թողնել ամպերի մոտ, որոնք անհրաժեշտ են այդքան LED- ներ վարելու համար:

Կարևոր է 12 վոլտ էլեկտրամատակարարումը չմիացնել Raspberry Pi- ին:

Իմ ժապավենն ուներ նաև հոսանքի լրացուցիչ լարեր, որոնք երկու ծայրերում միացված էին ժապավենին: Ես առաջարկում եմ դրանք կպցնել, որպեսզի նրանք չկապվեն ձեր ցանկացած այլ սարքավորման հետ:

Հաջորդ քայլերը կատարեք ձեր ռիսկով: Ես պատասխանատվություն չեմ կրում այն ամենի համար, ինչը կարող է սխալ լինել:

LED ժապավեն

Իմ LED շերտն ունի երեք լար.

ԿԱՐՄԻՐ - +12 վոլտ

ՍԵՎ - Գրունտ

Կանաչ - Տվյալներ

NOTԱՆՈԹՈԹՅՈՆ. Կա Din և Dout - Data In and Data Out: Համոզվեք, որ աշխատում եք LED շերտի ծայրով, որի վրա գրված է Din:

Ապահովել, որ Barrel Jack- ը միացված չէ սնուցման աղբյուրին

1. Միացրեք Կարմիր մետաղալարը LED շերտից դեպի բարելի խցիկի + կողմը:

Ես օգտագործեցի սպիտակ 22 չափիչ մալուխ:

Տեղադրեք մետաղալարերը տակառի խցիկի + անցքի մեջ և պտուտակեք այն տեղում:

Լարի մյուս ծայրը մղեք LED- ի վարդակից: Համոզվեք, որ կապվում եք կարմիր մետաղալարով:

2. Միացրեք սև մետաղալարերը LED շերտից դեպի բարելի խցիկի կողմը:

Ես օգտագործեցի սև 22 չափիչ մալուխ:

Տեղադրեք մետաղալարերը տակառի մեջ ՝ տակառի խցիկի մեջ: Այս պահին տեղադրեք միակցիչ մալուխներից մեկի արական ծայրը (լուսանկարում շագանակագույն մետաղալարեր) նույն անցքի մեջ և երկուսն էլ ամրացրեք տեղում:

Սև մետաղալարերի մյուս ծայրը մղեք LED- ի վարդակից:

Համոզվեք, որ միանում եք սև մետաղալարով:

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 կապում:

NOTԱՆՈԹՈԹՅՈՆ. Դրա համար LED հոսանքի աղբյուրը և Raspberry Pi- ն պետք է ունենան ընդհանուր հիմք: Նաև նշեք, որ չպետք է միացնեք 12 վոլտ + (կարմիր մետաղալար) Raspberry Pi- ին:

LED հզորություն

Դուք չպետք է կարողանաք ձեր 12 վոլտ հոսանքի աղբյուրը միացնել տակառի վարդակին

Ձեր LED շերտի բոլոր LED- ները այժմ պետք է սպիտակեն

Քայլ 6: Սերվերի կողային ծածկագիր

Սերվերի կողային ծածկագրի գործարկում

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 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 Native գրադարանը (փաթաթելով remերեմի Գարֆի WS281X գրադարանը) WS2811 LED շերտի վրա LED- ների գույները փոխելու համար ՝ հիմնվելով վեբ -ցանցի միջոցով ուղարկված տվյալների վրա:

Քայլ 8: Վերջապես

Image
Image

Դուք պետք է տեսնեք, որ շերտի LED- ները փոխում են գույնը երաժշտության հետ ՝ հիմնված վեբ էջում կատարված 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

Այս փոփոխությունն ուժի մեջ մտնելու համար անհրաժեշտ է վերագործարկում

Խորհուրդ ենք տալիս: