Não deu tempo do Arduino se encontrar com um Palmtop. O declínio dos equipamentos da Palm ocorreu um pouco depois da chegada dos Arduinos. Atualmente pouca gente se lembra desses portáteis com telas de 160 X 160 pixels e gray scale. Ora, com o barateamento dos glcds coloridos com resoluções muito melhores que do Palm VX, por exemplo, não vai mais valer à pena comprar um desses gadgets do final da década de 1990.
Pensando em termos econômicos, se um Palm Vx, em bom estado, custar até R$ 50,00, a compra pode compensar. Pois além da tela, você ganha uma porta serial, uma porta IrDA, uns botões configuráveis e uma tela sensível ao toque. É possível programá-lo em C e até em Python! Há aplicativos de comunicação pela porta serial que permite ao PC acessar o Palm, via Telnet (ptelnet). Outro programa muito bom é o PalmOrb, que emula um display alfanumérico de 4 X 20. E é com esse programa que faremos o encontro do Arduino Mega 2560 com um Palm Vx PalmOs 3.5.
Não é possível imaginar a quantidade de equipamentos eletrônicos que se transformam em lixo. O compromisso entre
O Projeto
Conectar um Arduino a um Palm Vx via porta serial. O Palm Vx irá servir de display de um projeto com o Arduino. A ideia é ter um voltímetro digital com 4 canais e um "amalisador de espectro" de 32 canais!. No caso do voltímetro, os valores medidos são mostrados, simultaneamente, em quatro bargraphs horizontais. Hoje, o projeto está funcionando com três canais. No caso do analisador de espectro, a tarefa é muito mais complicada. Visualizar os dados é a parte mais fácil, pois cada um dos 32 bargraphs verticais pode ser acessado e ter seu valor alterado dinamicamente. A dificuldade reside em se ter 32 filtros passa-faixa! Obviamente, vamos reduzir esse número para 8 faixas. Depois de montar a placa com o amplificador e os oito filtros poderemos montar uma expansão com mais 8 filtros e assim até formar os 32 canais. Há um "atalho" muito elegante, que é usar o Processing rodando no Raspberry Pi, o que garante a portabilidade do instrumento. Vejam só o que é possível fazer com Processing:
O software
No lado do Palm é necessário instalar o palmorb.prc, que está disponível para download na internet. No lado do Arduino, a equipe do Solucionática modificou dois sketches e transformou em um só que dá conta do recado, com muito poucas falhas. A necessidade de se fazer leituras continuas na porta serial demanda o uso de um protocolo com o mínimo de detecção e proteção contra falhas de comunicação, mas esse cuidado não foi tomado ainda. No mais, funciona como esperado: uma barra horizontal na tela do Palm varia de acordo com a tesnsão aplicada na entrada analógica A0 do Arduino.
Simples, direto e funcional. Para acrescentar mais canais basta duplicar as linhas de código e alterar o endereço de cada bargraph (1 a 4). É possível ajustar os valores lidos para caberem no espaço disponível na tela do Palm, pois de 160 pixel, são disponível apenas 100. Um aprimoramento que foi pensado é o de usar bargraph mais estreitos, e assim obter um espaço para incluir caracteres e os valores numéricos das grandezas medidas.
Sketch do Arduino (em breve)
Palmduino no mundo da Lua
Uma vantagem de usar o método de aprendizado orientado pela solução do problema é que nos deparamos com soluções brilhantes. Em uma dessas iterações da vida, querendo imaginar se era possível tornar o Palm Vx em uma ferramenta mais atual possível, a equipe de desenvolvimento de software do Solucionática conseguiu instalar um compilador Lua para o Palm (PLua) e uma IDE PLua para rodar no PC.
Que Lua é esse? Bem, trata-se de uma scripting language embarcável, ou seja, é leve e poderoso o suficiente para poder equipar diversos equipamentos eletrônicos, como por exemplo um set top box de TV Digital ou um Palm Vx. Quem quer saber mais pode clicar aqui. Há também esse excelente tutorial. Abaixo, um sketch (vamos chamar assim também) feito em Lua, compilado para .prc (que é a extensão dos executáveis do sistema PalmOs). O sketch plota as funções que o usuário inserir. É necessário modificar os eixos x e y e atentar para o limite de caracteres disponível para a função:
Com essa nova ferramenta, vamos aumentar nossas expectativas e produzir aplicativos para o Palm que usarão melhor os recursos de hardware desse jurassic device. Assim, um desafio inicial é portar para a tela de 160 X 160 o projeto do bargraph. Vamos, então, criar um novo projeto denominado de Paladino, um Arduino conectado a um Palm que roda um programa desenvolvido em Lua! Os dois projetos - Palmduino e o Paladino - vão ser tocados em paralelo. Um objetivo derivado desses projetos é adquirir um display compatível com os da Matrix Orbital para conectá-lo fisicamente a um Arduino ou Raspberry Pi.
Vamos fazer uma autocrítica. Vale à pena investir tempo e dinheiro em tecnologias ultrapassadas? Adquirir um produto usado, sem garantia e que não troca a bateria (sem quase destruir o invólucro)? A resposta é escorregadia. Depende! Se a ideia é ganhar dinheiro com a revenda desses equipamentos ou construir algum equipamento para vender, o risco de sair no prejuízo é grande. Por outro lado, se seu objetivo é montar equipamentos diversos, de muito boa qualidade, com custo baixo, nesse caso vale cada centavo investido. Há uma terceira opção, que é o aspecto ambiental. O reaproveitamento do denominado "lixo eletrônico" deveria ser obrigatório, mas a lógica do mercado despreza essa "economia" periférica. Na verdade, há quem viva desse lixo e consegue ganhar um bom dinheiro.
Mas o nosso interesse é ter um periférico que trabalhe com nossos Arduinos, Raspberry Pi's etc. Não há dúvidas que o uso de um Palm Vx (até um Palm V funciona bem) é uma alternativa surpreendentemente adequada. Programar em linguagem nativa do Palm é chato e complicado; usar o Palm Basic é voltar demais no passado, não atende os nossos objetivos; usar um compilador C (PocketC, por exemplo) é uma alternativa a ser estudada; usar Python (Pippy) não deu muito certo nos nossos testes;
Ao contrário dos resultados com as alternativas de programação citadas, o Plua (1.1 e 2.0) superou todas as expectativas. A curva de aprendizado foi mais rápida do que Python, p. ex, e os programas surpreenderam pela velocidade de execução. O que temos na "prateleira"? Está à nossa disposição o controle total da tela de 160 X 160 pixels, em alta resolução (MODO GRÁFICO), modo texto ou ambos; controle da porta serial (serial0) de forma direta, com controle de interrupção e configuração on the fly, quer dizer, é possível configurar os parâmetros da porta serial durante a execução do programa sem travamentos; uma porta IrDa (ir0), ou seja, o dispositivo pode se comunicar com outro equipamento que tenha porta infravermelha e também emular um controle remoto universal, p. ex; alguns megabytes de memória ram, para armazenar dados de sensores; um pequeno alto-falante que pode emitir sons complexos. Temos a possibilidade de fazer uma HMI (Human Machine Interface) de excelente qualidade, com botões diversos, com gráficos, imagens etc.
Em suma: temos um computador de mão que pode ser programado de maneira fácil e eficiente, por meio de uma das melhores linguagens de programação da atualidade. Assim, mesmo voltando no tempo, em relação ao hardware, estamos aprendendo Lua e aumentando a sinergia, pois nossos Roteadores Turbinados (OpenWrt) incorporam interpretadores Lua em seu core. O Iduino também usa Lua!
Quem mais usa Lua?
- Games: Wolrd of Warcraft e Angry Birds (e mais uma infinidade de outros games famosos).
- TV Digital: o Ginga, middleware do padrão brasileiro de TV Digital.
E o PalmOrb? A ideia vai ser abandonada? Provavelmente sim. Com as novas descobertas vai ser possível desenvolver um programa muito mais avançado e que pode simular um display maior e com mais funcionalidades. Vamos aguardar!