Transmissão de Dados Usando Som: Uma Experiência com 'Telefone de Copos'
Quando comecei a brincar com computadores, a única forma de carregar um programa na máquina era digitando-o do zero. Meu computador antigo não tinha armazenamento; não havia HD, disquete ou qualquer outro meio de armazenar dados. Ao iniciar, a máquina carregava o BASIC diretamente da ROM e pronto. Com o tempo, consegui um gravador de fita, mas ele era terrível. Sem dinheiro para um gravador específico para computadores, usei um gravador doméstico. Demorou bastante ajustando o volume e outros parâmetros até conseguir carregar algo. O equipamento era tão delicado que prendi os controles com fita adesiva para evitar alterações porque qualquer coisa impedia o carregamento.
Apesar das dificuldades, era interessante ouvir os dados sendo transferidos para a fita e de volta. Meu gravador não desligava a caixa de som, então eu sempre tinha que ouvir o som estridente dos dados transmitidos. E eu era muito novo para desmontar o gravador e colocar uma chave para cortar o auto-falante.
Com computadores modernos, essa realidade está distante. Os computadores são muito mais inteligentes, mas ainda podemos usar o som para armazenar e transmitir dados. Isso me levou a um experimento que queria realizar há algum tempo: utilizar dois copos plásticos conectados por um cordão para transmitir dados entre computadores, em vez de apenas conversar com um telefone de copos.
Hoje, Vitória e eu aproveitamos a manhã de sábado para colocar o experimento em prática. Construímos o telefone com dois copos e 13 metros de cordão, pois essa é a maior distância em linha reta que temos em casa.
Nos primeiros testes, colocamos as máquinas lado a lado, sem usar os copos e o cordão. O teste foi bem-sucedido porque a sala estava silenciosa. Conseguimos 300 bps sem problemas e acredito que poderíamos alcançar velocidades maiores.
Na prática, configuramos o software da seguinte forma. Como estou no macOS, iniciei o servidor do pulseaudio para interagir com o microfone e os alto-falantes.
pulseaudio --exit-idle-time=-1 --verbose
Depois, posicionamos tudo e garantimos que o cordão estava bem esticado e sem obstáculos. Então, configuramos minha máquina para receber a mensagem.
Usamos o minimodem, um programa criado por Kamal Mostafa, presente em muitas distribuições Linux e pode ser instalado via Brew.
A essa distância e sem correção de erro, reduzimos a velocidade para 16 bps. A baixa velocidade se deve a diversas fontes de ruído, como o vento no cordão e carros passando na rua. Além disso, usamos apenas o microfone e os alto-falantes internos das máquinas, sem periféricos externos. Este é o comando para receber a transmissão.
minimodem 16 --rx
Na máquina da Vitória, configuramos o minimodem para transmitir. Usamos o comando echo para enviar a mensagem para a entrada padrão do minimodem, que modulou os dados para áudio e os transmitiu pelos alto-falantes.
echo só a verdade liberta | minimodem 16 --tx
Após várias tentativas e ajustes, conseguimos receber os dados. Foi um experimento divertido.
Pontos de melhoria
- Manter a tensão do cordão constante faz diferença.
- Devíamos ter usado microfones e alto-falantes montados próximos à boca dos copos, mas não quis complicar a brincadeira.
- O tamanho do copo, material e diâmetro do cordão influenciam no resultado mas tudo precisava ser feito com o que tínhamos em casa.
- Realizar o experimento em um ambiente mais silencioso e com menos vento teria ajudado.
A próxima ideia interessante seria carregar um programa diretamente de um gravador de fita, como fazia nos tempos do TK85 (clone brasileiro do ZX Spectrum), o problema esta em conseguir um gravador de fita que não custe caro.
Vídeo com demonstração do experimento:
Até a próxima!