Исходя из моего понимания и опыта работы с модемами, достижение эффективности (например, приличной скорости передачи данных с приемлемой BER ) и низкой алгоритмической сложности / стоимости - не более чем несбыточная мечта.
Вот несколько моментов, с которыми вы так или иначе столкнетесь при передаче данных:
- Канальный (например, комнатный) шум.Это будет искажать сигнал и способствовать ошибкам декодирования.Информация, закодированная с амплитудной модуляцией, является наиболее затронутой здесь.
- Несколько путей прохождения сигнала.Приемник (микрофон) улавливает отражения сигналов от предметов в комнате.Сигнал будет ухудшаться.
- Изменение канала связи / путей сигнала.Если устройства не являются стационарными и / или другие предметы перемещаются по комнате, сигнал будет со временем менять свои свойства и его будет сложнее декодировать (иногда невозможно).
- Используемые генераторыВ передатчике и приемнике будут работать несколько разные скорости.Более того, их частоты будут колебаться с течением времени.Это требует дополнительной синхронизации при высоких скоростях передачи данных / длинных пакетах данных.
- Искажения, особенно нелинейные, в аппаратном и программном обеспечении, особенно на стороне iPhone, серьезно затрудняют любую высокоскоростную передачу данных по аудиоканалу.,iPhone не был предназначен для работы в качестве модема и не должен был отвечать всем типичным требованиям для модема.Вы можете столкнуться с тем, что микрофон очень нелинейный и его частотный диапазон довольно узок, что время от времени аудиосэмплы теряются или появляются из воздуха, что в звуке имеются заметные промежутки между блоками отправленных или полученных сэмплов.и т. д. и т. д.
Я лично рекомендую рассмотреть возможность реализации чего-то чрезвычайно простого и медленного.Внедрить модем 2-FSK, аналогичный тому, который описан в рекомендациях МСЭ-Т V.21 и V.23.Используйте одну частоту для передачи 0, а другую - для передачи 1.
Сначала включите программное обеспечение для работы со скоростью не более 1200 бит / с, прежде чем интегрировать в устройства.Сделайте так, чтобы он полностью работал в программном обеспечении с добавленным белым шумом и когда частоты дискретизации кодера и декодера несколько отличаются (подсказка: здесь вам понадобится преобразователь частоты дискретизации, но некоторые аудиоредакторы могут повторно сэмплировать волновые файлы, и вы можете это сделатьот руки).
Если iPhone не будет ужасно испорчен, вы сможете реализовать на нем модем, но это не простая задача, и я не думаю, что вы сможете найти в Интернете какой-либо код, который вы сможетепринять как есть и почти мгновенно сделать работу.
Кстати, было бы неплохо задать этот вопрос на dsp.stackexchange.com .
РЕДАКТИРОВАТЬ : См. мой ответ на другой вопрос и код в нем .Хотя и не впечатляюще быстро, здесь может работать простой V.23-подобный модем 1200 бит / сек.С некоторыми изменениями это может быть сделано для поддержки более высоких скоростей передачи данных.Код передатчика FSK достаточно прост для переноса на микроконтроллер.