Мазмуну:

Fast Hartley Transform Spectral Stethoscope: 22 Steps
Fast Hartley Transform Spectral Stethoscope: 22 Steps

Video: Fast Hartley Transform Spectral Stethoscope: 22 Steps

Video: Fast Hartley Transform Spectral Stethoscope: 22 Steps
Video: The Discrete Fourier Transform: Most Important Algorithm Ever? 2024, Июль
Anonim
Fast Hartley Transform Spectral Stethoscope
Fast Hartley Transform Spectral Stethoscope

Бул көрсөтмөдө сиз тез Хартли трансформациясын колдонуп, спектралдык стетоскоп жасоону үйрөнөсүз. Бул жүрөк жана өпкө үндөрүн элестетүү үчүн колдонулушу мүмкүн.

1 -кадам: материалдар

1,8 дюймдук LCD экран (Amazonдо $ 7.50)

Arduino Uno же барабар (Gearbest боюнча $ 7.00)

Электр күчөткүчү (Adafruitте 6,95 доллар)

100 µF Конденсатор ($ 0.79)

Зым жана секиргичтер ($ 4.00)

3.5мм стерео джек ($ 1.50)

10kOhm потенциометр ($ 2.00)

Кыска которуу ($ 1.50)

2 -кадам: Куралдар

Кандооч

Hot Glue Gun

3D принтери… же 3D принтери бар досу (картондон да жасаса болот)

Wire Cutter

Breadboard

3 -кадам: 3D басып чыгаруу

Биринчиси, бул кадамга тиркелген.stl файлдарын 3D басып чыгаруу. Мен эки файлды тең төмөнкү материалды/жөндөөлөрдү басып чыгардым:

Материал: PLA

Катмар бийиктиги: 0.1мм

Дубал/Топ/Төмөнкү калыңдыгы: 0.8мм

Басып чыгаруу температурасы: 200⁰C

Төшөктүн температурасы: 60⁰C

Колдоо иштетилген @ 10%

4 -кадам: Райондук конструкция

Материалдар бөлүмүндөгү компоненттерди колдонуп, схеманы куруңуз. Мен ар дайым схеманы нан плитага чогуу коюп, анын ширетүүчү темирге тийгенге чейин туура иштеп жатканына ынануу үчүн.

5 -кадам: LCD зымдары

LCD зымдары
LCD зымдары

Бул кадамга тиркелген фигураны колдонуп, ЖК экрандын сегиз казыгынын жетөөнө зымдарды кошуңуз. Бул зымдардын узундугу болжол менен 3 фут болушу керек, жерди жана +5В казыктарды кошпогондо (бул 2-3 дюйм болушу керек)

6 -кадам: Mic/Amplifier Wiring

Микрофон/Күчөткүч зымдары
Микрофон/Күчөткүч зымдары

Бул кадамга тиркелген фигураны колдонуп, Adafruit микрофонундагы/күчөткүчтөгү +5V, Ground жана Out казыктарына үч зымдарды кошуңуз. Булардын узундугу болжол менен 2-3 дюйм болушу керек.

7 -кадам: Моменталдык которуу зымдары

Учурдагы которгучтагы эки кулактын ар бирине бир 2-3 дюймдук зым.

8 -кадам: Потенциометрдин зымдары

6-кадамдагы фигураны колдонуп, потенциометрдин үч учуна узундугу 2-3 дюйм болгон үч зымды ээрчиңиз.

9 -кадам: Гарнитура Jack Wiring

Кулакчындын уячасынын шакегине, учуна жана жеңинин учуна үч зымды туташтырыңыз. Мен буга чейин зымдуу болгон метрономдон джекти колдондум. Эгер шакек, уч жана жең манжалары эмне экенин билбесеңиз, анда гуглда стерео джектердин зымдары жөнүндө көптөгөн жакшы сүрөттөр бар.

10 -кадам: Микрофон/Күчөткүчтү чыгаруу

Микрофон/амп, потенциометр жана гарнитуранын уячасына зымдарды кошкондон кийин, узундугу үч футка жакын болгон бир зымды микрофондун күчөткүчүнүн "чыккан" зымына кошуңуз. Бул зым кийинчерээк arduino A0 пинине туташтырылат.

11 -кадам: Микрофон/Күчөткүчтү чыгаруу улантылды

Экинчи зымды микрофондун/күчөткүчтүн "чыгып кеткен" зымына туташтырыңыз. Бул зым 100 microFarad конденсаторуна ширетилиши керек. Эгерде сиз электролиттик конденсатор колдонуп жатсаңыз, оң жагы бул зымга туташкандыгын текшериңиз.

12 -кадам: Корпустагы компоненттер

Корпустагы компоненттер
Корпустагы компоненттер
Корпустагы компоненттер
Корпустагы компоненттер

Бардык зымдар компоненттерге ширетилгенден кийин, бул кадамга тиркелген цифраларга ылайык компоненттерди тиешелүү жерлерге коюңуз. Мен микрофон менен гарнитуранын уячасын бекемдөө үчүн ысык клей колдондум.

13-кадам: Корпуста-Лайкоо

Бардык компоненттер корпуска бекитилгенден кийин, бардык жер зымдарын чогуу ширеткиле. ЖКдан бирөө, микрофондон/амптан жана гарнитуранын уячасынын жеңинен бирөө болушу керек. Ошондой эле +5V зымдарын чогуу жана учурдагы которгучтан бир зымды ширеткиле. Дагы бирөө ЖКдан, бири микрофондон/күчөткүчтөн жана бирөө убактылуу которгучта болушу керек.

14 -кадам: +5V, GND Extended Wires

Эми узундугу болжол менен 3 фут болгон эки зымды кесип алыңыз. Бирин жерге зымдардын кластерине, экинчисин учурдагы которгучтагы ачык зымга туташтырыңыз.

15 -кадам: Узун зымдарды корпус тешиги аркылуу тайдырыңыз

Узун зымдарды корпус тешиги аркылуу жылдырыңыз
Узун зымдарды корпус тешиги аркылуу жылдырыңыз

Эми сизде жалпы узундугу 3 фут болгон сегиз зым болушу керек. Буларды корпустагы толтурулбаган тешик аркылуу коюңуз. Бул кадамга тиркелген сүрөттү караңыз

16 -кадам: Жылуулукту азайтуу

Бардык ширетүү аяктагандан кийин, ачык зымдардын жабылганын текшериңиз. Мен жылуулукту азайтуучу түтүктөрдү колдондум, бирок электр лентасы да жакшы иштейт.

17 -кадам: Мөөрдүн корпусу

Seal Enclosure
Seal Enclosure
Seal Enclosure
Seal Enclosure

ЖК экраны бар корпустун жарымын алыңыз жана башка компоненттерди камтыган корпустун экинчи жарымына жылдырыңыз. Эки бөлүктү бириктирип жатканда, корпусту бириктирүү үчүн ысык желим менен жабыңыз.

18 -кадам: Arduino менен туташуу

Калган сегиз, узун, зымдар түздөн -түз схемалардын схемаларында көрсөтүлгөн тиешелүү Arduino казыктарына туташтырылган. Узун 3 фут зымдардын бирин чынжырга ар бир жолу салганда, экинчи четине бир тасма кийгизип, 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 Sketch

Убакыт доменин жыштык доменине өзгөртүү үчүн код Fast Hartley Transform (FHT) колдонот. Бул ошондой эле Fast Fourier Transform (FFT) аркылуу жасалышы мүмкүн, бирок FHT алда канча тезирээк. FFT жана FHT сигналдарды иштетүүдө эң негизги идеялар жана үйрөнүү абдан кызыктуу. Эгерде сизди кызыктырса, өзүңүз окуп көрүүнү сунуштайм. Мен Open Music Labs веб -сайтынан көчүргөн FHT мисал коду ар бир жыштык кутусунун амплитудасын логарифмдик же децибелдик чыгаруу катары чыгарды. Мен муну жыштык контейнерлерин сызыктуу масштабда чыгаруу үчүн өзгөрттүм. Бул сызыктуу масштаб адамдардын үн угуусун жакшыраак визуалдуу чагылдыруу болгондуктан. Аягындагы for () цикли ЖК экрандагы ар бир жыштык кутусунун амплитудасын тартуу үчүн. Толук FHT спектри i = 0ден i <128ге чейинки бардык жыштыктарды камтыйт. Менин () циклым i = 5тен i <40ка чейин экенин байкайсыз, себеби өпкө шарттарын диагноздоо үчүн маанилүү жыштыктар адатта 150 Гц менен 3.5 кГц ортосунда болот, мен болжол менен 4 кГцке чейин барууну чечтим. Толук жыштык спектрин көрсөткүңүз келсе, муну туураласа болот.

[код]

// Санарип стетоскоптун коду

// 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 китепканасын камтыйт

#аныктоо cs 10 // lcd cs pin'ди arduino pin 10го коюңуз

#decine dc 9 // lcd dc pin'ди arduino pin 9го коюңуз

#define rst 8 // lcd баштапкы абалга келтирүүчү пинди arduino pin 8ге коюңуз

TFT myScreen = TFT (cs, dc, rst); // TFT экрандын атын жарыялоо

жараксыз орнотуу () {

//Serial.begin(9600);// тандалма ылдамдыгын

myScreen.begin (); // TFT экранын баштоо

myScreen.background (0, 0, 0); // фонду кара кылып коюу

ADCSRA = 0xe5; // эркин иштөө режимине adc орнотуңуз

ADMUX = 0x40; // adc0 колдонуңуз

}

void loop () {

while (1) {// jitter cli () кыскартат; // UDRE үзгүлтүккө учуроосу arduino1.0де ушинтип басаңдайт

for (int i = 0; i <FHT_N; i ++) {// 256 үлгүнү сактоо

while (! (ADCSRA & 0x10)); // adc даяр болушун күтө туруңуз

ADCSRA = 0xf5; // adc байтын өчүрүп күйгүзүү

m = ADCL; // ADC маалымат байтын алуу

j = ADCH; int k = (j << 8) | м; // int түрүнө айландырыңыз

k -= 0x0200; // формасы кол коюлган int

k << = 6; // формасы 16b кол коюлган 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 Гцке барабар же андан чоңураак жана 250 мске чейин созулат. Rhonchi болжол менен 200 Гц же андан аз фундаменталдуу жыштыкта пайда болот жана жок дегенде 250 мс созулат. Көптөгөн башка өпкө тыбыштары аныкталган жана ден соолук абалынын көрсөткүчү (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Менимче, бул коддо FHT аркылуу белгилүү бир циклден кийин жыштык контейнерлеринин сигналын салыштыруу аркылуу текшерилип, миллис () функциясын иштетүү менен анын канча убакыт болгонун көрүп, анан аны салыштырып көрүүгө болот. FHT эсептөөнүн ызы -чуу кабатына. Мен ишенем, бул нерселерди жасаса болот!

Баарыңыздар бул долбоор менен кызыктуу болдуңуздар деп үмүттөнөм, эгер сизде кандайдыр бир суроолор болсо, комментарий калтырыңыз, мен мүмкүн болушунча тезирээк жооп берем! Мен комментарийлерди чыдамсыздык менен күтөм.

Сунушталууда: