Πίνακας περιεχομένων:
- Βήμα 1: Εξοπλισμός
- Βήμα 2: Ρύθμιση του Raspberry Pi
- Βήμα 3: Ρύθμιση του παραδείγματος κώδικα
- Βήμα 4: Δημιουργήστε ένα Self Signed Certificate SSL
- Βήμα 5: Σύνδεση του υλικού
- Βήμα 6: Κωδικός από τον διακομιστή
- Βήμα 7: Κώδικας ιστότοπου
- Βήμα 8: Τέλος
Βίντεο: Disco-pi: 8 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:38
Αυτό το διδακτικό δείχνει πώς να χρησιμοποιήσετε ένα Raspberry Pi για τον έλεγχο μιας έγχρωμης λωρίδας LED, με βάση τη μουσική που παίζεται από ένα πρόγραμμα περιήγησης ιστού.
Δείχνει πώς μπορείτε να δημιουργήσετε έναν βασικό ιστότοπο χρησιμοποιώντας το Node.js μέσω HTTPS και να χρησιμοποιήσετε το socket.io μέσω WSS (Ασφαλής Ιστοσελίδα).
Ο ιστότοπος έχει μια ενιαία σελίδα η οποία έχει μια πολύ βασική διάταξη. Η ιστοσελίδα συμπληρώνει μια αναπτυσσόμενη λίστα με αρχεία μουσικής, τα οποία βρίσκονται στον δημόσιο φάκελο/φάκελο ήχου του διακομιστή. Η επιλογή μιας επιλογής στη λίστα αναπαράγει το αρχείο μουσικής στην ιστοσελίδα χρησιμοποιώντας το ηχητικό στοιχείο HTML 5. Κατά την αναπαραγωγή του αρχείου μουσικής, η ιστοσελίδα χρησιμοποιεί τη διεπαφή AudioContext για να αναλύσει τη μουσική, η οποία στη συνέχεια αποστέλλεται στον διακομιστή μέσω μιας ασφαλούς σύνδεσης ιστού.
Ο διακομιστής που λειτουργεί σε Raspberry Pi χρησιμοποιεί τη βιβλιοθήκη Node RPI WS281x Native (περιτυλίγοντας τη βιβλιοθήκη του Jeremy Garff WS281X) για να αλλάξει τα χρώματα των LED σε μια λωρίδα LED WS2811, με βάση τα δεδομένα που αποστέλλονται μέσω της δικτυακής υποδοχής.
Το παράδειγμα του κώδικα μπορείτε να το βρείτε εδώ: disco-pi
Βήμα 1: Εξοπλισμός
- Raspberry Pi - Χρησιμοποίησα ένα Raspberry Pi 2B που είχα τοποθετήσει, αλλά μπορείτε να πάρετε ένα Raspberry Pi 3 Starter Kit για περίπου 100 CAD
- WS2811 LED Strip - Έπαιζα με το ALITOVE 16.4ft 150 Pixels WS2811. Έρχεται με έναν ελεγκτή και ένα τροφοδοτικό για περίπου 45-50 CAD
- Barrel Jack Connector - Αγόρασα ένα από το τοπικό μου κατάστημα ηλεκτρονικών ειδών, κάτι σαν αυτό. Απλά βεβαιωθείτε ότι ταιριάζει στο τροφοδοτικό σας
- Jumper Connectors / Wire - Είχα μερικά καλώδια θηλυκών σε αρσενικά και μερικά καλώδια 22 Gauge Solid που συνδέονται
Βήμα 2: Ρύθμιση του Raspberry 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 install 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 clone https://github.com/haydockjp/disco-pi.git"
ή
git clone [email protected]: haydockjp/disco-pi.git
3. Εγκαταστήστε τις εξαρτήσεις
cd disco-pi
npm εγκατάσταση
Αυτό μπορεί να διαρκέσει 2-3 λεπτά
Βήμα 4: Δημιουργήστε ένα Self Signed Certificate 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] Κωδικός πρόκλησης : Προαιρετικό όνομα εταιρείας :
Σε αυτό το παράδειγμα, απλώς πατήστε επιστροφή για να αφήσετε κενό τον κωδικό πρόσβασης πρόκλησης
3. Δημιουργήστε το πιστοποιητικό
openssl x509 -req -days 1095 -in disco-pi-csr.pem -signkey disco-pi-key.pem -out disco-pi-cert.pem
4. Για επιπλέον ασφάλεια θα δημιουργήσουμε επίσης ένα αρχείο παραμέτρων Diffie Hellman
openssl dhparam -out dh_2048.pem 2048
Αυτό μπορεί να διαρκέσει 15-20 λεπτά
Βήμα 5: Σύνδεση του υλικού
Τροφοδοσία της λωρίδας LED
Η λωρίδα LED τροφοδοτείται από 12 βολτ. Το Raspberry Pi έχει ικανότητα εξόδου μόνο 3.3v ή 5v και δεν είναι ικανό να βγει οπουδήποτε κοντά στους ενισχυτές που απαιτούνται για την οδήγηση τόσων πολλών LED.
Είναι σημαντικό να μην συνδέσετε το τροφοδοτικό 12 volt στο Raspberry Pi.
Η λωρίδα μου είχε επιπλέον καλώδια τροφοδοσίας συνδεδεμένα στη λωρίδα σε κάθε άκρο. Προτείνω να τα κολλήσετε με ταινία για να μην έρθουν σε επαφή με κανένα άλλο εξοπλισμό σας.
Εκτελέστε τα επόμενα βήματα με δική σας ευθύνη. Δεν αναλαμβάνω καμία ευθύνη για οτιδήποτε μπορεί να πάει στραβά.
Λωρίδα LED
Η λωρίδα LED μου έχει τρία καλώδια:
ΚΟΚΚΙΝΟ - +12 Volt
ΜΑΥΡΟ - Έδαφος
ΠΡΑΣΙΝΟ - Δεδομένα
ΣΗΜΕΙΩΣΗ: υπάρχει Din και Dout - Data In and Data Out. Βεβαιωθείτε ότι εργάζεστε με το άκρο της λωρίδας LED που γράφει Din.
Βεβαιωθείτε ότι το Barrel Jack δεν είναι συνδεδεμένο στο τροφοδοτικό
1. Συνδέστε το κόκκινο καλώδιο από τη λωρίδα LED στην + πλευρά του βύσματος της κάννης.
Χρησιμοποίησα ένα λευκό καλώδιο σύνδεσης 22 gauge.
Τοποθετήστε το σύρμα στην υποδοχή + στην υποδοχή της κάννης και βιδώστε το στη θέση του.
Σπρώξτε το άλλο άκρο του καλωδίου στην πρίζα του LED. Βεβαιωθείτε ότι συνδέεστε με το κόκκινο καλώδιο.
2. Συνδέστε το μαύρο καλώδιο από τη λωρίδα LED στην - πλευρά της υποδοχής του βαρελιού.
Χρησιμοποίησα ένα μαύρο καλώδιο σύνδεσης 22 gauge.
Τοποθετήστε το σύρμα στην υποδοχή - στην υποδοχή της κάννης. Σε αυτό το σημείο τοποθετήστε επίσης το αρσενικό άκρο ενός από τα καλώδια σύνδεσης (καφέ σύρμα στη φωτογραφία) στην ίδια τρύπα και βιδώστε τα και τα δύο στη θέση τους.
Σπρώξτε το άλλο άκρο του μαύρου καλωδίου στην πρίζα του 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 πρέπει να έχουν κοινό έδαφος. Σημειώστε επίσης ότι δεν πρέπει να συνδέσετε το 12 Volt + (Κόκκινο σύρμα) στο 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. Αυτά ελέγχονται σε ομάδες τριών. Αυτό σημαίνει ότι δεν μπορώ να ελέγξω κάθε LED ξεχωριστά και πρέπει να στείλω αρκετές πληροφορίες για τον έλεγχο 50.
Εάν το LED σας έχει περισσότερο ή λιγότερο, μπορείτε να παρακάμψετε τον αριθμό των LED που ελέγχετε περνώντας μια παράμετρο στην εκκίνηση. Για παράδειγμα, εάν μπορείτε να ελέγξετε μόνο 10 LED
sudo npm έναρξη 10
Ο κύριος κωδικός διακομιστή βρίσκεται στο αρχείο app.js. Αυτό το αρχείο ξεκινά τον διακομιστή ιστού HTTPS και προσθέτει επίσης στο socket.io για να ακούτε αιτήματα δικτυακής υποδοχής στην ίδια θύρα.
Για να αποκτήσετε πρόσβαση στον ιστότοπο, θα πρέπει να ανοίξετε ένα πρόγραμμα περιήγησης στον κύριο υπολογιστή σας (το έχω δοκιμάσει μόνο στο Chrome) και να χρησιμοποιήσετε τη διεύθυνση IP του Raspberry Pi, π.χ.
10.0.1.2/
Μπορείτε να μάθετε τη διεύθυνση IP σας από τη γραμμή εντολών Raspberry Pi.
ifconfig
Ο διακομιστής ιστού θα προβάλλει οποιοδήποτε περιεχόμενο στον δημόσιο φάκελο. Από προεπιλογή εμφανίζεται η σελίδα index.html.
Διαθέτει ένα τελικό σημείο API - /api /ήχο. Αυτό το τελικό σημείο αναζητά τυχόν αρχεία στον δημόσιο φάκελο/φάκελο ήχου και επιστρέφει τη λίστα. Για παράδειγμα
["" 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. Μπορείτε να το αγνοήσετε ή να το προσθέσετε ως εξαίρεση.
Κατά την επιλογή ενός ονόματος αρχείου, η πηγή για το στοιχείο ήχου 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 (περιτυλίγοντας τη βιβλιοθήκη του Jeremy Garff WS281X) για να αλλάξει τα χρώματα των LED σε μια λωρίδα LED WS2811, με βάση τα δεδομένα που αποστέλλονται μέσω της δικτυακής υποδοχής.
Βήμα 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 κράνος!: Εμπνευσμένο από το κλασικό κράνος «Thomas» του Daft Punk. Φωτίστε το δωμάτιο και ζηλέψτε όλους τους φίλους σας με αυτό το καταπληκτικό κράνος ντίσκο με τροφοδοσία Arduino! Θα χρειαστείτε πρόσβαση σε έναν εκτυπωτή 3D και ένα συγκολλητικό σίδερο για να ολοκληρώσετε αυτό το έργο. Εάν θέλετε να
Φορητό Disco V2 -LED με ελεγχόμενο ήχο: 11 βήματα (με εικόνες)
Φορητές συσκευές Disco V2 -LED με ελεγχόμενο ήχο: Έχω διανύσει πολύ δρόμο με τα ηλεκτρονικά μου ταξίδια από τότε που έκανα την πρώτη μου φορητή ντίσκο. Στην αρχική κατασκευή χάκαρα μαζί ένα κύκλωμα στο πρωτότυπο του σκάφους και κατάφερα να φτιάξω μια τακτοποιημένη, μικρή τσέπη τσέπης. Αυτή τη φορά σχεδίασα το δικό μου PCB και
Led Disco Box: 7 βήματα (με εικόνες)
Led Disco Box: Πώς να φτιάξετε το δικό σας Led Disco Box
Light-Up Disco Table: 27 Βήματα (με Εικόνες)
Light-Up Disco Table: Κάθε διαμέρισμα χρειάζεται φοβερά έπιπλα, οπότε γιατί να μην φτιάξετε το δικό σας; Αυτό το τραπεζάκι σαλονιού περιέχει λωρίδες LED που φωτίζονται σε διάφορα προσαρμόσιμα μοτίβα και χρώματα. Τα φώτα ελέγχονται από ένα Arduino και ένα κρυφό κουμπί, και ολόκληρο το πράγμα
Disco Desktop Organizer: 8 βήματα (με εικόνες)
Disco Desktop Organizer: Υλικά: triplex, πάχος: 3mm Πόσες ξύλινες πλάκες εξαρτώνται από το πόσο μεγάλο είναι το λέιζερ σας … ρυθμίστε το αρχείο στο μέγιστο ξύλινο πιάτο σας … ίσως χρειάζεστε περισσότερα από 1 πιάτα (να το έχετε υπόψη σας). 6 x led φλας (χρησιμοποίησα 7 έγχρωμα led φλας) ava