Სარჩევი:
- ნაბიჯი 1: აღჭურვილობა
- ნაბიჯი 2: ჟოლოს პიის დაყენება
- ნაბიჯი 3: მაგალითი კოდის დაყენება
- ნაბიჯი 4: შექმენით თვით ხელმოწერილი SSL სერთიფიკატი
- ნაბიჯი 5: აპარატურის დაკავშირება
- ნაბიჯი 6: სერვერის გვერდითი კოდი
- ნაბიჯი 7: ვებსაიტის კოდი
- ნაბიჯი 8: საბოლოოდ
ვიდეო: დისკო-პი: 8 ნაბიჯი (სურათებით)
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:20
ეს ინსტრუქცია გვიჩვენებს, თუ როგორ გამოიყენოთ Raspberry Pi ფერადი LED ზოლის გასაკონტროლებლად, ბრაუზერის ბრაუზერის მუსიკის საფუძველზე.
ის გვიჩვენებს, თუ როგორ უნდა შევქმნათ ძირითადი ვებ – გვერდი Node.js– ის გამოყენებით HTTPS– ით და გამოიყენოთ socket.io WSS– ით (უსაფრთხო ვებსაკეტი).
ვებსაიტს აქვს ერთი გვერდი, რომელსაც აქვს ძალიან ძირითადი განლაგება. ვებ გვერდი ავსებს ჩამოსაშლელ ჩამონათვალს მუსიკალური ფაილებით, რომლებიც განთავსებულია სერვერზე საჯარო/აუდიო საქაღალდეში. სიაში ვარიანტის შერჩევა უკრავს მუსიკალურ ფაილს ვებ გვერდზე HTML 5 აუდიო ელემენტის გამოყენებით. მუსიკალური ფაილის დაკვრისას, ვებგვერდი იყენებს აუდიოკონტექსტის ინტერფეისს მუსიკის გასაანალიზებლად, რომელიც შემდეგ იგზავნება სერვერზე უსაფრთხო ქსელური კავშირის საშუალებით.
Raspberry Pi– ზე გაშვებული სერვერი იყენებს Node RPI WS281x Native ბიბლიოთეკას (ახორციელებს ჯერემი გარფის WS281X ბიბლიოთეკას) WS2811 LED ზოლზე LED- ების ფერების შესაცვლელად, ქსელის საშუალებით გაგზავნილი მონაცემების საფუძველზე.
მაგალითი კოდი შეგიძლიათ იხილოთ აქ: disco-pi
ნაბიჯი 1: აღჭურვილობა
- Raspberry Pi - მე გამოვიყენე Raspberry Pi 2B, რომელიც მე მქონდა განლაგებული, მაგრამ თქვენ შეგიძლიათ მიიღოთ Raspberry Pi 3 Starter Kit დაახლოებით CAD 100
- WS2811 LED Strip - მე ვთამაშობდი ALITOVE 16.4ft 150 პიქსელით WS2811. ამას მოყვება კონტროლერი და კვების წყარო დაახლოებით 45-50 CAD
- Barrel Jack Connector - მე ვიყიდე ერთი ჩემი ელექტრონიკის მაღაზიიდან, რაღაც მსგავსი. უბრალოდ დარწმუნდით, შეესაბამება თუ არა თქვენს კვების ბლოკს
- 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: საბოლოოდ
თქვენ უნდა ნახოთ ზოლზე 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
ამ ცვლილების ძალაში შესასვლელად საჭიროა გადატვირთვა
გირჩევთ:
დისკო განათება RGB– დან Arduino– ს გამოყენებით TinkerCad– ზე: 3 ნაბიჯი
დისკო განათება RGB– დან Arduino– ს გამოყენებით TinkerCad– ზე: მას შემდეგ რაც RGB გაერთეთ, ადვილია RGB ფერის კონტროლი PWM გამომავალი ან ანალოგური გამომავალი გამოყენებით, Arduino– სთვის შეგიძლიათ გამოიყენოთ analogWrite () ქინძისთავებზე 3, 5, 6 , 9, 10, 11, A0, A1, A2, A3, A4, A5 (კლასიკური არდუინოსთვის Atmega328 ან 1
3D დასაბეჭდი დისკო ჩაფხუტი!: 11 ნაბიჯი (სურათებით)
3D დასაბეჭდი დისკო ჩაფხუტი!: შთაგონებულია კლასიკური Daft Punk 'Thomas' ჩაფხუტით. გაანათეთ ოთახი და იყავით თქვენი ყველა მეგობრის შური ამ საოცარი არდუინოს დისკო ჩაფხუტით! თქვენ დაგჭირდებათ წვდომა 3D პრინტერზე და შედუღების რკინაზე ამ პროექტის დასასრულებლად. თუ გსურთ, რომ
პორტატული დისკო V2 -ხმის კონტროლირებადი LED- ები: 11 ნაბიჯი (სურათებით)
პორტატული დისკო V2 -ხმის კონტროლირებადი LED- ები: მე დიდი გზა გავიარე ჩემი ელექტრონიკის მოგზაურობით მას შემდეგ, რაც გავაკეთე ჩემი პირველი პორტატული დისკო. თავდაპირველ აღნაგობაში მე ერთად გავტეხე წრე პროტოტიპის დაფაზე და მოვახერხე სუფთა, პატარა ჯიბის დისკოს შექმნა. ამჯერად მე შევქმენი ჩემი საკუთარი PCB და
უსასრულო დისკო: 6 ნაბიჯი (სურათებით)
უსასრულო დისკო: ამ პროექტში მე გავაკეთე უსასრულობის სარკე დოდეკაედრონის საფუძველზე, რომელიც რეაგირებს ხმაზე
ხმის კონტროლირებადი LED- ები - ჯიბის დისკო: 11 ნაბიჯი (სურათებით)
ხმის კონტროლირებადი LED- ები - ჯიბის დისკო: შექმენით თქვენი საკუთარი ჯიბის დისკო მუსიკით კონტროლირებადი LED- ებით. ყველაფერი რაც თქვენ გჭირდებათ არის მუსიკა ან ხმა და LED– ები იცეკვებენ ხმაზე. ეს არის მართლაც გასაშლელი პატარა წრე ასაშენებლად და მის დასამზადებლად მხოლოდ რამდენიმე კომპონენტია საჭირო. მთავარი ბ