- PVSM.RU - https://www.pvsm.ru -
В этой статье я расскажу о простой программке на progressing [1], которая «слушает» микрофон и определяет цифры, набираемые на телефоне в тоновом режиме.
Универ остался в прошлом примерно десять лет назад, но все это время меня не покидают ностальгические чувства и тоска по науке. Остаётся ощущение что чего-то я не доучил или что-то мы пробежали слишком быстро. Благо, что современные платформы позволяют чувствовать себя студентом всю жизнь.
К написанию этой статьи меня подтолкнула лабораторная работа №3 из курса “Основы цифровой обработки сигналов” ЛЭТИ на платформе openedu [2].
Если понажимать на кнопки телефона (или здесь [3]), то можно услышать, что каждый символ имеет свою частоту, а точнее даже две, и эта комбинация уникально кодирует символ.
Наша задача — выделить из зашумленного сигнала две наиболее сильные частоты и проверить, кодируют ли они какой-то символ в соответствии с таблицей:
1209 Hz | 1336 Hz | 1477 Hz | 1633 Hz | |
---|---|---|---|---|
697 Hz | 1 | 2 | 3 | A |
770 Hz | 4 | 5 | 6 | B |
852 Hz | 7 | 8 | 9 | C |
941 Hz | * | 0 | # | D |
Я использовал processing, т.к. в нем есть все примитивы для работы с микрофоном и преобразованием Фурье.
Алгоритм следующий:
где fn — частота дискретизации: 44100 Hz, N — кол-во отсчетов (степень двойки)
Собрать и запустить программу в виде standalone jar можно из исходников [4], для генерации звуков можно использовать телефон или эту страницу [3].
Следующим шагом хочу реализовать тоже самое на Arduino.
Автор: zjor
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/299029
Ссылки в тексте:
[1] progressing: https://processing.org/
[2] openedu: https://openedu.ru/course/eltech/DSP/
[3] здесь: http://onlinetonegenerator.com/dtmf.html
[4] исходников: https://github.com/zjor/dtmf-detector/tree/master/processing
[5] Источник: https://habr.com/post/429700/?utm_campaign=429700
Нажмите здесь для печати.