Подключить Arduino к телефонной линии?

Я хочу подключить Arduino Uno к телефонной линии, чтобы ответить на звонок, записать последовательность Тоны DTMF, генерировать в ответ тон DTMF и повесить трубку.

В телефонной линии используется стандартный разъем RJ11. Когда к линии подключается телефон с тоновым набором, он получает один из двух сигналов:

  • стандартный звонок, сигнализирующий о входящем вызове
  • более короткая последовательность из двух звонков, сигнализирующая о вызове с местного интеркома.

Я хочу, чтобы мой Arduino прослушивал последовательность «два звонка» и отвечал только на эти вызовы.

Как мне подключить Arduino к телефонной линии? Есть ли щит, предназначенный для этой цели? Я знаю, что могу использовать функцию tone() для генерации тонов DTMF, но Я предполагаю, что мне нужно будет выполнить некоторую форму дискретного преобразования Фурье, чтобы "читать" тоны DMTF из другой конец линии.

Будем признательны за любые предложения.

, 👍5

Обсуждение

Будьте осторожны при прямом подключении к телефонной линии. На линии может быть сильный всплеск (например, удары молнии). Если вы когда-нибудь открывали, например, модем ADSL, вы увидите, что на нем довольно много компонентов защиты (искровые разрядники, движущиеся элементы, магниты)., @Gerben

В Великобритании незаконно подключать к телефонной линии что-либо, что не было сертифицировано. Вы также можете проверить местные правила., @Majenko


2 ответа


1

Вам потребуется аппаратная поддержка для обнаружения и генерации DTMF; Я сомневаюсь, что многие Arduino (вы не сказали, какие, но, может быть, ARM?) обладают достаточной мощностью для запуска БПФ (и предоставления результатов, пока кому-то все равно....) * tone() может не быть достаточно точным по частоте для обнаружения DTMF вызывающим устройством; вам придется проверить это. Быстрый поиск позволяет найти ряд статей о создании или покупке тональных детекторов и генераторов.

Обнаружение звонка немного проще, но вы, вероятно, все же захотите обнаружить звонок и преобразовать его в уровень аппаратно, а не отслеживать мгновенное линейное напряжение и пытаться программно различать шум, звон, шумный звонок. и разной степени тишины.

* Но, возможно, этот проект Hackaday поможет вам некоторые альтернативные и вычислительно осуществимые идеи.

,

Хм... Наверное, я недостаточно подумал об объеме обработки, необходимой для ДПФ/БПФ. Хотя (как следует из вашей ссылки) я делаю выборку только для очень небольшого набора частот., @Nathan Osman


7

Вы можете подключить Arduino к телефонной линии с помощью чипа MT8870D. Эта микросхема может декодировать тоны DTMF. Ниже приведена справочная схема из таблицы данных.

Ссылка на дизайн

Ниже приведен еще один популярный дизайн в Интернете:

популярный дизайн

На сайте futurelec доступны готовые модули:

module

Микросхему Holtek HT9200 можно использовать для кодирования DTMF, который можно взаимодействовать с Arduino. Ниже приведена эталонная схема из таблицы данных.

кодер

,