สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
บทนำ
หลังจากทดลองสร้างซินธิไซเซอร์หลายตัวแล้ว ฉันก็เริ่มสร้างเครื่องเก็บตัวอย่างเสียง ซึ่งสามารถจำลองเสียงได้ง่ายและราคาไม่แพง
เพื่อให้มีคุณภาพเสียงที่ดี (44.1 kHz) และความจุที่เพียงพอ จึงใช้โมดูล DFPlayer ซึ่งใช้การ์ดหน่วยความจำ micro SD เพื่อจัดเก็บข้อมูลสูงสุด 32 กิกะไบต์ โมดูลนี้สามารถเล่นเสียงได้ครั้งละหนึ่งเสียงเท่านั้น ดังนั้นเราจะใช้สองเสียง
ข้อกำหนดอีกประการสำหรับโครงการนี้คือ วงจรสามารถปรับให้เข้ากับอินเทอร์เฟซต่างๆ ได้ นั่นคือเหตุผลที่เราเลือกเซ็นเซอร์แบบคาปาซิทีฟแทนปุ่ม
เซ็นเซอร์แบบคาปาซิทีฟสามารถเปิดใช้งานได้เพียงแค่สัมผัสด้วยมือกับพื้นผิวโลหะใดๆ ที่เชื่อมต่อกับเซ็นเซอร์
สำหรับการอ่านเซ็นเซอร์เราจะใช้ Arduino nano เนื่องจากความสามารถและขนาดที่เล็ก
ลักษณะเฉพาะ
6 เสียงที่แตกต่างกัน
เปิดใช้งานโดยเซ็นเซอร์ capacitive
โพลีโฟนี 2 เสียงพร้อมกัน
ขั้นตอนที่ 1: วัสดุและเครื่องมือ
วัสดุ
Arduino นาโน
DFPlayer 2x
ไมโคร SD 2x
3.5 แจ็คเสียง
2.1 แจ็ค DC
กระดานทองแดง 10x10
เฟอริกคลอไรด์
ลวดบัดกรี
กระดาษถ่ายโอน PCB
เครื่องมือ
บัดกรีเหล็ก
เครื่องตัดตะกั่วส่วนประกอบ
คอมพิวเตอร์
เหล็ก
ซอฟต์แวร์
Arduino Ide
Kicad
ห้องสมุด ADTouch
ไลบรารี DFPlayer ที่รวดเร็ว
ขั้นตอนที่ 2: มันทำงานอย่างไร
ตัวอย่างทำงานดังนี้ โดยใช้ไลบรารี ADTouch เราแปลง 6 พอร์ตแอนะล็อกของ Arduino Nano เป็นเซ็นเซอร์ capacitive
ในฐานะที่เป็นเซ็นเซอร์ เราสามารถใช้โลหะใดๆ ที่เชื่อมต่อกับหมุดเหล่านี้โดยใช้สายเคเบิล
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับไลบรารีและเซ็นเซอร์ capacitive ได้ที่ลิงค์ต่อไปนี้
เมื่อสัมผัสเซ็นเซอร์ตัวใดตัวหนึ่ง Arduino จะตรวจจับการเปลี่ยนแปลงความจุและหลังจากนั้นจะส่งคำสั่งให้ดำเนินการเสียงที่สอดคล้องกับเซ็นเซอร์นั้นไปยังโมดูล DFPlayer
โมดูล DFPlayer แต่ละโมดูลสามารถเล่นเสียงได้ครั้งละหนึ่งเสียงเท่านั้น ดังนั้นเพื่อให้สามารถสั่งเสียงได้ครั้งละ 2 เสียง เครื่องดนตรีจึงใช้ 2 โมดูล
ขั้นตอนที่ 3: แผนผัง
ในไดอะแกรมเราจะเห็นว่า Arduino และโมดูล DFPlayer ทั้งสองเชื่อมต่อกันอย่างไร
R1 และ R2 (1 k) ใช้สำหรับเชื่อมต่อโมดูลกับ DFPlayer
R 3 4 5 และ 6 (10k) ใช้สำหรับผสมเอาต์พุตของช่อง l และ r ของโมดูล
R 7 (330) คือความต้านทานการป้องกันของ LED ที่จะใช้เป็นตัวบ่งชี้ว่า Arduino กำลังได้รับพลังงาน
ขั้นตอนที่ 4: สร้าง PCB
ต่อไปเราจะผลิตเพลทโดยใช้วิธีการถ่ายเทความร้อนซึ่งอธิบายไว้ในคำแนะนำนี้:
มีแผ่นอิเล็กโทรด 6 แผ่นวางอยู่บนบอร์ดเพื่อให้ใช้ตัวอย่างได้โดยไม่ต้องใช้เซ็นเซอร์ภายนอก
ขั้นตอนที่ 5: การบัดกรีส่วนประกอบ
ต่อไปเราจะประสานส่วนประกอบ
อย่างแรกคือตัวต้านทาน
ขอแนะนำให้ใช้ส่วนหัวเพื่อติดตั้ง Arduino และโมดูลโดยไม่ต้องบัดกรีโดยตรง
ในการบัดกรีส่วนหัวเริ่มต้นด้วยหมุด จากนั้นตรวจสอบว่าอยู่ในตำแหน่งที่ดี จากนั้นจึงบัดกรีหมุดที่เหลือ
ในที่สุดเราจะประสานตัวเชื่อมต่อ
ขั้นตอนที่ 6: ติดตั้ง Libraries
ในโครงการนี้ เราจะใช้ไลบรารีสามแห่งที่เราจำเป็นต้องติดตั้ง:
SoftwareSerial.h
DFPlayerMini_Fast.h
ADCTouch.h
ในลิงค์ต่อไปนี้ คุณสามารถดูรายละเอียดวิธีการติดตั้งไลบรารี่ใน Arduino
www.arduino.cc/en/guide/libraries
ขั้นตอนที่ 7: รหัส
ตอนนี้เราสามารถอัปโหลดโค้ดไปยังบอร์ด Arduino ได้แล้ว
สำหรับสิ่งนี้เราต้องเลือกบอร์ด Arduino Nano
#รวม #รวม #รวม
int ref0, ref1, ref2, ref3, ref4, ref5; int th;
ซอฟต์แวร์Serial mySerial(8, 9); // RX, TX DFPlayerMini_Fast myMP3;
ซอฟต์แวร์Serial mySerial2(10, 11); // RX, TX DFPlayerMini_Fast myMP32;
การตั้งค่าเป็นโมฆะ () { int th = 550; // Serial.begin(9600); mySerial.begin(9600); mySerial2.begin(9600); myMP3.begin(mySerial); myMP32.begin(mySerial2); myMP3.volume(18); ref0 = ADCTouch.read(A0, 500); ref1 = ADCTouch.read (A1, 500); ref2 = ADCTouch.read (A2, 500); ref3 = ADCTouch.read (A3, 500); ref4 = ADCTouch.read (A4, 500); ref5 = ADCTouch.read (A5, 500);
}
วงเป็นโมฆะ () {
int total1 = ADCTouch.read(A0, 20); int total2 = ADCTouch.read (A1, 20); int total3 = ADCTouch.read (A2, 20); int total4 = ADCTouch.read (A3, 20); int total5 = ADCTouch.read (A4, 20); int total6 = ADCTouch.read(A5, 20);
ทั้งหมด 1 -= ผู้อ้างอิง 0; ทั้งหมด2 -= ref1; ทั้งหมด3 -= ref2; ทั้งหมด4 -= ref3; รวม 5 -= อ้างอิง 4; ทั้งหมด6 -= ref5; // // Serial.print(total1 > th); // Serial.print(total2 > th); // Serial.print(total3 > th); // Serial.print(total4 > th); // Serial.print(total5 > th); // Serial.println(total6 > th);
// Serial.print(รวม1); // Serial.print("\t"); // Serial.print(รวม2); // Serial.print("\t"); // Serial.print(รวม3); // Serial.print("\t"); // Serial.print(total4); // Serial.print("\t"); // Serial.print(รวม5); // Serial.print("\t"); // Serial.println(total6); if (total1 > 100 && total1 > th) { myMP32.play(1); // Serial.println("o1"); }
ถ้า (total2 > 100 && total2 > th) { myMP32.play(2); //Serial.println("o2"); }
ถ้า (total3 > 100 && total3 > th) {
myMP32.play(3); //Serial.println("o3");
}
if (total4 > 100 && total4 > th) {
myMP3.play(1); //Serial.println("o4");
}
ถ้า (total5 > 100 && total5 > th) {
myMP3.play(2); //Serial.println("o5");
}
ถ้า (total6 > 100 && total6 > th) {
myMP3.play(3); //Serial.println("o6");
} // ไม่ทำอะไรล่าช้า(1); }
ขั้นตอนที่ 8: โหลดเสียงลงในการ์ดหน่วยความจำ
ตอนนี้คุณสามารถโหลดเสียงของคุณในการ์ด micro SD
รูปแบบต้องเป็น 44.1 kHz และ 16 บิต wav
คุณต้องอัปโหลด 3 เสียงในการ์ด SD แต่ละใบ
ขั้นตอนที่ 9: อินเทอร์เฟซ
ในขณะนี้ คุณสามารถเรียกใช้แซมเพลอร์ของคุณด้วยแพดใน PCB ได้แล้ว แต่คุณยังคงมีความเป็นไปได้ในการปรับแต่ง เลือกเคสและวัตถุหรือพื้นผิวโลหะต่างๆ เพื่อใช้เป็นเซ็นเซอร์
ในกรณีนี้ ฉันใช้หัวข้อมือ 3 อัน ซึ่งฉันใส่สกรูโลหะเป็นเสียงสัมผัสโลหะ
เมื่อต้องการทำเช่นนี้ ให้ต่อสกรูเข้ากับหมุดของบอร์ดโดยใช้สายเคเบิล
คุณสามารถใช้วัตถุที่เป็นโลหะ เทปนำไฟฟ้า หรือทดลองกับหมึกนำไฟฟ้าได้