สารบัญ:
- ขั้นตอนที่ 1: วัสดุ
- ขั้นตอนที่ 2: เครื่องมือ
- ขั้นตอนที่ 3: การพิมพ์ 3 มิติ
- ขั้นตอนที่ 4: สร้างวงจร
- ขั้นตอนที่ 5: การเดินสาย LCD
- ขั้นตอนที่ 6: การเดินสายไมค์/เครื่องขยายเสียง
- ขั้นตอนที่ 7: การเดินสายสวิตช์ชั่วขณะ
- ขั้นตอนที่ 8: การเดินสายโพเทนชิออมิเตอร์
- ขั้นตอนที่ 9: การเดินสายแจ็คหูฟัง
- ขั้นตอนที่ 10: เอาต์พุตไมโครโฟน/เครื่องขยายเสียง
- ขั้นตอนที่ 11: เอาต์พุตไมโครโฟน/เครื่องขยายเสียงดำเนินการต่อ
- ขั้นตอนที่ 12: ส่วนประกอบในเอกสารแนบ
- ขั้นตอนที่ 13: In-Enclosure-Soldering
- ขั้นตอนที่ 14: +5V, GND Extended Wires
- ขั้นตอนที่ 15: สลิปสายยาวผ่านรูตู้
- ขั้นตอนที่ 16: การหดตัวด้วยความร้อน
- ขั้นตอนที่ 17: ปิดผนึกสิ่งที่แนบมา
- ขั้นตอนที่ 18: เชื่อมต่อกับ Arduino
- ขั้นตอนที่ 19: Arduino IDE/ไลบรารี่
- ขั้นตอนที่ 20: Arduino Sketch
- ขั้นตอนที่ 21: ทดสอบเลย
- ขั้นตอนที่ 22: งานในอนาคต
วีดีโอ: Fast Hartley Transform Spectral Stethoscope: 22 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
ในคำแนะนำนี้ คุณจะได้เรียนรู้วิธีสร้างเครื่องตรวจฟังเสียงแบบสเปกตรัมโดยใช้การแปลงฮาร์ทลี่ย์อย่างรวดเร็ว สามารถใช้เพื่อให้เห็นภาพเสียงของหัวใจและปอด
ขั้นตอนที่ 1: วัสดุ
หน้าจอ LCD 1.8” ($ 7.50 ใน Amazon)
Arduino Uno หรือเทียบเท่า ($7.00 บน Gearbest)
Electret Amplifier ($ 6.95 สำหรับ Adafruit)
ตัวเก็บประจุ 100 µF (0.79 ดอลลาร์)
ลวดและจัมเปอร์ ($4.00)
แจ็คสเตอริโอ 3.5 มม. ($ 1.50)
โพเทนชิโอมิเตอร์ 10kOhm ($2.00)
สวิตช์ชั่วขณะ ($1.50)
ขั้นตอนที่ 2: เครื่องมือ
หัวแร้ง
ปืนกาวร้อน
เครื่องพิมพ์ 3 มิติ…หรือเพื่อนที่ใช้เครื่องพิมพ์ 3 มิติ (สามารถทำด้วยกระดาษแข็งได้เช่นกัน)
เครื่องตัดลวด
เขียงหั่นขนม
ขั้นตอนที่ 3: การพิมพ์ 3 มิติ
อย่างแรกคือการพิมพ์ 3 มิติไฟล์.stl ที่แนบมากับขั้นตอนนี้ ฉันพิมพ์ทั้งสองไฟล์โดยใช้วัสดุ/การตั้งค่าต่อไปนี้:
วัสดุ: PLA
ความสูงของชั้น: 0.1mm
ผนัง/บน/ล่างความหนา: 0.8mm
อุณหภูมิการพิมพ์: 200⁰C
อุณหภูมิเตียง: 60⁰C
เปิดใช้งานการสนับสนุน @ 10%
ขั้นตอนที่ 4: สร้างวงจร
ใช้ส่วนประกอบในส่วนวัสดุสร้างวงจร ฉันมักจะประกอบวงจรไว้บนเขียงหั่นขนมก่อนเพื่อให้แน่ใจว่ามันทำงานอย่างถูกต้องก่อนที่จะสัมผัสหัวแร้ง
ขั้นตอนที่ 5: การเดินสาย LCD
ใช้รูปที่แนบมากับขั้นตอนนี้ บัดกรีสายไฟกับหมุดเจ็ดในแปดตัวบนหน้าจอ LCD สายไฟเหล่านี้จะต้องมีความยาวประมาณ 3 ฟุต ยกเว้นสายกราวด์และพิน +5V (ขนาดเพียง 2-3 นิ้วเท่านั้น)
ขั้นตอนที่ 6: การเดินสายไมค์/เครื่องขยายเสียง
การใช้รูปที่แนบมากับขั้นตอนนี้ประสานสายไฟสามเส้นเข้ากับหมุด +5V, Ground และ Out บนไมโครโฟน/เครื่องขยายสัญญาณ Adafruit ต้องมีความยาวประมาณ 2-3 นิ้วเท่านั้น
ขั้นตอนที่ 7: การเดินสายสวิตช์ชั่วขณะ
ต่อสายขนาด 2-3 นิ้วหนึ่งเส้นเข้ากับตัวเชื่อมสองตัวบนสวิตช์ชั่วขณะ
ขั้นตอนที่ 8: การเดินสายโพเทนชิออมิเตอร์
ใช้รูปในขั้นตอนที่ 6 บัดกรีสายไฟสามเส้นที่มีความยาวประมาณ 2-3 นิ้วกับข้อต่อทั้งสามของโพเทนชิออมิเตอร์
ขั้นตอนที่ 9: การเดินสายแจ็คหูฟัง
บัดกรีสายไฟสามเส้นเข้ากับวงแหวน ปลาย และปลอกของแจ็คหูฟัง ฉันใช้แม่แรงจากเครื่องเมตรอนอมที่ต่อสายไว้แล้ว หากคุณไม่รู้ว่าแหวน ปลาย และปลอกหุ้มคืออะไร แค่ google ก็มีรูปภาพดีๆ มากมายเกี่ยวกับการเดินสายแจ็คสเตอริโอ
ขั้นตอนที่ 10: เอาต์พุตไมโครโฟน/เครื่องขยายเสียง
หลังจากบัดกรีสายไฟบนไมโครโฟน/แอมป์ โพเทนชิออมิเตอร์ และแจ็คหูฟังแล้ว ให้บัดกรีสายไฟหนึ่งเส้นที่มีความยาวประมาณ 3 ฟุตกับสาย "ออก" ของเครื่องขยายเสียงไมโครโฟน สายนี้จะเชื่อมต่อกับพิน A0 ของ Arduino ในภายหลัง
ขั้นตอนที่ 11: เอาต์พุตไมโครโฟน/เครื่องขยายเสียงดำเนินการต่อ
บัดกรีสายที่สองเข้ากับสาย "ออก" ของไมโครโฟน/เครื่องขยายเสียง ลวดนี้ต้องบัดกรีกับตัวเก็บประจุขนาด 100 microFarad หากคุณกำลังใช้ตัวเก็บประจุด้วยไฟฟ้า ตรวจสอบให้แน่ใจว่าด้านบวกเชื่อมต่อกับสายนี้แล้ว
ขั้นตอนที่ 12: ส่วนประกอบในเอกสารแนบ
หลังจากบัดกรีสายไฟทั้งหมดบนส่วนประกอบแล้ว ให้วางส่วนประกอบในตำแหน่งที่เกี่ยวข้องตามภาพที่แนบมาในขั้นตอนนี้ ฉันใช้กาวร้อนเพื่อยึดไมโครโฟนและแจ็คหูฟังให้เข้าที่
ขั้นตอนที่ 13: In-Enclosure-Soldering
หลังจากที่ส่วนประกอบทั้งหมดถูกยึดเข้ากับตัวเครื่องแล้ว ให้บัดกรีสายกราวด์ทั้งหมดเข้าด้วยกัน ควรมีหนึ่งอันจาก LCD หนึ่งอันจากไมโครโฟน / แอมป์และอีกอันจากปลอกของแจ็คหูฟัง ยังประสานสาย +5V เข้าด้วยกันและหนึ่งสายจากสวิตช์ชั่วขณะ ควรมีอีกครั้งหนึ่งจาก LCD หนึ่งอันจากไมโครโฟน / เครื่องขยายเสียงและอีกอันบนสวิตช์ชั่วขณะ
ขั้นตอนที่ 14: +5V, GND Extended Wires
ตอนนี้ตัดลวดสองเส้นยาวประมาณ 3 ฟุต ประสานหนึ่งเข้ากับคลัสเตอร์ของสายกราวด์และประสานอีกอันกับลวดเปิดบนสวิตช์ชั่วขณะ
ขั้นตอนที่ 15: สลิปสายยาวผ่านรูตู้
ตอนนี้ คุณควรมีสายไฟทั้งหมดแปดเส้น ยาวประมาณ 3 ฟุต วางสิ่งเหล่านี้ผ่านรูที่ยังไม่ได้บรรจุในกล่องหุ้ม ดูรูปที่แนบมาในขั้นตอนนี้
ขั้นตอนที่ 16: การหดตัวด้วยความร้อน
หลังจากการบัดกรีทั้งหมดเสร็จสิ้น ตรวจสอบให้แน่ใจว่าได้ปิดสายไฟที่สัมผัสไว้ ฉันใช้ท่อหดแบบใช้ความร้อน แต่เทปไฟฟ้าก็ใช้ได้ดีเช่นกัน
ขั้นตอนที่ 17: ปิดผนึกสิ่งที่แนบมา
นำครึ่งหนึ่งของกล่องหุ้มที่มีหน้าจอ LCD มาวางทับอีกครึ่งหนึ่งของกล่องหุ้มที่มีส่วนประกอบอื่นๆ ขณะดันชิ้นส่วนทั้งสองเข้าด้วยกัน ให้กาวร้อนเพื่อยึดกล่องหุ้มเข้าด้วยกัน
ขั้นตอนที่ 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 เป็นแนวคิดพื้นฐานในการประมวลผลสัญญาณและสนุกมากที่จะเรียนรู้ ฉันขอแนะนำให้อ่านตัวเองถ้าคุณสนใจดู โค้ดตัวอย่าง FHT ที่ฉันคัดลอกมาจากเว็บไซต์ Open Music Labs เริ่มแรกแสดงแอมพลิจูดของช่องความถี่แต่ละช่องเป็นเอาต์พุตแบบลอการิทึมหรือเดซิเบล ฉันเปลี่ยนสิ่งนี้เพื่อส่งออกช่องความถี่ในระดับเชิงเส้น เนื่องจากสเกลเชิงเส้นแสดงภาพได้ดีกว่าว่ามนุษย์ได้ยินเสียงอย่างไร ลูป for() ที่ส่วนท้ายใช้สำหรับวาดแอมพลิจูดของแต่ละช่องความถี่บนหน้าจอ LCD สเปกตรัม FHT แบบเต็มจะรวมช่องความถี่ทั้งหมดตั้งแต่ i=0 ถึง i<128 คุณจะสังเกตเห็นว่าลูป for() ของฉันมาจาก i=5 ถึง i<40 นี่เป็นเพราะความถี่ที่สำคัญสำหรับการวินิจฉัยโรคปอดมักจะอยู่ระหว่าง 150Hz ถึง 3.5khz ฉันตัดสินใจเพิ่มเป็น 4kHz ที่สามารถปรับได้หากต้องการแสดงคลื่นความถี่เต็ม
[รหัส]
//รหัสหูฟังดิจิตอล
//ห้องสมุด 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
#define cs 10 // ตั้งค่า LCD cs pin เป็น arduino pin 10
#define 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
}
วงเป็นโมฆะ () {
while(1){ // ลดความกระวนกระวายใจ cli(); // UDRE ขัดจังหวะช้าลงบน arduino1.0
สำหรับ (int i = 0; i < FHT_N; i++) { // บันทึก 256 ตัวอย่าง
ในขณะที่(!(ADCSRA & 0x10)); // รอ adc พร้อมครับ
ADCSRA = 0xf5; // รีสตาร์ท adc byte
ม. = ADCL; // ดึงข้อมูล ADC byte
เจ = ADCH; int k = (j << 8) | NS; // สร้างเป็น int
k -= 0x0200; // ฟอร์มเป็น int ที่ลงชื่อเข้าใช้
k <<= 6; // สร้างเป็น 16b ลงนาม int
fht_input = k; // ใส่ข้อมูลจริงลงในถังขยะ
}
fht_window(); // หน้าต่างข้อมูลเพื่อการตอบสนองความถี่ที่ดีขึ้น
fht_reorder(); // เรียงลำดับข้อมูลใหม่ก่อนทำ fht
fht_run(); // ประมวลผลข้อมูลใน fht
fht_mag_lin(); // รับผลลัพธ์ของ fht
เส ();
สำหรับ (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);
}
}
[/รหัส]
ขั้นตอนที่ 21: ทดสอบเลย
ฉันใช้เครื่องสร้างโทนเสียงออนไลน์ (https://www.szynalski.com/tone-generator/) เพื่อยืนยันว่าโค้ดทำงานอย่างถูกต้อง หลังจากยืนยันการทำงานแล้ว ให้กดกริ่งของหูฟังขึ้นไปที่หน้าอก หายใจเข้าลึกๆ แล้วดูว่ามีความถี่ใดบ้าง!!
ขั้นตอนที่ 22: งานในอนาคต
**หมายเหตุ: ฉันเป็นนักเคมี ไม่ใช่วิศวกรหรือนักวิทยาศาสตร์คอมพิวเตอร์** อาจมีข้อผิดพลาดและการปรับปรุงการออกแบบและโค้ด อย่างที่บอกไป ฉันคิดว่ามันเป็นการเริ่มต้นที่ดีที่จะมีประโยชน์และราคาไม่แพง หัวข้อย่อยต่อไปนี้เป็นการปรับปรุงในอนาคตที่ฉันอยากจะทำ และฉันหวังว่าพวกคุณบางคนจะพยายามปรับปรุงมันด้วย!
· ทำให้อุปกรณ์เคลื่อนที่ ฉันไม่มีประสบการณ์มากมายเกี่ยวกับ CPU หรือไมโครคอนโทรลเลอร์อื่นๆ แต่จะต้องมีหน่วยความจำเพียงพอที่จะจัดเก็บไลบรารี FHT ทั้งหมด หรืออาจเป็นบลูทูธ
· แนะนำการคำนวณการวิเคราะห์ทางสถิติบางส่วนลงในโค้ด ตัวอย่างเช่น โดยทั่วไปแล้วเสียงฮืด ๆ จะมีความถี่พื้นฐานเท่ากับหรือมากกว่า 400 Hz และกินเวลาอย่างน้อย 250 ms Rhonchi เกิดขึ้นที่ความถี่พื้นฐานประมาณ 200 Hz หรือน้อยกว่าและกินเวลาอย่างน้อย 250 ms เสียงปอดอื่นๆ ถูกกำหนดและบ่งบอกถึงภาวะสุขภาพ ฉันคิดว่านั่นเป็นสิ่งที่สามารถตรวจสอบได้ในโค้ดโดยการเปรียบเทียบสัญญาณของช่องเก็บความถี่หลังจากผ่าน FHT จำนวนหนึ่งแล้วจึงเรียกใช้ฟังก์ชัน millis() เพื่อดูว่ามีสัญญาณอยู่นานแค่ไหน จากนั้นจึงเปรียบเทียบ ไปที่ระดับเสียงของการคำนวณ FHT ฉันมั่นใจว่าสิ่งเหล่านี้สามารถทำได้!
ฉันหวังว่าทุกคนจะสนุกกับโครงการนี้และหากคุณมีคำถามใด ๆ โปรดแสดงความคิดเห็นและฉันจะตอบกลับโดยเร็วที่สุด! ฉันหวังว่าจะได้เห็นความคิดเห็น
แนะนำ:
ยานพาหนะเอฟเฟกต์พื้น Super FAST RC (Ekranoplan): 5 ขั้นตอน (พร้อมรูปภาพ)
Super FAST RC Ground Effect Vehicle (Ekranoplan): คุณรู้ไหมว่าในระหว่างการทำทัชดาวน์ เครื่องบินลอยอยู่เหนือพื้นไม่กี่ฟุตก่อนที่ล้อจะชนรันเวย์จริง ๆ ? ซึ่งไม่เพียงแต่จะทำให้ผู้โดยสารลงจอดได้อย่างราบรื่น แต่ยังเป็นผลตามธรรมชาติของพื้นดินอีกด้วย ซึ่ง
การเพิ่มคุณสมบัติ Fast Charge ให้กับ Powerbank: 5 ขั้นตอน (พร้อมรูปภาพ)
การเพิ่มคุณสมบัติ Fast Charge ให้กับ Powerbank: ในโครงการนี้ ฉันจะแสดงให้คุณเห็นว่าฉันแก้ไข powerbank ทั่วไปอย่างไร เพื่อลดเวลาในการชาร์จที่ยาวนานอย่างน่าขัน ระหว่างทางฉันจะพูดถึงวงจรพาวเวอร์แบงค์และทำไมก้อนแบตเตอรี่ของพาวเวอร์แบงค์ของฉันถึงค่อนข้างพิเศษ มาเริ่มกัน
EasyFFT: Fast Fourier Transform (FFT) สำหรับ Arduino: 6 ขั้นตอน
EasyFFT: Fast Fourier Transform (FFT) สำหรับ Arduino: การวัดความถี่จากสัญญาณที่จับได้อาจเป็นงานที่ยาก โดยเฉพาะใน Arduino เนื่องจากมีกำลังในการคำนวณต่ำกว่า มีวิธีการต่างๆ ที่ใช้ได้ในการจับภาพการข้ามศูนย์ซึ่งจับความถี่โดยการตรวจสอบจำนวนครั้งที่
Transform-a-Car: ควบคุมจากระยะไกลเป็นระบบควบคุมตนเอง: 4 ขั้นตอน
Transform-a-Car: รีโมทควบคุมเป็นระบบควบคุมตัวเอง: นี่คือการแฮ็กบนรถ RC ที่มีรีโมทเสีย คุณสามารถหามากมายที่การขายโรงรถ
Fast Edge Square Wave Pulse Generator: 4 ขั้นตอน
Fast Edge Square Wave Pulse Generator: Fast Edge Pulse Generator - Ultra Fast Square Wave Pulse Generator วงจรง่ายๆนี้โดยใช้ 74HC14N (อินเวอร์เตอร์ TTL หกตัวที่มีอัตราการฆ่าต่ำ) สามารถสร้างสัญญาณคลื่นสี่เหลี่ยมได้ถึง 10MHZ เหมาะสำหรับการทดสอบทางอิเล็กทรอนิกส์ ด้วยความเน่า