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

Ultrasonic Pi Piano With Gesture Controls !: 10 βήματα (με εικόνες)
Ultrasonic Pi Piano With Gesture Controls !: 10 βήματα (με εικόνες)

Βίντεο: Ultrasonic Pi Piano With Gesture Controls !: 10 βήματα (με εικόνες)

Βίντεο: Ultrasonic Pi Piano With Gesture Controls !: 10 βήματα (με εικόνες)
Βίντεο: 30 Ultimate Windows 10 Συμβουλές και κόλπα για το 2020 2024, Ιούλιος
Anonim
Image
Image
Υπερηχητικό Pi πιάνο με χειριστήρια χειρονομίας!
Υπερηχητικό Pi πιάνο με χειριστήρια χειρονομίας!

Αυτό το έργο χρησιμοποιεί φθηνούς αισθητήρες υπερήχων HC-SR04 ως εισόδους και δημιουργεί σημειώσεις MIDI που μπορούν να αναπαραχθούν μέσω ενός συνθεσάιζερ στο Raspberry Pi για ήχο υψηλής ποιότητας.

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

Το παραπάνω βίντεο δείχνει το τελικό προϊόν σε ένα απλό περίβλημα κομμένο με λέιζερ. Υπάρχει ένα πιο λεπτομερές βίντεο αργότερα σε αυτό το διδακτικό που εξηγεί πώς λειτουργεί το έργο.

Δημιούργησα αυτό το έργο σε συνεργασία με το The Gizmo Dojo (ο τοπικός μου χώρος κατασκευής στο Broomfield, CO) για να φτιάξω μερικά διαδραστικά εκθέματα που μπορούμε να πάρουμε σε τοπικές εκδηλώσεις STEM/STEAM και Maker Faires.

Ελέγξτε επίσης την πιο πρόσφατη τεκμηρίωση και τα σεμινάρια στη διεύθυνση https://theotherandygrove.com/octasonic/ που περιλαμβάνει τώρα πληροφορίες σχετικά με μια έκδοση Python αυτού του έργου (αυτό το εκπαιδευτικό γράφτηκε για την έκδοση Rust).

Βήμα 1: Συστατικά

Για αυτό το διδακτικό, θα χρειαστείτε τα ακόλουθα συστατικά:

  • Raspberry Pi (2 ή 3) με κάρτα SD
  • 8 αισθητήρες υπερήχων HC-SR04
  • Octasonic Breakout Board
  • Μετατροπέας επιπέδου λογικής διπλής κατεύθυνσης
  • 32 x 12 "Female-Female Jumper Wires για σύνδεση υπερηχητικών αισθητήρων
  • 13 x 6 "Female-Female Jumper Wires για σύνδεση Raspberry Pi, Octasonic και Logic Level Converter
  • Κατάλληλο τροφοδοτικό για το Raspberry Pi
  • Ηχεία υπολογιστή ή παρόμοια

Θα συνιστούσα να χρησιμοποιήσετε ένα Raspberry Pi 3 αν είναι δυνατόν, καθώς έχει μεγαλύτερη υπολογιστική ισχύ, με αποτέλεσμα έναν πιο ευαίσθητο και ευχάριστο ήχο. Μπορεί να λειτουργήσει άψογα με ένα Raspberry Pi 2 με λίγο τσίμπημα, αλλά δεν θα προσπαθούσα να χρησιμοποιήσω το αρχικό Raspberry Pi για αυτό το έργο.

Οι αισθητήρες υπερήχων HC -SR04 έχουν 4 συνδέσεις - 5V, GND, Trigger και Echo. Συνήθως, το Trigger και το Echo συνδέονται με ξεχωριστές ακίδες σε μικροελεγκτή ή Raspberry Pi, αλλά αυτό σημαίνει ότι θα χρειαστεί να χρησιμοποιήσετε 16 ακίδες για να συνδέσετε 8 αισθητήρες, και αυτό δεν είναι πρακτικό. Εδώ έρχεται η πλακέτα διαρροής Octasonic. Αυτός ο πίνακας συνδέεται με όλους τους αισθητήρες και διαθέτει έναν ειδικό μικροελεγκτή που παρακολουθεί τους αισθητήρες και στη συνέχεια επικοινωνεί με το Raspberry Pi μέσω SPI.

Το HC-SR04 απαιτεί 5V και το Raspberry Pi είναι μόνο 3.3V, γι 'αυτό χρειαζόμαστε επίσης τον μετατροπέα λογικού επιπέδου που θα συνδέσει το Raspberry Pi με την πλακέτα οκτάσωνικ.

Βήμα 2: Συνδέστε τους αισθητήρες υπερήχων στο Octasonic Board

Συνδέστε τους αισθητήρες υπερήχων στην πλακέτα Octasonic
Συνδέστε τους αισθητήρες υπερήχων στην πλακέτα Octasonic
Συνδέστε τους αισθητήρες υπερήχων στην πλακέτα Octasonic
Συνδέστε τους αισθητήρες υπερήχων στην πλακέτα Octasonic

Χρησιμοποιήστε 4 καλώδια άλματος γυναικών-γυναικών για να συνδέσετε κάθε αισθητήρα υπερήχων στην πλακέτα, προσέχοντας να τα συνδέσετε σωστά. Ο πίνακας έχει σχεδιαστεί έτσι ώστε οι ακίδες να είναι στην ίδια σειρά με τις ακίδες στον αισθητήρα υπερήχων. Από αριστερά προς τα δεξιά στον πίνακα, οι ακίδες είναι GND, Trigger, Echo, 5V.

Βήμα 3: Συνδέστε το Logic Level Converter στο Octasonic Board

Συνδέστε το Logic Level Converter στον Octasonic Board
Συνδέστε το Logic Level Converter στον Octasonic Board

Το Raspberry Pi και το Octasonic Board επικοινωνούν μέσω SPI. Το SPI χρησιμοποιεί 4 καλώδια:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Σειριακό ρολόι (SCK)
  • Slave Select (SS)

Επιπλέον, πρέπει να συνδέσουμε τροφοδοσία (5V και GND).

Ο μετατροπέας λογικού επιπέδου έχει δύο πλευρές - χαμηλή τάση (LV) και υψηλή τάση (HV). Το Raspberry θα συνδεθεί στην πλευρά LV αφού είναι 3,3V. Το Octasonic θα συνδεθεί με την πλευρά του HV αφού είναι 5V.

Αυτό το βήμα είναι για τη σύνδεση του Octasonic με την πλευρά HV του μετατροπέα λογικού επιπέδου

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

Οι συνδέσεις από το Octasonic στον μετατροπέα Logic Level πρέπει να είναι οι εξής:

  • 5V έως HV
  • SCK έως HV4
  • MISO έως HV3
  • MOSI έως HV2
  • SS έως HV1
  • GND σε GND

Βήμα 4: Συνδέστε το Logic Level Converter στο Raspberry Pi

Συνδέστε το Logic Level Converter στο Raspberry Pi
Συνδέστε το Logic Level Converter στο Raspberry Pi

Το Raspberry Pi και το Octasonic Board επικοινωνούν μέσω SPI. Το SPI χρησιμοποιεί 4 καλώδια:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Σειριακό ρολόι (SCK)
  • Slave Select (SS)

Επιπλέον, πρέπει να συνδέσουμε τροφοδοσία (3.3V και GND). Ο μετατροπέας λογικού επιπέδου έχει δύο πλευρές - χαμηλή τάση (LV) και υψηλή τάση (HV). Το Raspberry θα συνδεθεί στην πλευρά LV αφού είναι 3,3V. Το Octasonic θα συνδεθεί με την πλευρά του HV αφού είναι 5V.

Αυτό το βήμα αφορά τη σύνδεση του Raspberry Pi με την πλευρά LV του μετατροπέα λογικού επιπέδου

Οι συνδέσεις από το Raspbery Pi στον μετατροπέα Logic Level πρέπει να είναι οι εξής:

  • 3,3V έως LV
  • GPIO11 (SPI_SCLK) έως LV4
  • GPIO09 (SPI_MISO) έως LV3
  • GPIO10 (SPI_MOSI) έως LV2
  • GPIO08 (SPI_CE0_N) SS έως LV1
  • GND σε GND

Χρησιμοποιήστε το διάγραμμα που επισυνάπτεται σε αυτό το βήμα για να εντοπίσετε τις σωστές ακίδες στο Raspberry Pi!

Βήμα 5: Συνδέστε το Raspberry Pi 5V στο Octasonic 5V

Συνδέστε το Raspberry Pi 5V στο Octasonic 5V
Συνδέστε το Raspberry Pi 5V στο Octasonic 5V
Συνδέστε το Raspberry Pi 5V στο Octasonic 5V
Συνδέστε το Raspberry Pi 5V στο Octasonic 5V

Υπάρχει ένα τελευταίο καλώδιο για προσθήκη. Πρέπει πραγματικά να τροφοδοτήσουμε την πλακέτα Octasonic με 5V, γι 'αυτό το κάνουμε συνδέοντας έναν από τους ακροδέκτες Raspberry Pi 5V με τον πείρο 5V στην κεφαλίδα Octasonic AVR. Αυτός είναι ο κάτω αριστερός πείρος στο μπλοκ κεφαλίδας AVR (αυτό είναι το μπλοκ 2 x 3 στην επάνω δεξιά γωνία του πίνακα). Δείτε τη συνημμένη φωτογραφία που δείχνει πού βρίσκεται το μπλοκ AVR.

Δείτε το άλλο συνημμένο διάγραμμα για να βρείτε τον πείρο 5V στο Raspberry Pi.

Βήμα 6: Εγκατάσταση λογισμικού

Εγκαταστήστε το Raspian

Ξεκινήστε με μια καθαρή εγκατάσταση του Raspbian Jessie και, στη συνέχεια, ενημερώστε την στην πιο πρόσφατη έκδοση:

sudo apt-get ενημέρωση

sudo apt-get αναβάθμιση

Ενεργοποίηση SPI

Πρέπει να ενεργοποιήσετε το SPI στο Raspberry Pi για να λειτουργήσει αυτό το έργο! Χρησιμοποιήστε το βοηθητικό πρόγραμμα Raspberry Pi Configuration για να το κάνετε αυτό.

Είναι επίσης σημαντικό να επανεκκινήσετε το Pi αφού ενεργοποιήσετε το SPI για να τεθεί σε ισχύ

Εγκαταστήστε το FluidSynth

Το Fluidsynth είναι ένα εκπληκτικό δωρεάν λογισμικό MIDI synth. Μπορείτε να το εγκαταστήσετε από τη γραμμή εντολών με αυτήν την εντολή:

sudo apt-get install fluidsynth

Εγκαταστήστε τη γλώσσα προγραμματισμού Rust

Το Ultrasonic Pi Piano υλοποιείται στη γλώσσα προγραμματισμού Rust από τη Mozilla (είναι σαν το C ++ αλλά χωρίς τα άσχημα κομμάτια). Είναι αυτό που χρησιμοποιούν όλα τα ωραία παιδιά αυτές τις μέρες.

Ακολουθήστε τις οδηγίες στη διεύθυνση https://rustup.rs/ για να εγκαταστήσετε το Rust. Για να εξοικονομήσετε χρόνο, οι οδηγίες είναι να εκτελέσετε αυτήν την εντολή. Μπορείτε να αποδεχτείτε τις προεπιλεγμένες απαντήσεις σε τυχόν ερωτήσεις κατά την εγκατάσταση.

ΣΗΜΕΙΩΣΗ: Από τη δημοσίευση αυτού του οδηγού, υπάρχουν ορισμένα προβλήματα με την εγκατάσταση του Rust στο Raspberry Pi. Κακός χρόνος:-/ αλλά έχω τροποποιήσει την παρακάτω εντολή για να λυθεί το ζήτημα. Ας ελπίσουμε ότι θα το διορθώσουν σύντομα. Δουλεύω στη δημιουργία μιας εικόνας που οι άνθρωποι μπορούν να κατεβάσουν και να εγγράψουν σε μια κάρτα SD. Αν το θέλετε, παρακαλώ επικοινωνήστε μαζί μου.

εξαγωγή RUSTUP_USE_HYPER = 1curl https://sh.rustup.rs -sSf | SH

Κατεβάστε τον πηγαίο κώδικα Ultrasonic Pi Piano

Ο πηγαίος κώδικας για τον πηγαίο κώδικα Ultrasonic Pi Piano φιλοξενείται στο github. Υπάρχουν δύο επιλογές για τη λήψη του κωδικού. Εάν είστε εξοικειωμένοι με το git και το github, μπορείτε να κλωνοποιήσετε το repo:

git clone [email protected]: TheGizmoDojo/UltrasonicPiPiano.git

Εναλλακτικά, μπορείτε να κατεβάσετε ένα αρχείο zip του πιο πρόσφατου κώδικα.

Συγκεντρώστε τον πηγαίο κώδικα

cd UltrasonicPiPiano

κατασκευή φορτίου -απελευθέρωση

Δοκιμάστε τον κωδικό

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

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

cargo run -απελευθέρωση

Εάν είστε περίεργοι, η σημαία "-απελευθέρωση" λέει στον Rust να μεταγλωττίσει τον κώδικα όσο το δυνατόν πιο αποτελεσματικά, σε αντίθεση με την προεπιλεγμένη ρύθμιση "--debug".

Βήμα 7: Φτιάξτε λίγη μουσική

Βεβαιωθείτε ότι είστε ακόμα στον κατάλογο στον οποίο πραγματοποιήσατε λήψη του πηγαίου κώδικα και εκτελέστε την ακόλουθη εντολή.

Αυτό το σενάριο "run.sh" διασφαλίζει ότι ο κώδικας έχει μεταγλωττιστεί και στη συνέχεια εκτελεί τον κώδικα, διοχετεύοντας την έξοδο στο fluidsynth.

./run.sh

Βεβαιωθείτε ότι έχετε ενισχυμένα ηχεία συνδεδεμένα στην υποδοχή ήχου 3,5 mm στο Raspberry Pi και πρέπει να ακούτε μουσική καθώς κινείτε τα χέρια σας πάνω από τους αισθητήρες.

Εάν δεν ακούτε μουσική και έχετε συνδεδεμένη οθόνη HDMI, τότε η έξοδος ήχου μάλλον πηγαίνει εκεί. Για να το διορθώσετε, απλώς εκτελέστε αυτήν την εντολή και, στη συνέχεια, ξεκινήστε ξανά το Pi Piano:

sudo amixer cset numid = 3 1

Αλλαγή έντασης

Ο όγκος (ή "κέρδος") καθορίζεται με την παράμετρο "-g" σε fluidsynth. Μπορείτε να τροποποιήσετε το σενάριο run.sh και να αλλάξετε αυτήν την τιμή. Λάβετε υπόψη ότι μικρές αλλαγές σε αυτήν την παράμετρο έχουν ως αποτέλεσμα μεγάλη αλλαγή στον όγκο, οπότε προσπαθήστε να την αυξήσετε κατά μικρές ποσότητες (όπως 0,1 ή 0,2).

Βήμα 8: Έλεγχος χειρονομίας

Δείτε το βίντεο που επισυνάπτεται σε αυτό το βήμα για μια πλήρη επίδειξη του έργου, συμπεριλαμβανομένου του τρόπου λειτουργίας των χειριστηρίων χειρονομίας.

Η ιδέα είναι πολύ απλή. Το λογισμικό παρακολουθεί ποιοι αισθητήρες καλύπτονται (εντός 10 εκατοστών) και ποιοι όχι. Αυτό μεταφράζεται σε 8 δυαδικούς αριθμούς (1 ή 0). Αυτό είναι πολύ βολικό, δεδομένου ότι μια ακολουθία 8 δυαδικών αριθμών δημιουργεί ένα "byte" το οποίο μπορεί να αντιπροσωπεύει αριθμούς μεταξύ 0 και 255. Εάν δεν γνωρίζετε ήδη για δυαδικούς αριθμούς, συνιστώ ανεπιφύλακτα να αναζητήσετε ένα σεμινάριο. Οι δυαδικοί αριθμοί είναι μια θεμελιώδης δεξιότητα για να μάθετε εάν θέλετε να μάθετε περισσότερα για τον προγραμματισμό.

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

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

Βήμα 9: Δημιουργία περιβλήματος

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

Βήμα 10: Αντιμετώπιση προβλημάτων και επόμενα βήματα

Αντιμετώπιση προβλημάτων

Εάν το έργο δεν λειτουργεί, συνήθως οφείλεται σε σφάλμα καλωδίωσης. Πάρτε το χρόνο σας για να ελέγξετε ξανά όλες τις συνδέσεις.

Ένα άλλο κοινό πρόβλημα είναι η αποτυχία ενεργοποίησης του SPI και η επανεκκίνηση του pi.

Επισκεφτείτε τη διεύθυνση https://theotherandygrove.com/octasonic/ για πλήρη τεκμηρίωση, συμπεριλαμβανομένων συμβουλών αντιμετώπισης προβλημάτων, με συγκεκριμένα άρθρα Rust και Python, καθώς και πληροφορίες σχετικά με τον τρόπο απόκτησης υποστήριξης.

Επόμενα βήματα

Μόλις ολοκληρώσετε το έργο, συνιστώ να πειραματιστείτε με τον κώδικα και να δοκιμάσετε διαφορετικά μουσικά όργανα. Οι κωδικοί οργάνων MIDI είναι μεταξύ 1 και 127 και τεκμηριώνονται εδώ.

Θέλετε ένα μόνο μουσικό όργανο με κάθε αισθητήρα να παίζει διαφορετική οκτάβα; Perhapsσως θα θέλατε κάθε αισθητήρας να είναι ξεχωριστό όργανο; Οι δυνατότητες είναι σχεδόν απεριόριστες!

Ελπίζω να σας άρεσε αυτό το διδακτικό. Σας αρέσει αν σας άρεσε και βεβαιωθείτε ότι έχετε εγγραφεί εδώ και στο κανάλι μου στο YouTube για να δείτε μελλοντικά έργα.

Συνιστάται: