sexta-feira, 23 de julho de 2010

Como construir um leitor de código de barras

Ao pagar as suas compras em um supermercado ou loja, você observa que a atendente usa um instrumento (leitor ótico) que lê o código de barras do produto, ao qual está associado o seu preço.
Qual o princípio de funcionamento do leitor ótico?
Como é feita a decodificação do código?

Vamos lhe dar algumas noções básicas para auxiliá-lo a responder essas questões.

Código de barras

Existem vários padrões para o código de barras. Vamos introduzir as noções básicas a partir de um código de barras que criamos especialmente para essa atividade. A idéia básica é que os números decimais de 0 a 9 são escritos em números binários com quatro dígitos e representados por barras pretas e brancas de larguras fixas, dispostas paralelamente. A cor da barra é preta se o valor do dígito binário for 1 e branca se seu valor for zero.
Por exemplo, na tabela ao lado, vê-se os números decimais de 0 a 9, sua representação em números binários e a correspondente representação no nosso código de barras.



Para definir o início e fim do código de barras são usadas duas barras pretas, nos extremos, como mostrado na figura abaixo.

Exercícios!

a) Escreva os números decimais que estão representados nas figuras abaixo.

b) Escolha um número decimal com 3 dígitos e represente-o em nosso código de barras.

Links sugeridos para aprofundar essa discussão:
Para entender o código UPC...

Já somos capazes de decodificar um código de barras, escrevendo o correspondente número decimal. Mas como fazer isso automaticamente?

Montagem experimental e princípio de funcionamento de um leitor de código de barras

O leitor de código de barras da nossa atividade é constituído, fundamentalmente, por um fotodiodo emissor e um fotodiodo receptor dispostos frente à frente. O fotodiodo receptor tem sua resistência alterada em decorrência da sua exposição à luz, permitindo a circulação de corrente por ele somente nessa situação. Valendo-se disso, o funcionamento do código de barras baseia-se no bloqueio e desbloqueio do feixe de luz compreendido entre o emissor e o receptor. A figura abaixo ilustra o aparato experimental. O resistor deve ter 1000 ohms e a fonte deve ter 3 v.

Os leitores usuais usam um sistema de reflexão em que o fotodiodo emissor e o receptor são dispostos lado a lado (http://eletronicos.hsw.uol.com.br/codigos-de-barras-upc.htm). Nesta atividade, os códigos são impressos em folhas transparentes. Em seguida, passam-se as folha entre os fotodiodos rapidamente. As faixas pretas interrompem a passagem de luz e não permitem o fluxo de corrente elétrica no receptor. Já as faixas brancas (que são transparentes em função da folha em que imprimimos) permitem a incidência de luz no receptor. Estas variações de corrente são registradas no computador com o auxílio do software Audacity (http://audacity.sourceforge.net). A figura abaixo apresenta o layout do programa após a aquisição dos dados para um código de barras.

Mais um pequeno exercício!

c) Imprima em uma folha transparente o código de barras abaixo e analise os dados referentes às variações de corrente detectadas pelo audacity ao passá-lo no leitor. Aponte no gráfico as regiões correspondentes a cada uma das faixas.

Após isso, as variações de corrente detectadas pelo Audacity podem ser exportadas no formato .wav. Com o software AwaveAudio (http://www.fmjsoft.com/), os dados são transformados para o formato .txt e processados com um programa na linguagem C++ (http://www.if.ufrgs.br/cref/uab/lab/codigoBarras.exe), sendo assim decodificados para um número decimal.

Alguns links para aprofundamento:

Como funcionam os códigos de barras UPC. How Stuff Works (http://eletronicos.hsw.uol.com.br/codigos-de-barras-upc.htm)

Sistema Binário. Wikipedia (http://pt.wikipedia.org/wiki/Sistema_bin%C3%A1rio_%28matem%C3%A1tica%29)

Veja o funcionamento do leitor em video!

Algumas dicas...

Observações:
  • A taxa de amostragem do arquivo de áudio produzido com o Audacity deve ser 22050 Hz. Valores maiores saturam o conversor de decimais e menores provocam erros na conversão WAV para ASCII.
  • Existe um sentido único para o movimento do código de barras no interior do leitor.
  • Um resistor de 1000 ohms deve ser associado em série com o fotodiodo emissor (ligado ao polo positivo) para não superar a corrente máxima suportada desse componente.