
Noise Toy - curso intensivo em programação
O kit Noise Toy é divertido de usar, mas se você é como eu - deixar essa pequena porta "PROGRAM" sem uso o deixará louco.
Com pouco conhecimento de programação AVR além de algum divertimento com o Arduino, eu me ensinei a fazer upload e hackear código-fonte para ele. Continue lendo para ver como a ação foi realizada e ouça alguns exemplos de áudio.
Relacionado:
- COMO - construir o brinquedo do ruído
- Noise Toy-in-a-box
Parte 1 - Hardware hackery
Se você nunca programou um microcontrolador antes, a perspectiva pode parecer um pouco assustadora - mas não é tão difícil, e aprender esse processo abre várias novas opções. (Se já souber como, você pode pular para a Parte 3, para arquivos pertinentes ao Noise Toy)
O Noise Toy usa um chip microcontrolador Atmel AVR (o ATTiny85, para ser específico). A Loud Objects projetou o kit para que o chip pudesse ser reprogramado sem removê-lo do dispositivo ou "dentro do circuito". Na verdade, o Toy pode ser visto como uma simples "placa alvo" do AVR na qual um microcontrolador pode receber um novo código a partir da conexão de dados serial de um PC.
As portas seriais são muito raras na maioria das máquinas novas (e inexistentes nos Macs), então a maioria das pessoas usa o USB. A fim de converter esses dados USB em algo mais "serial" para o nosso pequeno chip, usamos um programador no sistema (ISP para breve). Os designers do Noise Toy organizaram esse cabeçalho PROGRAM para interagir com um ISP específico - o AvrUsb500 da Tuxgraphics. Eu não tinha um desses em mãos, mas tinha outro ISP, o USBTinyISP da Adafruit Industries. Para usá-lo com o brinquedo, foi necessário um pouco de adaptação.
O USBTinyISP usa um conector de 6 pinos, mais um pino que o AvrUsb500. Para descobrir quais pinos fizeram o quê, comparei a documentação de ambos os dispositivos e fiz referência cruzada à folha de dados do ATTiny85.
Acontece que o pino adicional no USBTiny fornece energia opcional para a placa, enquanto o AvrUsb500 assume que seu chip já estará ligado durante a programação.
Com isso em mente, desativei o pino de alimentação opcional do USBTinyISP movendo um simples jumper dentro do dispositivo. Usando as informações coletadas dessas comparações de pinos, elaborei um rápido esquema descrevendo como o USBTiny deve se conectar ao cabeçalho PROGRAM do brinquedo.
Você pode usar um núcleo sólido ou um jumper para fazer as conexões adequadas - para uma solução mais permanente, eu fiz um pequeno adaptador para fora do cartão -
Parte 2 - Diversão de software e processo de programação
Depois que a interface for descoberta, você precisará de algum software para realizar a programação real. Eu baixei e instalei o AVR MacPack no meu powerbook (aqueles com Windows podem usar o WinAVR) Então eu me familiarizei com o processo básico de programação através dos tutoriais úteis em Ladyada.net.
O código fonte do Adicional Noise Toy pode ser baixado no site da Loud Objects. Estes são arquivos .c e precisam ser compilados como .hex antes de serem gravados no chip. Para fazer isso, você precisará de um "makefile" que especifique algumas variáveis necessárias. Eu encontrei um makefile de template simples no site do Psychogenic e atualizei com os detalhes necessários -
nome do microcontrolador:
MCU = attiny85 PROGRAMMER_MCU = t85
Nome do Projeto:
PROJECTNAME = mynoisetoyproject
nome do meu arquivo de origem .c:
PRJSRC = mynoisetoyproject.c
Você pode baixar o makefile editado aqui.
Salve o novo makefile como (você adivinhou)makefile
”E coloque-o em uma nova pasta chamada“mynoisetoyproject
" dentro do Documentos
pasta.
O dave_matthews_band.c da Loud Objects soou como um alvo principal para a experimentação, então abri em meu editor de texto favorito e fui trabalhar. Perusing o código, notei um pouco que parecia familiar. Curioso, substituí todas as instâncias de Aleatória()
e substituiu-os por 0
- salvou o arquivo como “mynoisetoyproject.c” em Documentos / mynoisetoyproject
.
Quando a pasta e os arquivos estavam prontos, segui as seguintes formalidades -
Abra o aplicativo Terminal e insira estas linhas:
cd Documentos / mynoisetoyproject make all make mynoisetoyproject.hex
Conecte o ISP ao computador via USB, depois ao Noise Toy e digite o seguinte -
avrdude -c usbtiny -p t85 -U flash: w: mynoisetoyproject.hex
Depois que o Terminal exibiu um processo de upload rápido, eu desconectei o brinquedo e dei uma pequena demonstração ao meu hack. Um tanto previsível, eu ouvi uma versão menos aleatória de "dave_matthews_band.c" - eu chamo de "chris_mattews_band"
Ouça a chris_matthews_band
Apenas algumas mudanças no programa original fizeram uma diferença substancial no som produzido. Se você já trabalhou com o Arduino antes de provavelmente reconhecer o idioma nesses arquivos de origem. Esse tipo de invasão parece ser uma boa maneira de aprender mais sobre codificação em geral - e é divertido!
Parte 3 - Arquivos e tal
Aqui estão alguns exemplos dos outros programas no site da Loud Objects -
- birdlane.mp3
- estéreo.mp3
- dave_matthews_band.mp3
- Ike.mp3
- kunrnd.mp3
- rptrnd.mp3
- salvação.mp3
Caso você não queira hackear / escrever código, aqui está um .zip de todos os programas originais pré-compilados como arquivos .hex para upload - Pacote hexagonal Noise Toy
E aqui está o makefile editado e o código de exemplo hack - mynoisetoyproject makefile
Espero que isso ajude a quebrar o gelo com o desenvolvimento de microcontroladores e obter uma milhagem adicional de um kit simples, mas muito útil. Se você escrever / hackear um bom programa para o kit, não deixe de compartilhá-lo nos comentários abaixo!
MOE