Spisu treści:
- Krok 1: Materiały
- Krok 2: Narzędzia
- Krok 3: Drukowanie 3D
- Krok 4: Zbuduj obwód
- Krok 5: Okablowanie LCD
- Krok 6: Okablowanie mikrofonu/wzmacniacza
- Krok 7: Okablowanie przełącznika chwilowego
- Krok 8: Okablowanie potencjometru
- Krok 9: Okablowanie gniazda słuchawkowego
- Krok 10: Wyjście mikrofonu/wzmacniacza
- Krok 11: Wyjście mikrofonu/wzmacniacza ciąg dalszy
- Krok 12: Elementy w obudowie
- Krok 13: Lutowanie w obudowie
- Krok 14: Przedłużone przewody +5 V, GND
- Krok 15: Wsuń długie przewody przez otwór obudowy
- Krok 16: Termokurczliwość
- Krok 17: Uszczelnij obudowę
- Krok 18: Połącz się z Arduino
- Krok 19: Arduino IDE/Biblioteki
- Krok 20: Szkic Arduino
- Krok 21: Przetestuj to
- Krok 22: Przyszła praca
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:02
W tej instrukcji dowiesz się, jak zrobić stetoskop spektralny za pomocą szybkiej transformacji Hartleya. Można to wykorzystać do wizualizacji dźwięków serca i płuc.
Krok 1: Materiały
1,8-calowy ekran LCD (7,50 USD na Amazon)
Arduino Uno lub odpowiednik (7,00 USD na Gearbest)
Wzmacniacz elektretowy (6,95 USD na Adafruit)
Kondensator 100 µF (0,79 USD)
Drut i zworki (4,00 USD)
Gniazdo stereo 3,5 mm (1,50 USD)
Potencjometr 10kOhm (2,00 USD)
Przełącznik chwilowy (1,50 USD)
Krok 2: Narzędzia
Lutownica
Pistolet na gorący klej
Drukarka 3D…lub znajomy z drukarką 3D (możliwość wykonania również z kartonu)
Przecinak do drutu
Deska do krojenia chleba
Krok 3: Drukowanie 3D
Pierwszym z nich jest wydrukowanie w 3D plików.stl dołączonych do tego kroku. Wydrukowałem oba pliki przy użyciu następujących materiałów/ustawień:
Materiał: PLA
Wysokość warstwy: 0,1 mm
Grubość ściany / góry / dołu: 0,8 mm
Temperatura drukowania: 200⁰C
Temperatura łóżka: 60⁰C
Wsparcie włączone @ 10%
Krok 4: Zbuduj obwód
Używając komponentów w sekcji materiałów, zbuduj obwód. Zawsze układam obwód na płytce stykowej, aby upewnić się, że działa prawidłowo, zanim dotknę lutownicy.
Krok 5: Okablowanie LCD
Korzystając z rysunku dołączonego do tego kroku, przylutuj przewody do siedmiu z ośmiu styków na ekranie LCD. Te przewody będą musiały mieć około 3 stopy długości, z wyjątkiem uziemienia i pinów +5 V (wystarczą tylko 2-3 cale)
Krok 6: Okablowanie mikrofonu/wzmacniacza
Korzystając z rysunku dołączonego do tego kroku, przylutuj trzy przewody do pinów +5V, uziemienia i wyjścia mikrofonu/wzmacniacza Adafruit. Muszą mieć tylko około 2-3 cali długości.
Krok 7: Okablowanie przełącznika chwilowego
Podłącz jeden 2-3 calowy przewód do każdego z dwóch występów na przełączniku chwilowym.
Krok 8: Okablowanie potencjometru
Korzystając z rysunku w kroku 6, przylutuj trzy przewody o długości około 2-3 cali do trzech końcówek potencjometru.
Krok 9: Okablowanie gniazda słuchawkowego
Przylutuj trzy przewody do pierścienia, końcówki i końcówek tulei gniazda słuchawkowego. Użyłem wtyczki z metronomu, który był już podłączony. Jeśli nie wiesz, co to jest pierścień, końcówka i końcówki tulei, po prostu wygoogluj to, jest wiele dobrych obrazów na temat okablowania gniazd stereo.
Krok 10: Wyjście mikrofonu/wzmacniacza
Po przylutowaniu przewodów mikrofonu/wzmacniacza, potencjometru i gniazda słuchawkowego, przylutuj jeden przewód o długości około trzech stóp do przewodu wyjściowego wzmacniacza mikrofonowego. Ten przewód zostanie później podłączony do pinu A0 arduino.
Krok 11: Wyjście mikrofonu/wzmacniacza ciąg dalszy
Przylutuj drugi przewód do przewodu wyjściowego mikrofonu/wzmacniacza. Ten przewód należy przylutować do kondensatora 100 mikrofaradów. Jeśli używasz kondensatora elektrolitycznego, upewnij się, że dodatnia strona jest podłączona do tego przewodu.
Krok 12: Elementy w obudowie
Po przylutowaniu wszystkich przewodów do elementów, umieść elementy w odpowiednich miejscach zgodnie z rysunkami dołączonymi do tego kroku. Użyłem gorącego kleju, aby zabezpieczyć mikrofon i gniazdo słuchawkowe na miejscu.
Krok 13: Lutowanie w obudowie
Po zabezpieczeniu wszystkich elementów w obudowie, zlutuj wszystkie przewody uziemiające. Powinien być jeden z wyświetlacza LCD, jeden z mikrofonu/wzmacniacza i jeden z rękawa gniazda słuchawkowego. Przylutuj również przewody +5V razem i jeden przewód z przełącznika chwilowego. Znowu powinien być jeden z wyświetlacza LCD, jeden z mikrofonu/wzmacniacza i jeden na chwilowym przełączniku.
Krok 14: Przedłużone przewody +5 V, GND
Teraz wytnij dwa kawałki drutu o długości około 3 stóp. Przylutuj jeden do wiązki przewodów uziemiających, a drugi do otwartego przewodu na przełączniku chwilowym.
Krok 15: Wsuń długie przewody przez otwór obudowy
Teraz powinieneś mieć w sumie osiem przewodów o długości około 3 stóp. Umieść je przez niewypełniony otwór w obudowie. Zobacz rysunek dołączony do tego kroku
Krok 16: Termokurczliwość
Po zakończeniu lutowania upewnij się, że odsłonięte przewody są zakryte. Użyłem rurki termokurczliwej, ale taśma elektryczna również działa dobrze.
Krok 17: Uszczelnij obudowę
Weź połowę obudowy zawierającej ekran LCD i wsuń ją na drugą połowę obudowy zawierającej inne elementy. Dociskając oba elementy do siebie, sklej je na gorąco, aby połączyć obudowę.
Krok 18: Połącz się z Arduino
Pozostałe osiem długich przewodów jest podłączonych bezpośrednio do odpowiednich pinów Arduino przedstawionych na schemacie obwodu. Upewnij się, że za każdym razem, gdy lutujesz jeden z tych długich 3-metrowych przewodów do obwodu, na drugim końcu umieszczasz kawałek taśmy, wskazując, do którego pinu Arduino idzie!
Krok 19: Arduino IDE/Biblioteki
Będziesz musiał pobrać Arduino IDE. Do tego szkicu użyłem trzech różnych bibliotek: FHT.h, SPI.h i TFT.h. Jeśli nie wiesz, jak pobrać biblioteki Arduino, odwiedź https://www.arduino.cc/en/Guide/Libraries. Biblioteka FHT.h została pobrana z openmusiclabs.com. Pozostałe dwa zostały pobrane na GitHub.
Krok 20: Szkic Arduino
Kod wykorzystuje szybką transformację Hartleya (FHT) do zmiany domeny czasu na domenę częstotliwości. Można to również zrobić za pomocą szybkiej transformacji Fouriera (FFT), ale FHT jest znacznie szybsza. FFT i FHT to bardzo podstawowe idee w przetwarzaniu sygnałów i bardzo fajnie się ich uczy. Proponuję sam poczytać, jeśli jesteś zainteresowany, zobacz. Przykładowy kod FHT, który skopiowałem ze strony Open Music Labs, początkowo wyprowadzał amplitudę każdego przedziału częstotliwości jako wynik logarytmiczny lub decybelowy. Zmieniłem to, aby wyprowadzać pojemniki częstotliwości w skali liniowej. Dzieje się tak, ponieważ skala liniowa jest lepszą wizualną reprezentacją tego, jak ludzie słyszą dźwięk. Pętla for() na końcu służy do rysowania amplitudy każdego przedziału częstotliwości na ekranie LCD. Pełne widmo FHT obejmowałoby wszystkie przedziały częstotliwości od i=0 do i<128. Zauważysz, że moja pętla for() ma wartość od i=5 do i<40, ponieważ częstotliwości ważne dla diagnozowania chorób płuc są zazwyczaj pomiędzy 150Hz a 3,5kHz, zdecydowałem się podnieść do około 4kHz. Można to dostosować, jeśli chcesz pokazać pełne spektrum częstotliwości.
[kod]
//Kod stetoskopu cyfrowego
//Biblioteka Fast Hartley Transform pobrana z openmusiclabs
#define LIN_OUT 1 //ustaw FHT do produkcji liniowej
#define LOG_OUT 0 //wyłącz wyjście logarytmiczne FHT
#zdefiniuj FHT_N 256 //Numer próbki FHT
#include //include bibliotekę FHT
#dołącz //dołącz bibliotekę TFT
#include //include bibliotekę SPI
#define cs 10 //ustaw lcd cs pin na pin arduino 10
#define dc 9 //ustaw pin lcd dc na pin arduino 9
#define rst 8 //ustaw pin resetowania lcd na pin arduino 8
TFT myScreen = TFT(cs, dc, rst);//deklaruj nazwę ekranu TFT
pusta konfiguracja () {
//Serial.begin(9600);//ustaw częstotliwość próbkowania
myScreen.begin();//zainicjuj ekran TFT
myScreen.background(0, 0, 0);//ustaw tło na czarne
ADCSRA=0xe5;//ustaw adc na tryb swobodnego biegu
ADMUX=0x40;//użyj adc0
}
pusta pętla () {
while(1){ // zmniejsza jitter cli(); // Przerwanie UDRE spowalnia w ten sposób na arduino1.0
for (int i = 0; i < FHT_N; i++) { // zachowaj 256 próbek
while(!(ADCSRA & 0x10)); // poczekaj, aż adc będzie gotowy
ADCSRA = 0xf5; // zrestartuj bajt adc
m = ADCL; // pobierz bajt danych adc
j = ADCH; int k = (j << 8) | m; // formować w int
k -= 0x0200; // forma w podpisany int
k <<= 6; // forma w 16b podpisany int
fht_input = k; // włóż prawdziwe dane do pojemników
}
okno_fht(); // okno danych dla lepszej odpowiedzi częstotliwościowej
fht_reorder(); // zmień kolejność danych przed wykonaniem fht
fht_run(); // przetwarzaj dane w fht
fht_mag_lin(); // weź wyjście fht
sei();
dla (int i=5;i<40;i++){
mojeEkran.stroke(255, 255, 255);
mojeEkran.wypełnij(255, 255, 255);
int drawHeight=map(fht_lin_out, 10, 255, 10, myScreen.height());
int ypos=mojEkran.height()-drawHeight-8; myScreen.rect((4*i)+8, ypos, 3, drawHeight);
}
mojeEkran.tło(0, 0, 0);
}
}
[/kod]
Krok 21: Przetestuj to
Użyłem generatora tonów online (https://www.szynalski.com/tone-generator/), aby potwierdzić, że kod działa poprawnie. Po potwierdzeniu, że działa, przyciśnij dzwonek stetoskopu do klatki piersiowej, weź głęboki oddech i zobacz, jakie częstotliwości są obecne!!
Krok 22: Przyszła praca
**Uwaga: jestem chemikiem, a nie inżynierem czy informatykiem**. Prawdopodobnie pojawią się błędy i ulepszenia projektu i kodu. Biorąc to pod uwagę, myślę, że to dobry początek czegoś, co może okazać się bardzo przydatne i niedrogie. Poniższe punkty to przyszłe ulepszenia, które chciałbym wprowadzić i mam nadzieję, że niektórzy z was również spróbują je ulepszyć!
· Spraw, aby urządzenie było mobilne. Nie mam dużego doświadczenia z procesorami lub innymi mikrokontrolerami, ale musiałby mieć wystarczająco dużo pamięci, aby przechowywać całą bibliotekę FHT lub ewentualnie Bluetooth.
· Wprowadzić do kodu kilka obliczeń analizy statystycznej. Na przykład, zazwyczaj świszczący oddech ma częstotliwość podstawową równą lub większą niż 400 Hz i trwa co najmniej 250 ms. Rhonchi występują przy częstotliwości podstawowej około 200 Hz lub mniejszej i trwają co najmniej 250 ms. Zdefiniowano wiele innych dźwięków płucnych wskazujących na stan zdrowia (https://commongiant.github.io/iSonea-Physicians/assets/publications/7_ISN-charbonneau-Euro-resp-Jour-1995-1942-full.pdf). Myślę, że jest to coś, co można sprawdzić w kodzie, porównując sygnał z pojemników częstotliwości po określonej liczbie cykli przez FHT, a następnie uruchamiając funkcję millis(), aby zobaczyć, jak długo był obecny, a następnie porównując do poziomu szumów obliczeń FHT. Jestem przekonany, że te rzeczy da się zrobić!
Mam nadzieję, że wszyscy dobrze się bawiliście przy tym projekcie i jeśli macie jakieś pytania, proszę o komentarz, a ja odpowiem tak szybko, jak będę mógł! Czekam na komentarze.
Zalecana:
Arduino: Transformacja częstotliwości (DFT): 6 kroków
Arduino: Transformacja częstotliwości (DFT): ten program oblicza transformację częstotliwości na arduino z kontrolą ciasta nad parametrami. Rozwiązuje się go za pomocą desecrate fouriior transform. to nie jest FFT. FFT to algorytm używany do rozwiązywania DFT w krótszym czasie. Kod FFT można znaleźć tutajhe
Szybka zmiana klipsa miernika: 3 kroki
Szybka wymiana klipsa do miernika: Mam magnetyczny klips do zawieszania do mojego miernika i muszę być w stanie szybko go zdjąć, aby przejść z pracy na panelu do blatu stołu. poczekaj 2 miesiące na podbicie Chin. Więc tutaj idzie
Szybka obudowa Arduino: 3 kroki (ze zdjęciami)
Szybka obudowa Arduino: Jest to krótka instrukcja o sprytnym, małym pomyśle Arduino, który można zrobić z pustego pudełka na śruby
Szybka i łatwa ładowarka do iPoda / przenośne gniazdo akcesoriów DC: 3 kroki
Szybka i łatwa ładowarka do iPoda / przenośne gniazdo akcesoriów DC: Jest to prosta konstrukcja S U P E R, która pozwoli Ci uruchomić wiele różnych akcesoriów DC z prostego akumulatora
Szybka i brudna klawiatura Das (pusta klawiatura): 3 kroki
Szybka i brudna klawiatura Das (pusta klawiatura): Klawiatura Das to nazwa najpopularniejszej klawiatury bez napisów na klawiszach (pusta klawiatura). Das Keyboard kosztuje 89,95 USD. Ta instrukcja poprowadzi Cię, jak zrobić ją samemu z dowolną starą klawiaturą, którą masz