Სარჩევი:

დისკო-პი: 8 ნაბიჯი (სურათებით)
დისკო-პი: 8 ნაბიჯი (სურათებით)

ვიდეო: დისკო-პი: 8 ნაბიჯი (სურათებით)

ვიდეო: დისკო-პი: 8 ნაბიჯი (სურათებით)
ვიდეო: Darbo FT. Azazel - ქალაქებიდან/Qalaqebidan 2024, ივლისი
Anonim
დისკო-პი
დისკო-პი

ეს ინსტრუქცია გვიჩვენებს, თუ როგორ გამოიყენოთ Raspberry Pi ფერადი LED ზოლის გასაკონტროლებლად, ბრაუზერის ბრაუზერის მუსიკის საფუძველზე.

ის გვიჩვენებს, თუ როგორ უნდა შევქმნათ ძირითადი ვებ – გვერდი Node.js– ის გამოყენებით HTTPS– ით და გამოიყენოთ socket.io WSS– ით (უსაფრთხო ვებსაკეტი).

ვებსაიტს აქვს ერთი გვერდი, რომელსაც აქვს ძალიან ძირითადი განლაგება. ვებ გვერდი ავსებს ჩამოსაშლელ ჩამონათვალს მუსიკალური ფაილებით, რომლებიც განთავსებულია სერვერზე საჯარო/აუდიო საქაღალდეში. სიაში ვარიანტის შერჩევა უკრავს მუსიკალურ ფაილს ვებ გვერდზე HTML 5 აუდიო ელემენტის გამოყენებით. მუსიკალური ფაილის დაკვრისას, ვებგვერდი იყენებს აუდიოკონტექსტის ინტერფეისს მუსიკის გასაანალიზებლად, რომელიც შემდეგ იგზავნება სერვერზე უსაფრთხო ქსელური კავშირის საშუალებით.

Raspberry Pi– ზე გაშვებული სერვერი იყენებს Node RPI WS281x Native ბიბლიოთეკას (ახორციელებს ჯერემი გარფის WS281X ბიბლიოთეკას) WS2811 LED ზოლზე LED- ების ფერების შესაცვლელად, ქსელის საშუალებით გაგზავნილი მონაცემების საფუძველზე.

მაგალითი კოდი შეგიძლიათ იხილოთ აქ: disco-pi

ნაბიჯი 1: აღჭურვილობა

  1. Raspberry Pi - მე გამოვიყენე Raspberry Pi 2B, რომელიც მე მქონდა განლაგებული, მაგრამ თქვენ შეგიძლიათ მიიღოთ Raspberry Pi 3 Starter Kit დაახლოებით CAD 100
  2. WS2811 LED Strip - მე ვთამაშობდი ALITOVE 16.4ft 150 პიქსელით WS2811. ამას მოყვება კონტროლერი და კვების წყარო დაახლოებით 45-50 CAD
  3. Barrel Jack Connector - მე ვიყიდე ერთი ჩემი ელექტრონიკის მაღაზიიდან, რაღაც მსგავსი. უბრალოდ დარწმუნდით, შეესაბამება თუ არა თქვენს კვების ბლოკს
  4. Jumper კონექტორები / მავთულები - მე მქონდა ქალი მდე მამაკაცი დამაკავშირებელი კაბელი და ზოგიერთი 22 Gauge Solid Hook up wire

ნაბიჯი 2: ჟოლოს პიის დაყენება

Ოპერაციული სისტემა

მე ჩვეულებრივ ვიყენებ უახლესი Raspbian აღნაგობას. ჩამოტვირთეთ სურათი და ჩაწერეთ იგი SD ბარათზე. თუ თქვენ იყენებთ Windows კომპიუტერს, შეგიძლიათ გამოიყენოთ Win32 Disk Imager გამოსახულების დასაწერად SD ბარათზე.

კვანძი. 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 დააინსტალირეთ 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 კლონი [email protected]: haydockjp/disco-pi.git

3. დააინსტალირეთ დამოკიდებულებები

cd დისკო-პი

npm ინსტალაცია

ამას შეიძლება 2-3 წუთი დასჭირდეს

ნაბიჯი 4: შექმენით თვით ხელმოწერილი SSL სერთიფიკატი

1. შექმენით პირადი გასაღების ფაილი

cd /opt/com.jonhaydock/disco-pi/ კონცერტები

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

2. შექმენით CSR (სერტიფიკატის ხელმოწერის მოთხოვნა)

openssl req -ახალი-გასაღები disco-pi-key.pem-out disco-pi-csr.pem

ამ დროს თქვენ მოგეთხოვებათ გარკვეული ინფორმაცია სერთიფიკატის მოთხოვნის შესახებ. ვინაიდან ეს არის ხელმოწერილი სერთიფიკატი, თქვენზეა დამოკიდებული რამდენად ზუსტად შეავსებთ დეტალებს. აქ არის მაგალითი

ქვეყნის სახელი (2 ასო კოდი) [AU]: CA

შტატის ან პროვინციის სახელი (სრული სახელი) [ზოგიერთი შტატი]: ბრიტანული კოლუმბიის დასახლების დასახელება (მაგ. ქალაქი) : ვანკუვერის ორგანიზაციის სახელი (მაგ. კომპანია) [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 -გარეთ dh_2048.pem 2048

ამას შეიძლება 15-20 წუთი დასჭირდეს

ნაბიჯი 5: აპარატურის დაკავშირება

აპარატურის დაკავშირება
აპარატურის დაკავშირება
აპარატურის დაკავშირება
აპარატურის დაკავშირება
აპარატურის დაკავშირება
აპარატურის დაკავშირება
აპარატურის დაკავშირება
აპარატურის დაკავშირება

LED ზოლის გაძლიერება

LED ზოლები იკვებება 12 ვოლტით. Raspberry Pi არის მხოლოდ 3.3 ვ ან 5 ვ გამომავალი და არ შეუძლია ამოდის სადმე ამპერის მახლობლად, რომელიც საჭიროა ამდენი LED- ების დასაყენებლად.

მნიშვნელოვანია, რომ არ დაუკავშიროთ 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 (პინი 12 / GPIO 18)

2. აიღეთ შავი კონექტორი კაბელი და დაუკავშირეთ იგი Raspberry Pi GPIO- ს.

თქვენ უნდა დაუკავშიროთ იგი ერთ -ერთ საფუძველს. მე გირჩევთ გამოიყენოთ pin 14, მაგრამ ასევე შეგიძლიათ გამოიყენოთ pin 6, 9, 20, 25, 30, 34 ან 39.

შენიშვნა: ამისთვის LED ენერგიის წყაროს და ჟოლოს Pi- ს უნდა ჰქონდეს საერთო საფუძველი. ასევე გაითვალისწინეთ, რომ თქვენ არ უნდა დაუკავშიროთ 12 ვოლტი + (წითელი მავთული) ჟოლოს Pi- ს.

LED სიმძლავრე

თქვენ არ უნდა შეძლოთ თქვენი 12 ვოლტიანი კვების ბლოკის დაკავშირება ლულის ჯეკთან

ყველა LED ნათურა თქვენს LED ზოლზე ახლა უნდა ანათებდეს WHITE

ნაბიჯი 6: სერვერის გვერდითი კოდი

სერვერის კოდის გაშვება

cd /opt/com.jonhaydock/disco-pi

sudo npm დაწყება

ეს დაიწყებს ვებ სერვერს და დაიწყებს HTTPS და WSS მოთხოვნების მოსმენას.

ნაგულისხმევი პორტი არის 443, მაგრამ ამის გადალახვა შეგიძლიათ კოდის დაწყებამდე გარემოს ცვლადის დაყენებით. Მაგალითად

ექსპორტი DISCO_PI_PORT = 1443

ჩემს LED ზოლს აქვს 150 LED. ისინი კონტროლდება სამ ჯგუფად. ეს ნიშნავს, რომ მე არ შემიძლია გავაკონტროლო თითოეული LED ინდივიდუალურად და მე უნდა გავაგზავნო საკმარისი ინფორმაცია 50 -ის გასაკონტროლებლად.

თუ თქვენს შუქდიოდს აქვს მეტნაკლებად, თქვენ შეგიძლიათ გააუქმოთ 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 What You Came For (feat. Rihanna).mp3"]

მუსიკის დამატების მიზნით, დააკოპირეთ ფაილები ამ საქაღალდეში. მე პირადად ვიყენებ Filezilla– ს ssh– ზე. საქაღალდე, რომელშიც გსურთ დაამატოთ ფაილები არის /opt/com.jonhaydock/disco-pi/public/audio

ნაბიჯი 7: ვებსაიტის კოდი

ვებსაიტის კოდი
ვებსაიტის კოდი

როდესაც შედიხართ საიტზე თქვენ უნდა ნახოთ მსგავსი რამ.

თუ ხედავთ უსაფრთხოების გაფრთხილებას, ეს იმიტომ ხდება, რომ ჩვენ ვიყენებთ თვით ხელმოწერილ SSL სერთიფიკატს. შეგიძლიათ იგნორირება გაუკეთოთ ან დაამატოთ გამონაკლისის სახით.

ფაილის სახელის არჩევისას, HTML5 აუდიო ელემენტის წყარო. დაყენდება იმ ფაილზე. როგორც კი მზად იქნებით, მუსიკა დაიწყებს დაკვრას. სიმღერის დასრულების შემდეგ მუსიკა შეწყდება.

თუ თქვენ აირჩიეთ None ვარიანტი, მუსიკა შეწყვეტს დაკვრას.

მუსიკალური ფაილის დაკვრისას, ვებგვერდი იყენებს აუდიოკონტექსტის ინტერფეისს მუსიკის გასაანალიზებლად, რომელიც შემდეგ იგზავნება სერვერზე უსაფრთხო ქსელური კავშირის საშუალებით.

შეტყობინება არის ტიპი, რომელიც 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 მშობლიურ ბიბლიოთეკას (ახორციელებს ჯერემი გარფის WS281X ბიბლიოთეკას) WS2811 LED ზოლზე LED- ების ფერის შესაცვლელად, ქსელის საშუალებით გაგზავნილი მონაცემების საფუძველზე.

ნაბიჯი 8: საბოლოოდ

Image
Image

თქვენ უნდა ნახოთ ზოლზე LED- ები, რომლებიც იცვლიან ფერს მუსიკასთან ერთად, ვებ - გვერდზე გაკეთებული Fast Fourier Transform ანალიზის საფუძველზე.

ვიმედოვნებ, რომ ისიამოვნებთ ამით. გამაგებინე რას აკეთებ ამით!

შენიშვნა: თუ თქვენ გაქვთ რაიმე პრობლემა

ვინაიდან ეს ბიბლიოთეკა და ბორტზე Raspberry Pi აუდიო ორივე იყენებს PWM- ს, მათი ერთად გამოყენება შეუძლებელია.

შეიძლება დაგჭირდეთ Broadcom აუდიო ბირთვის მოდულის შავ სიაში ფაილის შექმნა /etc/modprobe.d/snd-blacklist.conf ერთად

შავი სია snd_bcm2835

თუ აუდიო მოწყობილობა ჯერ კიდევ იტვირთება შავი სიის შემდეგ, თქვენ შეიძლება დაგჭირდეთ მისი კომენტარი /etc /მოდულების ფაილში. უსათაურო სისტემებზე ასევე შეიძლება დაგჭირდეთ აუდიოს HDMI მეშვეობით

შეცვალეთ config.txt და დაამატეთ:

hdmi_force_hotplug = 1

hdmi_force_edid_audio = 1

ამ ცვლილების ძალაში შესასვლელად საჭიროა გადატვირთვა

გირჩევთ: