กลับไปหน้ารวมไฟล์
dtmf-decoder-using-only-arduino-3280ab.md

Acoustic Hacking: Pure Code DTMF Decoder

"Tone Decoders" ส่วนใหญ่ใช้วิธีลัดโดยอาศัยชิปฮาร์ดแวร์เฉพาะ (เช่น MT8870) ในการประมวลผลทางคณิตศาสตร์ Pure Code DTMF Decoder บังคับให้ชิป ATmega328P 16MHz ของ Arduino สุ่มตัวอย่างอินพุตแบบอะนาล็อกอย่างเข้มข้น และรันการวิเคราะห์สเปกตรัมทางคณิตศาสตร์แบบเรียลไทม์ โดยทำงาน Goertzel Algorithm ได้ในตัว

ad8232_ecg_sensor_macro_1772706791753.png

Bypassing the analogRead() Speed Limit

ในการตรวจจับความถี่เสียงได้สูงถึง 1500Hz นั้น Arduino จะต้องทำการสุ่มตัวอย่างหลายร้อยครั้งต่อมิลลิวินาที ฟังก์ชัน analogRead() มาตรฐานใช้เวลาทำงานนานกว่า 100 ไมโครวินาที ซึ่งช้าเกินไปมากสำหรับการประมวลผลเสียง!

  1. การจัดการ ADC โดยตรง: คุณต้องใช้ C++ ขั้นสูงเพื่อเขียน Prescaler bits ระดับ Assembly ภายในชิป ATmega ใหม่
  2. ด้วยการตั้งค่ารีจิสเตอร์ ADCSRA คุณจะโอเวอร์คล็อก Analog-to-Digital Converter อย่างหนัก ทำให้ความเร็วในการสุ่มตัวอย่างเพิ่มขึ้นจาก 9kHz เป็นเกือบ 38kHz!

The Matrix Detection (Goertzel)

โทน DTMF เป็นการผสมผสานของความถี่สองความถี่ที่แน่นอน (เช่น การกด "3" จะส่งออก 697Hz + 1477Hz)

  • Arduino จะเติมอาร์เรย์ด้วยตัวอย่างเสียงความเร็วสูง
  • มันจะรันสมการ Goertzel ทางคณิตศาสตร์เจ็ดสมการพร้อมกันอย่างรวดเร็ว เพื่อค้นหาความถี่ไฮแบนด์สี่ความถี่และความถี่โลว์แบนด์สามความถี่ที่เฉพาะเจาะจง
  • หากขนาดของ 697Hz และ 1477Hz ผ่านเกณฑ์ที่กำหนดไว้ในโค้ดพร้อมกัน มันจะพิมพ์ Key Pressed: 3! ไปยัง Serial Monitor

The Absolute Minimum Hardware

  • Arduino Uno (หรือ Mega สำหรับบัฟเฟอร์ RAM เพิ่มเติม)
  • Electret/MEMS Microphone Breakout (MAX4466): แนะนำเป็นอย่างยิ่งให้มีการขยายสัญญาณในตัว เนื่องจากไมโครโฟนเปล่าจะผลิตสัญญาณที่เล็กเกินไปที่ Arduino จะอ่านได้อย่างแม่นยำ
  • (คำเตือน: โปรเจกต์นี้ต้องมีการเพิ่มประสิทธิภาพอย่างหนัก คำสั่ง Serial.print ที่ผิดพลาดในลูปใดๆ จะทำลายจังหวะเวลาที่แม่นยำซึ่งจำเป็นสำหรับการสุ่มตัวอย่างเสียงในทันที)

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

title: "DTMF Decoder Using Only Arduino"
description: "Phone phreaking! Write the intense mathematical algorithm required to listen to, dissect, and identify standard telephone keypad tones using just an analog microphone."
category: "Audio & Sound"
difficulty: "Advanced"