Innehållsförteckning:
- Steg 1: Material
- Steg 2: Verktyg
- Steg 3: 3D -utskrift
- Steg 4: Konstruera krets
- Steg 5: LCD -kabel
- Steg 6: Mikrofon-/förstärkarkablar
- Steg 7: Koppling av tillfällig strömbrytare
- Steg 8: Potentiometerkoppling
- Steg 9: Anslutning av hörlursuttag
- Steg 10: Mikrofon/förstärkareutgång
- Steg 11: Mikrofon/förstärkarutgång fortsätter
- Steg 12: Komponenter i kapsling
- Steg 13: In-Enclosure-Lodning
- Steg 14: +5V, GND Extended Wires
- Steg 15: Släpp långa trådar genom höljeshålet
- Steg 16: Värmekrympning
- Steg 17: Tätningslåda
- Steg 18: Anslut till Arduino
- Steg 19: Arduino IDE/bibliotek
- Steg 20: Arduino Sketch
- Steg 21: Testa det
- Steg 22: Framtidsarbete
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-23 15:10
I denna instruerbara lär du dig hur man gör ett spektralstetoskop med hjälp av den snabba hartley -transformen. Detta kan användas för att visualisera hjärt- och lungljud.
Steg 1: Material
1,8”LCD -skärm ($ 7,50 på Amazon)
Arduino Uno eller motsvarande ($ 7,00 på Gearbest)
Electret -förstärkare ($ 6,95 på Adafruit)
100 µF kondensator ($ 0,79)
Tråd och tröjor ($ 4,00)
3,5 mm stereokontakt ($ 1,50)
10kOhm potentiometer ($ 2,00)
Momentary Switch ($ 1,50)
Steg 2: Verktyg
Lödkolv
Lim pistol
3D -skrivare … eller en vän med en 3D -skrivare (går att göra med kartong också)
Avbitartång
Bakbord
Steg 3: 3D -utskrift
Den första är att 3D -skriva ut.stl -filerna som bifogas detta steg. Jag skrev ut båda filerna med följande material/inställningar:
Material: PLA
Lagerhöjd: 0,1 mm
Vägg/topp/botten Tjocklek: 0,8 mm
Utskriftstemperatur: 200⁰C
Sängtemperatur: 60⁰C
Support aktiverat @ 10%
Steg 4: Konstruera krets
Bygg kretsen med hjälp av komponenterna i materialavsnittet. Jag sätter alltid ihop kretsen på en brödbräda först för att se till att den fungerar som den ska innan jag rör vid lödkolven.
Steg 5: LCD -kabel
Med hjälp av figuren som bifogas detta steg lödtrådar till sju av de åtta stiften på LCD -skärmen. Dessa ledningar måste vara cirka 3 fot långa, förutom marken och +5V stift (dessa behöver bara vara 2-3 tum)
Steg 6: Mikrofon-/förstärkarkablar
Med hjälp av figuren som bifogas detta steg löds tre ledningar till +5V, Ground och Out -stiften på Adafruit -mikrofonen/förstärkaren. Dessa behöver bara vara cirka 2-3 tum långa.
Steg 7: Koppling av tillfällig strömbrytare
Anslut en 2-3 tums tråd till var och en av de två klackarna på den momentana omkopplaren.
Steg 8: Potentiometerkoppling
Med hjälp av figuren i steg 6, löd tre trådar cirka 2-3 tum i längd till potentiometerns tre klackar.
Steg 9: Anslutning av hörlursuttag
Löd tre ledningar till ringen, spetsen och hylsorna på hörlursuttaget. Jag använde ett uttag ur en metronom som redan var ansluten. Om du inte vet vad ringen, spetsen och hylsorna är, bara googla det, det finns många bra bilder om att ansluta stereokontakter.
Steg 10: Mikrofon/förstärkareutgång
Efter att ha lödt trådarna på mikrofonen/förstärkaren, potentiometern och hörlursuttaget, löd en tråd ungefär tre fot lång till mikrofonförstärkarens "ut" -tråd. Denna kabel kommer senare att anslutas till A0 -stiftet på arduinoen.
Steg 11: Mikrofon/förstärkarutgång fortsätter
Löd en andra ledning till mikrofonens/förstärkarens "ut" -tråd. Denna tråd måste lödas till en 100 microFarad kondensator. Om du använder en elektrolytkondensator, se till att den positiva sidan är ansluten till denna kabel.
Steg 12: Komponenter i kapsling
När alla trådar är lödda på komponenterna, placera komponenterna där respektive platser enligt figurerna som bifogas detta steg. Jag använde varmt lim för att säkra mikrofon- och hörlursuttaget på plats.
Steg 13: In-Enclosure-Lodning
När alla komponenter är fästa i höljet, löd alla jordkablarna tillsammans. Det ska finnas en från LCD -skärmen, en från mikrofonen/förstärkaren och en från hörlursuttaget. Löd också ihop +5V -kablarna och en ledning från den momentana omkopplaren. Återigen borde det finnas en från LCD -skärmen, en från mikrofonen/förstärkaren och en på den momentana omkopplaren.
Steg 14: +5V, GND Extended Wires
Klipp nu två bitar tråd ca 3 fot lång. Löd en till klustret av jordledningar och löd den andra till den öppna tråden på den tillfälliga omkopplaren.
Steg 15: Släpp långa trådar genom höljeshålet
Nu bör du ha totalt åtta ledningar med en längd på cirka 3 fot. Placera dessa genom det ofyllda hålet i höljet. Se figuren som bifogas detta steg
Steg 16: Värmekrympning
När all lödning är klar, se till att de exponerade trådarna är täckta. Jag använde värmekrympslang, men eltejp fungerar också bra.
Steg 17: Tätningslåda
Ta hälften av höljet som innehåller LCD -skärmen och skjut det över den andra halvan av höljet som innehåller de andra komponenterna. Medan du trycker ihop de två bitarna, hetlimma dem för att fästa höljet.
Steg 18: Anslut till Arduino
De åtta, långa, återstående ledningarna är anslutna direkt till sina respektive Arduino -stift som beskrivs i kretsschemat. Se till att du sätter en bit tejp i andra änden som anger vilken Arduino -stift den går till varje gång du lödder en av de långa 3ft trådarna i kretsen.
Steg 19: Arduino IDE/bibliotek
Du måste ladda ner Arduino IDE. För denna skiss använde jag tre olika bibliotek: FHT.h, SPI.h och TFT.h. Om du inte vet hur du laddar ner Arduino -bibliotek, se https://www.arduino.cc/en/Guide/Libraries. FHT.h -biblioteket laddades ner från openmusiclabs.com. De andra två laddades ner på GitHub.
Steg 20: Arduino Sketch
Koden använder Fast Hartley Transform (FHT) för att ändra tidsdomänen till en frekvensdomän. Detta kan också göras med hjälp av Fast Fourier Transform (FFT), men FHT är mycket snabbare. FFT och FHT är mycket grundläggande idéer inom signalbehandling och väldigt roliga att lära sig om. Jag föreslår att du läser lite själv, om du är intresserad se. FHT -exempelkoden som jag kopierade från Open Music Labs webbplats utmatade först amplituden för varje frekvensfack som en logaritmisk eller decibelutgång. Jag ändrade detta för att mata ut frekvensfacken på en linjär skala. Detta beror på att den linjära skalan är en bättre visuell representation av hur människor hör ljud. For () -slingan i slutet är för att rita amplituden för varje frekvensfack på LCD -skärmen. Hela FHT -spektrumet skulle omfatta alla frekvensfack från i = 0 till i <128. Du kommer att märka att min for () loop är från i = 5 till i <40, detta beror på att frekvenserna som är viktiga för att diagnostisera lungtillstånd är vanligtvis mellan 150Hz och 3,5khz, jag bestämde mig för att gå upp till ca 4kHz. Det kan justeras om du vill visa hela frekvensspektrumet.
[koda]
// Digital stetoskopskod
// Snabbt Hartley Transform -bibliotek nedladdat från openmusiclabs
#define LIN_OUT 1 // ställ in FHT för att producera linjär utmatning
#define LOG_OUT 0 // stäng av FHT logaritmisk utmatning
#define FHT_N 256 // FHT -provnummer
#inkludera // inkludera FHT -bibliotek
#inkludera // inkludera TFT -bibliotek
#inkludera // inkludera SPI -bibliotek
#define cs 10 // ställ in lcd cs pin till arduino pin 10
#define dc 9 // ställ in lcd dc pin till arduino pin 9
#define rst 8 // ställ in lcd -återställningsstift till arduino pin 8
TFT myScreen = TFT (cs, dc, rst); // deklarera namnet på TFT -skärmen
void setup () {
//Serial.begin(9600);//sätt samplingsfrekvens
myScreen.begin (); // initiera TFT -skärm
myScreen.background (0, 0, 0); // ställ in bakgrunden på svart
ADCSRA = 0xe5; // ställa in adc till fritt körläge
ADMUX = 0x40; // använd adc0
}
void loop () {
medan (1) {// minskar jitter cli (); // UDRE -avbrott saktar ner på detta sätt på arduino1.0
för (int i = 0; i <FHT_N; i ++) {// spara 256 prover
medan (! (ADCSRA & 0x10)); // vänta tills adc är klar
ADCSRA = 0xf5; // starta om adc byte
m = ADCL; // hämta adc -databyte
j = ADCH; int k = (j << 8) | m; // form till en int
k -= 0x0200; // form till en signerad int
k << = 6; // form till en 16b signerad int
fht_input = k; // lägga in verklig data i fack
}
fht_window (); // fönstret för bättre frekvenssvar
fht_reorder (); // ordna om data innan du gör fht
fht_run (); // bearbeta data i fht
fht_mag_lin (); // ta utmatningen av fht
sei ();
för (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);
}
}
[/koda]
Steg 21: Testa det
Jag använde en online-tongenerator (https://www.szynalski.com/tone-generator/) för att bekräfta att koden fungerade korrekt. När du har bekräftat att det fungerar, tryck stetoskopets klocka upp mot bröstet, andas djupt och se vilka frekvenser som finns !!
Steg 22: Framtidsarbete
** Obs! Jag är kemist, inte ingenjör eller datavetare **. Det kommer sannolikt att bli fel och förbättringar av design och kod. Med detta sagt tror jag att det är en bra början på något som kan bli mycket användbart och billigt. Följande kulor är framtida förbättringar jag skulle vilja göra och jag hoppas att några av er också försöker förbättra det!
· Gör enheten mobil. Jag har inte stor erfarenhet av processorer eller andra mikrokontroller, men det skulle behöva ha tillräckligt med minne för att lagra hela FHT -biblioteket på, eller möjligen Bluetooth.
· Införa några statistiska analysberäkningar i koden. Till exempel har en väsande andning normalt en grundfrekvens som är lika med eller större än 400 Hz och varar i minst 250 ms. Rhonchi förekommer vid en grundfrekvens på cirka 200 Hz eller mindre och varar i minst 250 ms. Många andra lungljud är definierade och indikerar hälsotillstånd (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Jag tror att det är något som kan kontrolleras i koden genom att jämföra signalen från frekvensfacken efter ett visst antal cykler genom FHT och sedan köra millis () -funktionen för att se hur länge den var närvarande och sedan jämföra den till bullergolvet i FHT -beräkningen. Jag är övertygad om att dessa saker kan göras!
Jag hoppas att ni alla hade kul med det här projektet och om ni har några frågor vänligen kommentera så svarar jag så snart jag kan! Jag ser fram emot att se kommentarer.
Rekommenderad:
Tap Tap Rainbow - ett snabbt spel för 2 spelare: 4 steg (med bilder)
Tap Tap Rainbow - ett snabbt spel för två spelare: För två veckor sedan hade min dotter en genial idé att göra ett snabbt reaktionsspel med regnbågsfärger (hon är en regnbågsexpert: D). Jag älskade direkt idén och vi började fundera på hur vi skulle göra det till ett riktigt spel. Idén var. Du har en regnbåge i
Snabbt och smutsigt - Elektrisk sparkcykel 3 -tråds testgas: 3 steg
Snabbt och smutsigt-Elektrisk sparkcykel 3-tråds testgas: Jag beställde en ny 36v scootermotorstyrenhet utan en ny 3-tråds gasreglage. Medan jag väntar på att min nya gas ska komma, gjorde jag ett snabbt och smutsigt projekt för att simulera gasen för min nya controller.Jag gjorde ett annat projekt för att också konvertera min nuvarande
Aruduino LED -spel Snabbt klickande spel för två spelare: 8 steg
Aruduino LED -spel Snabbklickande spel för två spelare: Detta projekt är inspirerat av @HassonAlkeim. Om du är villig att ta en djup titt här är en länk som du kan kolla in https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Detta spel är en förbättrad version av Alkeims. Det är en
Hur man snabbt förverkligar mosaikdesignen i AD / Protel: 3 steg
Hur man snabbt förverkligar mosaikdesignen i AD / Protel: I PCB -design använder vi ofta montering, hur man uppnår snabb montering? Följande metoder introduceras; Klicka här för att göra ditt eget kretskort: http://www.starivergroup.com/Sättet att montera i Altium/Protel Den så kallade monteringen är faktiskt
Snabbt och enkelt sätt att ändra din låsskärm i 6 enkla steg (Windows 8-10): 7 steg
Snabbt och enkelt sätt att ändra din låsskärm i 6 enkla steg (Windows 8-10): Vill du ändra saker på din bärbara dator eller dator? Vill du förändra din atmosfär? Följ dessa snabba och enkla steg för att framgångsrikt anpassa datorns låsskärm