Πίνακας περιεχομένων:

Μελωδία: 8 βήματα (με εικόνες)
Μελωδία: 8 βήματα (με εικόνες)

Βίντεο: Μελωδία: 8 βήματα (με εικόνες)

Βίντεο: Μελωδία: 8 βήματα (με εικόνες)
Βίντεο: 8 ώρες βαθύς ύπνος μαύρη οθόνη μουσική για αυπνίες, Εμβοές με Κύματα Δέλτα και Λευκός ήχος 2024, Ιούλιος
Anonim
Image
Image
Κατανόηση της Ροής
Κατανόηση της Ροής

Παράλληλα με τα πολλά πλεονεκτήματα και τις τεχνολογικές λύσεις που επιτρέπουν την εργασία από το σπίτι, η δυσκολία διατύπωσης και δημιουργίας υποστήριξης ζωής μεταξύ των συναδέλφων παραμένει. Το MELODY είναι μια ψηφιακή-φυσική συσκευή που επιτρέπει τη δημιουργία συνεργατικών μικρών μουσικών μαρμελάδων. Οι συνάδελφοι συντονίζουν το χρόνο και η συσκευή ορίζει μια συνεδρία εμπλοκής με στροφές και διαφορετικούς τυχαίους ήχους. Ο πρώτος συμμετέχων καθορίζει έναν συγκεκριμένο ρυθμό, μετά τον οποίο κάθε συμμετέχων προσθέτει το δικό του μουσικό τμήμα που αντιστοιχεί στον ρυθμισμένο ρυθμό. Για να διευκολύνει τους χρήστες χωρίς μουσική υπόκρουση, το λογισμικό τους βοηθά να συμβαδίζουν με τη δειγματοληψία των κλικ τους και την προσαρμογή στον κατάλληλο ρυθμό. Η συνεδρία ολοκληρώνεται μετά από περίπου 3 λεπτά όταν όλοι οι συμμετέχοντες έχουν ολοκληρώσει την εγγραφή του μέρους τους.

Πώς λειτουργεί;

Το Melody βασίζεται σε υλικό ESP2866, το οποίο επικοινωνεί με διακομιστή Node-Red μέσω πρωτοκόλλου MQTT. Η συσκευή μεταφράζει τις σημειώσεις του παίκτη σε μια σειρά χαρακτήρων που αποστέλλεται στον διακομιστή και από τον διακομιστή πίσω στους άλλους παίκτες. Αυτό επιτρέπει σε όλους να παίξουν και να ακούσουν τη μελωδία χωρίς διακοπή από τη σύνδεση δικτύου τους.

Η Μελωδία έχει δύο κύριους οπτικούς δείκτες. Το πρώτο είναι μια λωρίδα LED που ενημερώνει τον παίκτη πότε ξεκινά και πότε τελειώνει και υποδεικνύει εάν είναι η σειρά του παίκτη. Το δεύτερο είναι μια οθόνη LED στο κέντρο του προϊόντος, η οποία χρησιμοποιείται για την οπτική εμφάνιση της υπάρχουσας μελωδίας. Η αντίστροφη μέτρηση από το 3 έως το 1 υποδεικνύει την έναρξη της αναπαραγωγής και μια ένδειξη χρονισμών καθοδηγεί το χρήστη πότε και πώς θέλει να συνεισφέρει στη Μελωδία της ομάδας. Η εγγραφή αποθηκεύεται αυτόματα στο cloud της εταιρείας για μελλοντική χρήση.

Αυτό το έργο σχεδιάστηκε από τέσσερις μαθητές στο εργαστήριο καινοτομίας Media (MiLab) στο διεπιστημονικό κέντρο Herzliya (IDC): Shahar Agassy, Eden Bar-Tov, Gal Eshchar και Gad Stern. Με τη βοήθεια των Zvika Markfeld, Netta Ofer και Michal Leschinsky και την καθοδήγηση των Noa Morag και Oren Zuckerman.

ευχαριστώ τον Tom Granot για τη δημιουργία ενός υπέροχου διδακτικού που με βοήθησε να μάθω πώς να εφαρμόζω μερικά από τα πράγματα εδώ (μερικά από τα βήματα εδώ διαμορφώνονται σύμφωνα με αυτό το σπουδαίο διδακτικό).

Προμήθειες

  • Τρισδιάστατος εκτυπωτής
  • ESP8266
  • 7 κουμπιά
  • Μήτρα LED 8Χ8
  • Λωρίδα LED WS2812B
  • Ενισχυτής I2S
  • Γυναικεία υποδοχή ήχου 4 πόλων 1/8 "(3,5 mm)
  • Αντίσταση 4Χ 1Κ
  • Αντίσταση 1X3K

Βήμα 1: Κατανόηση της ροής

Κατανόηση της Ροής
Κατανόηση της Ροής
Κατανόηση της Ροής
Κατανόηση της Ροής

Σε αυτό το έργο προσπαθήσαμε να αντιμετωπίσουμε ορισμένα ζητήματα:

  1. Πώς μπορούμε να το κάνουμε online, ώστε οι παίκτες να μπορούν να παίζουν ταυτόχρονα;
  2. Πώς μπορούμε να ξεπεράσουμε τις καθυστερήσεις στο Διαδίκτυο και να δημιουργήσουμε μια απρόσκοπτη εμπειρία;
  3. Πώς μπορούμε να κάνουμε τη μουσική να ακούγεται καλή ακόμα και για άτομα χωρίς μουσικό υπόβαθρο;

Χρονισμός και σειριοποίηση της μουσικής

Προκειμένου να επιλυθεί το πρώτο ζήτημα, εξετάσαμε το πρωτόκολλο MIDI και προσπαθήσαμε να το χρησιμοποιήσουμε, αλλά είδαμε ότι είναι πιο ισχυρό από αυτό που χρειαζόμασταν επίσης, θέλαμε πραγματικά να το κάνουμε απλό, ώστε να φτιάξουμε το πρώτο πρωτότυπο εργασίας. Πήραμε λοιπόν έμπνευση από το MIDI και κάναμε τον μουσικό μας βρόχο να αντιπροσωπεύεται από μια σειρά αριθμών (από 0-5) φορές το μέγεθος των βρόχων στο χρόνο των παικτών (θα εξηγήσουμε όλα τα μουσικά μαθηματικά αργότερα).

Στη μουσική, χωρίζουμε τους ρυθμούς σε μουσικά μπαρ. Κάθε μπάρα είναι βασικά ένα τμήμα μικρού χρόνου που επιλέγουμε να χρησιμοποιήσουμε 4/4 (δηλαδή 4 παλμούς σε ένα μουσικό μπαρ) - το πιο συνηθισμένο.

Στη συνέχεια, κάθε ρυθμός χωρίζεται σε 4 παράθυρα δειγματοληψίας, οπότε κάθε νότα που παίζεται θα ευθυγραμμιστεί αυτόματα σε μια καλή θέση c και θα μας επιτρέψει επίσης να αναπαραστήσουμε ένα τραγούδι ως μια σειρά αριθμών για αποστολή στον διακομιστή.

Για να είμαστε φιλικοί με παίκτες χωρίς μουσικό υπόβαθρο κάναμε τρία πράγματα:

  1. Περιορίστε τον αριθμό των πλήκτρων για να εστιάσετε τη συσκευή αναπαραγωγής σε λιγότερες επιλογές.
  2. Επιλέξαμε νότες στην ίδια κλίμακα που παίζουν καλά μαζί, ώστε να μην ακούγεται ήχος ασυμφωνίας.
  3. Κάθε πάτημα ρυθμίζεται στο "παράθυρο" του ρυθμού, οπότε ξενίζει τη μουσική του παίκτη στο ρυθμό

Πρωτόκολλα επικοινωνίας

Αφού λοιπόν καταλάβουμε τη λογική πίσω από τη μουσική, πώς μπορούμε να την επικοινωνήσουμε μεταξύ των παικτών μας;

για αυτό, χρησιμοποιούμε το MQTT, ένα πρωτόκολλο δικτύου δημοσίευσης-εγγραφής που μεταφέρει μηνύματα μεταξύ συσκευών.

κάθε παίκτης είναι εγγεγραμμένος σε δύο θέματα: τον βρόχο (λάβετε τον πιο τρέχον βρόχο) και τον γύρο (παίρνει το αναγνωριστικό του τρέχοντος παίκτη για λόγους συγχρονισμού).

Με τη σειρά τους, όταν ένας παίκτης τελειώσει με τον ήχο, θα πατήσει το κουμπί UP και ο βρόχος (ο ενημερωμένος) θα σταλεί στον μεσίτη MQTT, ο οποίος θα τον μεταδώσει πίσω σε όλους τους παίκτες στο κανάλι βρόχου.

αυτός ο βρόχος θα παραμείνει "αδρανής" μέχρι να τελειώσει ο τρέχων βρόχος και στη συνέχεια θα τον αντικαταστήσει. έτσι θα είναι διαφανές για τον παίκτη. επίσης, δεδομένου ότι ο νέος βρόχος αποθηκεύεται επί του παρόντος τοπικά στη συσκευή αναπαραγωγής, δεν υπάρχει καθυστέρηση στο διαδίκτυο για τη μουσική, οπότε λύσαμε το δεύτερο ζήτημα.

Βήμα 2: Ρύθμιση διακομιστή - Ngrok

Ρύθμιση διακομιστή - Ngrok
Ρύθμιση διακομιστή - Ngrok
Ρύθμιση διακομιστή - Ngrok
Ρύθμιση διακομιστή - Ngrok

Το ngrok είναι μια υπηρεσία σήραγγας. Μας επιτρέπει να εκθέσουμε μια τοπικά εκτελούμενη υπηρεσία (στην περίπτωσή μας, Node -RED) στον έξω κόσμο - χωρίς ταλαιπωρία για τη δημιουργία διακομιστή ή την αντιμετώπιση εγγραφών DNS. Απλώς εκτελείτε το Node-RED στον υπολογιστή σας και στη συνέχεια εκτελείτε το ngrok στην ίδια θύρα Το Node-RED λειτουργεί.

Αυτό είναι όλο - θα λάβετε μια διεύθυνση URL που μπορείτε να χρησιμοποιήσετε για πρόσβαση στο Node -RED από οπουδήποτε στον κόσμο, ανεξάρτητα από το δίκτυο στο οποίο είναι συνδεδεμένο.

Εγκατάσταση & Διαμόρφωση

  1. Κατεβάστε το ngrok για το λειτουργικό σας σύστημα από εδώ.
  2. Ακολουθήστε το βήμα στη σελίδα λήψης, μέχρι το βήμα "Fire it up".
  3. Στο "Fire it up step", αλλάξτε το 80 με το 1883 - και το http to tcp όπως στο,./ngrok tcp 1883 ανάλογα με το
  4. αποθηκεύστε τη διεύθυνση URL και τον αριθμό θύρας (έχει εμφανιστεί στην εικόνα) θα χρειαστούμε το, αργότερα.

Βήμα 3: Ρύθμιση διακομιστή - Κόμβος -Κόκκινο

Ρύθμιση διακομιστή - Κόμβος -Κόκκινο
Ρύθμιση διακομιστή - Κόμβος -Κόκκινο

Η λογική διακομιστή του έργου, Node-RED είναι ένα οπτικό περιβάλλον προγραμματισμού που σας επιτρέπει να συνδέσετε διάφορα λογισμικά (και υλικό!).

Εδώ κάναμε τη λογική της επικοινωνίας μεταξύ όλων των παικτών (κοινή χρήση και λήψη των βρόχων και συντονισμός των στροφών)

Εγκατάσταση του Κόμβου-Κόκκινου

ακολουθήστε τα παρακάτω βήματα για να φορτώσετε τη ροή Node-RED στον τοπικό υπολογιστή σας:

  1. Το Node-RED απαιτεί Node.js, εγκαταστήστε το από εδώ
  2. εγκαταστήστε το ίδιο το Node-RED χρησιμοποιώντας τις οδηγίες εδώ.

Τώρα που έχετε εγκαταστήσει το Node-RED, εκτελέστε το χρησιμοποιώντας τις οδηγίες στο παραπάνω βήμα και επικυρώστε μπορείτε να δείτε μια κενή σελίδα καμβά. Θα πρέπει να βρίσκεται στη διεύθυνση

Τώρα θα χρειαστεί να εισαγάγετε τη ροή που χρησιμοποιήσαμε για αυτό το έργο, μπορείτε να τη βρείτε εδώ και απλά πατήστε εισαγωγή, προσθέστε το αρχείο JSON και πατήστε Ανάπτυξη.

Εγκατάσταση του Κόμβου-Κόκκινου:

αν κοιτάξετε την εικόνα που επισυνάπτεται σε αυτό το βήμα, μπορείτε να δείτε ότι έχουμε 2 κύριες "ενέργειες", λαμβάνουμε έναν τρέχον βρόχο από έναν από τους παίκτες μας και στη συνέχεια τον μεταδίδουμε σε όλους τους άλλους παίκτες. Επιπλέον, μεταδίδουμε τη νέα στροφή σε όλους τους παίκτες. έτσι το παιχνίδι παραμένει συγχρονισμένο.

Βήμα 4: Ρύθμιση του διακομιστή - MQTT (Mosquitto)

Ρύθμιση διακομιστή - MQTT (Mosquitto)
Ρύθμιση διακομιστή - MQTT (Mosquitto)

Δεδομένου ότι το Node-RED δεν έχει δικό του μεσίτη MQTT και θα χρειαστεί να επικοινωνήσουμε με τους αισθητήρες και τους ενεργοποιητές μας μέσω MQTT, θα χρησιμοποιήσουμε έναν ειδικό μεσίτη MQTT. Δεδομένου ότι η Node-RED προτείνει το Mosquitto, αυτό είναι αυτό που θα χρησιμοποιήσουμε. Δείτε εδώ για μερικές πληροφορίες σχετικά με το MQTT και γιατί χρησιμοποιείται συχνά σε έργα IoT.

Εγκατάσταση & Διαμόρφωση

  1. Κατεβάστε το Mosquitto από εδώ και εγκαταστήστε το, σύμφωνα με το λειτουργικό σας σύστημα.
  2. Κανονικά, θα πρέπει να ακολουθήσετε τις οδηγίες εδώ για να συνδέσετε το Node-RED στο Mosquitto. Ωστόσο, εάν χρησιμοποιήσατε τη ροή μας, έχει ήδη διαμορφωθεί για εσάς. Εφόσον εγκαταστήσετε σωστά τη ροή και το Mosquitrro και το Mosquitto εκτελείται στη θύρα 1883 (στην οποία λειτουργεί από προεπιλογή), θα πρέπει να λειτουργεί εκτός πλαισίου.
  3. Σημειώστε ότι αυτό σημαίνει ότι ο μεσίτης MQTT και ο διακομιστής Node-RED λειτουργούν στον ίδιο υπολογιστή. Αυτό είναι χρήσιμο για την απλοποίηση της επικοινωνίας μέσα στο σύστημα. Δείτε την παρακάτω σημείωση για περισσότερες πληροφορίες.

Παρακολούθηση της κίνησης MQTT

Χρησιμοποίησα το MQTTfx για να παρακολουθώ την κίνηση, είναι ένα εξαιρετικό εργαλείο με πολύ απλό GUI.

Βήμα 5: Ο Κώδικας

Ο κώδικας
Ο κώδικας

μπορείτε να βρείτε τον κώδικα στο GitHub (με όλα τα αρχεία δεδομένων και το config.h)

Εξαρτήσεις:

πριν φορτώσετε τον κώδικα στο esp2866 θα χρειαστεί να εγκαταστήσετε μερικές βιβλιοθήκες:

  1. libmad-8266 (αποκωδικοποιήστε τη μουσική από SPIFF και σε I2S)
  2. EspMQTTC client
  3. ESP8266WiFi
  4. Adafruit_NeoPixel

Ανεβάστε τους ήχους στο ESP χρησιμοποιώντας SPIFF:

  1. ακολουθήστε αυτό το σπουδαίο οδηγό.
  2. προσθέστε το φάκελο δεδομένων στον κατάλογο του πηγαίου κώδικα.
  3. Στο Arduino IDE στην περιοχή Εργαλεία αλλάξτε το μέγεθος του φλας σε "4MB (FS: 3MB TOA: ~ 512KB)"
  4. Επίσης στην ενότητα Εργαλεία Πατήστε ESP2866 Sketch Data Upload

Ρύθμιση παραμέτρων:

μετά από αυτό, μεταβείτε στο αρχείο config.h και προσθέστε τα απαιτούμενα δεδομένα, όπως διαπιστευτήρια WIFI και διεύθυνση θερμότητας και θύρα ngrok από το προηγούμενο βήμα (ελέγξτε τη συνημμένη φωτογραφία για αναφορά).

p.s-Έχω προσθέσει ακόμα μια λειτουργία αυτόματης σύνδεσης για να σας βοηθήσω να ρυθμίσετε τα δεδομένα WIFI και ζεστού από το έξυπνο τηλέφωνό σας, καθώς ήταν απλώς μια πρώτη απόδειξη της ιδέας, θα ήθελα να το προσθέσω κάποια μέρα.

Ρυθμίστε το ποσό του παίκτη που επιθυμείτε (αυτό το παιχνίδι λειτουργεί καλύτερα για 2-3 παίκτες και έξω από το κουτί είναι φορτωμένο με μια σειρά ήχων για 2 παίκτες). αλλά μπορεί εύκολα να ρυθμιστεί για περισσότερα:

για κάθε παίκτη προσθέστε άλλη ροή στο κόκκινο κόμβο για να δημοσιεύσετε έναν βρόχο σε ένα θέμα που αφορά συγκεκριμένο χρήστη.

Επίσης, μπορείτε να επεξεργαστείτε τον μουσικό ήχο μετατρέποντας αυτήν τη συστοιχία στους προσαρμοσμένους ήχους σας:

εδώ μπορείτε να δείτε 3 είδη οργάνων (Chrods για παίκτη 0, Lead για player 1 και Bass για player 2)

const char* paths [NUMofNotes] = {"/blank1.wav", "/Chords_Am.wav", "/Chords_F.wav", "/Chords_C.wav", "/Chords_G.wav", "/Chords_Dm.wav", "/blank2.wav", "/Lead_C.wav", "/Lead_D.wav", "/Lead_E.wav", "/Lead_G.wav", "/Lead_A.wav", "/blank0.wav", "/Bass_C3.wav", "/Bass_D3.wav", "/Bass_F3.wav", "/Bass_G3.wav", "/Bass_A3.wav"};

Βήμα 6: Εκτυπώστε το μοντέλο 3D

Εκτυπώστε το τρισδιάστατο μοντέλο
Εκτυπώστε το τρισδιάστατο μοντέλο
Εκτυπώστε το τρισδιάστατο μοντέλο
Εκτυπώστε το τρισδιάστατο μοντέλο
Εκτυπώστε το τρισδιάστατο μοντέλο
Εκτυπώστε το τρισδιάστατο μοντέλο
Εκτυπώστε το τρισδιάστατο μοντέλο
Εκτυπώστε το τρισδιάστατο μοντέλο

Για το πρώτο βήμα, κατεβάστε το STL και εκτυπώστε το.

μετά την αφαίρεση των στηριγμάτων και ίσως λίγο τρίψιμο (ανάλογα με την ανάλυση του εκτυπωτή)

βάψτε το στο επιθυμητό χρώμα

Βήμα 7: Συναρμολόγηση και συγκόλληση

Συναρμολόγηση και συγκόλληση
Συναρμολόγηση και συγκόλληση

Ουσιαστικά εδώ είναι που συμβαίνει η πραγματική μαγεία.

μπορείτε να ακολουθήσετε αυτά τα σχήματα και να συγκολλήσετε τα πάντα μαζί.

Λάβετε υπόψη ότι μπορείτε να αλλάξετε τη θέση των κωδικών PIN, απλώς θυμηθείτε να την αλλάξετε και στον κώδικα.

το A0 και το I2S είναι αρκετά σταθερά στη θέση τους:

δεδομένου ότι το A0 είναι για τη γέφυρα αντίστασης (χρησιμοποιούμε τη διαφορά στο ρεύμα για να γνωρίζουμε ποιο κουμπί από το 5 πατήθηκε - παρόμοιο με αυτό το Instructables.

το I2S έχει συγκεκριμένη κωδικοποίηση μπορείτε να το βρείτε εδώ

Βήμα 8: Παίξτε μερικούς βρόχους με τους φίλους σας

Συνιστάται: