Für Spaß und Arbeit muss ich eine Java-basierte Anwendung implementieren, die Text oder Daten für den Ton und die Übertragung über den PC-Lautsprecher codieren kann. Auf der Empfangsseite befindet sich ein Mikrofon mit Decoder-Software.
Ich dachte daran, FSK (syn oder async oder vorschlagen) für die Implementierung zu verwenden:
Text (Daten) --- modulieren ---> 10-kHz-20-kHz-Audioträgerwelle ---> Funkübertragung ---> Mikrofon -> demodulieren ---> Text oder Daten anzeigen.
Meine wichtigsten Überlegungen sind:
- ~ 200bps Bandbreite, wenn nicht mehr
- elastisch bis zu einem bestimmten Pegel
- vorzugsweise 16 kHz - 20 kHz Trägerwelle mit 44,1 kHz Abtastung (es gibt weniger Rauschen in diesem Bereich und es ist für ältere Menschen und Mikrofone nicht wirklich hörbar, Lautsprecher sind billig und in Laptops leicht verfügbar)
- Nicht zu komplexe Codierungslogik.
Welche Modulation würde mit geringstem Codierungsaufwand am besten funktionieren? Gibt es Empfehlungen zu Bibliotheken / Beispielen für das Erreichen von FSK / BFSK / PSK oder DSSS mit Java?
audio
modulation
sound
fsk
Geeknizer
quelle
quelle
Antworten:
Dies ist aufgrund der Kanaleigenschaften tatsächlich ein sehr schwieriges Problem. Die meisten Computerlautsprecher haben eine ziemlich begrenzte Bandbreite, erhebliche Nichtlinearitäten und die Raumakustik ist häufig zeitlich variabel.
Das Leben wird VIEL einfacher, wenn Sie einfach ein Kabel vom Kopfhörerausgang eines PCs in den Line-Eingang des anderen PCs verlegen können.
quelle
Ja, Sie sollten auf jeden Fall FSK verwenden, aber es muss asynchron sein und hier ist der Grund. Die synchrone Demodulation von FSK wird als kohärente Demodulation bezeichnet. Das kohärente Demodulieren von FSK erfordert eine eingehende Trägerphasenverriegelung (Phasensynchronisation), die normalerweise mit Phasenverriegelungsschleifen (PLL) durchgeführt wird, die nur dann gut funktionieren, wenn Sie ein Signal-Rausch-Verhältnis (SNR) von mindestens 10 dB haben. Normalerweise hat Audio Broadcast kein so hohes SNR, vergessen Sie also die kohärente Demodulation. Außerdem benötigt der nicht kohärente FSK in der Praxis mit elektromagnetischen Signalen höchstens 1 dB mehr Eb / No als der kohärente FSK für Pb ≤ 10−4 (dies bedeutet, dass Sie zum Erhalten der gleichen Bitfehlerwahrscheinlichkeit Pb nur einen zusätzlichen senden müssen dB Leistung in jedem Bit). Der nicht kohärente FSK-Demodulator ist jedoch erheblich einfacher aufzubauen, da keine kohärenten Referenzsignale erzeugt werden müssen. Daher verwenden in praktischen Systemen fast alle FSK-Empfänger eine nicht kohärente Demodulation, da jeder lieber zusätzliche dB Leistung überträgt, als all diese Synchronisationsprobleme zu lösen.
Beantwortung Ihrer wichtigsten Überlegungen:
200 bps Bandbreite, wenn nicht mehr: Ich habe 200 bps mit einem orthogonalen Träger mit kontinuierlicher Phase 8fsk erreicht und das Smartphone 1 m vom Lautsprecher entfernt aufgestellt.
Rauschresistent bis zu einem bestimmten Grad: Ich habe einen BCH-Fehlerkorrekturcode implementiert, mit dem bis zu 8 Fehler pro Datenblock repariert werden können. BCH-Codes haben ihre größten Codierungsgewinne, wenn eine Redundanz von 25 bis 50% hinzugefügt wird
vorzugsweise 16 kHz - 20 kHz Trägerwelle mit 44,1 kHz Abtastung: Ich würde empfehlen, die Abtastfrequenz auf 48 kHz zu erhöhen (was heutzutage bei Smartphones üblich ist) und die Betriebsbandbreite zwischen 17,5 oder 18 und 21,5 kHz zu begrenzen. Wenn Sie 44.1 verwenden, müssen Sie zwischen 17,5 oder 18 und 20,5 kHz arbeiten. Sie müssen jedoch sehr vorsichtig mit dem von Ihnen ausgewählten Lautsprecher und Mikrofon sein, da nicht alle mit diesen hohen Frequenzen arbeiten. Sie müssen eine Frequenzantwortanalyse von ihnen durchführen. Wenn Sie einen PC verwenden, würde ich ARTA oder Audacity empfehlen oder wenn Sie ein Programmierer Matlab oder Octave sind. Wenn Sie ein Smartphone verwenden, würde ich jede App zur Analyse des Audiospektrums empfehlen
Nicht zu komplexe Codierungslogik: Ich würde den nicht kohärenten Korrelationsquadratur-fsk-Demodulator empfehlen. Viel leichter als jede fft-basierte Implementierung. Besonders wenn Sie weniger als 1 m entfernt sind, wo Doppler und Multipath Sie nicht so sehr beeinflussen
quelle