|
Программный UART на микрофонном входе |
|
|
|
Jan 20 2012, 16:51
|
Частый гость
 
Группа: Участник
Сообщений: 168
Регистрация: 25-04-08
Пользователь №: 37 091

|
Есть идея реализовать прием данных через микрофонный вход телефона. Гораздо проще по ЮСБ, но мы не ищем легких путей =)) Интересует вот что: Частота дискретизации входного сигнала = 44100гц. Скорость передачи данных с микроконтроллера = 9600 бод/сек  На осциллограмме в VMLAB'е видно, что 1 пакет данных (10 бод) передается за 1мс. Длительность 1 бода = 100мкс. В документации на atmega16 указано, что внутренний usart делает замеры (отсчеты) 16 раз за 1 пакет. Почему - не помню, но мне голова подсказывает, что надо делать 20 замеров, 2 раза за один бод, учитывая старт-бит и стоп-бит. С другом собираемся поступить так: Оцифрованный сигнал с микрофона будет записываться в буфер определенной длинны. Далее, будет алгоритм выборки из этого буфера. Но, для более высокой точности необходимо "щупать" сигнал с частотой 20кГц. Не каждый УНЧ может похвастаться работой на такой частоте, а тем более микрофонный усилитель. То есть вряд ли получится каждый бод щупать по два раза. Отсюда вопрос: а что если "щупать" всего один раз? То есть изначально устройства будут как-то синхронизироваться между собой, на приемнике будет высчитываться длительность импульса, длительность всего пакета, и исходя из расчетов будет корректироваться шаг выборки из буфера? Какова вероятность приема с ошибкой? Какие есть алгоритмы исправления? И т.д.
Сообщение отредактировал Lost_Viking - Jan 20 2012, 16:56
|
|
|
|
|
 |
Ответов
|
Jan 20 2012, 20:48
|
Частый гость
 
Группа: Участник
Сообщений: 168
Регистрация: 25-04-08
Пользователь №: 37 091

|
Идея началась с этой статьи: http://www.eecs.umich.edu/~prabal/pubs/pap...kuo10hijack.pdfНа одной из диаграмм видно, что импульсы модулированы импульсами. Этот модулированный сигнал подается на вход телефона, где потом обрабатывается. Почему здесь применили модуляцию? Я думаю, что из-за того, что с выхода УНЧ сложно получить хорошие импульсы, и это тоже показано на одной из диаграмм. В результате двунаправленной передачи данных будет трудно добиться. Как я понял, импульсы все-таки на вход УНЧ подать можно. Да, там стоит разделительный конденсатор. Но, однако, как-то импульсы получают в программах!? Цитата(Taradov Alexander @ Jan 21 2012, 00:40)  А теперь представьте передачу не меандра, а последовательности символов 0x00 или 0xff, А об этом я не подумал. =))) Спасибо! Ха... Тогда придется разбираться с алгоритмами демодуляции FSK сигнала... Или , действительно, манчестером пользоваться. Цитата(Taradov Alexander @ Jan 21 2012, 00:40)  А потом в UART-е нормальный уровень - высокий, так что нужен как минимум инвертер, а то межсимвольный интервал точно убьется. Нормальный уровень - это постоянная составляющая что ли? Расскажите подробней, пожалуйста. Цитата(Taradov Alexander @ Jan 21 2012, 00:40)  Ну и засинхонизировать их тоже не так легко и особенно если поток не непрерывный. 16 точек на бит для того и берутся, что даже аппаратно синхронизация теряется очень быстро. Передача будет непрерывной. В том-то и проблема. Может кто-нибудь посоветовать алгоритм демодуляции FSK сигнала? Хотя бы с чего начать штудировать книгу "Цифровая обработка сигналов". Не зря же я ее два года назад купил =))
|
|
|
|
|
Jan 20 2012, 20:56
|

Профессионал
    
Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202

|
QUOTE (Lost_Viking @ Jan 20 2012, 23:48)  Нормальный уровень - это постоянная составляющая что ли? Расскажите подробней, пожалуйста. Да, уровень сигнала когда ничего не передается. Стартовый бит определяется переходом в низкий уровень. QUOTE (Lost_Viking @ Jan 20 2012, 23:48)  Передача будет непрерывной. В том-то и проблема. Тогда точно про модемы читать, в непрерывном потоке вы с ходу даже стартовый бит так не найдете. Еще учитывайте, что это уже не стандартный UART, а свое изобретение, следовательно нагрузка на микроконтроллер увеличивается из-за необходимости програмно модулирвать сигнал. Ну и скорости большой тоже не поучится, хорошо если 1 кБод выйдет в итоге.
|
|
|
|
|
Jan 20 2012, 21:24
|
Частый гость
 
Группа: Участник
Сообщений: 168
Регистрация: 25-04-08
Пользователь №: 37 091

|
Цитата(Taradov Alexander @ Jan 21 2012, 00:56)  Да, уровень сигнала когда ничего не передается. Стартовый бит определяется переходом в низкий уровень. Понятно Цитата(Taradov Alexander @ Jan 21 2012, 00:56)  Тогда точно про модемы читать, в непрерывном потоке вы с ходу даже стартовый бит так не найдете. Есть алгоритмы... но они жуткие все =) Цитата(Taradov Alexander @ Jan 21 2012, 00:56)  Еще учитывайте, что это уже не стандартный UART, а свое изобретение, следовательно нагрузка на микроконтроллер увеличивается из-за необходимости програмно модулирвать сигнал. Ну и скорости большой тоже не поучится, хорошо если 1 кБод выйдет в итоге. Где-то читал, что таким методом на вход УНЧ можно передавать до 2400 бод . Была где-то в интернете таблица с частотами для единиц и нулей, и с максимальной скоростью при этих частотах. Мне нужно выжать 4000бод . Вроде бы это реально. Вот, например, сайт хорошего проекта: http://www.eecs.umich.edu/~prabal/projects/hijack/Цитата: Цитата Data. The HiJack communications layer offers two data transfer schemes. The first allows 300 baud data transfer using Bell 202 FSK signaling. The second offers 8.82 kbaud using a Manchester-encoded, direct-digital communication using hardware accelerators on the HiJack microcontroller and a software-defined, digital radio modulator/demodulator on the phone. The first scheme is described in the ISLPED'10 Design Contest entry (below). The second scheme is described in the DEV'10 paper below. При помощи FSK они получили 300бод. Затем получили 8.82кбод при помощи кодирования Манчестером. Кстати, нашел еще информацию о прямом соединении http://web.media.mit.edu/~nanwei/MAS836-20...aafi_MAS836.pdf
|
|
|
|
Сообщений в этой теме
Lost_Viking Программный UART на микрофонном входе Jan 20 2012, 16:51 andrewkrot Наверное так мало сообщений потому что никто ничег... Jan 20 2012, 19:03 Lost_Viking Цитата(andrewkrot @ Jan 20 2012, 23:03) Н... Jan 20 2012, 19:35  Taradov Alexander В первую очередь ни один микрофонный вход ваш DC с... Jan 20 2012, 19:49   Lost_Viking Цитата(Taradov Alexander @ Jan 20 2012, 23... Jan 20 2012, 20:31    Taradov Alexander QUOTE (Lost_Viking @ Jan 20 2012, 23:31) ... Jan 20 2012, 20:40  andrewkrot Цитата(Lost_Viking @ Jan 20 2012, 22:35) ... Jan 20 2012, 20:10 Taradov Alexander Из всех этих статей видно, что нужно экспериментир... Jan 20 2012, 21:48 Lost_Viking Цитата(Taradov Alexander @ Jan 21 2012, 01... Jan 20 2012, 22:09 Lost_Viking такой вопрос: как лучше ослабить сигнал с выхода к... Jan 21 2012, 16:54 jcxz Несколько лет назад делал радиомодем с примерно по... Jan 31 2012, 16:05 Lost_Viking Цитата(jcxz @ Jan 31 2012, 20:05) Да - и ... Feb 10 2012, 08:42 Lost_Viking Ура! Реализовали при помощи манчестера. Частот... Feb 26 2012, 20:12 jcxz И насколько это телефононезависимо? Feb 27 2012, 02:04  Lost_Viking Цитата(jcxz @ Feb 27 2012, 06:04) И наско... Feb 29 2012, 13:29
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|