تعريف الأرقام بالأذن

في هذه المقالة سأتحدث عن برنامج معالجة بسيط "يستمع" إلى الميكروفون ويحدد الأرقام التي يتم الاتصال بها على الهاتف في وضع النغمة.

مقدمة


بقيت الجامعة في الماضي قبل حوالي عشر سنوات ، لكن طوال هذا الوقت لم أترك مشاعر الحنين والشوق إلى العلم. هناك شعور بأنني لم أنهي شيئًا ، أو أننا ركضنا شيئًا سريعًا جدًا. لحسن الحظ ، تجعلك المنصات الحديثة تشعر وكأنك طالب طوال حياتك.

المختبر رقم 3 من الدورة التدريبية "أساسيات معالجة الإشارات الرقمية" LETI على منصة openu دفعتني إلى كتابة هذه المقالة.

مبدأ العمل


إذا قمت بالضغط على أزرار الهاتف (أو هنا ) ، يمكنك سماع أن كل حرف له تردده الخاص ، أو بالأحرى اثنين ، وهذه التركيبة تشفر حرفًا بشكل فريد.
مهمتنا هي استخراج أقوى ترددين من الإشارة الصاخبة والتحقق مما إذا كانا يشفران حرفًا ما وفقًا للجدول:
1209 هرتز1336 هرتز1477 هرتز1633 هرتز
697 هرتز123أ
770 هرتز456ب
852 هرتز789ج
941 هرتز*0#د

استخدمت المعالجة ، مثل لديها كل البدائل للعمل مع ميكروفون وتحويل فورييه.

الخوارزمية هي كما يلي:

  • تخيل الإشارة كطيف ، سيعيد fft.analyze مصفوفة عائمة [] إلينا
  • أوجد الرقم المرجعي n 1 المقابل للسعة القصوى
  • Zerul له وكل شيء في حي معين (يتم اختياره بحكمة) ، حتى لا يلتقط ترددان قريبان
  • نجد الرقم المرجعي الثاني n 2 المطابق لأقصى سعة متبقية
  • بالأرقام n 1 و n 2 نجد الترددات المقابلة وفقًا للصيغة:

    fn=fdn/N

    حيث f n - تردد الاعتيان: 44100 هرتز ، N - عدد العينات (قدرة عينين)
  • نحدد أي تردد من الجدول يتوافق مع تلك التي تم العثور عليها (مع بعض التسامح ± 35 هرتز) ونجد الرمز المطلوب

ماذا حدث


يمكنك بناء وتشغيل البرنامج في شكل برطمان مستقل من المصدر ، يمكنك استخدام الهاتف أو هذه الصفحة لتوليد الأصوات.



الخطوة التالية التي أريد تنفيذها على Arduino.

Source: https://habr.com/ru/post/ar429700/


All Articles