quarta-feira, 19 de março de 2014

Arduino versus Raspberry Pi

Há uma semana recebi o mini-PC (ou SBC - Single Board Computer) Raspberry Pi, uma placa criada há 2 anos na Inglaterra, com o objetivo de trazer de volta a facilidade de aprendizado da computação que existia nos anos 80.

Depois de passar um mês pesquisando sobre a RaspPi (demorou um pouco pra chegar) e pensando sobre a proposta dela, minha conclusão é que esse objetivo foi realmente alcançado por outra placa que aniversaria 10 anos agora no final de março, o Arduino.

Apesar do conceito completamente diferente de ambas (e, ambas, completamente diferentes da microcomputação pessoal dos anos 80), minha experiência como usuário e como professor me diz que o Arduino é, efetivamente, a melhor porta de entrada para leigos tanto para a eletrônica, quanto para a programação. Mas essa é só minha opinião... #nerd

(foto: deste artigo no site raspberrypi.org)

segunda-feira, 10 de março de 2014

PSG Arduino Shield - Parte 1

Introdução:

Esse é um projeto que me veio a mente há pouco mais de 1 ano e ficou engavetado por diversos motivos e desvios de percurso. Retomado o que eu não deveria ter parado, foram dados os passos da segunda etapa: Montar o protótipo em protoboard (a primeira parte foi de pesquisa e elaboração de objetivos):
Eu poderia ter usado um protoboard maior e feito tudo em um só, mas quis usar o protoshield que eu fiz e, como não cabia tudo, usei mais dois bloquinhos de protoboard pra colocar o amplificador de áudio e o circuito de clock para o PSG. As fotos comentadas podem ser vistas neste álbum.

Mas, enfim, do que se trata isso? É basicamente um shield de Arduino para gerar áudio com o circuito integrado PSG (Programmable Sound Generator) AY-3-8912, típico de microcomputadores das décadas de 70 e 80, como MSX, ZX-Spectrum, ZX81, Apple II etc, e que pode ser usado para chiptune ou qualquer outra coisa que sua imaginação permitir.

Diversos projetos já foram feitos com esse intuito como o que está no site arduino.cc ou este do 986-Studio, entre diversos outros.

O mais promissor, mas que aparentemente morreu no parto, foi o MIDIarcAYde, que chegou a ter um shield completo com o PSG e conexão MIDI, mas não houve divulgação do código fonte, do esquemático do projeto, nem nada. Provavelmente foi um trabalho de conclusão de curso e ficou nisso mesmo. O vídeo linkado no blog do projeto, com a placa em funcionamento, é interessante.

Apesar de haverem poucas diferenças entre todos os projetos, tomei como base o desenvolvimento demonstrado no blog do DQ (partes um, dois, três, quatro e cinco), participante ativo do Garoa Hacker Clube (ele fez uma página no wiki do Garoa sobre o projeto dele).

Apesar de ser muito didático, o projeto do DQ peca, IMO, no mesmo ponto que os outros: Falta uma biblioteca de software pro acionamento do circuito / shield, que permita um uso menos técnico e mais criativo, com mais liberdade, pra quem efetivamente quer fazer música (o tal chiptune) com o circuito.

Software inicial:

A princípio, criar uma biblioteca (lib - de library) para facilitar o uso do PSG de forma semelhante a linguagem BASIC dos microcomputadores MSX, com funções equivalentes aos comandos SOUND e PLAY, este último, com os macro comandos de controle de notas, duração, volume etc.

A partir desse ponto, criar biblioteca de ruídos pré definidos (tiro, motor etc), acessíveis a partir de uma função simples.

Com isso disponível, programadores menos experientes podem colocar suas músicas no Arduino com programação básica, sem precisar conhecer os meandros de funcionamento do PSG.

Expandindo a usabilidade:

E se o PSG puder tocar músicas armazenadas em um cartão SD, selecionadas num shield com botões e LCD?

E se o PSG puder ser acessado a partir de uma conexão MIDI (como demonstrado no projeto MIDIarcAYde), pela USB (como fez o DQ), ou mesmo por TCP/IP, RS-485, I2C ou seja lá qual conexão estiver feita com o Arduino que hospeda o PSG shield?

E se mais de um Arduino, cada um com seu PSG shield, estiver tocando a mesma música, com mais canais de áudio e ruído, disponíveis simultaneamente?

Mas isso será assunto para as próximas publicações...