Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Μια από τις παλαιότερες αναμνήσεις μου από τη χρήση ενός smartphone ήταν το παιχνίδι "Talking Tom". Το παιχνίδι ήταν αρκετά απλό. Υπάρχει μια γάτα, ονόματι Τομ, η οποία μπορεί να μιλήσει. Στο παιχνίδι, ο Τομ άκουγε κάθε είσοδο μέσω του μικροφώνου του τηλεφώνου και στη συνέχεια επαναλάμβανε ό, τι άκουγε. Έτσι, ό, τι και να πει στον Τομ, απλώς θα επαναλάμβανε το ίδιο πράγμα με τη δριμεία φωνή του.
Παρόλο που ακούγεται απλό, όλη αυτή η διαδικασία απαιτεί πολλά σύνθετα βήματα, όπως δειγματοληψία της αναλογικής εισόδου μικροφώνου σε ψηφιακή μορφή, χειρισμό του ήχου για να δώσει στον Tom τη μοναδική φωνή του και στη συνέχεια ανακατασκευή του σήματος από όλες αυτές τις ψηφιακές τιμές για αναπαραγωγή του μέσω του ηχείου Το Όλα αυτά τα περίπλοκα βήματα, αλλά το smartphone το χειρίστηκε σαν γοητεία ακόμη και 9 έως 10 χρόνια πίσω!
Το ενδιαφέρον θα ήταν να δούμε αν το ίδιο μπορεί να γίνει με μια φθηνή πλακέτα Arduino βασισμένη σε μικροελεγκτή. Έτσι, σε αυτό το διδακτικό θα σας δείξω πώς μπορείτε να φτιάξετε ένα απλό έργο Talking Tom σαν ένα Arduino και κάποια άλλα φθηνά ηλεκτρονικά.
Αυτό το διδακτικό γράφτηκε σε συνεργασία με το Hatchnhack Makerspace στο Δελχί
ΣΗΜΕΙΩΣΗ: Αυτή η εκπαιδευτική είναι η πρώτη έκδοση του έργου που ολοκληρώνει τη λειτουργία "Talking" του Talking Tom όπου το arduino θα μπορεί να επαναλάβει ό, τι πείτε σε αυτό. Το κομμάτι που αλλάζει φωνή θα καλυφθεί στη μελλοντική έκδοση, αν και, λόγω της μικρότερης ανάλυσης του ενσωματωμένου ADC του Arduino, ο ηχογραφημένος ήχος ακούγεται ήδη λίγο διαφορετικός: P (Αυτό μπορεί να παρατηρηθεί σαφώς στο βίντεο του έργου).
Ας ξεκινήσουμε λοιπόν!
Βήμα 1: Υλικά που χρησιμοποιούνται
Σκεύη, εξαρτήματα:
- Ένα Arduino UNO
- Μονάδα μικροφώνου MAX4466 με ρυθμιζόμενο κέρδος
- Μονάδα ανάγνωσης καρτών SD βασισμένη σε SPI
- κάρτα SD
- Ενισχυτής ήχου όπως ηχείο υπολογιστή, μονάδα ενισχυτή PAM8403 κ.λπ.
- Ηχεία για σύνδεση με τον ενισχυτή
- Γυναικείο Jack Audio
- Αντίσταση 1 x 1k ohm
- 2 x 10k ohm αντίσταση
- Πυκνωτής 1 x 10uF
- 2 x Πλήκτρο
- Jumper Wires
Λογισμικό:
- Arduino IDE
- Audacity (προαιρετικό)
- Βιβλιοθήκη TMRpcm και SD για το Arduino
Βήμα 2: Μια βασική επισκόπηση του έργου
Το έργο έχει κυρίως 2 χαρακτηριστικά:
- Μπορεί να αναπαράγει έναν τυχαία επιλεγμένο ήχο από ένα σύνολο προεγκατεστημένων αρχείων ήχου στην κάρτα SD για ηχητικά εφέ κ.λπ.
- Μπορεί να εγγράψει την είσοδο ήχου από το μικρόφωνο και στη συνέχεια να τον αναπαράγει αμέσως μόλις σταματήσει η εγγραφή. Αυτό επιτρέπει στο arduino να επαναλάβει ό, τι άκουσε μέσω του μικροφώνου.
Το περιβάλλον εργασίας χρήστη του έργου αποτελείται κυρίως από 2 κουμπιά, καθένα από τα οποία αντιστοιχεί σε ένα από τα παραπάνω χαρακτηριστικά.
Η κύρια σκληρή δουλειά της εγγραφής και αναπαραγωγής των αρχείων ήχου από την κάρτα SD γίνεται από τη βιβλιοθήκη TMRpcm
Η ηχογράφηση χρησιμοποιεί τη μονάδα μικροφώνου MAX4466, το εσωτερικό ADC του arduino και τη βιβλιοθήκη TMRpcm για να δειγματίσει τον ήχο και στη συνέχεια να τον αποθηκεύσει προσωρινά στην κάρτα SD ως αρχείο «.wav» για αναπαραγωγή. Τα αρχεία ήχου '.wav' χρησιμοποιούν PCM (Pulse Code Modulation) για την αποθήκευση των δεδομένων ήχου σε ψηφιακή μορφή, έτσι ώστε να μπορούν εύκολα να αναπαραχθούν ξανά. Γενικά, είναι καλύτερο να χρησιμοποιήσετε ένα εξωτερικό ADC για έργα που βασίζονται σε ήχο, καθώς η ανάλυση του ADC του Arduino δεν είναι τόσο υψηλή, αλλά λειτουργεί για αυτό το έργο.
Η αναπαραγωγή των αρχείων ήχου (προεγκατεστημένα & ηχογραφημένα) γίνεται επίσης με τη βοήθεια της βιβλιοθήκης TMRpcm, η οποία εξάγει τον ήχο ως σήμα PWM από μια καρφίτσα με ενεργοποίηση PWM του arduino. Αυτό το σήμα στη συνέχεια τροφοδοτείται σε ένα φίλτρο RC για να πάρει αναλογικό σήμα το οποίο στη συνέχεια τροφοδοτείται σε έναν ενισχυτή για αναπαραγωγή του ήχου μέσω ενός ηχείου. Για αυτό το μέρος θα μπορούσατε επίσης να χρησιμοποιήσετε ένα εξωτερικό DAC καθώς το arduino δεν διαθέτει εσωτερικά. Η χρήση DAC μπορεί να είναι μια καλύτερη επιλογή καθώς θα βελτίωνε σημαντικά την ποιότητα του ήχου.
Η επικοινωνία μεταξύ της μονάδας κάρτας SD και του arduino γίνεται μέσω SPI (Serial peripheral Interface). Ο κώδικας, χρησιμοποιεί τη βιβλιοθήκη SD & SPI για εύκολη πρόσβαση στα περιεχόμενα της κάρτας SD.
Βήμα 3: Προετοιμάστε την κάρτα SD και συνδέστε την ενότητα κάρτας SD
- Πρώτα πρέπει να μορφοποιήσετε ως κάρτα SD με σύστημα αρχείων FAT16 ή FAT32 (Μπορείτε να χρησιμοποιήσετε το smartphone σας για να μορφοποιήσετε την κάρτα SD).
- Τώρα προεγκαταστήστε μερικά αρχεία ήχου.wav στην κάρτα SD. Μπορείτε να δημιουργήσετε αρχεία.wav με το Audacity (δείτε τις παρακάτω οδηγίες). Θυμηθείτε να ονομάσετε τα αρχεία ως audio_1.wav, audio_2.wav, audio_3.wav και ούτω καθεξής.
Η μονάδα κάρτας SD χρησιμοποιεί SPI για την επικοινωνία των δεδομένων με το arduino. Επομένως, συνδέεται μόνο με εκείνες τις ακίδες που έχουν ενεργοποιημένο το SPI. Αυτές οι συνδέσεις είναι οι εξής:
- Vcc - 5v
- GND - GND
- MOSI (Master Out Slave In) - καρφίτσα 11
- MISO (Master In Slave Out) - καρφίτσα 12
- CLK (Ρολόι) - καρφίτσα 13
- SS/CS (Slave Select/Chip Select) - καρφίτσα 10
Δημιουργία αρχείου «.wav» με το λογισμικό Audacity:
- Ανοίξτε το αρχείο ήχου που θέλετε να μετατρέψετε σε.wav στο Audacity.
- Κάντε κλικ στο όνομα του αρχείου και, στη συνέχεια, επιλέξτε "Split Stereo to Mono". Αυτή η επιλογή χωρίζει τον στερεοφωνικό ήχο σε δύο μονοφωνικά κανάλια. Τώρα μπορείτε να κλείσετε ένα από τα κανάλια.
- Αλλάξτε την τιμή "Project Rate" στο κάτω μέρος σε 16000 Hz. Αυτή η τιμή αντιστοιχεί στη μέγιστη συχνότητα δειγματοληψίας του εσωτερικού ADC του arduino.
- Τώρα φτάσαμε στο Αρχείο-> Εξαγωγή/Εξαγωγή ως WAV.
- Επιλέξτε την κατάλληλη τοποθεσία και όνομα του αρχείου. Από το μενού κωδικοποίησης επιλέξτε "Unsigned 8-bit PCM" καθώς χρησιμοποιούμε τη μορφή PCM για να αποθηκεύσουμε τον ήχο σε ψηφιακή μορφή.
Βήμα 4: Συνδέστε την έξοδο ήχου και το μικρόφωνο
Σύνδεση μικροφώνου:
- Vcc - 3,3v
- GND - GND
- OUT - A0 pin
ΣΗΜΕΙΩΣΗ:
- Προσπαθήστε να συνδέσετε το μικρόφωνο απευθείας στο arduino αντί να χρησιμοποιήσετε ένα breadboard, καθώς μπορεί να προκαλέσει περιττό θόρυβο στο σήμα εισόδου.
- Βεβαιωθείτε ότι έχετε κολλήσει καθαρά τις κεφαλίδες στη μονάδα μικροφώνου καθώς οι κακές αρθρώσεις συγκόλλησης παράγουν επίσης θόρυβο.
- Αυτή η μονάδα μικροφώνου έχει ρυθμιζόμενο κέρδος που μπορεί να ελεγχθεί με τη βοήθεια ενός δοχείου στο πίσω μέρος του πίνακα. Θα σας πρότεινα να διατηρήσετε το κέρδος κάπως χαμηλό καθώς τότε δεν θα ενισχύσει πολύ τον θόρυβο ενώ θα μπορούσατε να μιλήσετε κρατώντας τον κοντά στο στόμα σας με αποτέλεσμα καθαρότερη έξοδο.
Σύνδεση της εξόδου ήχου:
- Τοποθετήστε τον πυκνωτή 10 uF και την αντίσταση 1k ohm σε σειρά στη σανίδα με το θετικό του πυκνωτή συνδεδεμένο με την αντίσταση. Αυτά μαζί σχηματίζουν ένα φίλτρο RC που μετατρέπει την έξοδο PWM σε αναλογικό σήμα που μπορεί να τροφοδοτηθεί στον ενισχυτή.
- Συνδέστε τον πείρο 9 του Arduino στο άλλο άκρο της αντίστασης.
- Ο αρνητικός ακροδέκτης του Πυκνωτή συνδέεται με το αριστερό και το δεξί κανάλι της θηλυκής υποδοχής ήχου.
- Το GND της υποδοχής ήχου συνδέεται με το GND.
- Η υποδοχή ήχου συνδέεται στον ενισχυτή με ένα καλώδιο Aux. Στην περίπτωσή μου χρησιμοποίησα το σύστημα ηχείων του υπολογιστή μου.
ΣΗΜΕΙΩΣΗ:
Η χρήση του PWM ως εξόδου ήχου μπορεί να μην είναι η καλύτερη επιλογή καθώς ένα εξωτερικό DAC θα προσφέρει πολύ καλύτερη ανάλυση και ποιότητα. Επιπλέον, ο πυκνωτής και η αντίσταση στο φίλτρο RC μπορεί να προκαλέσουν ανεπιθύμητο θόρυβο. Ωστόσο, η απόδοση ήταν αρκετά καλή για αυτό το έργο
Βήμα 5: Συνδέστε τα κουμπιά
Το έργο χρησιμοποιεί το πάτημα κουμπιών ως διεπαφή χρήστη. Και οι δύο εκτελούν διαφορετικές λειτουργίες και χρησιμοποιούνται διαφορετικά αλλά έχουν την ίδια καλωδίωση. Η σύνδεσή τους έχει ως εξής:
- Τοποθετήστε τα κουμπιά στο breadboard.
- Συνδέστε έναν ακροδέκτη ενός από τα κουμπιά στον πείρο 2 του arduino με αντίσταση έλξης προς τα κάτω 10k ohm. Το άλλο τερματικό του κουμπιού συνδέεται με 5v. Έτσι, όταν πατηθεί το κουμπί, ο πείρος 2 γίνεται Υ HIGHΟΣ και μπορούμε να τον εντοπίσουμε στον κώδικα.
- Το άλλο κουμπί συνδέεται το ίδιο με το pin 3 του arduino αντί για 2.
Το κουμπί που είναι συνδεδεμένο στο pin 2 αναπαράγει ένα τυχαίο αρχείο ήχου από το σύνολο των προεγκατεστημένων αρχείων ήχου στην κάρτα SD όταν πατηθεί μία φορά.
Το κουμπί που συνδέεται με τον ακροδέκτη 3 είναι για την εγγραφή. Πρέπει να πατήσετε παρατεταμένα αυτό το κουμπί για την εγγραφή. Το arduino ξεκινά την εγγραφή μόλις πατηθεί αυτό το κουμπί και σταματά την εγγραφή όταν απελευθερωθεί αυτό το κουμπί. Μετά τη διακοπή της εγγραφής, επαναλαμβάνει αμέσως αυτήν την εγγραφή.
Βήμα 6: Ανεβάστε τον κώδικα
Πριν ανεβάσετε τον κώδικα, βεβαιωθείτε ότι έχετε εγκαταστήσει όλες τις απαιτούμενες βιβλιοθήκες, όπως TMRpcm, SD κλπ.
Μπορείτε επίσης να ανοίξετε το Serial Monitor μετά τη μεταφόρτωση του κώδικα για να λάβετε μια ανατροφοδότηση για το τι κάνει το arduino.
Προς το παρόν, ο κώδικας δεν χειρίζεται τον ηχογραφημένο ήχο για να ακούγεται διαφορετικός, αλλά σκοπεύω να συμπεριλάβω αυτήν τη λειτουργία στην επόμενη έκδοση, όπου ίσως μπορείτε να ρυθμίσετε τη συχνότητα εξόδου του ηχητικού σήματος με τη βοήθεια του δοχείου και να λάβετε διαφορετικούς τύπους ήχων Το
Και τελειώσατε !!