INHOUDSOPGAWE:

Fast Hartley Transform Spectral Stetoskoop: 22 stappe
Fast Hartley Transform Spectral Stetoskoop: 22 stappe

Video: Fast Hartley Transform Spectral Stetoskoop: 22 stappe

Video: Fast Hartley Transform Spectral Stetoskoop: 22 stappe
Video: На мысе Канаверал начинается строительство башни звездолета, обновление Rocket Lab Neutron, версия 2 Starlink 2024, November
Anonim
Fast Hartley Transform Spectral Stetoskoop
Fast Hartley Transform Spectral Stetoskoop

In hierdie instruksies leer u hoe u 'n spektrale stetoskoop kan maak met behulp van die vinnige hartley -transformasie. Dit kan gebruik word om hart- en longklanke te visualiseer.

Stap 1: materiaal

1,8”LCD -skerm ($ 7,50 op Amazon)

Arduino Uno of ekwivalent ($ 7,00 op Gearbest)

Electret versterker ($ 6,95 op Adafruit)

100 µF kondensator ($ 0,79)

Draad en springers ($ 4,00)

3,5 mm stereo -aansluiting ($ 1,50)

10kOhm potensiometer ($ 2,00)

Tydelike skakelaar ($ 1,50)

Stap 2: Gereedskap

Soldeerbout

Warm gom geweer

3D -drukker … of 'n vriend met 'n 3D -drukker (kan ook met karton gemaak word)

Draadsnyer

Broodbord

Stap 3: 3D -drukwerk

Die eerste is om die.stl -lêers wat by hierdie stap aangeheg is, in 3D te druk. Ek het albei lêers met die volgende materiaal/instellings gedruk:

Materiaal: PLA

Laaghoogte: 0,1 mm

Muur/bo/onder dikte: 0,8 mm

Druk temperatuur: 200 ⁰

Bedtemperatuur: 60⁰C

Ondersteuning geaktiveer @ 10%

Stap 4: Bou stroombaan

Bou die stroombaan deur die komponente in die materiaalafdeling te gebruik. Ek sit altyd eers die kring op 'n broodbord om seker te maak dat dit behoorlik werk voordat ek aan die soldeerbout raak.

Stap 5: LCD -bedrading

LCD bedrading
LCD bedrading

Met behulp van die figuur wat by hierdie stap geheg is, soldeer drade na sewe van die agt penne op die LCD -skerm. Hierdie drade moet ongeveer 3 voet lank wees, behalwe die grond en +5V penne (dit moet slegs 2-3 duim wees)

Stap 6: Mikrofoon-/versterkerbedrading

Mikrofoon/versterker bedrading
Mikrofoon/versterker bedrading

Met behulp van die figuur wat by hierdie stap geheg is, soldeer drie drade aan die +5V-, grond- en uitpenne op die Adafruit -mikrofoon/versterker. Dit hoef slegs ongeveer 2-3 cm lank te wees.

Stap 7: Bedrading van tydelike skakelaars

Draai 'n draad van 2-3 duim na elk van die twee tappe op die oombliklike skakelaar.

Stap 8: Potensiometer bedrading

Met behulp van die figuur in stap 6, soldeer drie drade ongeveer 2-3 sentimeter lank aan die drie nokke van die potensiometer.

Stap 9: Bedrading vir koptelefoonaansluiting

Soldeer drie drade aan die ring, punt en moue van die koptelefoonaansluiting. Ek gebruik 'n domkrag uit 'n metronoom wat reeds bedraad was. As u nie weet wat die ring, punt en moue is nie, google dit net, daar is baie goeie beelde oor die aansluiting van stereo -aansluitings.

Stap 10: Mikrofoon/versterker -uitvoer

Nadat u die drade op die mikrofoon/versterker, potensiometer en koptelefoonaansluiting gesoldeer het, soldeer u een draad ongeveer drie voet lank aan die "uit" draad van die mikrofoonversterker. Hierdie draad sal later aan die A0 -pen van die arduino gekoppel word.

Stap 11: Mikrofoon/versterker -uitvoer word voortgesit

Soldeer 'n tweede draad aan die "uit" draad van die mikrofoon/versterker. Hierdie draad moet aan 'n 100 microFarad -kapasitor gesoldeer word. As u 'n elektrolitiese kondensator gebruik, moet u seker maak dat die positiewe kant aan hierdie draad gekoppel is.

Stap 12: Komponente in die omhulsel

Komponente in bylaag
Komponente in bylaag
Komponente in bylaag
Komponente in bylaag

Nadat al die drade aan die komponente gesoldeer is, plaas die komponente op die onderskeie plekke volgens die figure wat by hierdie stap aangeheg is. Ek het warm gom gebruik om die mikrofoon en koptelefoonaansluiting vas te maak.

Stap 13: In-omhulsel-soldeer

Nadat al die komponente in die omhulsel vasgemaak is, soldeer al die gronddrade saam. Daar moet een uit die LCD, een uit die mikrofoon/versterker en een uit die mou van die koptelefoonaansluiting wees. Soldeer ook die +5V drade saam en een draad van die oombliklike skakelaar. Daar moet weer een van die LCD, een van die mikrofoon/versterker, en een op die oombliklike skakelaar wees.

Stap 14: +5V, GND Uitgebreide drade

Sny nou twee stukke draad ongeveer 3 voet lank. Soldeer die een aan die groep gronddrade en soldeer die ander aan die oop draad op die oombliklike skakelaar.

Stap 15: Skuif lang drade deur die omhulselgat

Skuif lang drade deur die ingeslote gat
Skuif lang drade deur die ingeslote gat

Nou moet u altesaam agt drade van ongeveer 3 voet lank hê. Plaas dit deur die ongevulde gat in die omhulsel. Sien die figuur wat by hierdie stap aangeheg is

Stap 16: Verhit krimp

Nadat die soldeer klaar is, moet u seker maak dat die blootgestelde drade bedek is. Ek het 'n krimpbuis gebruik, maar elektriese band werk ook goed.

Stap 17: Seëlomhulsel

Seëlomhulsel
Seëlomhulsel
Seëlomhulsel
Seëlomhulsel

Neem die helfte van die omhulsel wat die LCD -skerm bevat en plaas dit oor die ander helfte van die omhulsel wat die ander komponente bevat. Terwyl u die twee stukke bymekaar druk, plak hulle dit warm om die omhulsel vas te maak.

Stap 18: Koppel aan Arduino

Die agt, lang, oorblywende drade is direk verbind met hul onderskeie Arduino -penne wat in die kringskemas uiteengesit is. Maak seker dat u elke keer as u een van die lang 3ft drade in die stroombaan soldeer, 'n stuk band aan die ander kant plaas wat aandui na watter Arduino -pen dit gaan!

Stap 19: Arduino IDE/biblioteke

U moet die Arduino IDE aflaai. Vir hierdie skets het ek drie verskillende biblioteke gebruik: FHT.h, SPI.h en TFT.h. As u nie weet hoe om Arduino -biblioteke af te laai nie, gaan na https://www.arduino.cc/en/Guide/Libraries. Die FHT.h -biblioteek is afgelaai van openmusiclabs.com. Die ander twee is afgelaai op GitHub.

Stap 20: Arduino -skets

Die kode gebruik die Fast Hartley Transform (FHT) om die tyddomein na 'n frekwensiedomein te verander. Dit kan ook gedoen word met behulp van die Fast Fourier Transform (FFT), maar die FHT is baie vinniger. Die FFT en FHT is baie fundamentele idees in seinverwerking en baie lekker om van te leer. Ek stel voor dat u self lees, as u belangstel. Die FHT -voorbeeldkode wat ek van die Open Music Labs -webwerf gekopieer het, het aanvanklik die amplitude van elke frekwensiebak as 'n logaritmiese of desibel -uitset weergegee. Ek het dit verander om die frekwensiebakke op 'n lineêre skaal uit te voer. Dit is omdat die lineêre skaal 'n beter visuele voorstelling is van hoe mense klank hoor. Die for () lus aan die einde is om die amplitude van elke frekwensiebak op die LCD -skerm te teken. Die volledige FHT -spektrum sal alle frekwensiebakke van i = 0 tot i <128 insluit. U sal sien dat my for () lus van i = 5 tot i <40 is, dit is omdat die frekwensies wat belangrik is vir die diagnose van longtoestande gewoonlik tussen 150Hz en 3.5khz is. Ek het besluit om tot ongeveer 4kHz te styg. Dit kan aangepas word as u die volle frekwensiespektrum wil wys.

[kode]

// Digitale stetoskoopkode

// Fast Hartley Transform -biblioteek afgelaai van openmusiclabs

#define LIN_OUT 1 // stel FHT in om lineêre uitset te lewer

#define LOG_OUT 0 // skakel die logaritmiese uitvoer van FHT uit

#defineer FHT_N 256 // FHT -voorbeeldnommer

#include // sluit FHT -biblioteek in

#include // sluit TFT -biblioteek in

#include // sluit SPI -biblioteek in

#definieer cs 10 // stel lcd cs pin in op arduino pin 10

#definieer dc 9 // stel lcd dc -pen in op arduino -pen 9

#definieer eerste 8 // stel lcd -terugstelpen in op arduino -pen 8

TFT myScreen = TFT (cs, dc, rst); // verklaar die naam van die TFT -skerm

ongeldige opstelling () {

//Serial.begin(9600);// stel bemonsteringstempo

myScreen.begin (); // begin die TFT -skerm

myScreen.background (0, 0, 0); // stel die agtergrond op swart

ADCSRA = 0xe5; // stel adc in die vrylopende modus

ADMUX = 0x40; // gebruik adc0

}

leemte -lus () {

terwyl (1) {// jitter cli () verminder; // UDRE -onderbreking vertraag hierdie manier op arduino1.0

vir (int i = 0; i <FHT_N; i ++) {// stoor 256 monsters

terwyl (! (ADCSRA & 0x10)); // wag totdat adc gereed is

ADCSRA = 0xf5; // herbegin adc byte

m = ADCL; // haal adc -data -greep

j = ADCH; int k = (j << 8) | m; // vorm tot 'n int

k -= 0x0200; // vorm in 'n getekende int

k << = 6; // vorm in 'n 16b getekende int

fht_input = k; // sit regte data in asblikke

}

fht_window (); // venster die data vir 'n beter frekwensierespons

fht_reorder (); // rangskik die data voordat u die fht

fht_run (); // verwerk die data in die fht

fht_mag_lin (); // neem die uitset van die fht

sei ();

vir (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);

}

}

[/kode]

Stap 21: Toets dit

Toets dit!
Toets dit!

Ek het 'n aanlyn toongenerator (https://www.szynalski.com/tone-generator/) gebruik om te bevestig dat die kode behoorlik werk. Nadat u bevestig het dat dit werk, druk die klok van die stetoskoop tot op u bors, haal diep asem en kyk watter frekwensies daar is !!

Stap 22: Toekomstige werk

** Opmerking: ek is 'n apteker, nie 'n ingenieur of rekenaarwetenskaplike nie **. Daar is waarskynlik foute en verbeterings aan die ontwerp en kode. Dit gesê, ek dink dit is 'n goeie begin vir iets wat baie nuttig en goedkoop kan wees. Die volgende koeëls is toekomstige verbeterings wat ek graag wil aanbring, en ek hoop dat sommige van u dit ook probeer verbeter!

· Maak die toestel selfoon. Ek het nie uitgebreide ervaring met SVE's of ander mikrobeheerders nie, maar ek moet genoeg geheue hê om die hele FHT -biblioteek op te slaan, of moontlik Bluetooth.

· Stel 'n paar statistiese analise -berekeninge in die kode in. Byvoorbeeld, 'n asemhaling het gewoonlik 'n fundamentele frekwensie gelyk aan of groter as 400 Hz en duur minstens 250 ms. Rhonchi kom voor met 'n fundamentele frekwensie van ongeveer 200 Hz of minder en duur minstens 250 ms. Baie ander pulmonale geluide word gedefinieer en dui op gesondheidstoestande (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Ek dink dit is iets wat in die kode nagegaan kan word deur die sein van die frekwensiebakke na 'n sekere aantal siklusse deur die FHT te vergelyk en dan die millis () -funksie te gebruik om te sien hoe lank dit teenwoordig was en dit dan te vergelyk na die geraasvloer van die FHT -berekening. Ek is vol vertroue dat hierdie dinge gedoen kan word!

Ek hoop dat u almal pret gehad het met hierdie projek, en as u enige vrae het, lewer kommentaar, en ek sal so gou as moontlik reageer! Ek sien uit daarna om kommentaar te sien.

Aanbeveel: