Բովանդակություն:
- Քայլ 1: Սարքավորումներ
- Քայլ 2: Ազնվամորու Pi- ի կարգավորում
- Քայլ 3: Կոդի օրինակ ստեղծելը
- Քայլ 4: Ստեղծեք ինքնակամ ստորագրված SSL վկայագիր
- Քայլ 5: Սարքաշարի միացում
- Քայլ 6: Սերվերի կողային ծածկագիր
- Քայլ 7: Կայքի ծածկագիր
- Քայլ 8: Վերջապես
Video: Disco-pi: 8 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
Այս հրահանգը ցույց է տալիս, թե ինչպես օգտագործել 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: Սարքավորումներ
- Ազնվամորի Pi - Ես օգտագործեցի Raspberry Pi 2B, որը մոտս էր դրված, բայց դուք կարող եք ձեռք բերել Raspberry Pi 3 Starter Kit- ը մոտ 100 CAD- ով:
- WS2811 LED Strip - Ես խաղում էի ALITOVE 16.4ft 150 պիքսել WS2811- ով: Սա գալիս է վերահսկիչով և մոտ 45-50 CAD- ով սնուցման աղբյուրով
- Barrel Jack Connector - Ես գնել եմ իմ տեղական էլեկտրոնիկայի խանութից, այսպիսի բան Պարզապես համոզվեք, որ համապատասխանում է ձեր էներգիայի մատակարարմանը
- 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: Վերջապես
Դուք պետք է տեսնեք, որ շերտի 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
Այս փոփոխությունն ուժի մեջ մտնելու համար անհրաժեշտ է վերագործարկում
Խորհուրդ ենք տալիս:
3D տպագրվող Disco սաղավարտ: 11 քայլ (նկարներով)
3D Printable Disco սաղավարտ. Ոգեշնչված դասական Daft Punk «Thomas» սաղավարտից: Լուսավորեք սենյակը և նախանձեք ձեր բոլոր ընկերներին այս զարմանահրաշ Arduino սնուցվող դիսկոտեկի սաղավարտով: Այս նախագիծը ավարտելու համար ձեզ անհրաժեշտ կլինի մուտք դեպի 3D տպիչ և զոդման սարք: Եթե ցանկանում եք, որ
Դյուրակիր Disco V2 -Ձայնի վերահսկվող LED- ներ. 11 քայլ (նկարներով)
Դյուրակիր Disco V2 -Ձայնի վերահսկվող լուսադիոդներ. Ես երկար ճանապարհ եմ անցել իմ էլեկտրոնիկայի ճանապարհորդությամբ, քանի որ պատրաստել եմ իմ առաջին շարժական դիսկոտեկը: Սկզբնական կառուցվածքում ես միացված էի մի սխեմայի նախատիպի տախտակի վրա և հասցրեցի կառուցել կոկիկ, փոքրիկ գրպանի դիսկոտեկ: Այս անգամ ես նախագծեցի իմ սեփական PCB- ն և
Led Disco Box: 7 քայլ (նկարներով)
Led Disco Box. Ինչպես պատրաստել ձեր սեփական Led դիսկոտեքը
Light-Up Disco սեղան. 27 քայլ (նկարներով)
Light-Up Disco սեղան. Յուրաքանչյուր բնակարան կարիք ունի հիանալի կահույքի, ուստի ինչու չպատրաստել ձեր սեփականը: Այս սուրճի սեղանը պարունակում է LED շերտեր, որոնք լուսավորվում են տարբեր հարմարվող նախշերով և գույներով: Լույսերը կառավարվում են Arduino- ով և թաքնված կոճակով, և ամբողջը
Disco Desktop կազմակերպիչ. 8 քայլ (նկարներով)
Disco Desktop Կազմակերպիչ ՝ Նյութեր ՝ եռակի, հաստություն ՝ 3 մմ Քանի փայտե թիթեղ է կախված նրանից, թե որքան մեծ է ձեր լազերահատը … ֆայլը հարմարեցրեք ձեր առավելագույն չափի փայտե ափսեի վրա … գուցե ձեզ հարկավոր է ավելի քան 1 ափսե (նկատի ունեցեք դա): 6 x ֆլեշ լուսարձակներ (ես օգտագործել եմ 7 գունավոր լուսարձակներ) ava