DTMF декодер
- Войдите на сайт для отправки комментариев
Сб, 02/11/2013 - 22:53
хочу сделать на ардуине декодер тонального сигнала(который используется для набора телефонного номера), на сколько я знаю сегнал генерируется сложением двух синусоид, разных частот, например для цифры 1 - 697 Гц и 1209 Гц. Вопрос такой как с помощью дуины распознать 2е синусоиды?
Первым делм хочу цепануть к дуине линейный звуковой выход с компа например или сотовго телефона, и тут же второй вопрос если цепану на прямую нечего не спалю?(вольтаж там вроди как скачет от 0.75 до 1.5 вольт). Потом хочу посмотреть какие значения будут на аналоговом входе ардуины, а дальше разбератся как распознать.
Всем заранее спасибо:)
По программной части: только самый ленивый не может набрать в гугле "DTMF Arduino" и не найти много ссылок, на готовые решения и библиотеки, которые декодируют DTMF. А если Вы уже нашли, то вопрос должен звучать по другому, "как использовать" такую то библиотеку и привести ссылку на нее. Ах да, Вы же новичок.. как же я забыл. Удачи
По программной части: только самый ленивый не может набрать в гугле "DTMF Arduino" и не найти много ссылок, на готовые решения и библиотеки, которые декодируют DTMF. А если Вы уже нашли, то вопрос должен звучать по другому, "как использовать" такую то библиотеку и привести ссылку на нее. Ах да, Вы же новичок.. как же я забыл. Удачи
да искал я, но все что я находил это схемы где ардуино с микросхемой декодером MT8870, просто такую микросхему пока нет возможности купить, и чтоб не терять время зря думал мож на рдуине замострясить.
http://forum.arduino.cc/index.php?topic=121540.0
http://forum.arduino.cc/index.php?topic=121540.0
спасибо:) попробую разобраться.
Библиотека скачал. ссылка ниже:
http://members.shaw.ca/el.supremo/DTMF.zip
Загрузил скетч, вроди работает, только пока некоторые цыфры пропускает, но это возможно что монтаж на соплях был сделан, попробую все припаять и еще протестирую. А вообще в дальнейшем планирую курить MT8870 уже купил парочку, и объвязку к ним.
Сделал нормальный монтаж, поигрался с громкостью устройства с которого сигнл идет, и все очень хорошо распознает:)
Но возникла проблема все расшифрофаные цифры идут на комп через комп порт, а я хочу сделать чтоббы при вводе определенной комбинации например "789" у меня срабатывало релле на определенном выводе ардуино.
Подскажите как это в коде реализовать?
в 73 строке кода писал if(thischar == 1), не помогло. так же в этом операторе if писал еще один IF с проверкой на то какое это число тоже не работает:(
Скорей всего сравнивать нужно с '1', а не с 1.
ок. попробую. я с двойными ковычками пробовал, а с одинарными нет.
kisoft,Спасибо
Попробовал
if
(thischar ==
'1')
. действительно работает:) в порт отправляет только единицы.Думаю переделать чтобы срабатывали на определенные ноги ардуины не составит особого труда.А что дают эти ковычки ' ' ? (просто еще понять охото:) )
Только как я понял из кода в порт по одному символу отсылается. и чтобы реальзовать срабатывание определнного кода (например *105#) нужно символы сначала в масив заносить? а вот как их заносить? создать массив из 5ти элементов? или массив не ограниченого размера и сделать проверки например символ *- означает начало кода а #-конец. И между ними любое количество символов (*105# или хоть *10765#). Для этого нужно использовать myPins массив???
Одиночные кавычки - это символ, двойные - строка. А это разные вещи.
Чтобы ловить последовательность есть разные варианты.
Один из них, ждать звездочку, потом записывать коды в массив до получения решетки, после чего
выполнять обработку полученных кодов. Только не забывайте, что длина массива ограничена и по ошибке
можно ввести много кодов, не нажимая решетку, что может привести к переполнению массива.
а нет такой возможности сделать динамический массив? который будет свой размерменять в зависимости от того сколько элементов в него запихали? или хотябы сделать массив для одного кода размером например 10 элементов? а код в него ввести из 5ти элементов? будет ли возможность корректно распознать такой код?
Можно использовать не массив, а переменную типа String, там длина ограничена размером памяти.
http://arduino.ru/Reference/StringObject
Попробую разобраться с типом String.
Но тут еще возникла странная проблемка. подключил релюшку к ардуине(12 нога) подал на нее 220 вольт включил нагрузку, и сделал включение на 5кнопку тонального набора а выключение на 9ую кнопку набора.Так вот звуки формировал на компе специальной программой, на этот же комп приходили сигналы с ардуино через ком порт(в ком монитор). Так вот проблемма собственно в том что при нажатии в на 5 или 9 время от времени мышка подвисала и отключалась и управление переходила на тачскри бука (буквально на секунду). при нажатии на другие клавиши (12346790) такого не наблюдалось. В связи с чем это может быть связвно? винда семерка.
Прежде чем продолжать, скажите, где Вы брали схему подключения (ссылку) и какое реле установлено (ссылку на ДШ)? Если не хотите сжечь дуину и комп сначала удостоверьтесь, что Вы правильно всё соединили и что реле подходит для подключения к Ардуино.
Вы уже убедились, что включение/выключение реле приводит к сбоям не только Ардуино, но и компа. Я бы не начинал с 220В, а попробовал на светодиодах и почитал про подключение реле к Ардуино, да еще с такой нагрузкой.
Поскольку я сам реле не подключал, надеюсь кто то подскажет более квалифицированно.
вот фото релюшки. модуль специально для дуины. Питание 5вольт. Три ноги vss gnd и in(это управляющий как я понял его я к 12 ноге дуины цепляю) а вообще релле странное при подаче на in 0 оно срабатывает а на 1 размыкает контакт. У меня больше подозрение что в коде может что токаряво написал я. А по сути все работает сигналы принимает релле работает( управлял лампой 30ватт). Еще отдельно управлял уже с помощью 2ух телефонов все тоже работает. И еще есть подозрение что провода плохо экранированы и поля от релле дают какие либо наводки.
Вот код уже с моими изменениями: Строки в которых я код добавил свой - 13,36,75,76
Ну это чуть проще.
По поводу контактов. Я не знаю какой у Вас шилд, поскольку видел в инете разные. У реле бывает три выходных клеммы, одна условно - центральная (это общий контакт в реле), а две остальные - одна в покое замкнута на центральную, а другая - разомкнута с центральной. Потому можете проверить тестером, так это в Вашем шилде или нет и перекоммутировать выходные провода в соответствии с тем нужно Вам нормальнозамкнутые контакты или нормальноразомкнутые.
Скетч в порядке, во всяком случае должен работать, там накосячить вроде бы негде.
Если есть помехи, то можно для начала отключить нагрузку в 220В и проверить, есть сбои или нет при переключении. Если есть, то искать без 220В нагрузки. Если нет, тогда, скорее всего, наводки при переключении большой нагрузки. Во всяком случае теоретически - это так, а как на практике - не подскажу.
Если есть помехи, то можно для начала отключить нагрузку в 220В и проверить, есть сбои или нет при переключении. Если есть, то искать без 220В нагрузки. Если нет, тогда, скорее всего, наводки при переключении большой нагрузки. Во всяком случае теоретически - это так, а как на практике - не подскажу.
так и сделаю:)
да выводов в релушке действительно три, как вы и сказали один центральный, а два других(один на размыкание другой на замыкание). но мне просо сама философия не нравится чт когда на упр ножке ноль релле под нагрузкой.
И особенно странно что лагает именно мышь. может на нее как раз наводки и идут( как раз косяк происходит именно в момент срабатывания релле). нужно еще будет попробовать рядом с компом погонять всю схему но не подрубая ее к компу.
Завтра все протестирую.и отпишусь.
Мышь USB? Если да, то может ли быт ьтакой вариант что что-то всё таки утекает на землю на ардуинку, через неё на землю юсбшную и далее на мышь или просто перебивает сигнал мыши? не слишком много но достаточно чтобы чуть прибить разницу потенциалов. Тачпад вроде как не сидит на юсб канале. попробуйте чисто по приколу ещё чё нить повесить кроме рдуинки и мышки
Вот здесь есть описание на английском https://sun-store.ru/1702--modul-rele-srd-05vdc-sl-c
во всяком случае про все контакты расписано что и как.
Мышь USB? Если да, то может ли быт ьтакой вариант что что-то всё таки утекает на землю на ардуинку, через неё на землю юсбшную и далее на мышь или просто перебивает сигнал мыши? не слишком много но достаточно чтобы чуть прибить разницу потенциалов. Тачпад вроде как не сидит на юсб канале. попробуйте чисто по приколу ещё чё нить повесить кроме рдуинки и мышки
Мне уже что то страшноват стало за USB порты, вдруг и вправду утекает. Как таковой гальваничекой развязки у релле нет. Гдето оптроны валялись у меня. надо попробовать через них сигнальный вывод подцепить. и питание на модуль релле отдельное подать. А на будущее надо свой модуль релле состряпать с нормальной развязкой.
Еще идейка возникла. А из за релле сильной просадки напряжения не может возникнуть? что аж во всех усб сбой? хотя глупость помоему:)
Попробую флешку еще воткнуть, будет ли она вылетать, и другую мышку еще.
http://modernlife.ucoz.ru/_ph/1/248335164.jpg
Вот фотка всего добра.
у меня почему то на скетч ругается, не нравится вот эта строка
Установил либу DTMF -скомпилировалась,залилась в уно,но при подачесигнала что с телефона,что с компа-никакой реакции
а с компа как подаешь?
При наборе номера единичка на StD (15-я нога) появляется?
Мне приходилось на телефоне ставить максимальную громкость, без этого не срабатывало.
а с компа как подаешь?
При наборе номера единичка на StD (15-я нога) появляется?
Контролировал через терминал.В него ничего не приходило.Громкость что на телефоне,что на компе на максималку ставил.Может надо через операционник загонять ?
А схема правильная? Кондер и три резистора на входе. У меня работало, но потом я перешёл на mt8870
Я на прямую подавал.Идея насчет mt8870 хорошая.Вот только не нашел для ардуино декодер с mt8870
Подавать напрямую - да Вы эстет (шучу). Найдите схему, она прилагается к библиотеке DTMF, там несложно. Без этого двуполярный сигнал на ардуину подавать, хмм.. Если я правильно помню, там кондер для развязки, а за ним подтяжка на полпитания, лучше схему посмотрите. Иначе работать и не будет.
С mt8870 Ардуина не нужна ;) Плюс работать будет надежно. Схема в ДШ есть, я так и делал.
По мт8870 -я в курсе как работает,собирал на ней конструкцию,но минус в том ,что 4 команды,а можно ведь команду шифровать несколькими цифрами и еще есть # и *
Видел в инете конструкции на pic -МК как дешифратор команд стоит после мт8870.Вот и подумал почему бы декодер на ардуино не сделать
MT8870 стоит 50 р. и работает стабильнее (процент разпознавания почти 100%).
А обработкой команд (разбором последовательности нескольких цифр) можно и Arduino Mini или Attiny85 загрузить.
Ну я тоже думал про тини2313 или тини 13-единственное у 8 ногих маловато портов для подключение ключей с релюшками
По мт8870 -я в курсе как работает,собирал на ней конструкцию,но минус в том ,что 4 команды,а можно ведь команду шифровать несколькими цифрами и еще есть # и *
Видел в инете конструкции на pic -МК как дешифратор команд стоит после мт8870.Вот и подумал почему бы декодер на ардуино не сделать
Ну не 4 команды всё таки, а 4 выхода плюс строб. Поставить дешифратор и будет 16 команд.
По мт8870 -я в курсе как работает,собирал на ней конструкцию,но минус в том ,что 4 команды,а можно ведь команду шифровать несколькими цифрами и еще есть # и *
Видел в инете конструкции на pic -МК как дешифратор команд стоит после мт8870.Вот и подумал почему бы декодер на ардуино не сделать
Ну не 4 команды всё таки, а 4 выхода плюс строб. Поставить дешифратор и будет 16 команд.
Согласен тогда вообще без мк обойтись можно
Указанная выше библиотека DTMF, работает на NANO или на UNO только если плата запитана по юсб, если питать через VIN, не реагирует на дтмф сигналы, хотя остальной програмный код нормально отрабатывается.
С чем это может быть связано?
Спасибо!
В каком посте указана библиотека DTMF, работающая на Nano запитанной от USB? Заинтересовало, может поэкспериментирую.
В каком посте указана библиотека DTMF, работающая на Nano запитанной от USB? Заинтересовало, может поэкспериментирую.
http://arduino.ru/forum/proekty/dtmf-dekoder#comment-46600
простите, а включение прибора использовав радиостанции на 433мгц с dtmf клавиатурой прогнав сигнал через них прокатит сие добро?
все таки лучше ардуино? хочется использовать всю клавиатуру, есть функция гнать сразу код из 5 цифр
Через 8870 должно сработать.
Простите пож-ста, я не такой крутой программист, поэтому буду ждать готового решения)
массового готового решения не будет, ибо это слишком специфическая ниша.