Índice:

Leitor de código de barras Raspberry Pi Talking: 12 etapas
Leitor de código de barras Raspberry Pi Talking: 12 etapas

Vídeo: Leitor de código de barras Raspberry Pi Talking: 12 etapas

Vídeo: Leitor de código de barras Raspberry Pi Talking: 12 etapas
Vídeo: TaoTronics® USB Barcode Scanner 2024, Novembro
Anonim
Raspberry Pi Talking Barcode Reader
Raspberry Pi Talking Barcode Reader

Fig.1 Scanner de código de barras do DX.com

Visão geral

Atualização: um breve vídeo de demonstração está disponível

Minha mãe não consegue mais ler os rótulos dos produtos de mercearia, então procurei soluções. Depois de ver que os leitores de código de barras para cegos rodam muitas centenas de dólares, eu queria ver o que poderia ser feito usando um Raspberry Pi e um leitor de código de barras USB.

Outra imitação importante era que isso deveria funcionar SEM uma conexão com a Internet (como em uma loja ou na casa de um amigo). Portanto, o banco de dados e a conversão de texto em voz precisavam ser autocontidos.

Tentei uma versão baseada em câmera do leitor de código de barras, mas a iluminação e a posição da câmera causaram problemas de confiabilidade para alguém que não conseguia ver claramente. Isso também exigia visão para configurar e usar o aplicativo. Então mudei para um leitor de código de barras USB Laser, especialmente porque agora eles estão disponíveis por menos de US $ 30 e o Raspbian Jessie os suporta direto da caixa.

Eu também experimentei o novo Amazon Dash Wand, mas ele não fala o item digitalizado e requer uma conexão com a Internet para funcionar.

A ideia era escanear um item e fazer com que o Raspberry consultasse um banco de dados interno de códigos UPC e, em seguida, falasse a descrição do produto usando texto para fala.

Para tornar a unidade o menor possível, eu queria usar um Raspberry Pi Zero. Eu também queria operar a unidade com a energia da bateria.

Para atender a esses requisitos, algumas compensações foram necessárias. Como o Zero não tem um conector de áudio externo, reutilizei o design de áudio do meu projeto "Earthquake Pi", pois era de baixo custo (cerca de US $ 6) e muito pequeno. Como alternativa, pode ser possível substituir o "One Transistor Audio for Pi Zero".

Para o scanner de código de barras a laser, encontrei um no DX.com. Ele é desligado do Raspberry USB e custa cerca de US $ 25. (veja as peças abaixo)

Etapa 1: ATUALIZAR

Com a chegada do Raspberry Pi Zero W, vou mudar para ele. Tudo aqui é igual, exceto que você precisa configurar a conexão WiFi para o Pi. Isso significa que você não precisa de um hub USB para o Zero para configuração e uso.

Você pode configurar o WiFi usando:

thepihut.com/blogs/raspberry-pi-tutorials/…

Você sabia?

Se você instalar o Raspbian Jessie em um cartão SD usando um PC com Windows, poderá criar dois arquivos no cartão para configurar o acesso WiFi e SSH antes de inicializá-lo em um Raspberry?

Para isso, suponha que seu cartão SD esteja montado atualmente como K: em seu PC:

1) Instale a imagem Raspbian Jessie mais recente no SD. Para este projeto, Jessie Lite deve funcionar.

www.raspberrypi.org/downloads/raspbian/

2) Com o bloco de notas, crie um arquivo chamado apenas “ssh” e use Salvar como “Todos os arquivos” em K: / ssh

O arquivo pode conter qualquer coisa. É o nome do arquivo que é importante. NÃO deve ser “ssh.txt” !!!

3) Com o bloco de notas, crie um arquivo chamado “wpa_supplicant.conf” com o seguinte:

ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdevupdate_config = 1

rede = {

ssid = "mySSID" psk = "mypassword" key_mgmt = WPA-PSK}

Use Salvar como “Todos os arquivos” para K: / wpa_supplicant.conf Novamente, não deixe o Bloco de Notas alterá-lo para “wpa_supplicant.conf.txt” !!

Quando você inicializar o Raspberry pela primeira vez, Jessie irá procurá-los e se conectar ao seu Wifi. No entanto, você terá que procurar o endereço IP em seu roteador, já que ele foi atribuído automaticamente.

Etapa 2: Lista de peças

  • Raspberry Pi Zero (ou qualquer Raspberry Pi, se o tamanho não for um problema)
  • Leitor de código de barras a laser USB

    www.dx.com/p/ls-4209-laser-bar-code-scanner…

  • Para Raspi Zero, adicione Adafruit I2S 3W Class D Amplifierhttps://www.adafruit.com/products/3006
  • Alto-falante pequeno. (Para Pi 2, 3, use um amplificador e alto-falante externo.)
  • Adaptador USB Micro para USB OTGhttps://www.adafruit.com/products/2910
  • Bateria 5V 1Amp USB como ashttps://www.adafruit.com/products/1959
  • Cabo USB para micro USB para bateria.
  • Hub USB e Ethernet (pelo menos para o trabalho de configuração inicial, não necessário para Zero W ou Raspi 2, 3)
  • Software do GITHUB:

Etapa 3: leitor de código de barras a laser USB

Leitor de código de barras laser USB
Leitor de código de barras laser USB

Os leitores de código de barras a laser são mais tolerantes em sua capacidade de escanear uma etiqueta UPC do que as câmeras. Eles também funcionam bem mesmo em etiquetas mal iluminadas ou mal colocadas.

Você precisará do micro adaptador USB para USB para conectá-lo ao Zero.

O punho e o gatilho do scanner tornam-no fácil de usar.

Ele também fornece feedback quando verifica um rótulo com êxito.

Futuro ToDo:

No projeto final, eu cortaria o cabo para encurtá-lo e soldaria diretamente aos pinos USB no Zero para reduzir o tamanho e a probabilidade de falha do conector. O Zero e a bateria seriam fixados diretamente na parte inferior da alça do scanner em uma caixa impressa em 3D.

Etapa 4: banco de dados UPC

Esta é a parte mais mal coberta do projeto, já que existem literalmente milhões de códigos UPC e muito poucos bancos de dados de código aberto disponíveis para download. Infelizmente, a maioria dos bancos de dados UPC são bastante caros e exigem conectividade com a Internet.

Consegui juntar alguns bancos de dados de código aberto (fontes no Apêndice abaixo), mas mesmo com quase 700.000 itens nele, um grande número está faltando.

Para este fim, fiz duas coisas; um é focar em itens de mercearia especificamente e o outro é adicionar um servidor web ao Raspberry para permitir a adição de novos códigos UPC manualmente, embora isso exija pelo menos conectividade de rede local.

Futuro ToDo:

Eu faria do Zero W um "ponto de acesso" para que você pudesse se conectar a ele em qualquer lugar para adicionar novos códigos UPC.

Etapa 5: Text-to-Speech

Usei o programa text to speech chamado “Flite”, pois tinha o melhor compromisso entre qualidade de voz e velocidade de conversão no Zero. Outros pareciam um pouco melhores, mas eram muito lentos para se converter.

Você também pode conferir o tutorial da Adafruit:

Observe que vai demorar um pouco de "treinamento de ouvido" para se acostumar com a inflexão da fala, mas não é tão ruim.

Escanear o mesmo item novamente irá repetir o áudio.

Futuro ToDo

Você pode adicionar um conector de fone de ouvido para que os idosos possam ouvir a voz com mais facilidade em locais barulhentos.

Etapa 6: energia da bateria

O sistema pode funcionar com uma bateria USB de 5 V, como a usada para recarregar telefones celulares.

O problema é que quando você desconecta a bateria ou a bateria acaba, o Pi irá travar com a chance de corromper a unidade SD.

Para resolver isso, é necessário um botão que execute um comando de desligamento. Provavelmente usarei um como este:

www.element14.com/community/docs/DOC-78055…

(Sim … outro "ToDo Futuro!")

Etapa 7: Parte I - Adicionando Áudio a Pi Zero

Parte I - Adicionando Áudio a Pi Zero
Parte I - Adicionando Áudio a Pi Zero
Parte I - Adicionando Áudio a Pi Zero
Parte I - Adicionando Áudio a Pi Zero
Parte I - Adicionando Áudio a Pi Zero
Parte I - Adicionando Áudio a Pi Zero

(Pule esta parte se não estiver usando um Zero!)

Em um Pi Zero, você precisará adicionar áudio externo, uma vez que não é integrado. Usei o “Adafruit I2S 3W Amplifier breakout MAX98357A” de baixo custo

Isso requer configuração usando o excelente tutorial da Adafruit em:

Conforme mostrado na parte de fiação do tutorial, conecte:

• Amp Vin para Raspi Zero Pi 5V • Amp GND para Raspi Zero Pi GND • Amp DIN para Raspi Zero Pi # 21 • Amp BCLK para Raspi Zero Pi # 18 • Amp LRCLK para Raspi Zero Pi # 19

Conecte um pequeno alto-falante aos condutores de áudio da placa.

Configuração do software de áudio Pi Zero AdafruitTambém mostrado no tutorial de configuração do software Adafruit, execute o comando CURL abaixo:

$ curl -sS https://raw.githubusercontent.com/adafruit/Raspbe…> | bash

Após a reinicialização, teste o áudio usando o teste de alto-falante:

$ speaker-test -c2 --test = wav -w /usr/share/sounds/alsa/Front_Center.wav

Se você tiver problemas, volte ao tutorial do Adafruit começando na visão geral. Pode ser necessário seguir as etapas de “Instalação detalhada” no tutorial para verificar todos os arquivos atualizados.

Passos importantes necessários para áudio Zero e Max98357: Por padrão, o áudio ALSA só funciona em estéreo, enquanto o texto para fala Flite é mono. Além disso, o áudio tem “estalos” toda vez que começa a tocar.

(Consulte:

Você deve fazer o seguinte:

1) Anexe uma linha a /boot/config.txt

$ sudo nano /boot/config.txt

dtoverlay = i2s-mmap

2) Substitua /etc/asound.conf

$ sudo nano /etc/asound.conf

pcm.hifiberry {type hw card 0} pcm.! default {type plug slave.pcm "dmixer"} pcm.dmixer {type dmix ipc_key 1024 slave {pcm "hifiberry" channels 2}} ctl.dmixer {type hw card 0}

3) Reinicie seu Pi.

Tente o teste de alto-falante novamente. Deve soar melhor agora. Depois de concluir o tutorial de configuração, incluindo os testes de áudio, o som deve estar pronto.

Observe que você pode querer adicionar um fone de ouvido para áudio, se for levá-lo a um supermercado ou ambiente barulhento.

Etapa 8: Parte II - Instalação do software

Isso assume que você já tem Raspbian Jessie instalado e pode acessar a linha de comando do Linux. Você não precisa da versão GUI do Raspbian, mas está ok para usar.

Você NÃO precisa do scanner USB conectado no momento, caso precise da porta USB para Ethernet ou teclado / mouse.

Certifique-se de que seu sistema operacional está atualizado:

$ sudo apt-get update $ sudo apt-get upgrade

Na linha de comando, vá para o diretório inicial pi e baixe o repositório GITHUB:

$ cd / home / pi $ sudo para instalar git $ git clone https://github.com/rgrokett/TalkingBarcodeReader….> https://github.com/rgrokett/TalkingBarcodeReader….> $ cd TalkingBarcodeReader $./install. sh

Isso levará algum tempo, principalmente se for a primeira vez e o servidor web e o PHP precisarem ser instalados ou atualizados. Se necessário, você pode executar isso mais de uma vez. Entre outras coisas, isso instala os arquivos de código de barras e o banco de dados UPC em: / var / www / html / upc

Em seguida, edite /etc/rc.local e acrescente a linha a seguir antes de "saída 0"

$ sudo nano /etc/rc.local

fi sudo /var/www/html/upc/bin/run.sh saída 0

Assim que a instalação for concluída, desligue o Pi, conecte o leitor de código de barras USB e reinicie.

$ sudo shutdown now

Ligue-o novamente e você ouvirá um breve discurso de inicialização.

Nesse caso, tente escanear um código de barras de um item de mercearia. Se tudo correr bem, você deverá ouvi-lo falar o item (ou falar “Não encontrado”). Caso contrário, verifique o guia de solução de problemas a seguir.

Etapa 9: Solução de problemas

Solução de problemas
Solução de problemas

Se não ouvir nenhum som, você precisará tentar os seguintes comandos:

1) Verifique se o áudio da conversão de texto em voz está funcionando:

$ sudo flite -voice awb -t "teste"

Se você receber um erro, certifique-se de que o flite foi instalado:

$ sudo apt install flite

Se você receber o seguinte erro, certifique-se de atualizar /boot/config.txt e /etc/asound.conf mostrado na seção Configuração de áudio acima no Raspi Zero: audio_open_alsa: falha ao definir o número de canais para 1. Argumento inválido.

Se você não obtiver nenhum erro ou som, verifique se o áudio do Raspberry está funcionando.

sudo aplay /usr/share/sounds/alsa/Front_Center.wav

1) Você pode precisar forçar a saída de áudio do conector de áudio: (veja a fig.1 acima)

$ sudo raspi-config -> 7 opções avançadas -> Áudio A4

2) Depois de verificar se o áudio e a conversão de texto em voz estão corretos, verifique o leitor de código de barras:

cd / var / www / html / upc / binsudo python./test.py

Você deve ver um número de código de barras numérico exibido ao digitalizar um código de barras. (O programa de teste NÃO inclui saída de áudio ou conexões de banco de dados.)

3) Se tudo isso estiver certo, verifique o arquivo “nohup.out” para ver as mensagens de erro:

cd / var / www / html / upc / binsudo cat nohup.out

Problemas prováveis são pacotes ausentes ou permissões incorretas (ou BUGs no código!). Certifique-se de que seu sistema operacional esteja atualizado e execute novamente o install.sh.

Felizmente, você está trabalhando agora!

Etapa 10: Parte III - Servidor Web

Parte III - Servidor Web
Parte III - Servidor Web

Como existem MILHÕES de códigos UPC e os bancos de dados mais publicamente (ou seja, gratuitos) disponíveis são apenas um pequeno subconjunto de códigos, este projeto se concentrou em códigos UPC para mantimentos. Inclui várias centenas de milhares de itens, mas muitos, muitos não serão encontrados.

Se você precisar adicionar ou atualizar o banco de dados UPC, existem dois programas disponíveis; um de linha de comando e um de navegador da web. (substitua os dígitos pelo seu número de item UPC)

$ cd / var / www / html / upc / bin

$ sudo./addDB.sh 01234567890 “Meu novo item”

Isso adicionará um registro ao banco de dados. Caso contrário, sugere-se usar a função DB do navegador da web.

Para o servidor Web GUI, você precisa do endereço IP do seu raspberry.

Para encontrar o endereço IP, você pode usar:

$ hostname -I 192.168.1.108

Em um navegador de PC, vá para: https://192.168.1.108/upc/ Você deve ver uma tela semelhante à da Fig.2 acima.

Nesse caso, você pode adicionar / atualizar e excluir registros. Navegue até a última página usando o botão (‘> |’) “último registro” para ver seus registros mais recentes à medida que são anexados ao final do banco de dados.

NOTA DE SEGURANÇA que este serviço da web não é seguro (sem autenticação, sem SSL), portanto, é melhor não expô-lo à Internet pública. (Mas, uma vez que não está configurado como um ponto de acesso WiFi, é seguro levá-lo para a loja.)

Porém, como não há dados privados nele, o pior que pode acontecer é alguém mutilar os dados UPC.

Você também pode limitar o acesso a endereços IP específicos para que ninguém possa entrar. Basta substituir o (s) IP (s) aqui pelos que deseja permitir. Todos os outros terão o acesso bloqueado:

$ sudo vi /etc/lighttpd/lighttpd.conf

$ HTTP ["remoteip"] = ~ "127.0.0.1 | 192.168.1.108" {url.access-deny = ("")} $ sudo /etc/init.d/lighttpd restart

Além disso, ALTERE a senha padrão do PI! Todo mundo sabe que o padrão é pi / framboesa

$ passwd

Etapa 11: Solução de problemas do servidor da web

Solução de problemas do servidor web
Solução de problemas do servidor web
Solução de problemas do servidor web
Solução de problemas do servidor web

Usando seu navegador, vá para o endereço IP do Raspberry, como este:

192.168.1.108/

Você deve ver a tela padrão de /var/www/html/index.html (Fig.1 acima)

Além disso, certifique-se de que o servidor da web esteja em execução:

$ ps -ef | grep lighttpd

Para verificar se o PHP é bom, crie um arquivo de teste de php:

$ sudo nano /var/www/html/phpinfo.php

Em seguida, vá para

Você deve ver uma tela como a Fig.2 acima

Se você receber erros ou telas em branco, verifique se há erros em

$ sudo cat /var/log/lighttpd/error.log

Novamente, executar novamente o install.sh pode corrigir dependências ausentes.

Etapa 12: Apêndice

MUITO OBRIGADO ao seguinte por disponibilizar um grande banco de dados UPC.

Open Grocery UPC DB

www.grocery.com/open-grocery-database-proje…

Abrir banco de dados de dados

www.grocery.com/open-grocery-database-proje…

www.upc-search.org/perl/upc-search.pl?q=84…

Obrigado a EasyUI pela web simples CRUD GUI

www.jeasyui.com/index.php

Recomendado: