bladeRF-fsk - aplicativo fsk de linha de comando
O projeto bladeRF-fsk é um modem de software baseado em chaveamento de frequência simples (FSK) implementado inteiramente no lado do PC host em código C. O projeto usa libbladeRF para transmitir/receber amostras com um dispositivo bladeRF. Uma porta USB 3.0 não é necessária ao usar este modem. O projeto também contém uma simulação/implementação MATLAB/Octave da parte da camada física (PHY) do modem.
O programa C bladeRF-fsk de nível superior demonstra a funcionalidade do modem em um programa simples de transferência de dados bladeRF-para-bladeRF. Este programa pode transmitir/receber texto (como um programa de bate-papo) e arquivos binários (como um programa de transferência de arquivos) com uma taxa de link bruto de 250 kbps. Para demonstrar corretamente o programa, duas instâncias do programa devem ser executadas com dois dispositivos bladeRF separados (loopback não é suportado).
O modem modula com chaveamento de mudança de frequência de fase contínua (CPFSK). As amostras CPFSK I/Q de banda base são enviadas para o dispositivo bladeRF, dentro do qual são convertidas de digital para analógico, misturadas com portadores de RF de quadratura e transmitidas pelo ar. Os sinais recebidos são misturados com portadores de RF de quadratura para downconversion para I/Q de banda base, amostrados com um ADC e enviados para o programa do PC host pela conexão USB.
O código da camada física apresenta um filtro passa-baixo FIR, normalização de potência, correlação de preâmbulo para detecção de sinal, modulação/demodulação CPFSK e codificação. O código da camada de enlace apresenta enquadramento, detecção de erros por meio de somas de verificação CRC32 e entrega garantida de quadros por meio de confirmações e retransmissões.
Este projeto pretende ser um exemplo experimental e não deve ser tratado como um modem rigoroso.
Para executar o programa bladeRF-fsk de nível superior com padrões, digite em um terminal:
bladeRF-fsk
Para ver uma lista de opções de configuração e como defini-las, digite:
bladeRF-fsk -h
_NOTA_: No Windows 10, se você estiver executando duas instâncias do programa no mesmo PC, deverá especificar o número de série do bladeRF com a opção '-d', devido ao [Problema nº 484](https://github.com /Nuand/bladeRF/issues/484). Exemplo:
bladeRF-fsk -d *:serial=4e
Por padrão, o programa usa o primeiro dispositivo bladeRF disponível, obtém a entrada TX de stdin, grava a saída RX em stdout e usa um conjunto padrão de frequências e ganhos de transmissão/recepção. Os ganhos podem precisar ser ajustados para uma boa conexão com outro bladeRF executando bladeRF-fsk. Para transferir arquivos, use as opções '-i' e '-o'. Se estiver usando stdin para dados tx, o programa transmitirá os dados linha por linha.
O programa roda até obter um EOF em sua entrada TX.
### Exemplo: Transferindo Arquivos ### 1) Certifique-se de que dois dispositivos bladeRF estejam conectados ao seu PC (ou dois PCs separados) com antenas TX e RX conectadas.
2) Execute bladeRF-fsk em um dos dispositivos (receptor), com o arquivo RX de saída especificado:
bladeRF-fsk -r 904M -t 924M -o rx.jpg
3) Execute bladeRF-fsk no outro dispositivo (remetente), com frequências opostas e o arquivo TX de entrada especificado:
bladeRF-fsk -r 924M -t 904M -i puppy.jpg
4) O arquivo começará a ser transferido e o progresso será impresso no terminal do dispositivo de envio.
5) Quando a transmissão estiver concluída, pressione [CTRL-D] no Linux/OSX ou [CTRL-Z e ENTER] no Windows para interromper o programa no lado receptor.
Se o dispositivo de envio não obtiver nenhuma resposta do dispositivo de recebimento, ele sairá do programa. Tente aumentar os ganhos e execute-o novamente.
1) O programa atualmente não suporta o uso de uma placa de expansão do transversor XB-200 para transmitir/receber em frequências abaixo de 300MHz. Para adicionar suporte ao XB-200, uma nova opção de configuração, bem como funções da seção "Placas de expansão" da API libbladeRF precisariam ser adicionadas ao código-fonte.
2) O programa atualmente não consegue realizar duas transferências de arquivos em ambas as direções simultaneamente. Razão nº 1: O programa é executado até obter um EOF em sua entrada TX, o que significa que o lado que terminar de transmitir seu arquivo primeiro será encerrado e parará de receber. Um bit EOF precisaria ser adicionado ao formato do pacote da camada de enlace para interromper esse comportamento. Razão nº 2: o programa não parece ter um bom desempenho durante essas transferências simultâneas de arquivos e geralmente perde a conexão. Uma investigação mais aprofundada é necessária para depurar isso.
bladeRF-cli(1)