Índice:

Estetoscópio Espectral Transformado Rápido de Hartley: 22 Passos
Estetoscópio Espectral Transformado Rápido de Hartley: 22 Passos

Vídeo: Estetoscópio Espectral Transformado Rápido de Hartley: 22 Passos

Vídeo: Estetoscópio Espectral Transformado Rápido de Hartley: 22 Passos
Vídeo: SISTEMA DE TRANSMISSÃO DE DADOS - LARGURA DE BANDA E DENSIDADE ESPECTRAL NA CODIFICAÇÃO DE LINHA (1) 2024, Novembro
Anonim
Estetoscópio Espectral Fast Hartley Transform
Estetoscópio Espectral Fast Hartley Transform

Neste instrutivo, você aprenderá a fazer um estetoscópio espectral usando a transformada rápida de Hartley. Isso pode ser usado para visualizar os sons cardíacos e pulmonares.

Etapa 1: Materiais

Tela LCD de 1,8”($ 7,50 na Amazon)

Arduino Uno ou equivalente ($ 7,00 no Gearbest)

Amplificador de eletreto ($ 6,95 no Adafruit)

Capacitor 100 µF ($ 0,79)

Fio e jumpers ($ 4,00)

Jack estéreo de 3,5 mm ($ 1,50)

Potenciômetro de 10kOhm ($ 2,00)

Mudança momentânea ($ 1,50)

Etapa 2: Ferramentas

Ferro de solda

Pistola de cola quente

Impressora 3D … ou um amigo com uma impressora 3D (também possível de fazer com papelão)

Cortador de fio

Tábua de pão

Etapa 3: Impressão 3D

A primeira é imprimir em 3D os arquivos.stl anexados a esta etapa. Eu imprimi os dois arquivos usando o seguinte material / configurações:

Material: PLA

Altura da camada: 0,1 mm

Espessura da parede / superior / inferior: 0,8 mm

Temperatura de impressão: 200⁰C

Temperatura do leito: 60⁰C

Suporte ativado a 10%

Etapa 4: construir o circuito

Usando os componentes da seção de materiais, construa o circuito. Eu sempre coloco o circuito junto em uma placa de ensaio primeiro para ter certeza de que está funcionando corretamente antes de tocar no ferro de solda.

Etapa 5: Fiação do LCD

Fiação de LCD
Fiação de LCD

Usando a figura anexada a esta etapa, solde os fios em sete dos oito pinos na tela LCD. Esses fios deverão ter cerca de 3 pés de comprimento, exceto para o aterramento e os pinos de + 5V (estes precisam ter apenas 2-3 polegadas)

Etapa 6: Fiação do microfone / amplificador

Fiação de microfone / amplificador
Fiação de microfone / amplificador

Usando a figura anexada a esta etapa, solde três fios aos pinos de + 5V, aterramento e saída do microfone / amplificador Adafruit. Eles só precisam ter cerca de 2-3 polegadas de comprimento.

Etapa 7: Fiação do interruptor momentâneo

Ligue um fio de 2-3 polegadas a cada um dos dois terminais do interruptor momentâneo.

Etapa 8: Fiação do potenciômetro

Usando a figura da etapa 6, solde três fios de cerca de 2-3 polegadas de comprimento nas três saliências do potenciômetro.

Etapa 9: Fiação do conector do fone de ouvido

Solde três fios no anel, na ponta e nas alças da entrada do fone de ouvido. Usei uma tomada de um metrônomo que já estava conectado. Se você não sabe o que são o anel, a ponta e os terminais da manga, basta pesquisar no Google e há muitas imagens boas sobre a fiação de conectores estéreo.

Etapa 10: Saída de microfone / amplificador

Depois de soldar os fios do microfone / amplificador, potenciômetro e fone de ouvido, solde um fio de cerca de um metro de comprimento ao fio "de saída" do amplificador do microfone. Este fio será posteriormente conectado ao pino A0 do arduino.

Etapa 11: Continuação da saída do microfone / amplificador

Solde um segundo fio ao fio "de saída" do microfone / amplificador. Este fio precisa ser soldado a um capacitor de 100 microFarad. Se você estiver usando um capacitor eletrolítico, certifique-se de que o lado positivo esteja conectado a este fio.

Etapa 12: Componentes no gabinete

Componentes no gabinete
Componentes no gabinete
Componentes no gabinete
Componentes no gabinete

Depois que todos os fios forem soldados nos componentes, coloque os componentes nos respectivos lugares seguindo as figuras anexadas a esta etapa. Usei cola quente para prender o microfone e o fone de ouvido no lugar.

Etapa 13: solda no gabinete

Depois que todos os componentes estiverem presos no gabinete, solde todos os fios de aterramento juntos. Deve haver um no LCD, um no microfone / amplificador e um na capa do conector de fone de ouvido. Solde também os fios de + 5V juntos e um fio da chave momentânea. Novamente, deve haver um no LCD, um no microfone / amplificador e um no interruptor momentâneo.

Etapa 14: + 5V, fios estendidos GND

Agora corte dois pedaços de arame com cerca de 3 pés de comprimento. Solde um ao conjunto de fios terra e solde o outro ao fio aberto no interruptor momentâneo.

Etapa 15: Deslize os fios longos através do orifício do gabinete

Deslize os fios longos através do orifício do gabinete
Deslize os fios longos através do orifício do gabinete

Agora, você deve ter um total de oito fios com cerca de 3 pés de comprimento. Coloque-os através do orifício não preenchido no gabinete. Veja a figura anexada a esta etapa

Etapa 16: termo-retrátil

Depois que toda a solda estiver concluída, certifique-se de que os fios expostos estejam cobertos. Usei tubo termorretrátil, mas fita isolante também funciona bem.

Etapa 17: vedar o gabinete

Caixa de vedação
Caixa de vedação
Caixa de vedação
Caixa de vedação

Pegue a metade da caixa que contém a tela LCD e deslize-a sobre a outra metade da caixa que contém os outros componentes. Enquanto empurra as duas peças uma contra a outra, cole-as com cola quente para prender o gabinete um no outro.

Etapa 18: conectar ao Arduino

Os oito longos fios restantes são conectados diretamente aos respectivos pinos do Arduino descritos nos esquemas do circuito. Certifique-se de que toda vez que você soldar um daqueles longos fios de 3 pés no circuito, coloque um pedaço de fita na outra extremidade, indicando para qual pino do Arduino ele vai!

Etapa 19: Arduino IDE / Bibliotecas

Você precisará baixar o IDE do Arduino. Para este esboço, usei três bibliotecas diferentes: FHT.h, SPI.h e TFT.h. Se você não sabe como fazer o download das bibliotecas do Arduino, consulte https://www.arduino.cc/en/Guide/Libraries. A biblioteca FHT.h foi baixada de openmusiclabs.com. Os outros dois foram baixados no GitHub.

Etapa 20: Arduino Sketch

O código usa a Fast Hartley Transform (FHT) para alterar o domínio do tempo para o domínio da frequência. Isso também pode ser feito usando a transformada rápida de Fourier (FFT), mas a FHT é muito mais rápida. O FFT e o FHT são ideias muito fundamentais no processamento de sinais e muito divertidas de aprender. Eu sugiro que você faça algumas leituras, se você estiver interessado, veja. O código de exemplo FHT que copiei do site Open Music Labs estava inicialmente gerando a amplitude de cada compartimento de frequência como uma saída logarítmica ou decibel. Eu mudei isso para gerar as caixas de frequência em uma escala linear. Isso ocorre porque a escala linear é uma representação visual melhor de como os humanos ouvem o som. O loop for () no final é para desenhar a amplitude de cada compartimento de frequência na tela LCD. O espectro FHT completo abrangeria todos os bins de frequência de i = 0 a i <128. Você notará que meu loop for () é de i = 5 a i <40, isso porque as frequências importantes para diagnosticar doenças pulmonares estão normalmente entre 150 Hz e 3,5 kHz. Decidi ir até cerca de 4 kHz. Isso pode ser ajustado se você quiser mostrar todo o espectro de frequência.

[código]

// Código do estetoscópio digital

// Biblioteca Fast Hartley Transform baixada de openmusiclabs

# define LIN_OUT 1 // define FHT para produzir saída linear

# define LOG_OUT 0 // desliga a saída logarítmica FHT

# define FHT_N 256 // número da amostra FHT

#include // inclui a biblioteca FHT

#include // inclui biblioteca TFT

#include // inclui biblioteca SPI

# define cs 10 // define lcd cs pin para arduino pin 10

# define dc 9 // define o pino DC do LCD para o pino 9 do Arduino

# define rst 8 // define o pino de redefinição do LCD para o pino 8 do Arduino

TFT myScreen = TFT (cs, dc, rst); // declara o nome da tela TFT

void setup () {

//Serial.begin(9600);//set sample rate

myScreen.begin (); // inicializa a tela TFT

myScreen.background (0, 0, 0); // definir o fundo como preto

ADCSRA = 0xe5; // definir adc para modo de execução livre

ADMUX = 0x40; // use adc0

}

void loop () {

while (1) {// reduz o jitter cli (); // A interrupção do UDRE fica mais lenta no arduino 1.0

for (int i = 0; i <FHT_N; i ++) {// salvar 256 amostras

enquanto (! (ADCSRA & 0x10)); // aguarde até que o adc esteja pronto

ADCSRA = 0xf5; // reinicie o byte adc

m = ADCL; // buscar byte de dados adc

j = ADCH; int k = (j << 8) | m; // formar em um int

k - = 0x0200; // formulário em um int assinado

k << = 6; // formar em um int assinado 16b

fht_input = k; // coloque dados reais em caixas

}

fht_window (); // janela os dados para melhor resposta de frequência

fht_reorder (); // reordene os dados antes de fazer a luta

fht_run (); // processa os dados no fht

fht_mag_lin (); // pega a saída do fht

sei ();

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

}

}

[/código]

Etapa 21: Teste

Teste!
Teste!

Usei um gerador de tons online (https://www.szynalski.com/tone-generator/) para confirmar se o código estava funcionando corretamente. Depois de confirmar que funciona, pressione a campainha do estetoscópio contra o peito, respire fundo e veja quais frequências estão presentes !!

Etapa 22: Trabalho Futuro

** Observação: sou químico, não engenheiro ou cientista da computação **. Provavelmente haverá erros e melhorias no design e no código. Dito isso, acho que é um bom começo para algo que pode acabar sendo muito útil e barato. Os itens a seguir são melhorias futuras que eu gostaria de fazer e espero que alguns de vocês também tentem melhorá-las!

· Torne o dispositivo móvel. Não tenho muita experiência com CPUs ou outros microcontroladores, mas seria necessário ter memória suficiente para armazenar toda a biblioteca FHT, ou possivelmente Bluetooth.

· Introduzir alguns cálculos de análise estatística no código. Por exemplo, normalmente um chiado tem uma frequência fundamental igual ou superior a 400 Hz e dura pelo menos 250 ms. Rhonchi ocorre em uma frequência fundamental de cerca de 200 Hz ou menos e dura pelo menos 250 ms. Muitos outros sons pulmonares são definidos e indicativos de condições de saúde (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Eu acho que é algo que pode ser verificado no código comparando o sinal dos bins de frequência após um certo número de ciclos através do FHT e, em seguida, executando a função millis () para ver por quanto tempo ele estava presente, então comparando-o para o piso de ruído do cálculo FHT. Estou confiante de que essas coisas podem ser feitas!

Espero que todos tenham se divertido com este projeto e caso tenham alguma dúvida comente que responderei o mais breve possível! Estou ansioso para ver comentários.

Recomendado: