Πίνακας περιεχομένων:
- Βήμα 1: Υλικά
- Βήμα 2: Εργαλεία
- Βήμα 3: Τρισδιάστατη εκτύπωση
- Βήμα 4: Κατασκευή κυκλώματος
- Βήμα 5: Καλωδίωση LCD
- Βήμα 6: Καλωδίωση μικροφώνου/ενισχυτή
- Βήμα 7: Στιγμιαία εναλλαγή καλωδίωσης
- Βήμα 8: Καλωδίωση ποτενσιόμετρου
- Βήμα 9: Καλωδίωση ακουστικών
- Βήμα 10: Έξοδος μικροφώνου/ενισχυτή
- Βήμα 11: Η έξοδος μικροφώνου/ενισχυτή συνεχίζεται
- Βήμα 12: Στοιχεία στο περίβλημα
- Βήμα 13: Συμπίεση-περίβλημα
- Βήμα 14: +5V, GND Extended Wires
- Βήμα 15: Περάστε μακριά καλώδια μέσω της τρύπας του περιβλήματος
- Βήμα 16: Θερμική συρρίκνωση
- Βήμα 17: Περίφραξη σφραγίδας
- Βήμα 18: Συνδεθείτε στο Arduino
- Βήμα 19: Arduino IDE/Βιβλιοθήκες
- Βήμα 20: Σκίτσο Arduino
- Βήμα 21: Δοκιμάστε το
- Βήμα 22: Μελλοντική εργασία
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-23 14:39
Σε αυτό το διδακτικό θα μάθετε πώς να φτιάχνετε ένα φασματικό στηθοσκόπιο χρησιμοποιώντας τον γρήγορο μετασχηματισμό hartley. Αυτό μπορεί να χρησιμοποιηθεί για να απεικονίσει τους ήχους της καρδιάς και των πνευμόνων.
Βήμα 1: Υλικά
Οθόνη LCD 1,8”(7,50 $ στο Amazon)
Arduino Uno ή Equivalent ($ 7,00 στο Gearbest)
Electret Amplifier (6,95 $ στο Adafruit)
Πυκνωτής 100 μF (0,79 $)
Σύρμα και άλτες ($ 4,00)
Στερεοφωνικό βύσμα 3,5 mm (1,50 $)
Ποτενσιόμετρο 10kOhm (2,00 $)
Momentary Switch (1,50 $)
Βήμα 2: Εργαλεία
Συγκολλητικό σίδερο
Πυροβόλο θερμό κόλλα
Τρισδιάστατος εκτυπωτής… ή φίλος με τρισδιάστατο εκτυπωτή (Δυνατότητα κατασκευής και με χαρτόνι)
Κόφτης καλωδίων
Breadboard
Βήμα 3: Τρισδιάστατη εκτύπωση
Το πρώτο είναι η τρισδιάστατη εκτύπωση των αρχείων.stl που επισυνάπτονται σε αυτό το βήμα. Εκτύπωσα και τα δύο αρχεία χρησιμοποιώντας το ακόλουθο υλικό/ρυθμίσεις:
Υλικό: PLA
Ightψος στρώματος: 0.1mm
Πάχος τοίχου/επάνω/κάτω: 0,8mm
Θερμοκρασία εκτύπωσης: 200⁰C
Θερμοκρασία κρεβατιού: 60⁰C
Η υποστήριξη είναι ενεργοποιημένη @ 10%
Βήμα 4: Κατασκευή κυκλώματος
Χρησιμοποιώντας τα εξαρτήματα στην ενότητα υλικών, δημιουργήστε το κύκλωμα. Πάντα βάζω το κύκλωμα σε μια σανίδα ψωμιού για να βεβαιωθώ ότι λειτουργεί σωστά πριν αγγίξω το συγκολλητικό σίδερο.
Βήμα 5: Καλωδίωση LCD
Χρησιμοποιώντας το σχήμα που επισυνάπτεται σε αυτό το βήμα, συγκολλήστε καλώδια σε επτά από τις οκτώ ακίδες της οθόνης LCD. Αυτά τα καλώδια θα πρέπει να έχουν μήκος περίπου 3 πόδια, εκτός από τις ακίδες γείωσης και +5V (αυτά πρέπει να είναι μόνο 2-3 ίντσες)
Βήμα 6: Καλωδίωση μικροφώνου/ενισχυτή
Χρησιμοποιώντας το σχήμα που συνδέεται με αυτό το βήμα, κολλήστε τρία καλώδια στις ακίδες +5V, Ground και Out στο μικρόφωνο/ενισχυτή Adafruit. Αυτά χρειάζονται μόνο 2-3 ίντσες σε μήκος.
Βήμα 7: Στιγμιαία εναλλαγή καλωδίωσης
Συνδέστε ένα καλώδιο 2-3 ιντσών σε κάθε μία από τις δύο προεξοχές του στιγμιαίου διακόπτη.
Βήμα 8: Καλωδίωση ποτενσιόμετρου
Χρησιμοποιώντας το σχήμα στο βήμα 6, κολλήστε τρία σύρματα μήκους περίπου 2-3 ίντσες στις τρεις προεξοχές του ποτενσιόμετρου.
Βήμα 9: Καλωδίωση ακουστικών
Συγκολλήστε τρία καλώδια στο δακτύλιο, την άκρη και τα μανίκια των υποδοχών της υποδοχής ακουστικών. Χρησιμοποίησα ένα γρύλο από έναν μετρονόμο που ήταν ήδη ενσύρματο. Εάν δεν γνωρίζετε τι είναι το δαχτυλίδι, η άκρη και τα μανίκια, απλώς ψάξτε στο google ότι υπάρχουν πολλές καλές εικόνες σχετικά με την καλωδίωση στερεοφωνικών υποδοχών.
Βήμα 10: Έξοδος μικροφώνου/ενισχυτή
Αφού συγκολλήσετε τα καλώδια στο μικρόφωνο/ενισχυτή, το ποτενσιόμετρο και την υποδοχή ακουστικών, κολλήστε ένα καλώδιο μήκους περίπου τριών ποδιών στο "έξω" καλώδιο του ενισχυτή μικροφώνου. Αυτό το καλώδιο θα συνδεθεί αργότερα με τον ακροδέκτη A0 του arduino.
Βήμα 11: Η έξοδος μικροφώνου/ενισχυτή συνεχίζεται
Συγκολλήστε ένα δεύτερο καλώδιο στο καλώδιο "έξω" του μικροφώνου/ενισχυτή. Αυτό το σύρμα πρέπει να συγκολληθεί σε έναν πυκνωτή 100 microFarad. Εάν χρησιμοποιείτε ηλεκτρολυτικό πυκνωτή, βεβαιωθείτε ότι η θετική πλευρά είναι συνδεδεμένη με αυτό το καλώδιο.
Βήμα 12: Στοιχεία στο περίβλημα
Αφού συγκολληθούν όλα τα καλώδια στα εξαρτήματα, τοποθετήστε τα εξαρτήματα σε αντίστοιχα σημεία ακολουθώντας τα σχήματα που επισυνάπτονται σε αυτό το βήμα. Χρησιμοποίησα θερμή κόλλα για να στερεώσω το μικρόφωνο και την υποδοχή ακουστικών στη θέση τους.
Βήμα 13: Συμπίεση-περίβλημα
Αφού στερεωθούν όλα τα εξαρτήματα στο περίβλημα, κολλήστε όλα τα καλώδια γείωσης μαζί. Θα πρέπει να υπάρχει ένα από την οθόνη LCD, ένα από το μικρόφωνο/ενισχυτή και ένα από το μανίκι της υποδοχής ακουστικών. Επίσης κολλήστε τα καλώδια +5V μαζί και ένα καλώδιο από το στιγμιαίο διακόπτη. Και πάλι θα πρέπει να υπάρχει ένα από την οθόνη LCD, ένα από το μικρόφωνο/ενισχυτή και ένα στο στιγμιαίο διακόπτη.
Βήμα 14: +5V, GND Extended Wires
Τώρα κόψτε δύο κομμάτια σύρματος περίπου 3 πόδια σε μήκος. Συγκολλήστε το ένα στο σύμπλεγμα καλωδίων γείωσης και κολλήστε το άλλο στο ανοιχτό καλώδιο στο στιγμιαίο διακόπτη.
Βήμα 15: Περάστε μακριά καλώδια μέσω της τρύπας του περιβλήματος
Τώρα, θα πρέπει να έχετε συνολικά οκτώ σύρματα μήκους περίπου 3 ποδιών. Τοποθετήστε τα μέσα από τη μη γεμισμένη τρύπα στο περίβλημα. Δείτε το σχήμα που επισυνάπτεται σε αυτό το βήμα
Βήμα 16: Θερμική συρρίκνωση
Αφού ολοκληρωθεί η συγκόλληση, βεβαιωθείτε ότι τα εκτεθειμένα καλώδια είναι καλυμμένα. Χρησιμοποίησα σωλήνες θερμοσυρρίκνωσης, αλλά η ηλεκτρική ταινία λειτουργεί επίσης καλά.
Βήμα 17: Περίφραξη σφραγίδας
Πάρτε το μισό περίβλημα που περιέχει την οθόνη LCD και περάστε το στο άλλο μισό του περιβλήματος που περιέχει τα άλλα εξαρτήματα. Ενώ σπρώχνετε τα δύο κομμάτια μαζί, κολλήστε τα ζεστά για να στερεώσετε το περίβλημα μαζί.
Βήμα 18: Συνδεθείτε στο Arduino
Τα οκτώ, μακριά, καλώδια που απομένουν συνδέονται απευθείας με τις αντίστοιχες καρφίτσες Arduino που περιγράφονται στα σχήματα κυκλώματος. Βεβαιωθείτε ότι κάθε φορά που κολλάτε ένα από αυτά τα μακριά καλώδια 3ft στο κύκλωμα, βάζετε ένα κομμάτι ταινίας στο άλλο άκρο, υποδεικνύοντας σε ποια καρφίτσα Arduino πηγαίνει!
Βήμα 19: Arduino IDE/Βιβλιοθήκες
Θα χρειαστεί να κατεβάσετε το Arduino IDE. Για αυτό το σκίτσο, χρησιμοποίησα τρεις διαφορετικές βιβλιοθήκες: FHT.h, SPI.h και TFT.h. Εάν δεν γνωρίζετε πώς να κάνετε λήψη βιβλιοθηκών Arduino, ανατρέξτε στη διεύθυνση https://www.arduino.cc/en/Guide/Libraries. Η βιβλιοθήκη FHT.h έγινε λήψη από το openmusiclabs.com. Τα άλλα δύο κατεβάστηκαν στο GitHub.
Βήμα 20: Σκίτσο Arduino
Ο κώδικας χρησιμοποιεί το Fast Hartley Transform (FHT) για να αλλάξει τον τομέα χρόνου σε έναν τομέα συχνοτήτων. Αυτό μπορεί επίσης να γίνει χρησιμοποιώντας το Fast Fourier Transform (FFT), αλλά το FHT είναι πολύ πιο γρήγορο. Το FFT και το FHT είναι πολύ θεμελιώδεις ιδέες στην επεξεργασία σήματος και πολύ διασκεδαστικό να μάθεις. Προτείνω να διαβάσετε μόνοι σας, αν ενδιαφέρεστε δείτε. Ο παράδειγμα κώδικας FHT που αντέγραψα από τον ιστότοπο του Open Music Labs έβγαζε αρχικά το πλάτος κάθε κάδου συχνοτήτων ως λογαριθμική ή ντεσιμπέλ έξοδο. Το άλλαξα για έξοδο των κάδων συχνότητας σε γραμμική κλίμακα. Αυτό συμβαίνει επειδή η γραμμική κλίμακα είναι μια καλύτερη οπτική αναπαράσταση του τρόπου με τον οποίο οι άνθρωποι ακούν τον ήχο. Ο βρόχος for () στο τέλος είναι για να σχεδιάσετε το πλάτος κάθε κάδου συχνοτήτων στην οθόνη LCD. Το πλήρες φάσμα FHT θα περιλαμβάνει όλους τους κάδους συχνοτήτων από i = 0 έως i <128. Θα παρατηρήσετε ότι ο βρόχος μου για () είναι από i = 5 έως i <40, αυτό συμβαίνει επειδή οι συχνότητες που είναι σημαντικές για τη διάγνωση των πνευμονικών παθήσεων είναι συνήθως μεταξύ 150Hz και 3.5khz, αποφάσισα να ανέβω μέχρι περίπου 4kHz. Αυτό μπορεί να ρυθμιστεί εάν θέλετε να εμφανίσετε το πλήρες φάσμα συχνοτήτων.
[κώδικας]
// Digitalηφιακός κώδικας στηθοσκοπίου
// Βιβλιοθήκη Fast Hartley Transform κατεβάστηκε από openmusiclabs
#define LIN_OUT 1 // ρυθμίστε το FHT να παράγει γραμμική έξοδο
#define LOG_OUT 0 // απενεργοποιήστε τη λογαριθμική έξοδο FHT
#define FHT_N 256 // αριθμός δείγματος FHT
#include // περιλαμβάνει βιβλιοθήκη FHT
#include // περιλαμβάνει βιβλιοθήκη TFT
#include // περιλαμβάνει βιβλιοθήκη SPI
#define cs 10 // ορίστε lcd cs pin σε arduino pin 10
#define dc 9 // ορίστε lcd dc pin σε arduino pin 9
#define rst 8 // ορίστε lcd pin reset σε arduino pin 8
TFT myScreen = TFT (cs, dc, rst); // δηλώστε το όνομα της οθόνης TFT
void setup () {
//Serial.begin(9600);// ρυθμός δειγματοληψίας
myScreen.begin (); // προετοιμασία οθόνης TFT
myScreen.background (0, 0, 0); // ορίστε το φόντο σε μαύρο
ADCSRA = 0xe5; // ρυθμίστε το adc σε ελεύθερη λειτουργία
ADMUX = 0x40; // χρήση adc0
}
void loop () {
ενώ (1) {// μειώνει το jitter cli (); // Η διακοπή UDRE επιβραδύνεται με αυτόν τον τρόπο στο arduino1.0
για (int i = 0; i <FHT_N; i ++) {// αποθηκεύστε 256 δείγματα
ενώ (! (ADCSRA & 0x10)); // περιμένετε να είναι έτοιμο το adc
ADCSRA = 0xf5; // επανεκκίνηση adc byte
m = ADCL; // ανάκτηση byte δεδομένων adc
j = ADCH; int k = (j << 8) | Μ; // μορφή σε int
k -= 0x0200; // μορφή σε υπογεγραμμένο int
k << = 6; // διαμορφώνεται σε 16β υπογεγραμμένο int
fht_input = k; // τοποθετήστε πραγματικά δεδομένα σε κάδους
}
fht_window (); // παράθυρο των δεδομένων για καλύτερη απόκριση συχνότητας
fht_reorder (); // αναδιατάξτε τα δεδομένα πριν κάνετε το fht
fht_run (); // επεξεργασία των δεδομένων στο fht
fht_mag_lin (); // πάρτε την έξοδο του fht
sei ();
για (int i = 5; i <40; i ++) {
myScreen.stroke (255, 255, 255);
myScreen.fill (255, 255, 255);
int drawHeight = χάρτης (fht_lin_out , 10, 255, 10, myScreen.height ());
int ypos = myScreen.height ()-drawHeight-8; myScreen.rect ((4*i) +8, ypos, 3, drawHeight);
}
myScreen.background (0, 0, 0);
}
}
[/κώδικας]
Βήμα 21: Δοκιμάστε το
Χρησιμοποίησα μια ηλεκτρονική γεννήτρια τόνων (https://www.szynalski.com/tone-generator/) για να επιβεβαιώσω ότι ο κώδικας λειτουργεί σωστά. Αφού επιβεβαιώσετε ότι λειτουργεί, πατήστε το κουδούνι του στηθοσκοπίου μέχρι το στήθος σας, πάρτε μια βαθιά αναπνοή και δείτε τι συχνότητες υπάρχουν !!
Βήμα 22: Μελλοντική εργασία
** Σημείωση: Είμαι χημικός, όχι μηχανικός ή επιστήμονας υπολογιστών **. Πιθανότατα θα υπάρξουν λάθη και βελτιώσεις στον σχεδιασμό και τον κώδικα. Τούτου λεχθέντος, νομίζω ότι είναι μια καλή αρχή για κάτι που μπορεί να καταλήξει να είναι πολύ χρήσιμο και φθηνό. Οι ακόλουθες κουκκίδες είναι μελλοντικές βελτιώσεις που θα ήθελα να κάνω και ελπίζω ότι μερικοί από εσάς θα προσπαθήσετε επίσης να τις βελτιώσετε!
· Κάντε τη συσκευή κινητή. Δεν έχω μεγάλη εμπειρία με CPU ή άλλους μικροελεγκτές, αλλά θα πρέπει να έχει αρκετή μνήμη για να αποθηκεύσει ολόκληρη τη βιβλιοθήκη FHT, ή πιθανώς Bluetooth.
· Εισαγάγετε ορισμένους υπολογισμούς στατιστικής ανάλυσης στον κώδικα. Για παράδειγμα, τυπικά ένας συριγμός έχει θεμελιώδη συχνότητα ίση ή μεγαλύτερη από 400 Hz και διαρκεί τουλάχιστον 250 ms. Τα Rhonchi εμφανίζονται σε θεμελιώδη συχνότητα περίπου 200 Hz ή λιγότερο και διαρκούν τουλάχιστον 250 ms. Πολλοί άλλοι πνευμονικοί ήχοι είναι καθορισμένοι και ενδεικτικοί των καταστάσεων υγείας (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Νομίζω ότι είναι κάτι που μπορεί να ελεγχθεί στον κώδικα συγκρίνοντας το σήμα των κάδων συχνότητας μετά από έναν ορισμένο αριθμό κύκλων μέσω του FHT και στη συνέχεια εκτελώντας τη συνάρτηση millis () για να δούμε πόσο καιρό ήταν παρών και στη συνέχεια συγκρίνοντάς το στο πάτωμα θορύβου του υπολογισμού FHT. Είμαι σίγουρος ότι αυτά τα πράγματα μπορούν να γίνουν!
Ελπίζω να περάσατε όλοι καλά με αυτό το έργο και αν έχετε οποιεσδήποτε ερωτήσεις, σχολιάστε και θα απαντήσω το συντομότερο δυνατό! Ανυπομονώ να δω σχόλια.
Συνιστάται:
Super FAST RC Ground Effect Vehicle (Ekranoplan): 5 βήματα (με εικόνες)
Super FAST RC Ground Effect Vehicle (Ekranoplan): Ξέρετε πώς, κατά το άγγιγμα, τα αεροπλάνα αιωρούνται λίγα πόδια πάνω από το έδαφος για λίγο πριν οι τροχοί τους χτυπήσουν πραγματικά τον διάδρομο; Αυτό δεν είναι μόνο για να δώσει στους επιβάτες μια ομαλή προσγείωση, αλλά είναι επίσης το φυσικό αποτέλεσμα της επίδρασης εδάφους, στο οποίο
EasyFFT: Fast Fourier Transform (FFT) για Arduino: 6 βήματα
EasyFFT: Fast Fourier Transform (FFT) για Arduino: Η μέτρηση της συχνότητας από το σήμα που έχει ληφθεί μπορεί να είναι μια δύσκολη εργασία, ειδικά στο Arduino καθώς έχει χαμηλότερη υπολογιστική ισχύ. Υπάρχουν διαθέσιμες μέθοδοι για τη λήψη μηδενικής διέλευσης όπου η συχνότητα καταγράφεται με έλεγχο πόσες φορές το
Arduino: Frequency Transform (DFT): 6 βήματα
Arduino: Frequency Transform (DFT): αυτό το πρόγραμμα πρέπει να υπολογίζει τον μετασχηματισμό συχνότητας στο arduino με έλεγχο κτύπου στις παραμέτρους. Επιλύεται χρησιμοποιώντας βεβήλωση τέταρτου μετασχηματισμού. αυτό δεν είναι FFT. Ο FFT είναι αλγόριθμος που χρησιμοποιείται για την επίλυση του DFT με μικρότερο χρόνο. Μπορείτε να βρείτε τον κωδικό FFT εδώ
Transform-a-Car: Τηλεχειριστήριο σε αυτοέλεγχο: 4 βήματα
Transform-a-Car: Remote Controlled to Self Controlled: Αυτό είναι ένα hack στο αυτοκίνητο RC με σπασμένο τηλεχειριστήριο. Μπορείτε να βρείτε πολλά στις πωλήσεις γκαράζ
Aruduino LED Game Fast Clicking Two Player Game: 8 Βήματα
Aruduino LED Game Fast Clicking Two Player Game: Αυτό το έργο είναι εμπνευσμένο από το @HassonAlkeim. Εάν είστε πρόθυμοι να ρίξετε μια βαθιά ματιά εδώ είναι ένας σύνδεσμος που μπορείτε να ελέγξετε https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Αυτό το παιχνίδι είναι μια βελτιωμένη έκδοση του Alkeim's. Είναι ένα