quarta-feira, setembro 03, 2014

Disquetes Musicais - Introdução

Volta e meia aparece um vídeo com uma música sendo tocada através de unidades de disquetes. Nesta série de posts vamos investigar um pouco como isto é feito.

Neste primeiro post vou seguir uma "receita de bolo" para colocar para tocar uma unidade de disquete de 3,5". Em posts futuros vou analisar como isto está sendo feito e experimentar algumas variações.

A receita que vou seguir pode ser vista neste artigo do RoboLivre e neste "instructable". Ela utiliza o software Moppy, que você pode baixar daqui. Vou colocar aqui apenas um resumo, o artigo e o instructable contêm o procedimento passo a passo, com fotos, screenshots e diagramas.
Você vai precisar do seguinte hardware:
  • Um Arduino baseado no ATmega328
  • Uma unidade de disquete de 3,5"
  • Um disquete de 3,5" (que você não pretenda mais usar)
  • Uma fonte para alimentar a unidade. O mais simples é usar uma fonte ATX de PC, que já tem o conector adequado.
  • Fios (jumpers)  daqueles usados com protoboard.
A montagem do hardware é simples:
  • Ligue o conector de alimentação da unidade de disquete à fonte.
  • Faça uma ligação entre os fios verde e preto do conector para a motherboard da fonte. (Obs: algumas fontes mais antigas exigem uma carga mínima, veja instruções aqui).
  • Ligue o pino 11 ao pino 12 do conector de dados da unidade de disquete. Atenção que o cabo normal de disquete tem um dos conectores com os pinos 12 e 14 (entre outros) invertidos.
  • Ligue a saída digital 2 do Arduino ao pino 20 do conector de dados da unidade de disquete.
  • Ligue a saída digital 3 do Arduino ao pino 18 do conector de dados da unidade de disquete.
  • Ligue os GND do Arduino aos pinos 17 e 19 do conector de dados da unidade de disquete.

Obs.: Uma das unidades que eu testei era "banguela": tinha apenas alguns dos pinos ímpares (e entre eles não estavam os pinos 13, 17 e 19). Funcionou conectando ao GND do Arduino os pinos 1 e 12 do conector da unidade.

O software usado é:
  • A IDE do Arduino
  • A biblioteca Timer 1 para o Arduino. Você pode baixá-la daqui, instale no diretório libraries do Arduino.
  • O Moppy, que você pode baixar daqui. Após baixar, expanda o zip em um diretório de trabalho.
O Moppy é composto por duas partes, uma que roda no Arduino e outra no PC (o MoppyDesk). O software do Arduino deve ser carregado no Arduino através da  IDE do Arduino, o que é trivial.

A tarefa mais trabalhosa (e demorada) é colocar o MoppyDesk para funcionar (insira aqui a sua piada predileta sobre o Java). O roteiro abaixo é para o Windows XP 32 bits, se você usa outro sistema se prepare para sofrer um pouco.
  • Copie as duas dlls que estão em Moppy-moppy-advanced\Java\SerialDrivers\rxtx-2.1-7-bins-r2\Windows\i368-mingw32 para c:\windows\system32
  • Baixe o JDK com a IDE NetBeans (daqui) e instale.
  • Execute o NetBeans e abra o projeto Moppy-moppy-advanced\Java\MoppyDesk
  • Vai acusar um erro, clique em Resolver Problemas. Vai informar que falta swing-app-framework. Clique em Resolver e instale o plugin que falta.
  • Clique com o botão direito no projeto e escolha Propriedades. Escolha Executar e clique Personalizar nas opções de VM. Acerte o path do SerialDriver: troque ch-rxtx-2.2-20081207-win-x64 por i368-mingw32.
  • Cruze os dedos e mande executar o projeto. Deve aparecer a tela do MoppyDesk
Verifique que a fonte da unidade está ligada e tem um disquete inserido e que o Arduino está conectado ao micro. O LED na unidade deve estar aceso, se não estiver verifique a fonte e as conexões. Clique em "Load Sequence" e selecione o arquivo Tetris.mid que está em Moppy-moppy-advanced\Java\MoppyDesk\samplesongs. Ligue o checkbox "Enable Drive-Pooling".  No lado direito da tela, ligue o checkbox "1" e selecione Moppy e a porta serial onde está o Arduino. Clique em Connect e depois em start. O drive deverá começar a tocar a música.

06/09/14: Corrigido o pino de seleção da unidade (12), não estava levando em conta a inversão feita pelo cabo.

Nenhum comentário: