กลับไปหน้ารวมไฟล์
bluetooth-volume-control-for-an-old-stereo-with-buttons-cff390.md

ชื่อโปรเจกต์: การควบคุมระดับเสียงด้วย 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

ลดระดับเสียงผ่านปุ่ม Push Button ที่ติดตั้งใหม่

อุปกรณ์ที่ต้องใช้

  • 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"

แผนภาพจาก Service Manual แสดงการเชื่อมต่อของแผงวงจรต่างๆ

ขั้นตอนที่ 2: เปิดเครื่อง

ถอดสายไฟและสายสัญญาณทั้งหมด คลายสกรูที่ยึดฝาครอบด้านบนและด้านข้าง (ด้านละ 3 ตัว) และด้านหลังออก โปรดทราบว่าฝาครอบยึดติดกับ Front Panel ด้วยสลักโลหะ 3 ตัว ให้ค่อยๆ ยกขึ้นเพื่อปลดสลัก จากนั้นดึงปุ่มปรับระดับเสียงพลาสติกตรงๆ ออกมา

มุมมองภายในหลังจากเปิดฝาครอบ
ถอดปุ่มดั้งเดิมออกเพื่อเตรียมพื้นที่

ขั้นตอนที่ 3 - 4: การถอด Front Panel และชุด CD Changer

Front Panel เชื่อมต่อกับ Main PCB ผ่านสาย Ribbon 3 เส้น:

  1. สาย Ribbon สีขาว: ดึงออกจาก Socket ตรงๆ
  2. สาย Ribbon สีดำหนา: คุณต้อง "ยกแถบล็อค" ที่ด้านข้างทั้งสองของคอนเนคเตอร์บน Main Board ก่อนจึงจะสามารถดึงสายออกมาได้

นอกจากนี้ ชุด CD Changer ที่ติดตั้งอยู่ด้านบน จะต้องถูกถอดออกโดยการคลายสกรูจากด้านหลังและถอดสาย Ribbon อีกสองเส้นที่เชื่อมต่อกับ Front Panel

ชุด CD Changer ที่ต้องถอดออกก่อน
Front Panel แยกออกจากกันโดยสมบูรณ์

ขั้นตอนที่ 5 - 6: การเข้าถึงจุดติดตั้ง Encoder

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

Operation PCB ถูกเผยให้เห็นใต้แผงวงจรหลัก

ขั้นตอนที่ 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

ความเสียหายภายในของ Encoder ดั้งเดิมทำให้ระบบทำงานผิดปกติ

ขั้นตอนที่ 9 - 10: การออกแบบวงจรและ Control Logic

ปัญหาที่ท้าทายคือ ATtiny85 มี I/O pin ที่จำกัด (5 pin) แต่เราจำเป็นต้องใช้:

  1. สัญญาณ Output (A และ B) = 2 pin
  2. สัญญาณ Input (2 push button) = 2 pin
  3. การสื่อสาร 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

วงจรที่สมบูรณ์ประกอบด้วย Push Button, Status LED และ Bluetooth

ขั้นตอนที่ 11 - 12: การโปรแกรม ATtiny85 และเตรียมจุดเชื่อมต่อ

คุณต้องใช้ Arduino Uno ในโหมด "Arduino as ISP" เพื่อ Burn Code ลงบน ATtiny85 โดยใช้

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

title: "Bluetooth Volume Control For An Old Stereo With Buttons!"
description: "How about getting rid of that broken volume knob on your stereo and replacing it with some buttons, LEDs and Bluetooth?"
author: "kot_behemot53"
category: "Internet of Things, BT & Wireless"
tags:
  - "audio"
  - "repair"
  - "remote control"
views: 6532
likes: 4
price: 2450
difficulty: "Intermediate"
components:
  - "1x Breadboard (generic)"
  - "1x 2x2 Female Header Connector"
  - "1x Solder Flux, Soldering"
  - "1x Arduino UNO"
  - "1x Resistor 100k ohm"
  - "4x Male/Male Jumper Wires"
  - "1x DIP-8 socket"
  - "1x Resistor 100 ohm"
  - "1x Resistor 2.21k ohm"
  - "1x Capacitor 100 nF"
  - "1x HC-06 Bluetooth Module"
  - "1x Desoldering Pump, Metal"
  - "1x Soldering iron (generic)"
  - "2x LED (generic)"
  - "1x Universal PCB"
  - "2x Tactile Switch, Top Actuated"
  - "1x ATtiny85"
  - "1x Resistor 1k ohm"
  - "1x Solder Wire, 40/60"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "https://projects.arduinocontent.cc/03d19a45-7686-41a8-9de9-3f7fdc61e87c.ino"
  - "https://projects.arduinocontent.cc/03d19a45-7686-41a8-9de9-3f7fdc61e87c.ino"
documentationLinks: []
passwordHash: "740ba31f18fc9abf02d939c9dd1d5f8791e6c90f2f4ed5fabe07df87749775f5"
encryptedPayload: "U2FsdGVkX1/QAkU808MIW359uV34RmePrIm39aH19ZeeAzLl97hnGN4GEwhvJSf4yYDcYFBY97s7lhHU5fyNghzuhg1Duy2/gFQ5XUqcQz8="
seoDescription: "Upgrade your old stereo with Arduino-based Bluetooth Volume Control using buttons and LEDs. A fun DIY project to replace broken volume knobs."
videoLinks:
  - "https://www.youtube.com/embed/sUiJ-OtWtyw"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/bluetooth-volume-control-for-an-old-stereo-with-buttons-cff390_cover.jpg"
lang: "th"