İçindekiler:
- Adım 1: Malzemeler
- 2. Adım: Araçlar
- 3. Adım: 3D Baskı
- Adım 4: Devre Oluşturun
- Adım 5: LCD Kablolama
- Adım 6: Mikrofon/Amplifikatör Kablolaması
- Adım 7: Anlık Anahtar Kablolaması
- Adım 8: Potansiyometre Kablolaması
- Adım 9: Kulaklık Jakı Kablolaması
- Adım 10: Mikrofon/Amplifikatör Çıkışı
- Adım 11: Mikrofon/Amplifikatör Çıkışı Devam Ediyor
- Adım 12: Muhafazadaki Bileşenler
- Adım 13: Muhafaza İçi Lehimleme
- Adım 14: +5V, GND Genişletilmiş Teller
- Adım 15: Uzun Kabloları Muhafaza Deliğinden Kaydırın
- Adım 16: Isıyla Daralan
- Adım 17: Muhafazayı Kapatın
- Adım 18: Arduino'ya Bağlan
- Adım 19: Arduino IDE/Kütüphaneler
- Adım 20: Arduino Kroki
- Adım 21: Test Edin
- Adım 22: Gelecekteki Çalışma
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-23 15:13
Bu talimatta, hızlı hartley dönüşümünü kullanarak bir spektral stetoskop yapmayı öğreneceksiniz. Bu, kalp ve akciğer seslerini görselleştirmek için kullanılabilir.
Adım 1: Malzemeler
1,8” LCD Ekran (Amazon'da 7,50 ABD Doları)
Arduino Uno veya Eşdeğeri (Gearbest'te 7,00 ABD Doları)
Elektret Amplifikatörü (Adafruit'te 6,95 $)
100 µF Kondansatör (0,79 $)
Tel ve Jumperlar (4,00$)
3,5 mm Stereo Jak (1,50 $)
10kOhm Potansiyometre (2.00$)
Anlık Anahtar (1,50 $)
2. Adım: Araçlar
Havya
Sıcak yapıştırıcı tabancası
3D Yazıcı… veya 3D yazıcısı olan bir arkadaş (Kartonla da yapılabilir)
Tel makası
ekmek tahtası
3. Adım: 3D Baskı
Birincisi, bu adıma eklenen.stl dosyalarını 3D olarak yazdırmaktır. Aşağıdaki malzeme/ayarları kullanarak her iki dosyayı da yazdırdım:
Malzeme: PLA
Katman Yüksekliği: 0.1mm
Duvar/Üst/Alt Kalınlık: 0.8mm
Baskı Sıcaklığı: 200⁰C
Yatak Sıcaklığı: 60⁰C
Destek Etkin @ %10
Adım 4: Devre Oluşturun
Malzemeler bölümündeki bileşenleri kullanarak devreyi kurunuz. Havyaya dokunmadan önce düzgün çalıştığından emin olmak için her zaman devreyi bir devre tahtası üzerinde bir araya getiririm.
Adım 5: LCD Kablolama
Bu adıma ekli şekli kullanarak, kabloları LCD ekrandaki sekiz pimden yedisine lehimleyin. Bu kabloların, toprak ve +5V pinler dışında yaklaşık 3 fit uzunluğunda olması gerekir (bunların yalnızca 2-3 inç olması gerekir)
Adım 6: Mikrofon/Amplifikatör Kablolaması
Bu adıma eklenen şekli kullanarak Adafruit mikrofon/amplifikatöründeki +5V, Ground ve Out pinlerine üç kablo lehimleyin. Bunların sadece yaklaşık 2-3 inç uzunluğunda olması gerekir.
Adım 7: Anlık Anahtar Kablolaması
Anlık anahtardaki iki pabucun her birine 2-3 inçlik bir kablo bağlayın.
Adım 8: Potansiyometre Kablolaması
6. adımdaki şekli kullanarak, potansiyometrenin üç kulağına yaklaşık 2-3 inç uzunluğunda üç kablo lehimleyin.
Adım 9: Kulaklık Jakı Kablolaması
Kulaklık jakının halkasına, ucuna ve manşon pabuçlarına üç kablo lehimleyin. Zaten kablolu bir metronomdan bir jak kullandım. Halka, uç ve manşon pabuçlarının ne olduğunu bilmiyorsanız, sadece google'da kablolama stereo jaklarıyla ilgili birçok iyi resim var.
Adım 10: Mikrofon/Amplifikatör Çıkışı
Mikrofon/amp, potansiyometre ve kulaklık jakındaki kabloları lehimledikten sonra, mikrofon amplifikatörünün "çıkış" kablosuna yaklaşık üç fit uzunluğunda bir kablo lehimleyin. Bu tel daha sonra arduino'nun A0 pinine bağlanacaktır.
Adım 11: Mikrofon/Amplifikatör Çıkışı Devam Ediyor
Mikrofonun/amplifikatörün "çıkış" kablosuna ikinci bir kablo lehimleyin. Bu telin 100 mikroFarad kapasitöre lehimlenmesi gerekiyor. Bir elektrolitik kapasitör kullanıyorsanız, pozitif tarafın bu kabloya bağlı olduğundan emin olun.
Adım 12: Muhafazadaki Bileşenler
Tüm teller bileşenlerin üzerine lehimlendikten sonra, bu adıma ekli şekilleri takip ederek bileşenleri ilgili yerlere yerleştirin. Mikrofonu ve kulaklık jakını yerine sabitlemek için sıcak tutkal kullandım.
Adım 13: Muhafaza İçi Lehimleme
Tüm bileşenler muhafazaya sabitlendikten sonra, tüm topraklama kablolarını birbirine lehimleyin. LCD'den bir tane, mikrofon/amp'den bir tane ve kulaklık jakının kılıfından bir tane olmalıdır. Ayrıca + 5V kablolarını ve anlık anahtardan bir kabloyu birlikte lehimleyin. Yine bir tane LCD'den, bir tane mikrofon/amplifikatörden ve bir tane de anlık anahtardan olmalıdır.
Adım 14: +5V, GND Genişletilmiş Teller
Şimdi yaklaşık 3 fit uzunluğunda iki parça tel kesin. Birini topraklama kablosu kümesine lehimleyin ve diğerini anlık anahtardaki açık kabloya lehimleyin.
Adım 15: Uzun Kabloları Muhafaza Deliğinden Kaydırın
Şimdi, yaklaşık 3 fit uzunluğunda toplam sekiz teliniz olmalıdır. Bunları muhafazadaki doldurulmamış delikten geçirin. Bu adıma ekli şekle bakın
Adım 16: Isıyla Daralan
Tüm lehimleme tamamlandıktan sonra, açıkta kalan tellerin kapatıldığından emin olun. Isıyla daralan makaron kullandım, ancak elektrik bandı da iyi çalışıyor.
Adım 17: Muhafazayı Kapatın
LCD ekranı içeren muhafazanın yarısını alın ve diğer bileşenleri içeren muhafazanın diğer yarısının üzerine kaydırın. İki parçayı birbirine bastırırken, muhafazayı birbirine sabitlemek için sıcak tutkalla yapıştırın.
Adım 18: Arduino'ya Bağlan
Kalan sekiz uzun kablo, devre şemalarında belirtilen ilgili Arduino pinlerine doğrudan bağlanır. Bu 3 ft uzunluğundaki kablolardan birini devreye her lehimlediğinizde, diğer ucuna hangi Arduino pinine gittiğini gösteren bir bant parçası koyduğunuzdan emin olun!
Adım 19: Arduino IDE/Kütüphaneler
Arduino IDE'yi indirmeniz gerekecek. Bu eskiz için üç farklı kitaplık kullandım: FHT.h, SPI.h ve TFT.h. Arduino kütüphanelerini nasıl indireceğinizi bilmiyorsanız lütfen https://www.arduino.cc/en/Guide/Libraries adresine bakın. FHT.h kitaplığı openmusiclabs.com'dan indirildi. Diğer ikisi GitHub'da indirildi.
Adım 20: Arduino Kroki
Kod, zaman alanını bir frekans alanına değiştirmek için Hızlı Hartley Dönüşümü'nü (FHT) kullanır. Bu, Hızlı Fourier Dönüşümü (FFT) kullanılarak da yapılabilir, ancak FHT çok daha hızlıdır. FFT ve FHT, sinyal işlemede çok temel fikirlerdir ve öğrenmesi çok eğlencelidir. Biraz kendin okumanı öneririm, eğer ilgileniyorsan, gör. Open Music Labs web sitesinden kopyaladığım FHT örnek kodu, başlangıçta her frekans bölmesinin genliğini logaritmik veya desibel çıktı olarak veriyordu. Bunu, frekans kutularını doğrusal bir ölçekte çıkarmak için değiştirdim. Bunun nedeni, doğrusal ölçeğin insanların sesi nasıl duyduğunun daha iyi bir görsel temsili olmasıdır. Sondaki for() döngüsü, LCD ekranda her bir frekans bölmesinin genliğini çizmek içindir. Tam FHT spektrumu, i=0 ile i<128 arasındaki tüm frekans kutularını kapsayacaktır. for() döngümün i=5 ile i<40 arasında olduğunu fark edeceksiniz, bunun nedeni akciğer rahatsızlıklarının teşhisi için önemli olan frekansların tipik olarak 150Hz ile 3.5khz arasında olmasıdır, ben yaklaşık 4kHz'e çıkmaya karar verdim. Tam frekans spektrumunu göstermek istiyorsanız bu ayarlanabilir.
[kod]
//Dijital Stetoskop Kodu
// openmusiclabs'den indirilen hızlı Hartley Transform kitaplığı
#define LIN_OUT 1 //FHT'yi doğrusal çıktı üretecek şekilde ayarla
#define LOG_OUT 0 //FHT logaritmik çıktısını kapat
#define FHT_N 256 //FHT örnek numarası
#include //FHT kitaplığını dahil et
#include //TFT kitaplığını dahil et
#include //SPI kitaplığını dahil et
#define cs 10 // lcd cs pinini arduino pin 10'a ayarla
#define dc 9 // lcd dc pinini arduino pin 9'a ayarla
#define rst 8 // lcd sıfırlama pinini arduino pin 8'e ayarla
TFT myScreen = TFT(cs, dc, rst);//TFT ekranının adını bildir
geçersiz kurulum() {
//Serial.begin(9600);//örnekleme hızını ayarla
myScreen.begin();//TFT ekranını başlat
myScreen.background(0, 0, 0);//arka planı siyah yap
ADCSRA=0xe5;//adc'yi serbest çalışma moduna ayarla
ADMUX=0x40;//adc0 kullan
}
boşluk döngüsü () {
while(1){ // titreşimi azaltır cli(); // UDRE kesmesi arduino1.0'da bu şekilde yavaşlar
for (int i = 0; i < FHT_N; i++) { // 256 örnek kaydet
while(!(ADCSRA & 0x10)); // adc'nin hazır olmasını bekleyin
ADCSRA = 0xf5; // adc baytını yeniden başlat
m = ADCL; // adc veri baytını getir
j = ADCH; int k = (j << 8) | m; // int'e dönüştür
k -= 0x0200; // imzalı bir int oluştur
k <<= 6; // 16b imzalı bir int oluştur
fht_input = k; // gerçek verileri kutulara koy
}
fht_window(); // daha iyi frekans yanıtı için verileri pencereleyin
fht_reorder(); // fht'yi yapmadan önce verileri yeniden sırala
fht_run(); // fht içindeki verileri işle
fht_mag_lin(); // fht çıktısını al
ben();
for (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);
}
}
[/kod]
Adım 21: Test Edin
Kodun düzgün çalıştığını doğrulamak için çevrimiçi bir ton üreteci (https://www.szynalski.com/tone-generator/) kullandım. Çalıştığını onayladıktan sonra, stetoskopun zilini göğsünüze kadar bastırın, derin bir nefes alın ve hangi frekansların mevcut olduğunu görün!
Adım 22: Gelecekteki Çalışma
**Not: Ben bir kimyagerim, mühendis veya bilgisayar bilimcisi değilim**. Tasarım ve kodda muhtemelen hatalar ve iyileştirmeler olacaktır. Bununla birlikte, çok kullanışlı ve ucuz olabilecek bir şeye iyi bir başlangıç olduğunu düşünüyorum. Aşağıdaki maddeler gelecekte yapmak istediğim geliştirmelerdir ve umarım bazılarınız da iyileştirmeye çalışır!
· Cihazı mobil hale getirin. CPU'lar veya diğer mikro denetleyiciler konusunda kapsamlı deneyimim yok, ancak tüm FHT kitaplığını veya muhtemelen Bluetooth'u depolamak için yeterli belleğe sahip olması gerekir.
· Bazı istatistiksel analiz hesaplamalarını koda dahil edin. Örneğin, tipik olarak bir hırıltı 400 Hz'e eşit veya daha büyük bir temel frekansa sahiptir ve en az 250 ms sürer. Rhonchi, yaklaşık 200 Hz veya daha düşük bir temel frekansta meydana gelir ve en az 250 ms sürer. Diğer birçok pulmoner ses tanımlanmıştır ve sağlık koşullarının göstergesidir (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Bunun, FHT üzerinden belirli sayıda döngüden sonra frekans kutularının sinyalini karşılaştırarak ve ardından ne kadar süredir mevcut olduğunu görmek için millis() işlevini çalıştırarak kodda kontrol edilebilecek bir şey olduğunu düşünüyorum. FHT hesaplamasının gürültü tabanına. Bu şeylerin yapılabileceğinden eminim!
Umarım hepiniz bu projede eğlenmişsinizdir ve herhangi bir sorunuz varsa lütfen yorum yapın ve elimden geldiğince çabuk cevap vereceğim! Yorumları görmek için sabırsızlanıyorum.
Önerilen:
Bluetooth Boombox'a Eski Hoparlör Dönüşümü: 8 Adım (Resimlerle)
Bluetooth Boombox'a Eski Hoparlör Dönüşümü: Herkese merhaba! Bu yapıda benimle birlikte çalıştığınız için çok teşekkür ederim! Ayrıntılara atlamadan önce, lütfen en alttaki yarışmada bu Eğitilebilir Yazıya oy vermeyi düşünün. Destek çok takdir ediliyor! Başladığımdan bu yana birkaç yıl geçti
50 $ Altında Hızlı Shifter! Kazeshifter Arduino Ayarlanabilir Hızlı Shifter: 7 Adım
50 $ Altında Hızlı Shifter! Kazeshifter Arduino Ayarlanabilir Hızlı Shifter: Merhaba Superbike veya motosiklet severler!Bu talimatta, ucuza kendi Quick Shifter'ınızı nasıl yapacağınızı paylaşacağım!Bu talimatı okumak için tembel olanlar için videomu izleyin!Not: Bazı bisikletler için Halihazırda Yakıt Enjeksiyon Sistemini kullanıyor, bazen
EasyFFT: Arduino için Hızlı Fourier Dönüşümü (FFT): 6 Adım
EasyFFT: Arduino için Hızlı Fourier Dönüşümü (FFT): Yakalanan sinyalden frekansın ölçülmesi, özellikle Arduino'da daha düşük hesaplama gücüne sahip olduğu için zor bir görev olabilir. Kaç kez kontrol edilerek frekansın yakalandığı sıfır geçişi yakalamak için mevcut yöntemler vardır
Hızlı, Hızlı, Ucuz, İyi Görünümlü LED Oda Aydınlatması (Herkes İçin): 5 Adım (Resimli)
Hızlı, Hızlı, Ucuz, İyi Görünümlü LED Oda Aydınlatması (Herkes için): Herkese hoş geldiniz :-) Bu benim ilk talimatım, bu yüzden yorumları bekliyoruz :-) Size göstermeyi umduğum şey, KÜÇÜK bütçe.Neye ihtiyacınız var:KabloLED'lerDirençler (12V için 510Ohm)ZımbalarLehimleme demirKesiciler ve diğer temel
Hızlı ve Basit Yumuşak Anahtarlar (Hızlı Prototipleme için): 5 Adım
Hızlı ve Basit Yumuşak Anahtarlar (Hızlı Prototipleme için): Bir yazılım anahtarı yapmanın birçok farklı yolu vardır. Bu talimat, yumuşak anahtar için çok hızlı bir prototipin başka bir seçeneğini gösterir; iletken kumaş yerine alüminyum bant ve iletken iplik yerine katı teller kullanarak bot