ชื่อโปรเจกต์: การควบคุมระดับเสียงด้วย Bluetooth สำหรับสเตอริโอเก่าพร้อมปุ่มกด!
โปรเจกต์นี้เกี่ยวกับอะไร?
นี่คือคู่มือฉบับละเอียดเกี่ยวกับวิธีการปรับปรุงระบบสเตอริโอคลาสสิกที่ใช้ "Rotary Encoder" ในการควบคุมระดับเสียง ให้กลายเป็นระบบควบคุมด้วย Push Button พร้อมรองรับ Bluetooth โดยใช้แผงควบคุมที่ออกแบบเอง
บทนำ
โปรเจกต์นี้เริ่มต้นจากสเตอริโอ Panasonic SA-AK45 ซึ่งเป็นระบบสเตอริโอแบบแยกส่วนในยุคปลาย 90 ที่ขึ้นชื่อเรื่องคุณภาพเสียงที่ยอดเยี่ยม อย่างไรก็ตาม ปัญหาที่พบบ่อยคือปุ่มปรับระดับเสียงที่ชำรุด เนื่องจากระบบในยุคนั้นเริ่มเปลี่ยนผ่านจากการใช้ตัวต้านทานปรับค่าได้ (Potentiometers) ไปเป็น Digital Rotary Encoders
แก่นของงานนี้คือ: ถึงแม้ผมจะใช้ Panasonic เป็นต้นแบบ แต่หลักการทางวิศวกรรมนี้ สามารถนำไปประยุกต์ใช้กับระบบสเตอริโอใดๆ ที่ใช้ Rotary Encoder ในการควบคุมระดับเสียงได้ เพียงแค่ปรับแต่ง Logic ของซอฟต์แวร์เล็กน้อยเพื่อให้เข้ากับรูปแบบสัญญาณของรุ่นนั้นๆ
Encoder ดั้งเดิมในรุ่น Panasonic นี้เป็นอุปกรณ์กลไกที่ซับซ้อน หาอะไหล่เปลี่ยนได้ยากมาก (ส่วนประกอบภายในมีขนาดเล็กและบอบบาง) ดังนั้น ผมจึงตัดสินใจถอดกลไกเดิมออกและแทนที่ด้วย ATtiny85 microcontroller ซึ่งมีขนาดเล็ก ราคาไม่แพง และมีทรัพยากรเพียงพอที่จะจำลองสัญญาณ Quadrature ของ Encoder ได้
สำหรับการสื่อสารแบบไร้สาย เราจะใช้ HC-06 Bluetooth module ซึ่งทำหน้าที่เป็น Slave เพื่อรับคำสั่งจากสมาร์ทโฟน แล้วส่งต่อคำสั่งเหล่านั้นไปยัง ATtiny85

อุปกรณ์ที่ต้องใช้
- Panasonic SA-AK45 (หรือระบบสเตอริโอใดๆ ที่ใช้การควบคุมระดับเสียงแบบ Encoder)
- ATtiny85 Microcontroller (หน่วยประมวลผลหลัก)
- DIP-8 Socket (สำหรับวาง ATtiny85 เพื่อให้ถอดออกโปรแกรมได้ง่าย)
- HC-06 Bluetooth Module (หรือ HC-05 สามารถใช้แทนกันได้)
- 2 LEDs (ใช้เป็นไฟแสดงสถานะและเป็นส่วนหนึ่งของวงจร Voltage Divider)
- 2 Tactile Switches (สำหรับเพิ่ม/ลดระดับเสียง)
- Resistors: 100Ω, 1.2kΩ, 2.2kΩ, 100kΩ
- Capacitor: 100 nF (สำหรับ Decoupling แหล่งจ่ายไฟ)
- Universal PCB (ประมาณ 4x6 ซม.)
- AVR Programmer หรือ Arduino Uno (สำหรับ Burn Code ลงบน ATtiny85)
- เครื่องมือพื้นฐาน: หัวแร้ง, ตะกั่ว, ที่ดูดตะกั่ว
ขั้นตอนที่ 1: เตรียมการถอดประกอบสเตอริโอ
การเข้าถึง Encoder ต้องใช้ความระมัดระวัง เนื่องจากติดตั้งอยู่บนแผงวงจร Front Panel ซึ่งมักจะประกอบด้วยหลายชั้น เคล็ดลับจากวิศวกร: ถ่ายภาพในทุกขั้นตอนเมื่อถอด Ribbon Cables และค้นหา "Service Manual" ของรุ่นนั้นๆ เพื่อใช้อ้างอิง สำหรับกรณีของ SA-AK45 เรากำลังมุ่งหน้าไปยังบอร์ด "E - Operation PCB"
ขั้นตอนที่ 2: เปิดเครื่อง
ถอดสายไฟและสายสัญญาณทั้งหมด คลายสกรูที่ยึดฝาครอบด้านบนและด้านข้าง (ด้านละ 3 ตัว) และด้านหลังออก โปรดทราบว่าฝาครอบยึดติดกับ Front Panel ด้วยสลักโลหะ 3 ตัว ให้ค่อยๆ ยกขึ้นเพื่อปลดสลัก จากนั้นดึงปุ่มปรับระดับเสียงพลาสติกตรงๆ ออกมา


ขั้นตอนที่ 3 - 4: การถอด Front Panel และชุด CD Changer
Front Panel เชื่อมต่อกับ Main PCB ผ่านสาย Ribbon 3 เส้น:
- สาย Ribbon สีขาว: ดึงออกจาก Socket ตรงๆ
- สาย Ribbon สีดำหนา: คุณต้อง "ยกแถบล็อค" ที่ด้านข้างทั้งสองของคอนเนคเตอร์บน Main Board ก่อนจึงจะสามารถดึงสายออกมาได้
นอกจากนี้ ชุด CD Changer ที่ติดตั้งอยู่ด้านบน จะต้องถูกถอดออกโดยการคลายสกรูจากด้านหลังและถอดสาย Ribbon อีกสองเส้นที่เชื่อมต่อกับ Front Panel


ขั้นตอนที่ 5 - 6: การเข้าถึงจุดติดตั้ง Encoder
Encoder ซ่อนอยู่ใต้ Panel PCB (G) เราต้องคลายสกรูทั้งหมดและค่อยๆ ยกบอร์ดขึ้น เนื่องจากยังมีสาย Ribbon บางเส้นเชื่อมต่อกับ JOG PCB และ Deck PCB อยู่ เมื่อยกขึ้น เราจะจะเห็น Operation PCB (E) ซึ่งเป็นที่อยู่ของ Encoder เป้าหมายของเรา

ขั้นตอนที่ 7 - 8: การวิเคราะห์สัญญาณ Rotary Encoder
ในทางวิศวกรรม Incremental Encoder ชนิดนี้จะส่งสัญญาณที่เรียกว่า "Quadrature Signals" ผ่าน Pin หลัก 3 ตัว ได้แก่ A, B และ GND Logic การทำงานคือ:
- การหมุนตามเข็มนาฬิกา: สัญญาณจะเปลี่ยนตามลำดับ A LOW -> B LOW -> Both HIGH
- การหมุนทวนเข็มนาฬิกา: ลำดับสัญญาณจะกลับกันเป็น B LOW -> A LOW -> Both HIGH
จากการถอดประกอบและวิเคราะห์อุปกรณ์ดั้งเดิม (ซึ่งชำรุดเนื่องจากหน้าสัมผัสพลาสติกแตกหัก) ผมพบว่ามีความละเอียด 24 PPR (Pulses Per Revolution) และไม่มีสัญญาณซ้อนทับที่ซับซ้อนระหว่าง A และ B ทำให้ง่ายต่อการจำลองสัญญาณเหล่านี้โดยใช้คำสั่ง digitalWrite และ delay ใน ATtiny85

ขั้นตอนที่ 9 - 10: การออกแบบวงจรและ Control Logic
ปัญหาที่ท้าทายคือ ATtiny85 มี I/O pin ที่จำกัด (5 pin) แต่เราจำเป็นต้องใช้:
- สัญญาณ Output (A และ B) = 2 pin
- สัญญาณ Input (2 push button) = 2 pin
- การสื่อสาร Bluetooth (RX และ TX) = 2 pin รวมเป็น 6 pin! ซึ่งเกินจำนวนที่มีอยู่
เทคนิคการแก้ปัญหา (Embedded Optimization): เราจะใช้เพียง Analog Input (A1) pin เดียวในการอ่านค่าของ Push Button 2 ปุ่ม โดยใช้หลักการของ Voltage Divider
- ไม่มีการกดปุ่ม: แรงดันไฟฟ้าใกล้ 5V (ค่า Analog ~1023)
- กดปุ่มลดระดับเสียง: แรงดันไฟฟ้า 0V (ช็อตลง GND, ค่า Analog ~0)
- กดปุ่มเพิ่มระดับเสียง: แรงดันไฟฟ้าประมาณ 2.5V (ผ่าน Resistors ของ Voltage Divider, ค่า Analog ~512)
การอัปเกรดระบบ Bluetooth:
เราเชื่อมต่อ HC-06 module เข้ากับ Pin 3 และ 4 โดยใช้ Library SoftwareSerial เนื่องจาก HC-06 ทำงานที่ 3.3V ในขณะที่ ATtiny85 ทำงานที่ 5V เราจึงต้องใช้ Resistors ขนาด 1.2kΩ และ 2.2kΩ เป็นวงจร Voltage Divider เพื่อลดแรงดันไฟฟ้าที่ Pin Rx ของ HC-06 ป้องกันความเสียหายของ Module

ขั้นตอนที่ 11 - 12: การโปรแกรม ATtiny85 และเตรียมจุดเชื่อมต่อ
คุณต้องใช้ Arduino Uno ในโหมด "Arduino as ISP" เพื่อ Burn Code ลงบน ATtiny85 โดยใช้