quarta-feira, dezembro 31, 2008

Controlando um LED com um MSP430 - Parte II

Nesta parte vamos ver o software do nosso projeto.

Como ambiente de desenvolvimento vou usar o IAR Embedded Workbench Kickstart, que é fornecido junto com o programador EZ430-F2013 e pode também ser baixado gratuitamente do site da Texas. Esta versão grátis é limitada para gerar programas de até 4KBytes; como o modelo que estamos usando possui somente 2K de Flash, é mais que suficiente.

Existem, é claro, várias maneiras de estruturar o nossa programa. Optei por programar o timer para gerar interrupções a cada 50 milisegundos e colocar toda a lógica dentro do tratamento desta interrupção. Desta forma, na maior parte do tempo o processador estará parado em modo de economia de energia.

Para controlar o botão usei uma variável de tipo byte, onde 1 bit indica o estado do botão na leitura anterior e outro o estado após o debounce. Este segundo bit só é alterado após duas leituras consecutivas iguais.

Uma segunda variável do tipo byte armazena o estado do LED: apagado, aceso continuamente ou piscando. A cada pressionamento do botão o estado muda ciclicamente.

Sem mais delongas, eis o código em C:
#include 

typedef unsigned char byte;

// Bits correspondentes aos pinos de E/S
#define BOTAO 0x01
#define LED 0x40

// Valor para contar 50ms c/ clock de 12KHz
#define TEMPO_50MS 600 // 50ms * 12KHz

// Controle do LED
static enum { APAGADO, ACESO, PISCANDO } ModoLed;

// Controles do estado do botão
#define BOTAO_ANTERIOR 0x01 // este bit indica o estado anterior
#define BOTAO_APERTADO 0x02 // este bit tem o valor c/ "debounce"
static byte ModoBotao;

void main (void)
{
// Desliga Watchdog
WDTCTL = WDTPW + WDTSSEL + WDTHOLD;

// Altera a configuração de clock para ativar o VLOCLK
BCSCTL3 |= LFXT1S1;

// Programa entradas e saídas
P1SEL = 0; // Todos os pinos como I/O
P1DIR = 0xFF & ~BOTAO; // Somente o botão é entrada
P1REN = BOTAO; // Usar resistor no botão
P1OUT = BOTAO; // Resistor é pullup

P2SEL = 0; // Todos os pinos como I/O
P2DIR = 0xFF; // Todos os pinos como saída
P2OUT = 0; // Todos as saídas em zero

// Inicia os nossos controles
ModoBotao = 0;
ModoLed = APAGADO;

// Alimentação já deve estar estável, vamos ligar o DCO
BCSCTL1 = CALBC1_12MHZ;
DCOCTL = CALDCO_12MHZ;

// Programar a interrupção de tempo real p/ cada 50ms
TACCR0 = TEMPO_50MS;
TACTL = TASSEL_1 + MC_1 + TAIE; // ACLK, up mode, interrupt

// O nosso programa principal vai ficar dormindo,
// todo o tratamento será feito na interrupção
_BIS_SR(LPM3_bits + GIE); // Dorme tratando interrupção

// Nuca vai chegar aqui
while (1)
;
}

// Tratamento da interrupção do Timer A
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A_TO(void)
{
switch (TAIV)
{
case 10: // overflow

// Trata o LED
if (ModoLed == PISCANDO)
P2OUT ^= LED;

// Trata o botão
if ((P1IN & BOTAO) == 0)
{
// Botao está apertado
if (ModoBotao & BOTAO_ANTERIOR)
{
if ((ModoBotao & BOTAO_APERTADO) == 0)
{
// Acabamos de detectar o aperto
ModoBotao |= BOTAO_APERTADO;
switch (ModoLed)
{
case APAGADO:
ModoLed = ACESO;
P2OUT |= LED;
break;
case ACESO:
ModoLed = PISCANDO;
break;
case PISCANDO:
ModoLed = APAGADO;
P2OUT &= ~LED;
break;
}
}
}
else
{
// Vamos aguardar a confirmação
ModoBotao |= BOTAO_ANTERIOR;
}
}
else
{
if (ModoBotao & BOTAO_ANTERIOR)
ModoBotao &= ~BOTAO_ANTERIOR; // aguarda confirmar
else
ModoBotao &= ~BOTAO_APERTADO; // confirmado
}
break;

case 2: // CCR1, não utilizado
break;
}
}

Alguns comentários sobre o código:
  • O include msp430.h define as constantes relativas ao microcontrolador. O modelo específico de microcontrolador é definido nas opções do projeto.
  • O MSP430 inicia a execução com o watchdog ativo, portanto é necessário desativá-lo ou desarmá-lo periodicamente.
  • Para o timer estou utilizando o VCLOCK, que é um clock interno lento (12KHz) e de baixo consumo. É somente este clock que vai estar ativo enquanto o processador aguarda uma interrupção. O VCLOCK não é muito preciso; para ter um clock preciso de baixo consumo é necessário colocar um cristal externo de 32KHz.
  • Quando o processador está rodando é usado o DCO, que é um clock interno rápido (12MHz). Como parte do processo de fabricação são gravados na Flash parâmetros de calibração do DCO, desta forma esta clock é razoavelmente preciso.
  • O MSP430 possui uma grande versatilidade nos pinos de entrada e saída digital. A recomendação da Texas é que os pinos não usados sejam programados como saída.
  • O timer no MSP420F2011 é também muito flexível o que, neste caso, pode deixar a programação um pouco complicada. No caso é usado o up mode, no qual o timer conta de 0 até o valor em TACCR0. Ao atingir esta valor, o contador volta a zero e uma interrupção é gerada.
  • A função _BIS_SR permite ligar bits do registrador de status. No caso são ligados os bits que colocam o processador para dormir com economia de energia (Low Power Mode 3) e o bit que permite interrupções. O resultado é que o processador fica parado na instrução seguinte, tratando interrupções. Quando uma interrupção ocorre, o registrador de status é salvo na pilha e o processador entra no modo normal de execução (LPM0). Ao final da interrupção o registrador de status é restaurado da pilha. Para o processamento continuar no programa principal uma interrupção precisaria alterar o registrador de status na pilha antes de retornar, o que não é feito neste programa.
  • A pragma_vetor define que a rotina seguinte é uma rotina de tratamento de interrupção. O compilador cuida de colocar o endereço da rotina no vetor de interrupções e de colocar os preâmbulos e postâmbulos adequados no código.
  • A interrupção do timer pode ser gerada por vários motivos, o registrador TAIV informa qual o motivo. No caso só estamos interessados na interrupção gerada quando o contador dá a volta.
Na próxima parte vamos ver este mesmo código em Assembly; na quarta e última parte veremos como montar o circuito, compilar o código e gravá-lo no microcontrolador.

segunda-feira, dezembro 29, 2008

Controlando um LED com um MSP430 - Parte I

A exemplo do que fiz com o microcontrolador PIC, nesta série vamos ver como controlar um LED desta vez usando um microcontrolador MSP430 da Texas.

O Objetivo

O objetivo desta série é mostrar o projeto do hardware e software de um pequeno dispositivo que ilustra como controlar um LED usando um MSP430. O dispositivo possui um LED e um botão que será usado para controlar o estado do LED (apagado, piscando ou aceso).

O Projeto de hardware

Neste projeto vou usar o MSP430F2011; é simples alterar tanto o hardware como o software para outros modelos.

O MSP430F2011 tem as seguintes vantagens para este projeto:
  • pode operar com alimentação de 1.8 a 3.6V, o que simplifica a operação com baterias e pilhas
  • disponível em encapsulamento DIP de 14 pinos, o que simplifica a montagem
  • possui dois osciladores internos, um que opera até 16 MHz e outro de aproximadamente 12KHz, dispensando a conexão de um cristal ou ressonador
  • memória Flash para o programa, o que simplifica a gravação e regravação
  • gravador e depurador de baixo custo (EZ430-F2013)
O primeiro passo para o projeto de hardware é examinar o datasheet do microcontrolador, que pode ser baixado do site da Texas.

No datasheet verificamos que o clock máximo varia de 6 a 16MHz dependendo da alimentação. Minha opção foi operar com o oscilador interno (DCO) a 12MHz usando uma bateria de 3V (Duracell DL2032 ou equivalente). O positivo da bateria deve ser conectado ao pino 1 (VCC) do MSP430 e o negativo ao pino 14 (VSS).

O pino 10 (RST) deve ser ligado a VCC através de um resistor de 47K. Este pino é responsável pelo reset do microcontrolador e será usado também na programação da Flash.

O LED e o botão são conectados a pinos de entrada/saída de uso geral, que no MASP430F2011 são qualquer um dos pinos de 2 a 9 ou um dos pinos 12 e 13. Escolhi o pino 13 (P2.6) para o LED e o pino 2 (P1.0) para o botão, para facilitar a minha montagem.

O LED, como diz a sigla, é um diodo emissor de luz. Quando submetido a uma tensão direta acima de sua tensão de queda ele emite uma luz com intensidade proporcional à corrente. Existem vários modelos de LEDs, que emitem as mais diversas cores. A tensão de queda é tipicamente de 2V e uma intensidade boa para um LED montado em painel pode ser obtida com uma corrente de 10 mA.

Voltando ao datasheet do MSP430, verificamos que um pino de entrada/saída é capaz de gerar ou absorver uma corrente de até 40mA e tem uma tensão de 0,6V (nível zero) ou VCC-0.6V (nível um). A capacidade de corrente do MSP430 permite ligar um LED diretamente das duas maneiras abaixo:


Na primeira maneira, com o LED ligado entre o pino do MSP430 e VSS, o valor do resistor em série (conforme a lei de Ohm) deve ser

(VCC - 0.6 - 2,0)/0,01 = 40 ohms

Analogamente, com o LED ligando entre o pino do MSP430 e VCC, o valor do resistor deve ser

(VCC - 0.6 - 2,0)/0,01 = 40 ohms

No primeiro caso, o LED acende quando o pino do MSP430 está no nível um, no segundo quando está no nível zero. No meu circuito adotei a primeira maneira com um resistor de 39 ohms (o que gera uma corrente de ligeiramente acima de 10mA).

Para a ligação do botão vamos usar o resistor de pullup interno do MSP430. Desta forma, o botão pode ser ligado diretamente ao VSS e erá lido como nível zero quando fechado e como nível um quando aberto.

Para facilitar a gravação, vamos colocar um conector de programação no circuito. Para a programação com o eZ430-F2013, usando a alimentação do circuito, basta conectar dois pinos (e mais o VSS):

pino 11 TEST
pino 10 RST

O ideal seria usar um conector igual ao do programador, porém ele é difícil de ser encontrado e tem um espaçamento muito pequeno para montagens convencionais. A solução é soldar um cabo no conector e colocar um conector mais comum na outra ponta:


O pino 1 do conector poderia ser usado para alimentar o circuito, neste caso seria preciso desconectar a bateria durante a programação. Para simplificar deixei este pino aberto nas duas pontas.

A lista de componentes para o circuito fica sendo:
  • 1 MSP430F2011 (encapsulamento N)
  • 1 LED
  • 1 Botão de contato momentâneo
  • 1 Resistor de 39 Ohms 1/8 W
  • 1 Resistor de 47 KOhms 1/8 W
  • 1 Bateria de 3V
  • 1 Suporte para a bateria
O circuito completo fica (clique para ampliar):



No próximo post da série vamos ver o software.

sábado, dezembro 27, 2008

Tintim no País dos Sovietes

Os álbuns do Tintim fizeram parte da minha infância. Naquele tempo eram livros caros, de capa dura; li a maioria deles emprestados por um vizinho. Este ano a Cia das Letras lançou dois números inéditos no Brasil: "Tintim no País dos Sovietes" (a primeiro de todos, que comento aqui) e "Tintim e a Alfa-Arte" (o último, que foi lançado incompleto postumamente).


O grande destaque visual das histórias do Tintim sempre foram os detalhes perfeccionistas dos desenhos (por exemplo, li uma vez que Herge mandou seus assistentes fotografarem a porta de um avião que aparecia parcialmente no fundo de um quadrinho do "Vôo 714 para Sydney", para garantir que estivesse correta).

O que eu não sabia é que os primeiros álbuns foram todos revisados e redesenhados. e somente aí ganharam as cores e detalhes que eu conheci. A exceção é - você já deve ter deduzido - justamente o "Tintim no País dos Sovietes". Originalmente publicado em 1929 e 1930 em um suplemente infantil de um jornal belga, foi publicado como álbum brevemente em 1930. Só voltou a ser republicado em 1973, na forma de facsimile.

É este facsimile que a Cia das Letras traduziu. O resultado é um álbum bem mais longo que os demais, com 137 páginas, porém com um traço mais grosseiro em preto-e-branco:


O enredo também é um pouco diferente dos demais álbuns, com críticas muito diretas ao comunismo (a crítica social e política está presente na maioria dos álbuns de Tintim, exceto pelos produzidos durante a ocupação da Bélgica pelos nazistas, porém de uma forma mais refinada).

Apesar do número maior de páginas, fica uma impressão de repetição, com Tintim sendo capturado e fugindo inúmeras vezes.

A grande pergunta é: compensa comprar este álbum? Certamente não para quem ainda não conhece Tintim; neste caso é melhor algum dos outros como "A Ilha Negra" ou "O Cetro de Ottokar". Se você já conhece Tintim, mas ainda não leu todos os álbuns, sugiro completar primeiro o resto da coleção. Para aqueles que já leram todos os demais e anseiam por mais histórias, aí sim recomendo "Tintim no País dos Sovietes".

13/01/09: Revisado o texto.

sexta-feira, dezembro 26, 2008

Livraria Cultura: Nota 10

Eu estava de olho há algum tempo em duas caixas de DVDs, aguardando a entrada de dinheiro (coisas de que é empresário e tem rendimento variável e incerto). Acabei colocando o pedido na manhã do dia 23 de dezembro. Coloquei no mesmo pedido as duas caixas para aproveitar uma promoção de frete grátis para pedidos acima de um certo valor.

Uma das caixas estava com indicação de "entrega foguete" - entrega no mesmo dia para a Grande São Paulo. Normalmente solicito a entrega na empresa, que fica em São Paulo, mas deste vez pedi para entregar em casa, em Osasco. O entregador chegou quase junto comigo, no início da noite.

A outra caixa estava com indicação de postagem em até um dia útil; para o frete expresso é mais um dia útil portando só esperava receber no final da semana. Além disso, na manhã do dia 24 reparei que a disponibilidade tinha sido alterada no site para 10 dias úteis, sinal que o estoque deles tinha acabado.

Imagine a minha surpresa quando a Livraria Cultura ligou para minha casa na tarde do dia 24. Maior ainda quando informaram que o entregador estava na minha rua e não estava achando a casa (a minha casa tem um numeração incoerente com as demais da rua).

É realmente incrível que (a) os prazos de postagem estavam rigorosamente certos, mesmo para um item que estava em final de estoque; (b) apesar de não terem nenhuma obrigação, optaram pela entrega por courier ao invés de Sedex; (c) ao não encontrar a casa o entregador ligou para a livraria e aguardou um retorno.

A Livraria Cultura nem sempre tem os melhores preços, mas o serviço deles sempre me surpreende. Se você deseja comprar um livrou ou DVD, não deixe de dar uma olhada no siste deles (www.livrariacultura.com.br)

terça-feira, dezembro 23, 2008

Resoluções de Ano Novo - Edição 2009

Mais um ano complicado, mais resoluções não cumpridas:
  • Instalar e usar sistema de controle de versão: esta eu delegei. Mesmo assim não aconteceu, mas do começo do ano que vem não passa.
  • Fazer até o fim pelo menos dois dos "programas maravilhosos" que eu invento: nada feito. Vamos ver se nas férias consigo pelo menos começar um deles.
  • Aprender e usar Python: também não saiu do zero.
  • Trabalhar para diminuir as listas de pendências pessoais e profissionais, evitando criar novas pendências: falhou. A lista de pendências disparou no segundo semestres e somente agora parece estar baixando. Estou tentando delegar mais, mas isto não resolveu muito (ver o primeiro item).
  • Não trabalhar mais que 50 horas por semana: também falhou. Com a lista de pendências saindo do controle, acabei tentando compensar trabalhando feito louco. Mudanças no horário do resto da família também contribuiu para isto.
  • Melhorar a regularidade de posts no blog: sucesso! Dei uma rateada no final do primeiro semestre mas o segundo foi muito produtivo.
As novas resoluções para 2009
  • Melhorar o meu foco e tentar fazer menos coisas ao mesmo tempo.
  • Repensar minha forma de trabalho, para colocar manter as pendências sob controle e reduzir o nível de trabalho para algo razoável.
  • Usar com regularidade um sistema de controle de versões.
  • Fazer até o fim pelo menos um dos meus "projetos maravilhosos".
  • Lançar o meu segundo blog (que não vai ter nada a ver com tecnologia).
  • Chegar ao Local Finals do Google Code Jam.

Um Feliz Natal a ambos os meus leitores!

domingo, dezembro 21, 2008

Alta Fidelidade nos Anos 50

Antes um aviso: as imagens que eu vou mostrar são de bem antes de eu nascer, apesar delas terem tido alguma influência na minha infância.

O termo "Alta Fidelidade" (ou Hi-Fi) é possivelmente desconhecido da maioria de vocês. Mais estranho ainda deve ser uma revista de Áudio cheia de fórmulas e circuitos, voltada para os hobbistas montarem os seus próprios aparelhos de áudio.


A imagem acima é de uma coletânea de artigos da revista Audio Engineering de 1950 a 1952. O meu pai tem também a terceira edição, com artigos de 1952 a 1955 (de onde tirei o Concrete Monster).

Ulta-Linear Williamson Amplifier


Um bom sistema de áudio de Alta Fidelidade precisa ter um bom amplificador de potência, e o Williamson era uma das principais referências. O meu pai tinha dois destes aparelhos, cada um com 20W RMS de potência, um montado por ele aqui no Brasil e outro comprado nos Estados Unidos. Estamos falando, é claro, de um a,plificador mono aural. Um dos meus primeiros contatos com eletrônica foi ajudando o meu pai a montar um kit de pré-amplificador estéreo (já com transistores) para ser ligado aos dois Williamsons. Foi com estes amplificadores que eu escutava discos na minha adolescência.

Caixas Acústicas

Outra diversão dos hobbistas era a construção de suas próprias caixas acústicas e vários artigos traziam fórmulas e ábacos para o projeto. Ábacos eram gráficos que eram usados facilitar os cálculos numa época em os engenheiros tinham que se virar com réguas de cálculo e tábuas de logaritmos.

As caixas que tenho na minha sala são de construção própria, na época do meu casamento e estão se aproximando de duas décadas e meia de bons serviços:


Limitações orçamentárias impediram a inclusão de um alto-falante de médios; o mesmo ocorreu nas demais caixas que o meu pai montou. Por outro lado, as minhas caixas ganharam o melhor acabamento, cortesia do marceneiro que fez os armários embutidos da minha primeira casa.

Até o final do século passado, um bom alto-falante estava associado ao tamanho. Alguns hobbistas se deixavam levar pelo entusiasmo, como o modelo abaixo que servia também de estante:

Nada ganha, entretanto, do Concrete Monster da figura abaixo. Infelizmente a minha mãe e a minha esposa não deixaram fazer um destes.


22/12/08 19:10: Corrigidos erros grosseiros de digitação.

quinta-feira, dezembro 11, 2008

LightScribe - Parte 3: O SDK

Nas partes anteriores (aqui e aqui), descrevi a tecnologia LightScribe e os aplicativos disponíveis para a impressão de rótulos em CD e DVD usando o LightScribe. Nesta parte final vamos ver como fazer os nossos próprios aplicativos (ou acrescentar a impressão em um aplicativo já existente).

O SDK

O Kit de Desenvolvimento (SDK) também está disponível no site oficial. Como vou descrever adiande, dá até para desenvolver sem ele.

O SDK instala no seu micro:
  • A documentação (fraca) do SDK
  • Um arquivo de include (LSPrintLauncher.h) e uma library (LSPrintLauncher.lib) para usar com C ou C++
  • Um exemplo em C++, utilizando a MFC
Como É Feita A Impressão

Vou matar de cara o suspense e mostrar o cadaver atrás da cortina:
  • O seu programa cria a imagem a imprimir em um arquivo (bmp, png, jpg).
  • Você chama a função launchPrintOptions que está em LSPrintLauncher.dll.
  • launchPrintOptions dispara LSPrintDialog.exe que apresenta o diálogo de impressão.
  • Se o usuário confirmar a impressão, LSPrintDialog.exe dispara LSPrintingDialog.exe que faz a impressão.
Onde estão LSPrintLauncher.dll, LSPrintDialog.exe e LSPrintingDialog.exe? No LightScribe System Software (LSS) que eu mencionei na segunda parte.

Três Formas de Imprimir

Entendido o mecanismo de impressão, dá para perceber que temos três maneiras de imprimir:
  • Linkar LSPrintLauncher.lib e chamar diretamente a função launchPrintOptions. Isto é o mais simples mas pressupõe que (a) a sua linguagem permite linkar direto com uma library (b) a DLL e os .exes do LSS estão no path.
  • Linkar dinamicamente e LSPrintLauncher.lib e chamar indiretamente a função launchPrintOptions. A API do Windows possui as funções para carregar na memória uma DLL e localizar uma rotina dentro dela pelo nome. É "bruxaria nível 2", mas tem a vantagem de não precisar linkar a lib e poder localizar a DLL em tempo de execução (o modo oficial é olhando no registry em HKLM\SOFTWARE\LightScribe\LSPrintLauncher).
  • Chamar diretamente os executáveis. Isto pode criar problemas de compatibilidade se algum dia os nomes ou parâmetros dos executáveis forem alterados, mas dá para fazer até de arquivo batch.
Detalhes e Mais Detalhes

Obviamente estou resumindo bem a coisa. As 16 páginas da documentação do SDK tem um pouco mais de detalhes, principalmente os parâmetros das funções e dos executáveis. O parâmetro mais importante é o nome do arquivo com a imagem.

Um ponto importante é que os programas são rodados separados da sua aplicação. Isto pode criar o problema de saber quando o arquivo pode ser apagado. Uma opção interessante é deixar o programa de impressão apagá-lo quando não precisar mais dele, neste caso é recomendado criar o arquivo com um nome único no diretório temporário do usuário.

Além de launchPrintOptions, a DLL possui as rotinas launchPrint (que dispara a impressão) e haveLSDrive que informa se existe uma unidade LightSribe no micro.

domingo, dezembro 07, 2008

LightScribe - Parte 2: O Software

Nesta segunda parte vamos ver algumas opções de software para gravação de rótulos através da tecnologia LightScribe.

LightScribe System Software (LSS)

Esta é parte do software que comanda a unidade e fornece uma API para que as aplicações façam a gravação. É, portanto, um software obrigatório.

No caso do meu notebook, este software veio pré-instalado. Já o desktop foi objeto de um downgrade (troca do Vista por XP) e ficou sem ele. Não tem problema, basta baixar do site oficial:

http://www.lightscribe.com/downloadsection/Windows/index.aspx?id=810

(Esta é a versão Windows, tem também para Linux e Mac).

Este software instala o LightScribe Control Panel; por default o software é executado automaticamente na iniciação do Windows (como gravar rótulos é uma atividade pouco frequente, recomendo desligar esta opção).

LightScribe Simple Labeler

Também disponível gratuitamente no site oficial, este programa é, como o nome sugere, muito simples.

O rótulo gerado é bastante simples e com layout inflexível: duas linhas de texto (uma superior e uma inferior) e duas bordas gráficas nas laterais:


A interface é um daqueles assistentes que praticamente insultam a inteligência do operador. A primeira tela pede para colocar o disco virado para baixo na unidade (esta tela pode ser desligada). A segunda tela é onde você informa as duas linhas de texto, o fonte (você não pode escolher o tamanho) a imagem da borda (dentre 8 opções), a unidade de disco LightScribe e a quantidade de cópias. A terceira tela mostra um preview da etiqueta (em branco e preto), permitindo disparar a gravação ou voltar atrás.

LightScribe Template Labeler

Mais um software gratuito disponível no site oficial, este é um software realmente útil, capaz de suprir as necessidades da maioria dos usuários.

A interface também e do tipo assistente (e também tem um primeira tela opcional inútil), mas a montagem da imagem é bem mais flexível: você escolhe um modelo (template) e edita o conteúdo dos itens do template (imagem e textos). Na edição dos textos é possível escolher fonte, tamanho, efeitos (negrito, sublinhado, itálico) e o alinhamento. O programa vem com 15 templates e tem vários outros para download no site oficial.

Outros Programas

Como veremos na terceira parte, a interface de programação do LSS é muito simples. Não é surpresa, portanto, que várias empresas responsáveis por programas populares de gravação de CD e DVD suportem a impressão de rótulos via LightScribe (por exemplo, Nero, Roxio e Sonic).

No caso do meu notebook, vem instalado o CyberLink DVD Suite, que inclui o LabelPrint. A função de gravação de rótulos LightScribe no LabelPrint é ao mesmo tempo simples e flexível. Existem alguns modelos (layouts) prontos e você pode acrescentar campos de texto (tanto retangular como curvo) e figuras.


A não ser que você queira fazer algum muito especial ou algo mais automático, os softwares disponíveis no site oficial serão mais que suficiente. Caso contrário, você pode fazer o seu próprio software - é o que veremos na terceira e última parte.

sábado, dezembro 06, 2008

LightScribe - Parte 1: A Tecnologia

O meu notebook traz em destaque a indicação de gravador de DVD com LightScribe. Por uma parcial coincidência, o meu novo micro no trabalho também tem um gravador com LightScribe (ele também é HP). Mas o que é LightScribe? Nesta pequena série de posts vou falar o que é, as aplicações (grátis) para uso e no SDK para quem quiser usar este recurso nos seus próprios programas.

O Que É LightScribe?

Sucintamente, LightScribe é uma tecnologia para usar o laser do gravador de CD ou DVD para desenhar figuras (ou texto) na parte superior de midias especiais. Isto permite rotular o CD ou DVD diretamente no gravador.

A Tecnologia

A tecnologia foi inventada por um engenheiro da HP e é objeto de uma patente.

A midia recebe na parte superior uma cobertura com um verniz que muda de cor quanto atingido pelo laser do gravador. Ela possui também uma marcação no anel central.

Uma unidade de gravação LightScribe utiliza um laser e mecanismo comuns, porém é capaz de usar a marcação na midia para obter precisão no posicionamento no sentido de rotação do disco (que não é crítico quando estamos escrevendo dados mas é vital para desenhar a figura).

Sob controle do software adequado, o laser é acionado nos momentos apropriados para mudar a cor de pontos específicos, desenhando assim a figura. Uma vez que as unidades tem somente um laser, é necessário virar o disco (colocar a face superior para baixo) para gravar o desenho.

A gravação é monocromática. Inicialmente estavam disponíveis somente discos com uma cor dourada que muda para um cinza escuro quando atingido pelo laser. Atualmente estão disponíveis outras cores (porém continua sendo uma cor única). Uma vez alterada a cor de um ponto, não existe volta (isto é, não existem discos apagáveis). É possível acrescentar desenhos (escurecendo pontos) mas não é possível substituir um desenho já gravado.

Cuidados e Desvantagens

É necessário alguns cuidados para evitar que a gravação se apage, porém são os cuidados já recomendados para o bom armazenamento de midias: evitar calor e humidade excessivos e a incidência contínua de luz direta. Também não é recomendada a manipulação contínua da midia, pois resídios de produtos químicos (como loções e shampoos) podem afetar a gravação.

O processo de gravação é relativamente lento, podendo chegar a 20 minutos (o que é mais demorado que gravar o conteúdo). Não é algo para ser usado em produção em série.

Para quem mora aqui no Brasil, a principal desvantagem é a midia especial, que não é fácil de encontrar e custa mais caro. Procurando na internet, achei para venda na Tecnomidia (http://www.tecnomidia.com.br). Para meus testes comprei:
  • CD-R Multilaser: 52x, veio num pacote de 10 CDs (embrulhado em celofane). Dentro do pacote, cada CD vem em um envelope branco com janela transparente.
  • DVD+R TDK: 16x, veio uma embalagem de pino (DVDs sem embalagem) dentro de uma caixa bonita.

Para ver as opções de midia LightScribe na Tecnomidia, digite "LightScribe" no box "Localize Produtos", para ver os detalhes do produto é preciso clicar em Comprar. No momento a maioria das opções está fora de estoque. A compra pela internet ocorreu sem problemas, porém devo alertar que a Tecnomidia tem uma política comercial justa mas pouco usual: o preço varia conforme a forma de pagamento (cartão de crédito, boleto, depósito, etc). Os preços apresentados podem sofret um pequeno acréscimo após a seleção da forma de pagamento. Além disso, o preço por unidade cai à medida que a quantidade comprada aumenta.

Na época em que comprei (out/08), com pagamento com cartão de crédito, saiu R$1,53 por CD e R$2,45 por DVD (lembrar que foram 10 unidades de cada). É bem mais caro que CDs e DVDs normais, mas não chega a ser proibitivo para alguns CDs ou DVDs especiais que você queira dar de presente. Os preços já subiram, efeito da "marolinha".

Links

O site oficial da tecnologia é http://www.lightscribe.com/
Mais alguns detalhes podem ser encontrados na Wikipedia http://en.wikipedia.org/wiki/Lightscribe


No próximo post vou falar sobre as opções de software.