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

Σπάζοντας ποτήρια κρασιού με ήχο !: 10 βήματα (με εικόνες)
Σπάζοντας ποτήρια κρασιού με ήχο !: 10 βήματα (με εικόνες)

Βίντεο: Σπάζοντας ποτήρια κρασιού με ήχο !: 10 βήματα (με εικόνες)

Βίντεο: Σπάζοντας ποτήρια κρασιού με ήχο !: 10 βήματα (με εικόνες)
Βίντεο: ΣΟΚ: ΒΡΗΚΑ ΚΑΡΧΑΡΙΑ😱😱 2024, Ιούλιος
Anonim
Image
Image

Γειά σας και καλώς ήρθατε!

Εδώ είναι μια πλήρης επίδειξη του έργου!

Το ηχείο βγαίνει περίπου 130 dB στην άκρη του σωλήνα του, οπότε ΑΠΑΙΤΕΙΤΑΙ ΟΡΙΣΤΙΚΑ η προστασία ακοής!

Η ιδέα για αυτό το έργο έχει ως εξής:

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

Κουμπί ελέγχου και λειτουργίας:

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

- Επάνω δεξιά είναι ένας διακόπτης ON/OFF. Ενεργοποιεί ή απενεργοποιεί το ρεύμα σε ολόκληρο το κύκλωμα.

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

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

Εάν ενδιαφέρεστε επίσης για το σπάσιμο γυαλιού, ακολουθήστε αυτό το Instructable και ίσως μάθετε κάτι τακτοποιημένο στην πορεία. Απλώς ένα head-up, αυτό το έργο περιλαμβάνει πολλή συγκόλληση και τρισδιάστατη εκτύπωση, οπότε μπορεί να είναι λίγο δύσκολο. Ταυτόχρονα, είστε ήδη αρκετά καταπληκτικοί στο να φτιάχνετε πράγματα (Είστε σε Instrucables, έτσι δεν είναι;).

Προετοιμαστείτε λοιπόν και…

Ας φτιάξουμε ρομπότ!

Βήμα 1: Υλικά, εργαλεία και εξοπλισμός

Υλικά, εργαλεία και εξοπλισμός
Υλικά, εργαλεία και εξοπλισμός
Υλικά, εργαλεία και εξοπλισμός
Υλικά, εργαλεία και εξοπλισμός

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

ΑΠΑΙΤΕΙΤΑΙ:

Υλικά:

  • Ποτήρια κρασιού - όλα είναι καλά, πήγα στο Goodwill και βρήκα φθηνό, όσο πιο λεπτό τόσο το καλύτερο
  • Σύρμα (διάφορα χρώματα θα είναι χρήσιμα, χρησιμοποίησα 12 μετρητή)
  • Μπαταρία 6S 22.2v Lipo (Δεν χρειάζεστε πραγματικά υψηλό mAh, χρησιμοποίησα 1300):

    hobbyking.com/en_us/turnigy-1300mah-6s-35c…

  • Κάποιος σύνδεσμος μπαταρίας. Εάν χρησιμοποιήσατε το παραπάνω, αυτό είναι ένα XT60:
  • Ηχείο συμπίεσης - Χρειάζεστε κάτι με υψηλή βαθμολογία ευαισθησίας (~ 100 dB):

    www.amazon.com/dp/B075K3P2CL/ref=psdc_1098…

  • Μικρόφωνο συμβατό με Arduino:

    www.amazon.com/Electret-Microphone-Amplifi…

  • Arduino (Uno για μη-σοκολάρισμα ή Nano για λείανση):

    www.amazon.com/ELEGOO-Arduino-ATmega328P-W…

  • Περιστροφικός κωδικοποιητής:

    www.amazon.com/Encoder-15%C3%9716-5-Arduin…

  • Κάποιος διακόπτης ON/OFF είναι επίσης χρήσιμος (τα χρησιμοποίησα αυτά):

    www.amazon.com/Encoder-15%C3%9716-5-Arduin…

  • Κουμπιά ώθησης:

    www.adafruit.com/product/1009

  • Τουλάχιστον ενισχυτής 60W:

    www.amazon.com/KKmoon-TPA3118-Digital-Ampl…

  • 5v BEC για την τροφοδοσία του Arduino:

    www.amazon.com/Servo-Helicopter-Airplane-R…

Εργαλεία / Εξοπλισμός:

  • ΠΡΟΣΤΑΣΙΑ ΑΚΡΟΑΣΗΣ - Δεν αστειεύομαι, αυτός ο τύπος ξεπερνά τα 130 dB, κάτι που μπορεί να προκαλέσει άμεση ζημιά
  • Συγκολλητικό σίδερο
  • Κόλλα μετάλλων
  • Συρματόσχοινα
  • Χαρτί άμμου
  • Πυροβόλο θερμό κόλλα

ΔΕΝ ΑΠΑΙΤΕΙΤΑΙ:

Τα παρακάτω απαιτούνται μόνο εάν θέλετε επίσης να δημιουργήσετε το πλήρες περίβλημα 3D εκτύπωσης για το έργο σας

Υλικά:

  • Συνδετήρες Bullet:
  • Συρρίκνωση θερμότητας καλωδίων:
  • Πολλά νήματα ABS - δεν μέτρησα πόσο χρησιμοποίησα, αλλά υπάρχουν δύο εκτυπώσεις 24 ωρών και μία εκτύπωση 8 ωρών
  • Ποικιλία από βίδες και μπουλόνια M3 - Τεχνικά μπορείτε πιθανώς να χρησιμοποιήσετε οποιοδήποτε μέγεθος εάν θέλετε να ανοίξετε τις τρύπες γι 'αυτό. Αλλά έκανα το σχέδιο έχοντας κατά νου τις βίδες Μ3.

Εργαλεία / Εξοπλισμός:

  • 3D εκτυπωτής - χρησιμοποίησα το Ultimaker 2
  • Ένα Dremel είναι επίσης χρήσιμο εάν ο εκτυπωτής αφήσει κάποια υπολείμματα από την πλευρά σας.

Βήμα 2: Δημιουργία δοκιμαστικού κυκλώματος

Δημιουργία δοκιμαστικού κυκλώματος
Δημιουργία δοκιμαστικού κυκλώματος
Δημιουργία δοκιμαστικού κυκλώματος
Δημιουργία δοκιμαστικού κυκλώματος
Δημιουργία δοκιμαστικού κυκλώματος
Δημιουργία δοκιμαστικού κυκλώματος

Στη συνέχεια, θα θέλουμε να κατασκευάσουμε το κύκλωμα χρησιμοποιώντας καλώδια και βραχίονα με πιέσεις πιθανότατα!

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

Στην πρώτη φωτογραφία που δημοσιεύτηκε, δεν έχω συνδέσει την πλακέτα ενισχυτή ή τον διακόπτη τροφοδοσίας, απλώς συνέδεσα τις ακίδες 9 και 10 σε ένα μίνι δοκιμαστικό ηχείο που είχα, αλλά σας ενθαρρύνω να τα συνδυάσετε ΟΛΑ πριν προχωρήσετε.

Πάνω στο κύκλωμα:

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

Ας ξεκινήσουμε με το τροφοδοτικό:

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

Στη συνέχεια, το θετικό άκρο πηγαίνει από το διακόπτη στην πλακέτα ενισχυτή.

Το αρνητικό άκρο της μπαταρίας ΔΕΝ χρειάζεται να περάσει από το διακόπτη. Μπορεί να μεταβεί απευθείας στο Power-end του Amp.

Στη συνέχεια, ο πίνακας ενισχυτή:

Ο πίνακας ενισχυτή έχει τέσσερις σειρές ακίδων, κάθε σετ έχει δύο διαμπερείς οπές. Δεν χρησιμοποιώ τη λειτουργία "Σίγαση" αυτού του πίνακα, οπότε μη διστάσετε να ανησυχείτε για αυτό. Έχω ήδη περιγράψει παραπάνω ότι το Power + και το Power - θα πρέπει να παίρνουν απευθείας 22.2v από την μπαταρία. Για την έξοδο, πρέπει να το συνδέσετε απευθείας στα καλώδια του προγράμματος οδήγησης συμπίεσης. Δεν έχει σημασία ποια πηγή πηγαίνει σε ποια καρφίτσα, αλλά μερικές φορές η εναλλαγή τους σας δίνει καλύτερη ποιότητα ήχου. Τέλος, το Input + και το Input - πηγαίνετε στις ακίδες 10 και 9 στο Arduino, πάλι, η σειρά δεν έχει απαραίτητα σημασία.

Μικρόφωνο:

Το μικρόφωνο είναι εξαιρετικά απλό. Το Vcc παίρνει 5v από το arduino, το GND πηγαίνει στο GND στο Arduino και το OUT πηγαίνει στην ακίδα A0 στο Arduino.

Κουμπιά:

Εάν έχετε χρησιμοποιήσει ποτέ κουμπιά σε ένα Arduino στο παρελθόν, μπορεί να μπερδευτείτε ελαφρώς όταν βλέπετε τα κουμπιά συνδεδεμένα χωρίς αντίσταση. Αυτό οφείλεται στο γεγονός ότι τους έχω ρυθμίσει για να χρησιμοποιούν τις εσωτερικές αντιστάσεις έλξης που βρίσκονται μέσα στο Arduino. Αυτό βασικά τους κάνει πάντα να διαβάζουν ως Υ HIGHΗΛΟ μέχρι να πατήσετε το κουμπί και μετά να διαβάσουν ως ΧΑΜΗΛΟ. Απλά κάνει την καλωδίωση απλούστερη και ευκολότερη. Αν θέλετε περισσότερες πληροφορίες, δείτε αυτό το διδακτικό:

www.instructables.com/id/Arduino-Button-wi…

Το κουμπί που διαβάζει από το μικρόφωνο θα συνδεθεί με τον ακροδέκτη 6 και το κουμπί που λέει πραγματικά στο ηχείο να αρχίσει να παράγει ήχο είναι στο pin 5. Οι υπόλοιπες ακίδες και στα δύο κουμπιά είναι συνδεδεμένες στο GND.

Περιστροφικός κωδικοποιητής:

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

Η καλωδίωση γίνεται ως εξής: GND στο Arduino GND, + στο Arduino + 5v, SW στο pin 4, DT στο pin 3, CLK στο pin 2

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

howtomechatronics.com/tutorials/arduino/ro…

Και αυτό είναι για το κύκλωμα!

Βήμα 3: Κωδικός δοκιμής

Κωδικός δοκιμής
Κωδικός δοκιμής

Τώρα ήρθε η ώρα να ανεβάσετε κάποιο κώδικα στο Arduino σας

Μπορείτε να κατεβάσετε το repo μου στο GitHub που έχει όλα τα αρχεία που θα χρειαστείτε:

Or, έχω ανεβάσει μόνο το αρχείο GlassGun.ino στο κάτω μέρος αυτού του βήματος

Τώρα, ας μιλήσουμε λίγο για το τι συμβαίνει. Πρώτον, χρησιμοποιώ μερικές διαφορετικές Βιβλιοθήκες σε αυτό το έργο που ΧΡΕΙΑΖΕΤΕ ΝΑ ΚΑΤΕΒΑΣΤΕ. Οι βιβλιοθήκες είναι ένας τρόπος κοινής χρήσης αρθρωτού κώδικα με κάποιον, επιτρέποντάς του έναν εύκολο τρόπο να ενσωματώσει κάτι στο έργο του.

Χρησιμοποιώ όλα αυτά:

  • LinkedList -
  • ToneAC -
  • Rotary -

Καθένα από αυτά έχει οδηγίες σχετικά με τον τρόπο εγκατάστασης στον Κατάλογό σας Arduino. Αν χρειάζεστε περισσότερες πληροφορίες σχετικά με τις Βιβλιοθήκες του Arduino, δείτε αυτόν τον σύνδεσμο:

www.arduino.cc/en/Guide/Libraries

Αυτή η σημαία επιτρέπει στον χρήστη να απενεργοποιήσει ή να ενεργοποιήσει εύκολα τις εκτυπώσεις οθόνης στη σειριακή σειρά:

// Σημαία εντοπισμού σφαλμάτων

boolean printDebug = true;

Αυτό αρχικοποιεί τις μεταβλητές που χρησιμοποιούνται για να συλλάβουν τη συχνότητα και να επιστρέψουν αυτή που εμφανίστηκε περισσότερο:

// Frequency captureLinkedList freqData; LinkedList NOT_DATA; int modeHold; int modeCount = 1; int modeSubCount = 1; boolean gotData = false; boolean badData = true;

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

// Εκπομπή συχνότητας

int freqModifier = 0; int modeValue;

Ρυθμίζει τον περιστροφικό κωδικοποιητή χρησιμοποιώντας τη βιβλιοθήκη:

// Συντονισμός μέσω περιστροφικού κωδικοποιητή

int val? #define encoderButtonPin 4 #define encoderPinA 2 #define encoderPinB 3 Rotary r = Rotary (encoderPinA, encoderPinB);

Ορίζει τις καρφίτσες στα οποία είναι προσαρτημένα τα κουμπιά:

// Κουμπιά για ενεργοποίηση μικροφώνου και ηχείου

#καθορίστε το ηχείοΠλήκτρο 5 #καθορίστε το μικρόφωνο Κουμπί 6

Αυτή η τιμή δείχνει εάν η συχνότητα που καταγράφεται είναι εξαιρετικά υψηλή ή χαμηλή:

// αποκοπή μεταβλητών δείκτη

boolean clipping = 0;

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

// μεταβλητές αποθήκευσης δεδομένων

byte newData = 0; byte prevData = 0;

Χρησιμοποιείται στον πραγματικό υπολογισμό του αριθμού συχνότητας με βάση τις ταλαντώσεις:

// μεταβλητές συχνότητας

unsigned int timer = 0; // μετρά την περίοδο του κύματος unsigned int period? int συχνότητα?

Τώρα, στο πραγματικό σώμα του κώδικα:

Εδώ, ρυθμίζουμε τα κουμπιά μικροφώνου και ηχείου να μην χρησιμοποιούν αντίσταση όταν πατάτε το κουμπί όπως περιγράφεται προηγουμένως στο βήμα του κυκλώματος δοκιμής (Περισσότερες πληροφορίες: https://www.instructables.com/id/Arduino-Button-wi…) I καλέστε επίσης το resetMicInterupt, το οποίο κάνει ορισμένες πολύ χαμηλού επιπέδου ακίδες για να ακούτε τον ακροδέκτη A0 σε πολύ διαφορετικές χρονικές περιόδους. Χρησιμοποίησα αυτό το οδηγό για να με καθοδηγήσει πώς να πάρω συχνότητα από αυτές τις τιμές:

www.instructables.com/id/Arduino-Frequency…

void setup () {pinMode (13, OUTPUT); // δείκτης pin pinMode (μικροφωνικό κουμπί, INPUT_PULLUP); // Καρφίτσα μικροφώνου pinMode (Κουμπί ηχείου, INPUT_PULLUP); if (printDebug) {Serial.begin (9600); } resetMicInterupt (); } void resetMicInterupt () {cli (); // diable interrupts // set up συνεχόμενη δειγματοληψία του αναλογικού pin 0 // διαγραφή μητρώων ADCSRA και ADCSRB ADCSRA = 0; ADCSRB = 0; ADMUX | = (1 << REFS0]; // ορίστε τάση αναφοράς ADMUX | = (1 << ADLAR); // αριστερά ευθυγραμμίστε την τιμή ADC- έτσι μπορούμε να διαβάσουμε τα υψηλότερα 8 bit από τον καταχωρητή ADCH μόνο ADCSRA | = (1 << ADPS2) | (1 << ADPS0]; // Ρυθμίστε το ρολόι ADC με 32 προκαθοριστές- 16mHz/32 = 500kHz ADCSRA | = (1 << ADATE); // ενεργοποίηση αυτόματης ενεργοποίησης ADCSRA | = (1 << ADIE); // ενεργοποίηση διακοπών όταν ολοκληρωθεί η μέτρηση ADCSRA | = (1 << ADEN); // ενεργοποίηση ADC ADCSRA | = (1 << ADSC); // έναρξη μετρήσεων ADC sei (); // ενεργοποίηση διακοπών} ISR (ADC_vect) {// όταν η νέα τιμή ADC είναι έτοιμη prevData = newData; // αποθηκεύστε την προηγούμενη τιμή newData = ADCH; // λάβετε τιμή από το A0 if (prevData = 127) {// εάν αυξάνεται και διασχίζεται η μέση περίοδος = χρονόμετρο; // λάβετε χρονοδιακόπτη περιόδου = 0; // επαναφέρετε το χρονόμετρο} εάν (newData == 0 || newData == 1023) {// εάν αποκοπεί PORTB | = B00100000;/ /ορίστε τον ακροδέκτη 13 υψηλής ένταξης δείκτη αποκοπής led clipping = 1; // τρέχουσα αποκοπή} χρονόμετρο ++; // χρονοδιακόπτη αύξησης με ρυθμό 38,5kHz}

Νομίζω ότι ο περισσότερος κώδικας εδώ είναι αρκετά απλός και πρέπει να είναι αρκετά ευανάγνωστος, αλλά θα επισημάνω μερικούς από τους πιο μπερδεμένους τομείς:

Αυτό το μέρος προέρχεται κυρίως από τη βιβλιοθήκη του Ρόταρυ. Το μόνο που λέει είναι ότι αν έχετε μετακινηθεί δεξιόστροφα, αυξήστε το freqModifer επάνω κατά ένα, αν δεν ανεβήκατε, τότε πρέπει να έχετε κατέβει, οπότε κατεβάστε το freqModifier κατά ένα.

ανυπόγραφο αποτέλεσμα char = r.process (); // Δείτε εάν ο περιστροφικός κωδικοποιητής έχει μετακινηθεί

εάν (αποτέλεσμα) {firstHold = true; εάν (αποτέλεσμα == DIR_CW) freqModifier ++; // Εάν μετακινηθούμε δεξιόστροφα, αυξήστε, διαφορετικά μειώστε freqModifier--; εάν (freqModifier 50) freqModifier = 50; if (printDebug) {Serial.print ("FreqMod:"); Serial.println (freqModifier); }}

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

void getMode () {boolean doAdd = true // Το πρώτο πάτημα του κουμπιού πρέπει να είναι σύντομο για να λάβετε "κακές τιμές" ή τιμές που γνωρίζουμε ότι είναι κακές // Αυτό εναλλάσσεται μεταξύ της εγγραφής "κακών δεδομένων" και "καλών δεδομένων" εάν (badData) {if (printDebug) Serial.println ("Bad Data:"); για (int j = 0; j <freqData.size (); j ++) {for (int i = 0; i <NOT_DATA.size (); i ++) {if (freqData.get (j) == NOT_DATA.get (θ)) {doAdd = false; Διακοπή; }} if (doAdd) {NOT_DATA.add (freqData.get (j)); } doAdd = true; } if (printDebug) {Serial.println ("-----"); για (int i = 0; i <NOT_DATA.size (); i ++) {Serial.println (NOT_DATA.get (i)); } Serial.println ("-------"); }}

Εδώ θα κάνουμε μια περιήγηση στα "Καλά δεδομένα" και θα βγάλουμε όλα αυτά που ταιριάζουν με τα "Κακά δεδομένα από πριν"

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

αλλιώς {

if (printDebug) Serial.println ("Not Bad Data:"); για (int j = 0; j <freqData.size (); j ++) {for (int i = 0; i <NOT_DATA.size (); i ++) {if (freqData.get (j) == NOT_DATA.get (i)) {if (printDebug) {Serial.print ("Καταργήθηκε:"); Serial.println (freqData.get (j)); } freqData.remove (j); j--; Διακοπή; }}} freqData.sort (minToMax); modeHold = freqData.get (0); modeValue = modeHold; για (int i = 0; i modeSubCount) {modeSubCount = modeCount; modeValue = modeHold; } modeCount = 1; modeHold = freqData.get (i); }} modeCount = 1; modeSubCount = 1; if (printDebug) {Serial.println ("--------"); Serial.println (modeValue); Serial.println ("---------"); } NOT_DATA.clear (); } if (badData) badData = false; αλλιώς badData = true? freqData.clear (); }

Βήμα 4: Συντονίστε το μικρόφωνό σας

Συντονίστε το μικρόφωνό σας
Συντονίστε το μικρόφωνό σας
Συντονίστε το μικρόφωνό σας
Συντονίστε το μικρόφωνό σας

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

Επειδή το Arduino δεν μπορεί να διαβάσει αρνητικές τάσεις (όπως τα ηχητικά κύματα), το κύκλωμα που είναι ενσωματωμένο στο μικρόφωνο μετατρέπει τα πάντα σε θετική τάση. Αντί για μερικά millivolt θετικά και λίγα millivolts αρνητικά, το κύκλωμα προσπαθεί να το αλλάξει σε θετικό 5v και 0v. Ωστόσο, δεν μπορεί πραγματικά να γνωρίζει πόσο δυνατός είναι ο ήχος της πηγής σας. Για να το διορθώσουν, προσθέτουν ένα μικροσκοπικό ποτενσιόμετρο (βίδα) στο κύκλωμα.

Αυτό σας επιτρέπει να «συντονίσετε» το μικρόφωνό σας στο επίπεδο ήχου των ποτηριών κρασιού.

Λοιπόν, πώς το επιτυγχάνετε αυτό πραγματικά;

Λοιπόν, μπορείτε να συνδέσετε το Arduino στον υπολογιστή σας μέσω καλωδίου USB, ανοίγοντας τη σειριακή οθόνη κάνοντας κλικ στο εικονίδιο στην επάνω δεξιά γωνία του προγράμματος επεξεργασίας Arduino.

Ρυθμίστε το ρυθμό baud στο 9600.

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

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

Έτσι, η διαδικασία είναι:

  1. Χτυπήστε το γυαλί με ανοιχτή την εφαρμογή φασματόμετρου και δείτε ποια είναι η πραγματική συχνότητα συντονισμού
  2. Καταγράψτε τα «Κακά δεδομένα» πατώντας γρήγορα το ενσύρματο κουμπί μικροφώνου στο κύκλωμά σας
  3. Κρατήστε πατημένο το κουμπί μικροφώνου στο κύκλωμά σας με το πραγματικό μικρόφωνο κοντά στο γυαλί και σφίξτε το γυαλί με ένα κατσαβίδι ή κάτι τέτοιο
  4. Κοιτάξτε την έξοδο στη σειριακή οθόνη και δείτε αν είναι κοντά στην πραγματική τιμή συχνότητας
  5. Ρυθμίστε ελαφρά τη βίδα ποτενσιόμετρου στο μικρόφωνο και επαναλάβετε

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

Βήμα 5: Σπάστε λίγο ποτήρι

Σπάστε λίγο ποτήρι!
Σπάστε λίγο ποτήρι!
Σπάστε λίγο ποτήρι!
Σπάστε λίγο ποτήρι!

It'sρθε η ώρα να σπάσετε το παλιό ποτήρι!

Πρώτον, ΒΕΒΑΙΩΘΕΙΤΕ ΠΟΥ ΦΟΡΑΤΕ ΠΡΟΣΤΑΣΙΑ ΑΥΤΩΝ!

Υπάρχει μια τέχνη στο να μπαίνουν όλα στη σωστή θέση για να σπάσει το ποτήρι.

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

Έτσι, ο καλύτερος τρόπος που βρήκα για να το κάνω αυτό είναι:

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

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

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

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

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

Βήμα 6: (Προαιρετικό) Συγκολλητικό

(Προαιρετικό) Συγκολλητικό
(Προαιρετικό) Συγκολλητικό
(Προαιρετικό) Συγκολλητικό
(Προαιρετικό) Συγκολλητικό
(Προαιρετικό) Συγκολλητικό
(Προαιρετικό) Συγκολλητικό

Έτσι, αποφασίσατε να το κάνετε όλο; Λοιπόν, καλά για σένα! Σίγουρα μου άρεσε να το κάνω!

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

  1. Θα κολλήσετε απευθείας στα καλώδια του ηχείου
  2. Θα προσθέσετε τους συνδέσμους Bullet στο ηχείο
  3. Θα προσθέσετε το BEC για να τροφοδοτήσετε το Arduino Nano

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

Το θετικό τέλος της μπαταρίας μας πηγαίνει πρώτα στον διακόπτη, στο BEC. Αυτό μειώνει την τάση μας από 22,2v σε 5v για να παρέχει ισχύ στο Arduino. Το θετικό τέλος της μπαταρίας πηγαίνει επίσης στο τέλος+ Power του Ενισχυτή μας. Αυτό παρέχει 22.2v απευθείας στον ενισχυτή.

Το χαμηλότερο άκρο τάσης BEC πηγαίνει από + στο + 5v στο Arduino και - σε GND στο Arduino.

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

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

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

Βήμα 7: (Προαιρετικό) Εκτύπωση κατοικίας

(Προαιρετικό) Εκτύπωση κατοικίας
(Προαιρετικό) Εκτύπωση κατοικίας
(Προαιρετικό) Εκτύπωση κατοικίας
(Προαιρετικό) Εκτύπωση κατοικίας
(Προαιρετικό) Εκτύπωση κατοικίας
(Προαιρετικό) Εκτύπωση κατοικίας
(Προαιρετικό) Εκτύπωση κατοικίας
(Προαιρετικό) Εκτύπωση κατοικίας

Υπάρχουν τρία αρχεία για εκτύπωση με αυτό το έργο:

  1. Το μπροστινό μέρος που κρατά το ηχείο και το μικρόφωνο
  2. Το μεσαίο κομμάτι που διαθέτει όλα τα ηλεκτρονικά, κουμπιά και μπαταρία
  3. Κάλυμμα μπαταρίας

Τα μέρη όλα μαζί είναι περίπου 48 ώρες για εκτύπωση στο Ultimaker 2 της Georgia Tech. Βεβαιωθείτε ότι εκτυπώνετε με υποστήριξη, επειδή υπάρχουν μερικές μεγάλες προεξοχές σε αυτήν την εκτύπωση.

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

Βήμα 8: (Προαιρετικό) Βαφή - για πρόσθετη δροσιά

(Προαιρετικά) Βαφή - για πρόσθετη δροσιά
(Προαιρετικά) Βαφή - για πρόσθετη δροσιά
(Προαιρετικά) Βαφή - για πρόσθετη δροσιά
(Προαιρετικά) Βαφή - για πρόσθετη δροσιά
(Προαιρετικά) Βαφή - για πρόσθετη δροσιά
(Προαιρετικά) Βαφή - για πρόσθετη δροσιά

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

Βήμα 9: (Προαιρετικό) Συναρμολόγηση

(Προαιρετικό) Συναρμολόγηση
(Προαιρετικό) Συναρμολόγηση
(Προαιρετικό) Συναρμολόγηση
(Προαιρετικό) Συναρμολόγηση
(Προαιρετικό) Συναρμολόγηση
(Προαιρετικό) Συναρμολόγηση

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

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

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

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

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

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

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

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

Βήμα 10: (Προαιρετικό) Σπάστε ξανά το γυαλί

Image
Image

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

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

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

Και μια τελευταία φορά…

Ας φτιάξουμε ρομπότ!

Διαγωνισμός ήχου 2018
Διαγωνισμός ήχου 2018

Δευτέρα στον Διαγωνισμό ioχου 2018

Συνιστάται: