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...

domingo, 19 de janeiro de 2014

Projetando um computador 8-bit - A ideia.

Há alguns anos eu me interesso por computadores home built, construídos com componentes discretos, como são os casos do Home-Built TTL CPU e do Apollo181, mas, no momento, essa categoria de projeto é muito ambiciosa pra mim.

Então passei 2013 paquerando ideias de projetos com microprocessadores de 8 e 16-bit como, entre outros, o ASAP-3, o Kiwi, o Veronica, o N8VEM e os projetos do site S100 Computers.

Inicialmente planejei construir um conjunto baseado no barramento S100, que também se mostrou ambicioso demais. Depois passei pra ideia dos SBCs (Single Board Computers - computadores de placa simples - ou única), como o Kiwi e o ASAP-3, mas a falta de modularidade atrapalha meus objetivos.

Os conceitos do N8VEM e, principalmente, do Veronica, são mais compatíveis com meus objetivos, mas diferente de seus autores, eu pretendo brincar com mais processadores, começando pelo Intel 8080 ou, talvez, o 8085.


Devo passar os próximos meses documento o projeto em um novo blog, mas ainda não decidi por um nome que possa transmitir toda a ambição do projeto. O problema é que já tenho uma grande quantidade de ideias e informações que precisam ser documentadas com urgência. Enquanto isso, as publicações vão rolando aqui neste blog, mesmo!

domingo, 23 de junho de 2013

Nerdísses específicas: sistema operacional IBM OS/2.

No último mês (maio/junho), a "brincadeira" voltou a ser, depois de muitos anos, a instalação de múltiplos sistemas operacionais em PCs antigos, com foco no sistema OS/2, da IBM.


Como eu tenho um blog orientado a esse assunto (Experimento OS/2 - que estava parado há 5 anos), os relatos desses experimentos eu publico lá, deixando esse blog aqui, mais genérico, parado.

Não vou publicar aqui cópias do conteúdo de lá, mas, por enquanto, a briga envolve o seguinte:
  • PC Pentium "1" de 166MHz 200MHz não-MMX (Compaq Presario Desktop 4126), de 1996, com alguns upgrades (RAM, memória cache, placa de rede, placa host SCSI, discos rígidos maiores);
  • Sistema operacional MS-DOS 6.22, de 1994, com extras para usar o hardware (USB, rede etc.);
  • Ambiente operacional MS-Windows for Workgroups 3.11, de 1993;
  • Sistema operacional IBM OS/2 Warp 3.0 "red spine" (sem suporte a rede e sem WinOS/2 embutido), de 1994;
  • Sistema operacional MS-Windows NT 4.0, de 1996.

quinta-feira, 9 de maio de 2013

Hacking simples do Arduino Motor Shield.

Além do complexo de "última bolacha do pacote" (não ter conectores pass-through para a conexão de mais shields em cima), o Arduino Motor Shield que eu recebi (provavelmente todos?) veio sem as barras de terminais para conexão de módulos (ou blocos) de funções para os terminais de entrada analógica, apesar de ter as ilhas para soldá-los.

A solução é substituir as barras de terminais por barras fêmeas com terminais longos (para wire-up) e acrescentar as barras de terminais faltantes.

Com muito cuidado para não estragar a placa, removi as barras de terminais (dessa vez, sem destruí-los, como fiz no caso do I/O Expansion Shield), de forma que pude reaproveitá-los na própria placa. Bastou derreter a solda com o ferro e puxar cada um dos pinos (um de cada vez) com um alicate. O terminal aquecido sai inclusive da barra plástica. Depois de todos retirados, basta recolocar os pinos na barra.

A dica é deixar a solda derreter completamente antes de começar a puxar o terminal, para não estragar a ilha ou a metalização do furo. Com um ferro de 30W, a solda derrete em alguns poucos segundos.


Aqui, com as barras reaproveitadas, já soldadas de volta na placa:

O resultado, com todos os conectores:



segunda-feira, 6 de maio de 2013

Introspecção acadêmica: História da TI para gestão e disponibilização do conhecimento.

Acho interessante o como e o porque da TI surgir a partir do pós 2ª guerra mundial. A preocupação era gerir a base de conhecimento científico de forma que ela fosse acessível e pesquisável através de processos automatizados.

Nesta época surgem os primeiros nomes notáveis (pecando por inúmeras omissões): Vannevar Bush (artigo "As we my thing", de 1945); Ted Nelson (projeto "Xanadu", de 1960); Ivan Sutherland (programa "Sketchpad", de 1963); DouglasEngelbart (apresentação "The mother of all demos", de 1968).

A TI moderna evolui a partir desses trabalhos e ideias, ramificando-se em diversas disciplinas específicas como redes, ambientes operacionais, hipertexto, gerenciamento de banco de dados, mineração de dados e por ai afora.

E é nesse contexto, de mantenimento e disponibilização da informação, que se aflora a computação para massas que, como consumidores de informação, tem seu aparente auge nos atuais dispositivos móveis, que visam muito mais o consumo do que a criação da informação.

Com os “micreiros” das décadas de 70 e 80 e o downsizing da década de 90, a história ficou focada em Xerox, Apple, Macintosh, Microsoft, Windows, IBM e PCs, como se a TI atual tivesse sido inventada nessa época, a partir do zero, ignorando e/ou descartando tudo o que houvesse antes, o que é um claro engano, uma vez que todos os conceitos já eram existentes e foram evolutiva e historicamente aproveitados.

segunda-feira, 8 de abril de 2013

Hacking simples no Arduino shield marca DFRobot modelo DFRduino I/O Expansion Shield v5.0

Como a absoluta maioria dos shields para Arduino, o DFRduino I/O Expansion Shield v5.0 tem seus defeitos e limitações de projeto.
Mesmo sendo um shield muito bem elaborado se comparado com outros shields para uso de blocos de funções, peca principalmente pela mania de ser "a última bolachinha do pacote", ou seja, não tem conectores pass-through, que permitem a conexão de mais shields em cima.

Apesar de suas múltiplas funções (conector para módulo zigbee / bluetooth bee, interface RS-485, terminais para I2C e conectores para módulos APC220, SD-Card R/W, servomotores hobby com conector de alimentação à parte, entrada e saída de alimentação e entradas analógicas), ele pode não ser o único shield no experimento caso, por exemplo, você queira usar apenas o módulo bluetooth bee nesse shield e usar mais algum outro shield em cima como, por exemplo, um protoshield (da Adafruit, da LadyAda, da Sparkfun ou o meu).

A solução é substituir as barras de pinos por um conjunto de conectores fêmea com terminais longos (para wire-up):

Como o objetivo é substituir os conectores e preservar a placa, optei por destruir a barra de pinos e não testar a minha habilidade de dessoldá-la inteira.

Para começar, com muito cuidado para não danificar a placa, cortei e removi o suporte plástico da barra de pinos:



Sem o suporte de plástico, ficou fácil remover os pinos:


Por fim, bastou remover o resto da solda dos furos com o sugador de solda:



O resultado final ficou bom, sem nenhum estrago na placa: