กลับไปหน้ารวมไฟล์
diy-piano-make-piano-with-touch-based-keys-touch-sensor-248fbf.md

นวัตกรรมเครื่องดนตรีไร้คีย์: สร้างเปียโนแบบสัมผัสด้วย Arduino และ Capacitive Sensing

โปรเจกต์นี้จะเปลี่ยนแนวคิดเครื่องดนตรีแบบเดิมๆ จากที่ต้องกดคีย์กลไก มาเป็นใช้เซ็นเซอร์สัมผัสแทน เราใช้หลักการของไฟฟ้าสถิตและการเปลี่ยนแปลงความจุไฟฟ้า (Capacitance) มาสร้างเมโลดี้ เพียงแค่นิ้วแตะเบาๆ

วิดีโอสาธิตเปียโน DIY ไร้คีย์ด้วย Arduino

โปรเจกต์นี้ทำอะไร?

ก็คือการสร้างเปียโนขึ้นมาเองตั้งแต่ต้นเลยน่ะ มันไม่มีปุ่มกดแบบเปียโนทั่วไป แต่ใช้เซ็นเซอร์สัมผัสแทน เพราะฉะนั้นไม่ต้องกด แค่แตะก็พอ พอแตะแล้วก็จะมีเสียงโน้ตดนตรีออกมา และสุดท้ายเราก็สามารถเอาโน้ตหลายๆ เสียงมาประกอบกันเป็นเมโลดี้ได้เลย

ทำไมถึงอยากทำมันขึ้นมา?

พูดตรงๆ เลยว่าพี่ไม่เคยมีประสบการณ์ด้านดนตรีหรือเครื่องดนตรีอะไรเลยสักนิด เลยคิดว่ามาทำเครื่องดนตรีใช้เองดีกว่า! ถ้าจะให้ธรรมดาก็แค่ต่อปุ่มกด (Button) กับ Arduino UNO แล้วส่งเสียงออกลำโพง แต่มันน่าเบื่อไป! เพื่อให้มันตื่นเต้นและเท่ห์ขึ้น เลยใช้เซ็นเซอร์สัมผัสแทนสวิตช์หรือปุ่มกดนั่นเอง

มันทำงานยังไง?

หัวใจหลักของโปรเจกต์นี้คือการใช้ไลบรารี <CapacitiveSensor.h> ซึ่งสามารถเปลี่ยนขา Digital I/O ของ Arduino ให้กลายเป็นเซ็นเซอร์ตรวจจับการสัมผัสได้

#include <CapacitiveSensor.h>

ทฤษฎี RC Time Constant: กลไกนี้อาศัยวงจร RC (ตัวต้านทาน-ตัวเก็บประจุ) แบบพื้นฐาน เซ็นเซอร์ประกอบด้วยตัวต้านทานค่าสูง (10k - 10M โอห์ม) ต่อเข้ากับแผ่นฟอยล์อะลูมิเนียมที่ทำหน้าที่เป็นอิเล็กโทรด

  1. Arduino ส่งสัญญาณพัลส์ (ผ่านขา Send Pin) ผ่านตัวต้านทานไปยังแผ่นฟอยล์
  2. สัญญาณจะถูกส่งกลับมาที่ขา Receive Pin
  3. ระบบจะคำนวณหา "ค่าคงที่เวลา (Time Constant)" หรือเวลาที่ใช้ในการประจุตัวเก็บประจุจนเต็ม

เมื่อร่างกายมนุษย์ (ซึ่งมีความจุไฟฟ้าอยู่ในตัว) เข้าใกล้หรือสัมผัสแผ่นฟอยล์ ความจุรวมของระบบจะเปลี่ยนไปตามสูตร $T = R \times C$ เมื่อ $C$ เพิ่มขึ้น เวลา $T$ ที่ใช้รับสัญญาณก็จะยาวนานขึ้น Arduino จะตรวจจับการเปลี่ยนแปลงนี้ในหน่วยไมโครวินาทีและตีความว่าเป็นการ "สัมผัส"

ฟอยล์อะลูมิเนียมทำหน้าที่เป็นเซ็นเซอร์สัมผัส

แผนภาพวงจร

การออกแบบวงจรเน้นเรียบง่ายแต่ประสิทธิภาพสูง โดยใช้ Arduino Uno เป็นไมโครคอนโทรลเลอร์หลักสำหรับประมวลผลสัญญาณจากจุดสัมผัสทั้งหมด 7 จุด

แผนภาพวงจรสำหรับเปียโน Arduino ที่ใช้คีย์แบบเซ็นเซอร์สัมผัสและลำโพง

ในวงจรนี้ เราใช้ตัวต้านทาน 10k โอห์ม ต่อคร่อมระหว่างขาส่ง (Send) และขารับ (Receive) สำหรับการตรวจจับสัมผัส นอกจากนั้น เราใช้ ทรานซิสเตอร์แบบ NPN ทำหน้าที่เป็นสวิตช์อิเล็กทรอนิกส์เพื่อขับกระแสไปยังลำโพง เนื่องจากขา I/O ของ Arduino มีกระแสจำกัด การใช้ทรานซิสเตอร์ช่วยให้ลำโพงทำงานได้เต็มประสิทธิภาพและผลิตเสียงที่ชัดเจนขึ้น

อุปกรณ์และการเชื่อมต่อ

Arduino Uno

Arduino Uno R3
บอร์ด Arduino Uno เนี่ยแหละคือหัวใจหลักและสมองของโปรเจกต์นี้เลยน้อง

Breadboard

Breadboard
เจ้านี่ไว้ใช้ทดลองวงจร เปลี่ยนสายได้ตามสบาย ไม่ต้องบัดกรีให้ยุ่งยาก

ตัวต้านทาน (Resistors)

ตัวต้านทาน 10 กิโลโอห์ม
ต่อไปคือตัวต้านทาน 10 กิโลโอห์ม จำนวน 7 ตัว เอาไว้ต่อตามแผนภาพวงจรเลย

ทรานซิสเตอร์ (Transistor)

ทรานซิสเตอร์แบบ NPN
นี่คือทรานซิสเตอร์แบบ N-P-N หน้าที่ของมันคือเป็นสวิตช์เปิดปิดลำโพงนั่นเอง

ลำโพง (Speaker)

และนี่คือลำโพง เอาไว้ส่งเสียงดนตรีให้เราฟัง

คีมจระเข้ (Alligator Clips)

คีมจระเข้
คีมจระเข้เอาไว้ต่อกับแถบฟอยล์โลหะ

แถบฟอยล์อลูมิเนียม (Aluminium Foil Strip)

แถบฟอยล์อลูมิเนียมติดบนกระดาษแข็ง
นี่แหละไฮไลท์ของโปรเจกต์! แถบฟอยล์อลูมิเนียมติดบนกระดาษแข็ง ทำหน้าที่เป็นเซ็นเซอร์สัมผัส (Touch Sensor) เลย

โน้ตดนตรี

ในส่วนของซอฟต์แวร์ เราได้กำหนดความถี่เป็นหน่วยเฮิรตซ์ (Hz) ให้ตรงกับโน้ตดนตรีพื้นฐาน เพื่อให้เครื่องดนตรีของเราสามารถเล่นเพลงจริงๆ ได้ ความถี่พวกนี้เก็บไว้ในรูปแบบอาร์เรย์ตามนี้เลย:

โน้ต ความถี่ (Hz)
สะ (โด) 240
เร 270
กะ (มี) 300
มะ (ฟา) 320
ปะ (ซอล) 360
ทะ (ลา) 400
นิ (ซี) 450
int freq[] = {240,270,300,320,360,400,450,480};

ปัญหาที่เจอ

  • เสียงรบกวน (White Noise): ตอนที่ยังไม่เล่นเพลง ลำโพงจะส่งเสียงซ่าๆ ออกมา นี่เกิดจากสัญญาณรบกวนทางไฟฟ้าและค่าอินพุตที่ลอยตัว (Floating) แก้ได้โดยเพิ่มการกรองสัญญาณดิจิทัล (Digital Filtering) ในโค้ด
  • เสียงดังไม่คงที่ (Inconsistent Volume): เสียงดนตรีดังค่อยไม่สม่ำเสมอ สาเหตุหลักมาจากการต่อสายที่หลวมๆ ปัญหานี้มักเกิดจากสายบนเบรดบอร์ดหรือคีมจระเข้ต่อไม่แน่น ทำให้ความต้านทานรวมของวงจรเปลี่ยนไป
  • ฝีมือการเล่น (Playing Skill): การจะเล่นเพลง Happy Birthday ให้ได้เนียนๆ ต้องฝึกซ้อมกันพอสมควรเลย โดยเฉพาะถ้าไม่มีพื้นฐานดนตรีมาก่อน การเล่นให้จังหวะแม่นยำบนระบบสัมผัสต้องใช้การฝึกฝน เพราะเวลาตอบสนองของเซ็นเซอร์อาจต่างจากปุ่มกดปกติหน่อยนึง ฝึกไปเถอะน้อง สู้ๆ!

การนำไปใช้งาน

วงจรนี้เอาไปทำเป็นเซ็นเซอร์สัมผัส (Touch Sensor) ได้เลยจ้า เทคโนโลยี Capacitive Touch จากโปรเจคนี้สามารถต่อยอดไปทำอะไรได้อีกเพียบ:

  • ระบบรักษาความปลอดภัย: เอาไปติดที่ลูกบิดหรือมือจับประตู เพื่อตรวจจับการสัมผัสของมือขโมย แล้วก็สั่งให้ปล่อยสัญญาณเตือนได้
  • เครื่องดนตรีแบบพกพา: หรือจะเอาไปทำเปียโนบางเฉียบแบบกระดาษก็ได้ หนาเท่ากระดาษแข็งเท่านั้นเอง ไม่มีปุ่มกด แต่ใช้เซ็นเซอร์สัมผัสแทน แถมพับเก็บได้ เอาไปเล่นที่ไหนก็สะดวก
  • คีย์บอร์ดคอมพ์แบบยืดหยุ่น: ทำเป็นคีย์บอร์ดคอมพิวเตอร์แบบงอได้ก็ยังได้

สรุปปิดโปรเจค

โปรเจคนี้เป็นจุดเริ่มต้นที่เจ๋งมากสำหรับการเรียนรู้การทำงานของเซ็นเซอร์และการประมวลผลสัญญาณดิจิทัล แม้ว่าผลลัพธ์ที่ได้อาจจะดูคล้ายเปียโนปนฮาร์โมเนียม แต่สิ่งสำคัญที่สุดคือความสนุกที่ได้สร้างเครื่องดนตรีขึ้นมาจากของใกล้ตัว และแรงบันดาลใจที่จะต่อยอดความรู้ด้าน embedded engineering ไปสร้างสรรค์สิ่งอื่นๆ ต่อไป

วิดีโอสาธิตเต็มๆ

เป็นโปรเจคที่สนุกมากเลยพวกเรา ได้เรียนรู้เยอะแยะตอนทำ ไม่รู้เหมือนกันว่ามันคือเปียโนหรือฮาร์โมเนium แต่ว่าเล่นดนตรีกับมันแล้วมันส์สุดๆ ไปเลย! สู้งานต่อไปนะน้อง!

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE"
author: "RoboticsEveryDay"
category: ""
components:
  - "1x Speaker: 0.25W, 8 ohms"
  - "1x 9V 1A Switching Wall Power Supply"
  - "1x Tape, Clear"
  - "1x Arduino UNO"
  - "1x Wire Cutter / Stripper, 5.25 \" Overall Length"
  - "1x General Purpose Transistor NPN"
  - "1x Test Cable Assembly, Alligator Terminated Test Lead Set"
  - "1x Breadboard (generic)"
  - "1x Jumper wires (generic)"
  - "1x Multitool, Screwdriver"
  - "1x Resistor 10k ohm"
  - "1x Scissor, Electrician"
  - "1x Conductive Tape, Copper Foil"
description: "เปียโนสายช่างที่ใช้ Arduino เป็นแกนหลักเลยจ้า! เปลี่ยนจากคีย์แบบเดิมๆ มาใช้เซนเซอร์แบบ capacitive touch แทน แค่แตะเบาๆ ก็เล่นได้แล้ว ไม่ต้องออกแรงกดให้เมื่อย เอาแรงไปโฟกัสที่สร้างเมโลดี้เทพๆ ผ่านลำโพงดีกว่า! งานนี้ตึงๆ วัยรุ่นต้องลอง"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX1/AoXBHlOecyhuh5agjjIBGDRA41JZlbgR4Lud1KRKgnPT7yRFwynVWQCaEE24Tzn5YmqEB5ysm63glo6p+nL9PxB2OheXCz8Y="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/diy-piano-make-piano-with-touch-based-keys-touch-sensor-248fbf_cover.jpg"
lang: "en"
likes: 0
passwordHash: "f4c77a9e8982493c25f304efafb56fb7edf8c4d3e9a15eeff8c805961f0af1ec"
price: 99
seoDescription: "Build a DIY Piano with Arduino and Touch Sensors. Play music with a simple touch. An easy and fun electronics project for beginners."
tags:
  - "audio"
  - "arduino"
  - "music"
  - "capacitive touch sensor"
  - "arduino capacitive touch senso"
  - "making touch sensor"
  - "makin piano"
  - "arduino speaker"
  - "arduino speaker"
title: "เปียโน DIY งานง่ายแต่หล่อ | สัมผัสแล้วดังเลย ไม่ต้องกด | Touch Sensor จัดเต็ม"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/eIfOWWhDYZo"
  - "https://www.youtube.com/embed/eIfOWWhDYZo"
views: 2626