Índice:
- Etapa 1: ATUALIZAR
- Etapa 2: Lista de peças
- Etapa 3: leitor de código de barras a laser USB
- Etapa 4: banco de dados UPC
- Etapa 5: Text-to-Speech
- Etapa 6: energia da bateria
- Etapa 7: Parte I - Adicionando Áudio a Pi Zero
- Etapa 8: Parte II - Instalação do software
- Etapa 9: Solução de problemas
- Etapa 10: Parte III - Servidor Web
- Etapa 11: Solução de problemas do servidor da web
- Etapa 12: Apêndice
Vídeo: Leitor de código de barras Raspberry Pi Talking: 12 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:39
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
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
(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
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
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
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:
Superstock (estoque controlado por scanner de código de barras): 5 etapas
Superstock (estoque controlado pelo scanner de código de barras): neste guia, contarei como construir o Superstock, meu projeto escolar para 1MCT em Howest. O conceito é fazer um banco de dados amigável que você pode acessar através de um site para manter uma contagem do que você tem em estoque (no meu caso, roupas para
Gravador de código de barras da Apple (Photonics Hackathon Phablabs): 3 etapas
Gravador de código de barras da Apple (Photonics Hackathon Phablabs): Olá a todos, Como parte de nosso desafio Phablabs Photonics, fomos solicitados a criar um dispositivo capaz de substituir adesivos em frutas. Você também odeia adesivos de frutas? E você gostaria de fazer uma mudança ambientalmente correta? Então, gostaríamos de ins
Scanner de código de barras USB (Raspberry Pi): 4 etapas
Scanner de código de barras USB (Raspberry Pi): tutorial básico de como configurar um leitor de código de barras USB com o Raspberry Pi
Lente macro para iPhone barata para leitura de código de barras: 6 etapas (com imagens)
Lente macro para iPhone barata para leitura de código de barras: Um problema gritante com a câmera do iPhone é sua incapacidade de focar a menos de 30 centímetros de distância. Algumas soluções pós-venda ajudam a resolver esse problema, como o iClarifi da Griffin Technology. Esta capa para o iPhone 3G permite que você deslize um pouco ma
Leitor RFID AVR / Arduino com código UART em C: 4 etapas
Leitor de RFID AVR / Arduino com código UART em C: RFID é a mania, encontrada em todos os lugares - de sistemas de inventário a sistemas de identificação de crachás. Se você já foi a uma loja de departamentos e passou por aquelas coisas que parecem detectores de metal nos pontos de entrada / saída, então você viu RFID. Existem vários