มันมีคำถามอยู่ในหัวพี่นะ ถ้า Morse code ใช้ตาได้... พี่ก็ทำเพลงด้วยตาได้สิวะ! Morse code มันก็เป็นแพทเทิร์นแบบนึง เพลงก็เป็นแพทเทิร์นของเสียงหรือบิตเหมือนกัน (พี่พอมีความรู้นิดหน่อยในเรื่องนี้) พี่เลยคิดว่า ถ้าเรากระพริบตาเป็นแพทเทิร์นได้ เราก็น่าจะสร้างเสียงเพลงได้แน่ๆ อย่างน้อยก็สังเคราะห์แพทเทิร์นนั้นออกมาเป็นเสียงได้ นั่นแหละคือสิ่งที่พี่ลองทำในโปรเจคนี้ พี่ลองทำเพลงโดยใช้ตานั่นเอง
มาดูกันว่าเราทำยังไงได้บ้าง
มุมมองของโปรเจค
TuneGlass: เราทำ "เพลง" ด้วย "ตา" ได้จริงเหรอ??? นี่คือการสำรวจเทคโนโลยีช่วยเหลือและการโต้ตอบระหว่างเสียงกับดิจิทัลแบบเจ๋งๆ โดยเน้นไปที่ส่วนประกอบหลักๆ—นั่นคือ เซ็นเซอร์ตาแบบอินฟราเรด (IR eye-sensors) และ ซินธิไซเซอร์ Arduino—น้องจะได้เรียนรู้วิธีการสื่อสารและสร้างแพทเทิร์นดนตรีของตัวเองโดยใช้ลอจิกซอฟต์แวร์พิเศษและการตั้งค่าแวร์เอเบิลที่ทนทาน
ขั้นตอนที่ 1: อุปกรณ์ที่ต้องใช้
- Arduino Pro Mini – พี่ใช้รุ่น ATmega328P 5v 16 mHz นะ
- เซ็นเซอร์อินฟราเรด (IR sensor) (แบบไม่มีบอร์ด ADC)
- ลำโพง (Speaker) – พี่เอามาจากมือถือเก่า
- โมดูล Powerbank – บูสเตอร์แปลงไฟ
- แบตเตอรี่ลิเธียมโพลิเมอร์เล็ก (Small lipo battery) – พี่ใช้แบต 150 mAh
โครงสร้างพื้นฐานฮาร์ดแวร์แบบสวมใส่ได้
- Arduino Pro Mini: คือ "สมอง" ของโปรเจค จัดการการอ่านค่าจากเซ็นเซอร์หลายทิศทางและประสานงานการส่งออกเสียง
- เซ็นเซอร์สะท้อนอินฟราเรด (IR Reflective Sensors): ให้การตรวจจับ "การกระพริบตา" ที่แม่นยำสูงและน่าเชื่อถือสำหรับภารกิจทำเพลงของน้อง
- แบตเตอรี่ลิเธียมโพลิเมอร์ (Li-Po Battery): สำคัญมากสำหรับการให้พลังงานสูงและเป็นฐานแบบพกพาสำหรับแว่นตาสวมใส่
- โมดูล Powerbank: สำคัญสำหรับการจ่ายไฟ 5V ที่ชัดเจนและประหยัดพลังงานให้กับ Pro Mini
- ลำโพงขนาดเล็ก (Mini Speaker): ให้อินเทอร์เฟซเสียงที่ชัดเจนและเป็นมืออาชีพสำหรับสิ่งประดิษฐ์ของน้อง
- สาย Micro-USB: ใช้สำหรับโปรแกรม Arduino และเป็นอินเทอร์เฟซหลักสำหรับควบคุมระบบ
ขั้นตอนที่ 2: หลักการและการลงมือทำจริง
พี่ใช้เซ็นเซอร์ IR สองตัวเพื่อดูว่าตาปิดหรือเปิด เซ็นเซอร์ IR แต่ละตัวจะส่งค่าออกมา (0 ถึง 1023) ทีนี้ถ้ามันเห็นว่าตาปิด ค่าที่ได้จะลดลง มันก็เลยบอกได้ว่าตาข้างนั้นปิดอยู่ (ตรวจจับการกระพริบตาได้) น้องจะซื้อเซ็นเซอร์ตรวจจับการกระพริบตา (Eye Blink sensor) มาใช้ก็ได้ แต่วิธีการทำงานมันเหมือนกันหมด แถมวิธีของพี่ถูกกว่าและก็ใช้ได้ดีเลย
โปรเจคนี้เผยให้เห็นเลเยอร์ที่ซ่อนอยู่ของการโต้ตอบง่ายๆ ระหว่างตากับเสียง:
- เลเยอร์ตรวจจับ (Identification layer): เซ็นเซอร์ IR สองตัว ทำหน้าที่เป็นดวงตาออปติคัลความละเอียดสูง วัดการขยิบหรือกระพริบตาของน้องผ่านการสะท้อนของอินฟราเรด
- เลเยอร์แปลงสัญญาณ (Conversion layer): Arduino ใช้พินอนาล็อก (A0, A1) ในการรับค่าจากเซ็นเซอร์ความเร็วสูงและประสานงานงานสำคัญเกี่ยวกับดนตรี
- เลเยอร์อินเทอร์เฟซเสียง (Auditory Interface layer): ลำโพงขนาดเล็ก ให้ฟีดแบ็กเสียงความละเอียดสูงสำหรับการตรวจสอบแพทเทิร์นการขยิบตา (เช่น ซ้าย/ขวา/ทั้งสองข้าง)
- เลเยอร์ลอจิกประมวลผล (Processing Logic layer): โค้ด Arduino ใช้กลยุทธ์ "ค่าขีดจำกัดทางสถิติ" (หรือการแมปความถี่): มันตีความค่าอนาล็อกและจับคู่ความถี่ของฟังก์ชัน
tone()เพื่อสร้าง "เครื่องดนตรีจากตา" ที่ปลอดภัยและใช้งานง่าย - ลูปการสื่อสาร (Communication Dialogue Loop): จำนวนนับและความถี่จะถูกส่งไปยัง Serial Monitor เป็นจังหวะในช่วงปรับเทียบเริ่มต้น เพื่อประสานสถานะแบบเรียลไทม์
หลังจากตรวจจับการขยิบหรือกระพริบตาได้แล้ว มันจะส่งออกเสียงด้วยความถี่ที่ต่างกันสำหรับตาแต่ละข้าง และถ้าทั้งสองตาปิด ก็จะเป็นอีกความถี่นึง หวังว่าน้องจะเข้าใจจุดนี้เนอะ
เอาล่ะ มาลงมือทำกันเลยดีกว่า มาจัดการให้เรียบ! สู้งานนะน้อง!
ขั้นตอนที่ 3: ประกอบวงจร
วงจรง่ายๆ ไม่ซับซ้อน อยากเห็นพี่ประกอบเป็นวิดีโอ ก็เลื่อนขึ้นไปดูคลิปด้านบนได้เลยจ้า แนะนำให้ใช้สายริบบอนจะได้ไม่พันกันยุ่งเหยิง จากนั้นก็บัดกรีชิ้นส่วนต่างๆ ตามแผนภาพวงจรได้เลย
หมายเหตุสำคัญ: ใช้สายไฟคุณภาพดีๆ หน่อยสำหรับต่อกับแบตเตอรี่นะน้อง! เพราะอย่างที่รู้กัน ยิ่งสายยาว ความต้านทานก็ยิ่งเพิ่ม กระแสก็ไหลไม่พอ พี่เลยใช้สายเซอร์โวที่ทนกระแสได้ดีมาลอง งานถึงจะรันได้สวยๆ อย่าลืมจ่ายไฟให้แต่ละส่วนก่อนจะเอามาต่อกันนะ ไม่งั้นอาจช็อตได้!
ขั้นตอนที่ 4: อัพโหลดโปรแกรม
อย่างที่พี่บอกไว้ตอนต้นว่าเราตั้งความถี่เสียงต่างกันให้ตาทั้งสองข้าง ฟังก์ชันที่ใช้คือ tone() นี่แหละ
tone(speaker_name, frequency_in_Hz, delay);
วิธีโปรแกรม Arduino Pro Mini:
- ถอดไอซี ATmega 328P ออกจาก Arduino Uno
- ต่อ Tx ของ Uno เข้ากับ Tx ของ Mini
- ต่อ Rx ของ Uno เข้ากับ Rx ของ Mini
- ต่อ 5V ของ Uno เข้ากับ VCC ของ Mini
- ต่อ GND ของ Uno เข้ากับ GND ของ Mini
- ต่อ RST ของ Uno เข้ากับ RST ของ Mini
จากนั้นเปิด Arduino IDE เลือกบอร์ดเป็น Arduino Pro Mini และเลือกพอร์ตให้ถูก แล้วอัพโหลดโค้ดด้านล่างนี้ไปได้เลย
/*
* Making music using Eye
* by: Ashraf Minhaj
* mail: ashraf_minhaj@yahoo.com
* license: General Public License
*/
//connect sensors on
int sen1 = A0; //A0
int sen2 = A1; //A1
//Connect speakers (Not acutally buzzers)
int buz1 = 8; //on digital pin 8
int buz2 = 9; //digital 9
void setup() // put your setup code here, to run once:
{
pinMode(buz1, OUTPUT); //set pins as output
pinMode(buz2, OUTPUT);
Serial.begin(9600); //initialize serial com to see values
}
void loop()
{
// put your main code here, to run repeatedly:
int val1 = analogRead(sen1);
int val2 = analogRead(sen2);
//print what's been read by the sensors
Serial.println(val1);
if(val1 < 750 && val2 < 750)
{
tone(buz1, 1000, 10);
}
else if(val1 < 750)
{
tone(buz1, 2000, 100);
}
else if(val2 < 750)
{
tone(buz1, 1500, 100);
}
//Serial.println(val2);
//make sound
}
ขั้นตอนการทำงานแบบทีละสเต็ป
กระบวนการทำแว่นตาดนตรีนี้ ออกแบบมาให้มีประสิทธิภาพสุดๆ:
- ตั้งค่าฮาร์ดแวร์: วางเซ็นเซอร์อินฟราเรด (IR Sensor) ในกรอบแว่นตาให้ถูกตำแหน่ง และต่อลำโพง (Speaker) ให้เรียบร้อย
- ตั้งค่าสัญญาณเอาต์พุต: ในสเก็ตช์ Arduino ให้กำหนดพินแบบอนาล็อกและตั้งค่าความถี่เสียง (Tone Frequency) สำหรับแต่ละตา
- ลูปตรวจสอบ: แว่นตาจะคอยตรวจจับการกระพริบตาของคุณแบบเรียลไทม์ และอัพเดทสถานะเสียงทันที
- แสดงผล: เพลิดเพลินไปกับจังหวะดนตรีที่เปลี่ยนไปตามการกระพริบตาของคุณ ซึ่งควบคุมผ่านเซ็นเซอร์บนแว่นได้เลย
ขั้นตอนที่ 5: ประกอบทุกอย่างเข้าด้วยกัน
ตอนนี้ก็เอาเซ็นเซอร์มาวางหันเข้าหาตา (อาจต้องปรับตำแหน่งนิดหน่อย) ส่วน Arduino กับลำโพงติดไว้ด้านหนึ่งของแว่น อีกด้านก็ติดแบตเตอรี่กับบูสเตอร์ 5V ใช้กาวร้อนยึดให้แน่นหนา อย่าให้ขยับ!
[!TIP] ใช้ กาวร้อน ยึดเซ็นเซอร์อินฟราเรดให้มั่นคงนะ! ถ้ามันขยับแม้แต่นิดเดียว การตรวจจับการกระพริบตาก็อาจพังได้เลย
ขั้นตอนที่ 6: จัดไฟเลี้ยง แล้วก็สนุกกันได้เลย!
ทีนี้ก็จัดไฟเลี้ยงให้มัน แล้วดูผลงานของเราว่ามันทำงานยังไง เปิด Serial Monitor ดูค่าต่างๆ แล้วปรับแต่งตามใจชอบได้เลย จบ! ตอนนี้เราก็มีแว่นตาที่สร้างเสียงดนตรีได้แล้ววว
เจ้านี่เอาไปใช้นับจำนวนการกระพริบตาได้ด้วยนะ จะเอาไปนับว่ากระพริบตากี่ที หรือขยิบตากี่ทีก็ได้ งานนี้คนพิการก็ใช้ประโยชน์ได้เลย มีไอเดียโปรเจคเจ๋งๆ แล้วเหรอ? ;)
ไอเดียต่อยอดในอนาคต
- ติดจอ OLED เป็นแดชบอร์ดประจำตัว: เอา OLED ขนาดจิ๋วมาติดบนกรอบแว่น เพื่อแสดงค่าพวก "ความถี่เสียงปัจจุบัน (Hz)" หรือ "แบตเตอรี่ (%)"
- เพิ่มเซ็นเซอร์วัดความเร่ง (Accelerometer) สำหรับควบคุมด้วยท่าทาง: ต่อ Accelerometer เข้าไปเพื่อให้ควบคุมเสียงดนตรีด้วย "ท่าทางศีรษะ" ได้แม่นยำขึ้น
- ทำแดชบอร์ดบนมือถือผ่าน WiFi/BT: สร้างเว็บแดชบอร์ดเฉพาะทางบนสมาร์ทโฟน เพื่อติดตามและบันทึกประวัติการใช้งานได้อย่างละเอียด
- เพิ่มฟีเจอร์ส่งสัญญาณ MIDI ออกไป: เพิ่มโค้ดส่วน "MIDI Output" เพื่อให้แว่นตาสามารถควบคุมซินธิไซเซอร์ได้โดยอัตโนมัติ เหมาะสำหรับงานดนตรีระดับโปร
TuneGlass นี่คือโปรเจคสุดปังสำหรับสายวิทย์-เทคที่กำลังมองหาเครื่องมือช่วยเหลือผู้พิการแบบอินเทอร์แอคทีฟและน่าสนใจ!