ผู้เริ่มต้น
สร้างเปียโนระบบสัมผัสแบบเก็บประจุ
เซ็นเซอร์
ไม่มีชิ้นส่วนที่เคลื่อนที่ ไม่มีสวิตช์กลไก เพียงแค่แตะแผ่นสัมผัสแล้วได้ยินเสียงโน้ต คีย์บอร์ดตรวจจับแบบคาปาซิทีฟที่สร้างจากโมดูลสัมผัสและออด สอนการตรวจจับการสัมผัสที่แท้จริงแทนการกดปุ่มธรรมดา
รวมชิ้นส่วนจริง 3 รายการ
ราคารวมชุดนี้: 955.00 ฿
ยังไม่รวมส่วนลดคำสั่งซื้อที่คุณอาจได้รับตอนชำระเงิน
สิ่งที่คุณต้องใช้
เป้าหมายของโปรเจกต์
เชื่อมต่อแผ่นสัมผัสแบบคาปาซิทีฟหลายแผ่นเข้ากับออดและสร้างคีย์บอร์ดที่ไวต่อการสัมผัสที่สามารถเล่นได้จริง โดยไม่มีสวิตช์เชิงกลใดๆ เพียงแค่วางปลายนิ้วบนแผ่นสัมผัสก็จะเกิดเสียงโน้ตขึ้นทันที โดยใช้เทคโนโลยีการตรวจจับเดียวกันกับสวิตช์ไฟสมัยใหม่หรือปุ่มโฮมของโทรศัพท์
สิ่งที่ตัวควบคุมทำ
มันจะตรวจสอบเอาต์พุตของแต่ละโมดูลสัมผัสอย่างต่อเนื่อง และเมื่อโมดูลใดโมดูลหนึ่งทำงานสูงขึ้น มันจะเล่นโน้ตที่กำหนดให้กับแผ่นสัมผัสนั้นผ่านออด ตราบใดที่ยังคงมีการสัมผัสอยู่ หรือเป็นเสียงบี๊บสั้นๆ ที่คงที่ก็ได้ ซึ่งทั้งสองวิธีใช้งานได้
สิ่งที่เซ็นเซอร์สัมผัสทำ
แต่ละโมดูลจะตรวจจับการเปลี่ยนแปลงเล็กน้อยของความจุไฟฟ้าที่เกิดจากการสัมผัสของปลายนิ้วบนแผ่นสัมผัส และรายงานผลออกมาเป็นค่าดิจิทัล HIGH หรือ LOW อย่างง่ายๆ โดยไม่จำเป็นต้องใช้แรงกดหรือการกระตุ้นทางกลไกใดๆ เลย เพียงแค่การอยู่ใกล้ของวัตถุที่เป็นสื่อกระแสไฟฟ้าก็พอ
สิ่งที่ออดทำ
มันจะเล่นความถี่ใดก็ตามที่ตัวควบคุมกำหนดให้กับแผ่นสัมผัสที่กำลังถูกสัมผัส ทำให้แต่ละปุ่มมีโน้ตดนตรีที่แตกต่างกัน
แนวคิดเกี่ยวกับซอฟต์แวร์และไลบรารี
ทำให้แผ่นสัมผัสหนึ่งแผ่นสามารถกระตุ้นเสียงที่กำหนดได้อย่างน่าเชื่อถือก่อน จากนั้นจึงขยายรูปแบบเดียวกันนั้นไปยังแผ่นสัมผัสจำนวนมากเท่าที่คุณมีขา GPIO ที่ใช้งานได้ โดยกำหนดโน้ตของตัวเองในสเกลเพลงอย่างง่ายๆ
การทดสอบและการแก้ไขปัญหา
- แผ่นสัมผัสทำงานเองโดยไม่มีอะไรสัมผัส โมดูลส่วนใหญ่มีตัวปรับความไวในตัว และการจัดสายไฟให้อยู่ห่างจากแผ่นสัมผัสอื่นๆ จะช่วยลดการจับคู่ความจุที่เล็ดลอดระหว่างกัน
- แผ่นสัมผัสไม่ตอบสนองต่อการสัมผัสจริง โมดูลบางตัวอาจตั้งค่าเริ่มต้นเป็นโหมดสลับ (toggle mode) แทนที่จะเป็นโหมดชั่วขณะ (momentary mode) ให้ตรวจสอบแผ่นบัดกรีเลือกโหมดของโมดูลหรือจัมเปอร์หากมี
- โน้ตสองตัวเล่นพร้อมกันโดยไม่คาดคิด ให้เพิ่มลอจิกการดีบาวซ์อย่างง่าย เพื่อให้การสัมผัสครั้งเดียวถูกอ่านเป็นเหตุการณ์ที่ชัดเจนเพียงครั้งเดียว แทนที่จะเป็นการกระตุ้นที่รวดเร็วหลายครั้ง
การอัพเกรดเพิ่มเติม
เพิ่มจอแสดงผล OLED จากกล่องอะไหล่เพื่อแสดงโน้ตที่กำลังเล่นอยู่ ทำให้กลายเป็นเครื่องดนตรีที่มีการแสดงผลด้วยภาพนอกเหนือจากเสียง
การเดินสาย
- TTP223 VCC → ESP32-C3 SuperMini 3V3
- TTP223 GND → ESP32-C3 SuperMini GND
- TTP223 OUT → ESP32-C3 SuperMini GPIO4 — ขาเอนกประสงค์; หลีกเลี่ยง GPIO2/8/9 ซึ่งเป็นขาบูตในบอร์ด ESP32-C3 หลายรุ่น
- Active Buzzer VCC/สัญญาณ → ESP32-C3 SuperMini GPIO5
- Active Buzzer GND → ESP32-C3 SuperMini GND
การกำหนดหมายเลข/ป้ายชื่อ GPIO อาจแตกต่างกันเล็กน้อยระหว่างผู้จำหน่ายบอร์ด "ESP32-C3 SuperMini" ที่แตกต่างกัน — `#define`s ด้านล่างถูกตั้งค่าให้เป็นขาเอนกประสงค์ที่ปลอดภัยโดยทั่วไป แต่ให้ตรวจสอบซิลค์สกรีนของบอร์ดของคุณและปรับเปลี่ยนหากขาเหล่านั้นถูกใช้เพื่อสิ่งอื่นบนบอร์ดเฉพาะของคุณ
ความซื่อสัตย์เกี่ยวกับขอบเขต: รายการชิ้นส่วนประกอบด้วยแผ่นสัมผัส TTP223 หนึ่งแผ่นและออดแบบแอคทีฟหนึ่งตัว ดังนั้นนี่จึงเป็นตัวอย่าง "ตัวกระตุ้นโน้ต" แบบแผ่นเดียว ไม่ใช่เปียโนแบบหลายคีย์ — ไม่มีอะไรในรายการชิ้นส่วนที่จะนำมาสร้างคีย์เพิ่มเติมได้ โค้ดถูกเขียนขึ้นเป็นบล็อกอาคารที่สะอาดและนำกลับมาใช้ใหม่ได้: ตัวกระตุ้นการสัมผัสไปสู่เสียงที่ถูกดีบาวซ์ หากต้องการเปลี่ยนสิ่งนี้ให้เป็นเปียโนแบบหลายคีย์จริง ให้เพิ่มโมดูล TTP223 เพิ่มเติม (หนึ่งตัวต่อหนึ่งคีย์) บน GPIO ที่ว่างเพิ่มเติม และทำซ้ำรูปแบบการอ่าน/กระตุ้นเดียวกันต่อขา — นั่นคือเส้นทางที่แท้จริงและซื่อสัตย์ในการขยายขนาดสิ่งนี้
ขอพูดตามตรงเกี่ยวกับออด: โมดูลออดแบบ "แอคทีฟ" มีออสซิลเลเตอร์ภายในของตัวเองและจะคลิก/บี๊บที่ระดับเสียงเดียวเท่านั้นเมื่อถูกขับเคลื่อนด้วย HIGH — มันไม่สามารถเล่นโน้ต/ระดับเสียงดนตรีที่แตกต่างกันได้เหมือนกับเพียโซพาสซีฟที่ถูกขับเคลื่อนด้วย `tone()`/`ledcWriteTone()` PWM ดังนั้นโค้ดด้านล่างจึงไม่ได้สร้างเสียงดัดแปลง; แต่จะสร้างรูปแบบการเปิด/ปิดที่เป็นจังหวะ (การแตะสั้นๆ = เสียงบี๊บสั้นๆ, การสัมผัสค้างไว้ = เสียงบี๊บต่อเนื่อง) ตามความสามารถที่แท้จริงของส่วนนี้ หากต้องการโน้ตดนตรีจริงในภายหลัง ให้เปลี่ยนมาใช้เพียโซ/ออดแบบพาสซีฟ
โมดูล TTP223 โดยปกติจะทำงานเป็น active-HIGH เมื่อออกจากโรงงาน (OUT จะเป็น HIGH เมื่อสัมผัส) แต่บอร์ดบางรุ่นมีจัมเปอร์บัดกรีเพื่อกลับค่านี้เป็น active-LOW — โปรดตรวจสอบกับโมดูลของคุณก่อนที่จะเดินสายลอจิกที่สมมติว่า HIGH-on-touch
แผนภาพการต่อสาย
โค้ดเริ่มต้น
// Adjust these to match free, non-strapping GPIOs on your specific
// ESP32-C3 SuperMini board.
#define TOUCH_PIN 4
#define BUZZER_PIN 5
void setup() {
Serial.begin(115200);
pinMode(TOUCH_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(BUZZER_PIN, LOW);
}
void loop() {
bool touched = digitalRead(TOUCH_PIN) == HIGH; // flip to LOW if your TTP223 jumper is set active-LOW
digitalWrite(BUZZER_PIN, touched ? HIGH : LOW);
if (touched) {
Serial.println("Pad touched — buzzer ON");
}
delay(20); // light debounce/poll rate
}
ไม่แน่ใจขั้นตอนไหน?
ถามเรา