Pour le plaisir et le travail, je dois implémenter une application basée sur java qui peut encoder du texte ou des données à écouter et à transmettre à l'aide du haut-parleur du PC et du côté de la réception se trouve un microphone avec un logiciel de décodeur.
Je pensais utiliser FSK (syn ou async ou suggest) pour l'implémentation:
Texte (données) --- moduler ---> Onde porteuse audio 10khz-20khz ---> Transmission hertzienne ---> microphone -> démoduler ---> Afficher du texte ou des données.
Mes principales considérations sont:
- ~ 200bps de bande passante sinon plus
- résilient au bruit jusqu'à un certain niveau
- de préférence 16 kHz - 20 kHz d'onde porteuse avec un échantillonnage de 44,1 kHz (il y a moins de bruit dans ce domaine et ce n'est pas vraiment audible pour les personnes âgées et les micros, les haut-parleurs sont bon marché, facilement disponibles dans les ordinateurs portables)
- Logique de codage pas trop complexe.
Quelle modulation fonctionnerait le mieux avec le moins d'efforts de codage? Des recommandations sur les bibliothèques / échantillons pour réaliser FSK / BFSK / PSK ou DSSS en utilisant Java?
audio
modulation
sound
fsk
geeknizer
la source
la source
Réponses:
C'est en fait un problème vraiment difficile en raison des caractéristiques du canal. La plupart des haut-parleurs d'ordinateur ont une bande passante assez limitée, ont des non-linéarités importantes et l'acoustique de la pièce varie souvent dans le temps.
La vie devient BEAUCOUP plus facile si vous pouvez simplement faire passer un câble entre la sortie casque d'un PC et l'entrée ligne de l'autre.
la source
Oui, vous devez absolument utiliser FSK, mais il doit être asynchrone et voici pourquoi. La démodulation FSK de manière synchrone est appelée démodulation cohérente. Démoduler FSK de manière cohérente nécessite un verrouillage de phase de la porteuse entrante (synchronisation de phase), ce qui se fait normalement avec des boucles de verrouillage de phase (PLL) qui ne fonctionnent pas bien, sauf si vous avez un rapport signal / bruit (SNR) d'au moins 10 dB ou plus. Normalement, la diffusion audio n’a pas un SNR aussi élevé, alors oubliez la démodulation cohérente. Outre la pratique des signaux électromagnétiques, le FSK non cohérent ne nécessite, au maximum, que 1 dB de Eb / No en plus que celui du FSK cohérent pour Pb ≤ 10−4 (cela signifie que pour obtenir la même probabilité d'erreur sur les bits Pb, il vous suffit de transmettre un supplément dB de puissance dans chaque bit). Pourtant, le démodulateur FSK non cohérent est considérablement plus facile à construire car il n'est pas nécessaire de générer des signaux de référence cohérents. Par conséquent, dans les systèmes pratiques, presque tous les récepteurs FSK utilisent une démodulation non cohérente car tout le monde préfère transmettre un dB de puissance supplémentaire plutôt que de rencontrer tous ces problèmes de synchronisation.
Répondre à vos principales considérations:
Bande passante de 200bps sinon plus: j'ai atteint 200 bps en utilisant une porteuse orthogonale à phase continue 8fsk, en plaçant le smartphone à 1 m du haut-parleur.
Résistant au bruit jusqu'à un certain niveau: j'ai implémenté un code de correction d'erreur BCH, avec la possibilité de réparer jusqu'à 8 erreurs par bloc de données. Les codes BCH ont leurs gains de codage les plus importants lorsqu'une redondance de 25 à 50% est ajoutée
de préférence une onde porteuse de 16 kHz à 20 kHz avec un échantillonnage de 44,1 kHz: je suggérerais d'augmenter la fréquence d'échantillonnage jusqu'à 48 kHz (ce qui est assez courant de nos jours dans les smartphones) et de limiter votre bande passante de fonctionnement entre 17,5 ou 18 et 21,5 kHz. Si vous utilisez 44,1, vous devez travailler entre 17,5 ou 18 et 20,5 kHz. Mais vous devez être très prudent avec le haut-parleur et le microphone que vous sélectionnez car ils ne fonctionnent pas tous à ces hautes fréquences. Vous devez en faire une analyse de réponse en fréquence. Si vous utilisez un PC, je recommanderais ARTA ou Audacity ou si vous êtes un programmeur Matlab ou Octave. Si vous utilisez un smartphone, je recommanderais toute application d'analyse du spectre audio
Logique de codage pas trop complexe: je recommanderais le démodulateur fsk en corrélation non cohérente. Beaucoup plus léger que n'importe quelle implémentation basée sur fft. Surtout si vous êtes à moins de 1 m de distance où le doppler et les trajets multiples ne vous affectent pas autant
la source