Sadržaj:
- Korak 1: Materijali
- Korak 2: Alati
- Korak 3: 3D štampanje
- Korak 4: Konstruirajte krug
- Korak 5: LCD ožičenje
- Korak 6: Ožičenje mikrofona/pojačala
- Korak 7: Ožičenje trenutnog prekidača
- Korak 8: Ožičenje potenciometra
- Korak 9: Ožičenje priključka za slušalice
- Korak 10: Izlaz za mikrofon/pojačalo
- Korak 11: Nastavak izlaza za mikrofon/pojačalo
- Korak 12: Komponente u kućištu
- Korak 13: Lemljenje unutar kućišta
- Korak 14: +5V, produžene žice GND
- Korak 15: Provucite duge žice kroz otvor na kućištu
- Korak 16: Termoskupljanje
- Korak 17: Zatvorite kućište
- Korak 18: Povežite se s Arduinom
- Korak 19: Arduino IDE/biblioteke
- Korak 20: Arduino skica
- Korak 21: Isprobajte
- Korak 22: Budući rad
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-23 14:37
U ovom uputstvu naučit ćete kako napraviti spektralni stetoskop koristeći brzu Hartleyjevu transformaciju. Ovo se može koristiti za vizualizaciju zvukova srca i pluća.
Korak 1: Materijali
LCD ekran od 1,8 inča (7,50 USD na Amazonu)
Arduino Uno ili ekvivalentno (7,00 USD na Gearbestu)
Pojačalo Electret (6,95 USD na Adafruit -u)
Kondenzator od 100 µF (0,79 USD)
Žica i kratkospojnici (4,00 USD)
Stereo priključak od 3,5 mm (1,50 USD)
Potenciometar od 10 kOhm (2,00 USD)
Trenutni prekidač (1,50 USD)
Korak 2: Alati
Lemilica
Pištolj za vruće ljepilo
3D štampač … ili prijatelj sa 3D štampačem (moguće je napraviti i sa kartonom)
Rezač žice
Breadboard
Korak 3: 3D štampanje
Prvi je 3D ispis.stl datoteka priloženih ovom koraku. Odštampao sam obje datoteke koristeći sljedeći materijal/postavke:
Materijal: PLA
Visina sloja: 0,1 mm
Debljina zida/vrha/dna: 0,8 mm
Temperatura štampe: 200⁰C
Temperatura kreveta: 60⁰C
Podrška omogućena @ 10%
Korak 4: Konstruirajte krug
Koristeći komponente u odjeljku materijala, napravite krug. Uvijek sam prvo sklopio krug na ploču kako bih se uvjerio da radi ispravno prije nego što dodirnem lemilicu.
Korak 5: LCD ožičenje
Koristeći brojku priloženu ovom koraku, lemite žice na sedam od osam pinova na LCD ekranu. Ove žice moraju biti dugačke oko 3 stope, osim uzemljenja i +5V igle (one trebaju biti samo 2-3 inča)
Korak 6: Ožičenje mikrofona/pojačala
Koristeći sliku priloženu ovom koraku, lemite tri žice na +5V, uzemljenje i izlazne pinove na Adafruit mikrofonu/pojačalu. Oni trebaju biti dugački samo 2-3 inča.
Korak 7: Ožičenje trenutnog prekidača
Ožičite jednu žicu od 2-3 inča na svaku od dvije ušice na prekidaču za trenutak.
Korak 8: Ožičenje potenciometra
Koristeći sliku u koraku 6, lemite tri žice dužine oko 2-3 inča na tri držača potenciometra.
Korak 9: Ožičenje priključka za slušalice
Lemite tri žice na prsten, vrh i čahure na utičnici za slušalice. Koristio sam utikač iz metronoma koji je već bio ožičen. Ako ne znate što su prstenovi, vrhovi i čahure, samo proguglajte, ima mnogo dobrih slika o ožičenju stereo priključaka.
Korak 10: Izlaz za mikrofon/pojačalo
Nakon lemljenja žica na mikrofonu/pojačalu, potenciometru i priključku za slušalice, lemite jednu žicu dužine oko tri stope na "izlaznu" žicu pojačala za mikrofon. Ova će žica kasnije biti spojena na A0 pin arduina.
Korak 11: Nastavak izlaza za mikrofon/pojačalo
Lemite drugu žicu na "izlaznu" žicu mikrofona/pojačala. Ova žica mora biti lemljena na kondenzator od 100 mikroFarada. Ako koristite elektrolitički kondenzator, provjerite je li pozitivna strana spojena na ovu žicu.
Korak 12: Komponente u kućištu
Nakon što su sve žice zalemljene na komponente, postavite komponente na odgovarajuća mjesta slijedeći slike priložene ovom koraku. Koristio sam vruće ljepilo da pričvrstim priključak za mikrofon i slušalice.
Korak 13: Lemljenje unutar kućišta
Nakon što su sve komponente pričvršćene u kućištu, zalemite sve žice za uzemljenje zajedno. Trebalo bi da postoji jedan sa LCD -a, jedan sa mikrofona/pojačala i jedan sa navlake priključka za slušalice. Takođe lemite žice +5V zajedno i jednu žicu od trenutnog prekidača. Opet bi trebao biti jedan sa LCD -a, jedan sa mikrofona/pojačala i jedan na prekidaču za trenutak.
Korak 14: +5V, produžene žice GND
Sada izrežite dva komada žice dužine oko 3 stope. Lemite jedan na skup žica za uzemljenje, a drugi na otvorenu žicu na trenutnom prekidaču.
Korak 15: Provucite duge žice kroz otvor na kućištu
Sada biste trebali imati ukupno osam žica dužine oko 3 stope. Postavite ih kroz nepopunjenu rupu u kućištu. Pogledajte sliku priloženu ovom koraku
Korak 16: Termoskupljanje
Nakon što je lemljenje završeno, provjerite jesu li izložene žice prekrivene. Koristio sam termoskupljajuće cijevi, ali i električna traka radi dobro.
Korak 17: Zatvorite kućište
Uzmite polovinu kućišta sa LCD ekranom i prevucite je preko druge polovine kućišta koja sadrži ostale komponente. Dok gurate dva komada zajedno, vruće ih zalijepite kako biste pričvrstili kućište.
Korak 18: Povežite se s Arduinom
Preostalih osam dugačkih žica spojeno je izravno na odgovarajuće Arduino pinove navedene u shemama kola. Uvjerite se da svaki put kada lemite jednu od onih dugačkih žica od 3 ft u kolo stavite dio trake na drugi kraj koji pokazuje na koji Arduino pin ide!
Korak 19: Arduino IDE/biblioteke
Morat ćete preuzeti Arduino IDE. Za ovu skicu koristio sam tri različite biblioteke: FHT.h, SPI.h i TFT.h. Ako ne znate kako preuzeti Arduino biblioteke, pogledajte https://www.arduino.cc/en/Guide/Libraries. Biblioteka FHT.h preuzeta je s openmusiclabs.com. Druga dva su preuzeta na GitHub -u.
Korak 20: Arduino skica
Kod koristi Fast Hartley Transform (FHT) za promjenu vremenske domene u frekvencijsku domenu. To se također može učiniti korištenjem Fast Fourierove transformacije (FFT), ali FHT je mnogo brži. FFT i FHT su vrlo temeljne ideje u obradi signala i vrlo ih je zabavno učiti. Predlažem da i sami pročitate, ako vas zanima pogledajte. Primjer koda FHT -a koji sam kopirao sa web stranice Open Music Labs u početku je izlazio amplitudu svake frekvencijske jedinice kao logaritamski ili decibel izlaz. Promijenio sam ovo za ispisivanje frekvencijskih polja na linearnoj skali. To je zato što je linearna ljestvica bolji vizualni prikaz načina na koji ljudi čuju zvuk. Petlja for () na kraju služi za iscrtavanje amplitude svakog spremišta frekvencija na LCD ekranu. Cijeli FHT spektar obuhvatio bi sve frekvencijske okvire od i = 0 do i <128. Primijetit ćete da je moja for () petlja od i = 5 do i <40, to je zato što su frekvencije važne za dijagnosticiranje plućnih stanja tipično između 150Hz i 3.5khz, odlučio sam se popeti na oko 4kHz. To se može prilagoditi ako želite prikazati cijeli frekvencijski spektar.
[kod]
// Šifra digitalnog stetoskopa
// Brza biblioteka Hartley Transform preuzeta s openmusiclabs
#define LIN_OUT 1 // postavite FHT za proizvodnju linearnog izlaza
#define LOG_OUT 0 // isključuje FHT logaritamski izlaz
#define FHT_N 256 // Broj uzorka FHT
#include // uključuje FHT biblioteku
#include // uključuje TFT biblioteku
#include // uključuje SPI biblioteku
#define cs 10 // postavite lcd cs pin na arduino pin 10
#define dc 9 // postavite lcd dc pin na arduino pin 9
#define rst 8 // postavite pin za resetiranje lcd -a na arduino pin 8
TFT myScreen = TFT (cs, dc, rst); // proglašava naziv TFT ekrana
void setup () {
//Serial.begin(9600);//set brzina uzorkovanja
myScreen.begin (); // inicijalizira TFT ekran
myScreen.background (0, 0, 0); // pozadinu postaviti na crnu
ADCSRA = 0xe5; // postavite adc u režim slobodnog rada
ADMUX = 0x40; // koristi adc0
}
void loop () {{100} {101}
while (1) {// smanjuje jitter cli (); // UDRE prekid na ovaj način usporava arduino1.0
for (int i = 0; i <FHT_N; i ++) {// spremanje 256 uzoraka
while (! (ADCSRA & 0x10)); // čekati da adc bude spreman
ADCSRA = 0xf5; // ponovno pokretanje adc bajta
m = ADCL; // dohvatiti ADC bajt podataka
j = ADCH; int k = (j << 8) | m; // formirati u int
k -= 0x0200; // formira u potpisanu int
k << = 6; // formira u 16b potpisanu int
fht_input = k; // stavljamo stvarne podatke u kante
}
fht_window (); // prozire podatke radi boljeg frekventnog odziva
fht_reorder (); // promijenite redoslijed podataka prije nego što izvršite fht
fht_run (); // obrađuje podatke u fht -u
fht_mag_lin (); // uzeti izlaz fht -a
sei ();
za (int i = 5; i <40; i ++) {
myScreen.stroke (255, 255, 255);
myScreen.fill (255, 255, 255);
int drawHeight = map (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);
}
}
[/code]
Korak 21: Isprobajte
Koristio sam internetski generator tonova (https://www.szynalski.com/tone-generator/) kako bih potvrdio da kôd radi ispravno. Nakon što potvrdite da radi, pritisnite zvono stetoskopa do grudi, duboko udahnite i pogledajte koje su frekvencije prisutne !!
Korak 22: Budući rad
** Napomena: Ja sam hemičar, a ne inženjer ili informatičar **. Vjerovatno će doći do grešaka i poboljšanja dizajna i koda. S obzirom na to, mislim da je to dobar početak za nešto što na kraju može biti vrlo korisno i jeftino. Sljedeći znakovi su buduća poboljšanja koja bih želio napraviti i nadam se da će i neki od vas pokušati to poboljšati!
· Učinite uređaj mobilnim. Nemam veliko iskustvo s procesorima ili drugim mikrokontrolerima, ali bi mu trebalo imati dovoljno memorije za pohranu cijele FHT biblioteke na, ili eventualno Bluetooth.
· Uvesti neke proračune statističke analize u kôd. Na primjer, tipično piskanje ima osnovnu frekvenciju jednaku ili veću od 400 Hz i traje najmanje 250 ms. Rhonchi se pojavljuju na osnovnoj frekvenciji od oko 200 Hz ili manje i traju najmanje 250 ms. Mnogi drugi plućni zvukovi su definirani i ukazuju na zdravstvena stanja (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Mislim da je to nešto što se može provjeriti u kodu uspoređivanjem signala frekvencijskih polja nakon određenog broja ciklusa kroz FHT, a zatim pokretanjem funkcije millis () kako bi se vidjelo koliko dugo je prisutno, pa usporedbom do nivoa buke proračuna FHT -a. Uvjeren sam da se ove stvari mogu učiniti!
Nadam se da ste se svi zabavili s ovim projektom, a ako imate bilo kakvih pitanja, komentirajte i ja ću vam odgovoriti što je prije moguće! Jedva čekam komentare.
Preporučuje se:
Brzi mjenjač ispod 50 USD! Kazeshifter Arduino podesivi brzi mjenjač: 7 koraka
Brzi mjenjač ispod 50 USD! Kazeshifter Arduino podesivi brzi mjenjač: Zdravo ljubitelji Superbikea ili motocikla! Na ovom uputstvu ću vam reći kako jeftino napraviti svoj vlastiti Quick Shifter! Za ljude koji su lijeni čitati ove upute, samo pogledajte moj video! Napomena: Za neke bicikle koji već koristi sistem za ubrizgavanje goriva, neke
Jednostavno napravite vlastite widgete - Brzi brojač BPM -a: 6 koraka
Jednostavno napravite vlastite widgete - Brzi brojač BPM -a: Web aplikacije su uobičajeno mjesto, ali web aplikacije koje ne zahtijevaju pristup internetu nisu. U ovom članku pokazat ću vam kako sam napravio BPM brojač na jednostavnoj HTML stranici zajedno sa vanilinom javascript ( vidi ovde). Ako se preuzme, ovaj widget se može koristiti van mreže
Domaći brzi električni automobil: 7 koraka
Domaći brzi električni automobil: Ako ste ikada htjeli isprobati vlastiti električni automobil, ovo je vrlo jednostavan način da napravite automobil velike brzine od uobičajenih materijala, kao i nekoliko jeftinih stvari iz trgovine elektroničkih proizvoda. Nema više trošenja 30 do 60 dolara na RC automobile, kada
Brzi i jednostavni računari za montiranje na zid: 8 koraka
Brzi i laki računari za montiranje na zid: Uštedite tonu prostora, zadivite prijatelje! Koristeći neke jednostavno izrezane drvene komade i list obojenog pleksiglasa, možete brzo postaviti svoj računar na zid
QuickFFT: Brzi FFT za Arduino: 3 koraka
QuickFFT: FFT velike brzine za Arduino: Tipični Arduino ima ograničenu RAM i procesorsku snagu, a FFT je proces koji je zahtjevan za računanje. Za mnoge aplikacije u stvarnom vremenu jedini zahtjev je da se dobije frekvencija s maksimalnom amplitudom ili je potrebno otkriti vrhove frekvencija. U jednoj od