2012-01-06 2 views
2

프로젝트에서 내가 궁금한 기술적 인 문제를 제기하고 있습니다.단일 파형을 통해 바이너리를 전송하는 방법

디지털 장치는 마이크 잭 소켓을 통해 iPhone으로 데이터를 전송해야합니다.

나는 마이크로 컨트롤러와 아이폰 끝 모두로부터 인터페이스를 코딩해야한다.

이 특정 문제에 대해 설정된 프로토콜이 있습니까? 나는 트윈 클록과 데이터 라인 (ala PS/2 프로토콜 https://en.wikipedia.org/wiki/PS/2_connector)의 고급 스러움이 없다.

저는 F2F (https://en.wikipedia.org/wiki/Biphase_mark_code)에 대해 알고 있지만 디코딩 할 수있는 왕실의 PITA입니다.

또한 대역폭 최적화의 문제가 있습니다 (효율성과 알고리즘 복잡성 간의 적절한 균형). iPhone 샘플은 44.1kHz입니다. 이론적으로 각 샘플은 높거나 낮음에 따라 적어도 하나의 비트를 전송할 수 있습니다. 즉 이론적으로 각 샘플은 16 비트이지만 이론적 인 최대 대역폭을 실제로 최적화하려고하면 ... 단어가 ... 미친가?) 현실적으로 필자는 각 비트에 3 개의 샘플 길이를 사용하여 모든 것이 수신되고 비트가 2 개의 연속 샘플 사이에 들어 가지 않도록해야 할 수도 있습니다.

내가 할 수있는 오픈 소스 코드가 있습니까? 나는 소프트웨어 공학자들이 디지털 초기부터이 문제를 해결해 왔다고 생각한다. 나는 정말로 여기 바퀴를 재발 명하고 싶지 않다.

답변

1

AFAIK, 마이크를 사용하여 IR 수신기에서 신호를 디코딩하는 응용 프로그램에서도 유사한 접근 방식이 사용됩니다. 어쨌든, 마이크로 컨트롤러 사이트에 DAC가 있다면 그러한 소프트웨어로 디코딩 할 수있는 임펄스를 쉽게 형성 할 수 있습니다. WinLIRC : http://winlirc.sourceforge.net/audioreciever.html을 볼 수 있습니다.

2

모뎀에 대한 나의 이해와 경험으로, 효율성을 달성하고 (적절한 데이터 속도와 허용 가능한 BER) 알고리즘 복잡성/비용이 낮다는 것은 그저 꿈일뿐입니다.

  • 채널 (예를 들어 방) 소음 : 여기

    는 데이터를 전송할 때 어떤 식 으로든 직면거야 몇 가지 있습니다. 신호를 왜곡하고 디코딩 오류에 기여합니다. 진폭 변조로 인코딩 된 정보가 가장 많이 영향을받습니다.
  • 다중 신호 경로. 리시버 (마이크)는 실내의 물체로부터 신호 반사를 감지합니다. 신호가 더 저하됩니다.
  • 통신 채널/신호 경로 변경. 장치가 정지 상태가 아니거나 다른 것들이 방안을 돌아 다니는 경우, 신호는 시간이 지남에 따라 속성이 변경 될 것이고 해독하기가 더 어렵습니다 (때때로 불가능 함).
  • 송신기와 수신기에 사용되는 발진기는 약간 다른 속도로 작동합니다. 게다가 주파수가 시간이 지남에 따라 변동 할 것입니다. 이를 위해서는 높은 데이터 전송률/긴 데이터 패킷에서 추가적인 동기화가 필요합니다.
  • 하드웨어 및 소프트웨어, 특히 iPhone 측에서의 왜곡 (특히 비선형)은 오디오 채널에서 고속 데이터 통신을 심각하게 방해합니다. iPhone은 모뎀으로 작동하도록 설계되지 않았으며 모뎀의 일반적인 요구 사항을 모두 충족시킬 필요가 없었습니다. 마이크가 매우 비선형이고 주파수 범위가 매우 좁으며 때로는 오디오 샘플이 손실되거나 얇은 공기에서 나타나거나, 보내거나받는 샘플 블록 사이의 오디오에 눈에 띄지 않는 간격이 있음을 볼 수 있습니다 , 등등.

저는 개인적으로 매우 간단하고 저속의 것을 구현하는 것을 권장합니다. ITU-T 권고안 V.21과 V.23에서 설명한 것과 유사한 2-FSK 모뎀을 구현하십시오. 하나의 주파수는 0을 전송하고 다른 하나는 1을 전송합니다.

먼저 장치에 통합하기 전에 소프트웨어에서 1200 비트/초 이하의 속도로 작동하도록하십시오. 화이트 노이즈가 추가되고 엔코더와 디코더의 샘플 속도가 다소 다를 때 소프트웨어로 완벽하게 작동하십시오 (힌트 : 여기에 샘플 속도 변환기가 필요하지만 일부 오디오 편집기는 웨이브 파일을 리샘플링 할 수 있습니다. 손으로).

iPhone이 크게 망가지면 않는 한 당신은 모뎀을 구현할 수 있어야하지만 쉬운 일은 아니며 온라인으로 코드를 찾을 수 있다고 생각하지 않는다. 즉시 작업을하십시오.

Btw이 질문은 dsp.stackexchange.com으로 문의하는 것이 좋습니다.

편집 : my answer to a different question and code in it을 참조하십시오. 눈부시게 빠르지는 않지만, V.23과 같은 간단한 1200 비트/초 모뎀이 여기에서 작동합니다. 약간의 개조로 더 높은 데이터 전송률을 지원할 수 있습니다. FSK 송신기 코드는 마이크로 컨트롤러에 쉽게 연결할 수 있습니다.

3

이론적 인 데이터 전송 속도는 동기화 오버 헤드, 다양한 유형의 왜곡과 신호 대 잡음 비율에 의해 제한됩니다. 그렇지 않으면 16 * 44100 bps에 가까운 것이 가능할 것입니다.

좀 더 사실적으로 RTH 또는 PSK 소스 코드는 잡음이있는 오디오 너비 채널에서 작동하는 것으로 알려져 있기 때문에 검색 할 수 있습니다.

관련 문제