Para me divertir e trabalhar, eu tenho que implementar um aplicativo baseado em java que pode codificar texto ou dados para soar e transmitir usando o alto-falante do PC e, no lado receptor, há um microfone com software decodificador.
Eu estava pensando em usar FSK (syn ou assíncrono ou sugerir) para a implementação:
Texto (dados) --- modular ---> onda portadora de áudio de 10khz-20khz ---> Transmissão pelo ar ---> microfone -> demodular ---> Exibir texto ou dados.
Minhas principais considerações são:
- ~ 200bps de largura de banda, se não mais
- resiliente ao ruído até certo nível
- de preferência onda portadora de 16khz - 20khz com amostragem de 44.1khz (há menos ruído nessa área e não é realmente audível para pessoas mais velhas e microfones, os alto-falantes são baratos e estão disponíveis em laptops)
- Lógica de codificação não muito complexa.
Qual modulação funcionaria melhor com menos esforços de codificação? Alguma recomendação em bibliotecas / amostras para obter FSK / BFSK / PSK ou DSSS usando java?
audio
modulation
sound
fsk
geeknizer
fonte
fonte
Respostas:
Este é realmente um problema muito difícil por causa das características do canal. A maioria dos alto-falantes do computador tem largura de banda bastante limitada, não linearidades significativas e a acústica da sala geralmente varia de tempo.
A vida se torna MUITO mais fácil se você pode simplesmente conectar um cabo da saída de fone de ouvido de um PC à entrada de linha do outro.
fonte
Sim, você definitivamente deve usar o FSK, mas ele deve ser assíncrono e aqui está o porquê. A desmodulação do FSK de forma síncrona é chamada de desmodulação coerente. A desmodulação do FSK exige coerentemente o bloqueio de fase da portadora de entrada (sincronização de fase), o que normalmente é feito com loops de bloqueio de fase (PLL) que não funcionam bem, a menos que você tenha uma relação sinal / ruído (SNR) de pelo menos 10 dB. Normalmente, a transmissão de áudio não possui um SNR tão alto; portanto, esqueça a demodulação coerente. Além disso, na prática, com sinais eletromagnéticos, o FSK não coerente exige, no máximo, apenas 1 dB mais Eb / Não do que o FSK coerente para Pb ≤ 10-4 (isso significa que, para obter a mesma probabilidade de erro de bit Pb, você só precisa transmitir um valor extra). dB de potência em cada bit). No entanto, o desmodulador FSK não coerente é consideravelmente mais fácil de construir, pois não é necessário gerar sinais de referência coerentes. Portanto, em sistemas práticos, quase todos os receptores FSK usam demodulação não coerente, porque todo mundo prefere transmitir um dB extra de energia em vez de enfrentar todos os problemas de sincronização.
Respondendo às suas principais considerações:
Largura de banda de 200bps, se não mais: atingi 200 bps usando uma fase contínua de portadoras ortogonais 8fsk, definindo o smartphone a 1 m de distância do alto-falante.
Resiliente ao ruído até um certo nível: implementei um código de correção de erros BCH, com a capacidade de reparar até 8 erros por bloco de dados. Os códigos BCH têm seus maiores ganhos de codificação quando há uma redundância de 25 a 50% adicionada
preferencialmente onda portadora de 16khz - 20khz com amostragem de 44.1khz: eu sugeriria aumentar a frequência de amostragem em até 48 kHz (o que é bastante comum hoje em dia nos smartphones) e limitar sua banda de operação entre 17,5 ou 18 e 21,5 kHz. Se você usar 44,1, precisará trabalhar entre 17,5 ou 18 e 20,5 kHz. Mas é preciso ter muito cuidado com o alto-falante e o microfone que você seleciona, pois nem todos operam nessas altas frequências. Você deve fazer uma análise de resposta de frequência deles. Se você estiver usando um PC, eu recomendaria o ARTA ou o Audacity ou se você é um programador Matlab ou Octave. Se você estiver usando um smartphone, recomendo qualquer aplicativo de análise de espectro de áudio
Lógica de codificação não muito complexa: eu recomendaria o demodulador fsk de quadratura de correlação não coerente. Muito mais leve que qualquer implementação baseada em fft. Especialmente se você estiver a menos de 1 m de distância, onde o doppler e o multicaminho não o afetam tanto
fonte