Komunikasi data PC-ke-PC melalui Sound FSK / PSK / DSSS

8

Untuk bersenang-senang dan bekerja, saya harus mengimplementasikan aplikasi berbasis java yang dapat menyandikan teks atau data menjadi suara dan mentransmisikan menggunakan speaker PC dan di sisi penerima ada mikrofon dengan perangkat lunak decoder.

Saya sedang berpikir untuk menggunakan FSK (syn atau async atau sarankan) untuk implementasi:

Teks (data) --- memodulasi ---> gelombang pembawa audio 10khz-20khz ---> Melalui transmisi udara ---> mikrofon -> demodulasi ---> Menampilkan teks atau data.

Pertimbangan utama saya adalah:

  • ~ Bandwidth 200bps jika tidak lebih
  • tahan terhadap kebisingan hingga tingkat tertentu
  • sebaiknya gelombang pembawa 16khz - 20khz dengan pengambilan sampel 44.1khz (ada sedikit kebisingan di daerah ini dan tidak terlalu terdengar oleh orang tua dan mikrofon, speaker murah, tersedia di laptop)
  • Logika pengkodean tidak terlalu rumit.

Modulasi apa yang paling berhasil dengan upaya pengkodean paling sedikit? Adakah rekomendasi tentang perpustakaan / sampel untuk mencapai FSK / BFSK / PSK atau DSSS menggunakan java?

geeknizer
sumber
3
Anda bisa menggunakan salah satu standar modem lama, mis. V21 yang sangat sederhana, 300 baud, dupleks penuh. Seharusnya ada banyak dokumentasi dan kode sumber di luar sana. Anda dapat menggeser baseband hingga 17 kHz menggunakan pencampuran jika diperlukan.
Paul R
1
Hati-hati dengan mendorong frekuensi operator terlalu tinggi. Sebagian besar perangkat akustik komersial mulai memiliki karakteristik respons frekuensi yang tidak didefinisikan dengan baik saat Anda mendekati 20Khz. Untuk beberapa perangkat, 16Khz mungkin menjadi tantangan. Apakah skema Anda dapat menerima parameter yang menetapkan frekuensi / band pembawa?
user2718
1
Untuk menambahkan komentar @PaulR, Anda dapat mengambil spec seperti V21 dan mengadaptasinya agar sesuai dengan rentang frekuensi operator yang Anda pilih. Jika Anda ingin mengejar itu, saya yakin ada cukup keahlian di situs ini untuk membantu dengan adaptasi.
user2718
@ PaulR Bisakah Anda memberi saya contoh implementasi di java?
geeknizer
1
Tentu - beri saya beberapa hari untuk menulisnya untuk Anda ...
Paul R

Jawaban:

6

Ini sebenarnya masalah yang sangat sulit karena karakteristik saluran. Sebagian besar pengeras suara komputer memiliki bandwidth yang cukup terbatas, memiliki non-linearitas yang signifikan dan akustik ruang seringkali merupakan varian waktu.

Hidup menjadi BANYAK lebih mudah jika Anda bisa menjalankan kabel dari output headphone dari satu PC ke input baris yang lain.

Hilmar
sumber
2
Saya telah mengerjakan skema komunikasi yang sangat mirip: modulasi / demodulasi fsk audio dan saya baru saja menemukan implementasi modem audio linux menggunakan fsk. Sw ini dapat mencapai 300 dan 1200 baud menggunakan saluran audio sebagai tautan pendidikan antara dua pc dan fsk. Ini bisa menjadi titik awal yang sangat baik (implementasi saya cukup mencapai 200 baud di lingkungan yang bising menggunakan frekuensi sekitar 500-4000 Hz untuk masalah yang terkait dengan respons frekuensi perangkat audio pc). tautan
Yozek
@Yozek dapatkah Anda mengarahkan saya ke kode sumber itu?
geeknizer
1
Url untuk implementasi minimodem ada di sini: whence.com/minimodem/minimodem-0.16.1.tar.gz Saya masih mengerjakan implementasi sederhana pribadi AFSK di java dan objektif-C, tapi saya mengalami beberapa masalah dengan kebisingan sekitar / latar belakang dan batas laju transmisi rendah: sekitar 100/200 baud (atau sedikit / detik), tidak terlalu banyak. Tetapi saya tidak tahu apakah penyebabnya adalah keterbatasan praktis / fisiologis atau itu adalah masalah 'implementasi yang tidak cukup pintar' saya. Saya pikir yang kedua ...
Yozek
1

Ya, Anda pasti harus menggunakan FSK tetapi harus asinkron dan inilah sebabnya. Demodulasi FSK secara sinkron disebut demodulasi yang koheren. Demodulasi FSK secara koheren memerlukan penguncian fase pembawa yang masuk (sinkronisasi fase), yang biasanya dilakukan dengan Phase lock Loops (PLL) yang tidak berfungsi dengan baik kecuali Anda memiliki rasio Signal to Noise (SNR) minimal 10 dB atau lebih. Biasanya siaran audio tidak memiliki SNR setinggi itu, jadi lupakan demodulasi yang koheren. Selain dalam praktek dengan sinyal elektromagnetik, FSK non-koheren membutuhkan, paling banyak, hanya 1 dB lebih banyak Eb / Tidak dari itu untuk FSK koheren untuk Pb ≤ 10−4 (ini berarti bahwa untuk mendapatkan probabilitas kesalahan bit yang sama Pb Anda hanya perlu mengirimkan ekstra dB daya di setiap bit). Namun demodulator FSK yang tidak koheren jauh lebih mudah dibangun karena sinyal referensi yang koheren tidak perlu dihasilkan. Oleh karena itu dalam sistem praktis, hampir semua penerima FSK menggunakan demodulasi non-koheren karena semua orang lebih suka mentransmisikan daya dB ekstra daripada mendapatkan semua masalah sinkronisasi.

Menjawab pertimbangan utama Anda:

Bandwidth 200bps jika tidak lebih: Saya telah mencapai 200 bps menggunakan 8fsk carrier fase kontinu, pengaturan smartphone 1 m dari speaker.

Tangguh terhadap kebisingan hingga tingkat tertentu: Saya telah menerapkan kode koreksi kesalahan BCH, dengan kemampuan untuk memperbaiki hingga 8 kesalahan per blok data. Kode BCH memiliki keuntungan pengkodean terbesar saat ada penambahan 25 hingga 50%

lebih disukai gelombang pembawa 16khz - 20khz dengan pengambilan sampel 44.1khz: Saya menyarankan untuk meningkatkan frekuensi pengambilan sampel hingga 48 kHz (yang cukup umum saat ini di smartphone) dan membatasi bandwidth operasi Anda antara 17,5 atau 18 dan 21,5 kHz. Jika Anda menggunakan 44.1 maka Anda harus bekerja antara 17,5 atau 18 dan 20,5 kHz. Tetapi Anda harus sangat berhati-hati dengan speaker dan mikrofon yang Anda pilih karena tidak semuanya beroperasi pada frekuensi tinggi ini. Anda harus membuat analisis frekuensi tanggapan mereka. Jika Anda menggunakan PC, saya akan merekomendasikan ARTA atau Audacity atau jika Anda seorang programmer Matlab atau Octave. Jika Anda menggunakan smartphone, saya akan merekomendasikan aplikasi analisis spektrum audio apa pun

Logika pengkodean tidak terlalu rumit: Saya akan merekomendasikan demodulator fsk quadrature korelasi yang tidak koheren. Jauh lebih ringan daripada implementasi berbasis fft. Khususnya jika Anda berada kurang dari 1 m di mana doppler dan multipath tidak terlalu mempengaruhi Anda

VMMF
sumber