Taula de continguts:

Lector de codis de barres parlant Raspberry Pi: 12 passos
Lector de codis de barres parlant Raspberry Pi: 12 passos

Vídeo: Lector de codis de barres parlant Raspberry Pi: 12 passos

Vídeo: Lector de codis de barres parlant Raspberry Pi: 12 passos
Vídeo: CS50 2013 - Week 9 2024, De novembre
Anonim
Lector de codis de barres parlant de Raspberry Pi
Lector de codis de barres parlant de Raspberry Pi

Fig.1 Escàner de codis de barres de DX.com

Visió general

Actualització: hi ha disponible una demostració de vídeo curta

La meva mare ja no pot llegir les etiquetes dels articles de queviures, així que vaig buscar solucions. Després de veure que els lectors de codis de barres per a invidents corrien molts centenars de dòlars, volia veure què es podia fer amb un Raspberry Pi i un lector de codis de barres USB.

Una altra imitació clau era que això hauria de funcionar SENSE una connexió a Internet (com ara a una botiga o a casa d'un amic). Per tant, la base de dades i el text a veu havien de ser autònoms.

Vaig provar una versió basada en càmera del lector de codis de barres, però la il·luminació i la posició de la càmera van causar problemes de fiabilitat a algú que no veiés clarament. Aquests també requereixen visualització per configurar i utilitzar l'aplicació. Així que vaig canviar a un lector de codis de barres làser USB, sobretot perquè ara estan disponibles per menys de 30 dòlars i Raspbian Jessie els admet immediatament.

També he provat el nou Amazon Dash Wand, però no parla de l’escanejat i requereix una connexió a Internet per funcionar.

La idea era escanejar un element i fer que Raspberry consultés una base de dades interna de codis UPC i, a continuació, pronunciar la descripció del producte mitjançant text a veu.

Per tal de fer la unitat el més petita possible, volia utilitzar un Raspberry Pi Zero. També volia desconnectar la unitat de la bateria.

Per complir aquests requisits eren necessaris alguns compromisos. Com que el Zero no té un connector d'àudio extern, vaig reutilitzar el disseny d'àudio del meu projecte "Earthquake Pi", ja que era de baix cost (uns 6 dòlars) i era molt petit. Alternativament, pot ser possible substituir "Àudio d'un transistor per Pi Zero".

Per a l’escàner de codis de barres làser, n’he trobat un de DX.com. Està apagat del USB Raspberry i costa uns 25 dòlars. (vegeu les parts següents)

Pas 1: ACTUALITZACIÓ

Amb l'arribada del Raspberry Pi Zero W, vaig a canviar-hi. Aquí tot és igual, excepte que heu de configurar la connexió WiFi al Pi. Això vol dir que no necessitareu un concentrador USB per a Zero per configurar-lo i utilitzar-lo.

Podeu configurar el WiFi mitjançant:

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

Ho savies?

Si instal·leu Raspbian Jessie en una targeta SD mitjançant un PC amb Windows, podeu crear dos fitxers a la targeta per configurar l'accés WiFi i SSH abans d'arrencar-lo en un Raspberry?

Per a això, suposeu que la vostra targeta SD està muntada actualment com a K: al vostre PC:

1) Instal·leu la imatge més recent de Raspbian Jessie a la SD. Per a aquest projecte, Jessie Lite hauria de funcionar.

www.raspberrypi.org/downloads/raspbian/

2) Amb el bloc de notes, creeu un fitxer anomenat només "ssh" i utilitzeu Desa com a "Tots els fitxers" a K: / ssh

El fitxer pot contenir qualsevol cosa. És important el nom del fitxer. NO ha de ser "ssh.txt" !!!

3) Amb el bloc de notes, creeu un fitxer anomenat "wpa_supplicant.conf" amb el següent:

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

xarxa = {

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

Utilitzeu Desa com a "Tots els fitxers" a K: / wpa_supplicant.conf De nou, no deixeu que el Bloc de notes el canviï a "wpa_supplicant.conf.txt".

Quan inicieu el Raspberry la primera vegada, Jessie els buscarà i es connectarà al vostre Wifi. Haureu de buscar l'adreça IP al router, ja que s'ha assignat automàticament.

Pas 2: llista de peces

  • Raspberry Pi Zero (o qualsevol Raspberry Pi, si la mida no és un problema)
  • Escàner de codis de barres làser USB

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

  • Per a Raspi Zero, afegiu l’amplificador Adafruit I2S 3W classe D
  • Altaveu petit. (Per a Pi 2, 3, utilitzeu amplificador i altaveu externs).
  • Adaptador USB Micro a USB OTG
  • Bateria USB de 5V 1Amp, com ara ashttps://www.adafruit.com/products/1959
  • Cable USB a micro USB per a bateries.
  • Concentrador USB i Ethernet (com a mínim per a la configuració inicial, no és necessari per a Zero W o Raspi 2, 3)
  • Programari de GITHUB:

Pas 3: Lector de codis de barres làser USB

Lector de codis de barres làser USB
Lector de codis de barres làser USB

Els lectors de codis de barres làser són més perdonadors en la seva capacitat d’escanejar una etiqueta UPC que les càmeres. També funcionen bé fins i tot en etiquetes poc il·luminades o mal col·locades.

Necessitareu l’adaptador micro USB a USB per connectar-lo al zero.

La subjecció de la mà i el disparador de l'escàner faciliten l'ús.

També proporciona comentaris quan escaneja amb èxit una etiqueta.

Treballs futurs:

Al disseny final, reduiria el cable per escurçar-lo i es soldaria directament als pins USB del Zero per reduir la mida i la probabilitat que es produeixi una fallada del connector. El zero i la bateria s’enganxarien directament a la part inferior de la nansa de l’escàner en una funda impresa en 3D.

Pas 4: base de dades UPC

Aquesta és la part més mal coberta del projecte, ja que hi ha literalment milions de codis UPC i molt poques bases de dades de codi obert disponibles per descarregar. Malauradament, la majoria de bases de dades UPC són bastant cares i requereixen connectivitat a Internet.

Vaig poder reunir un parell de bases de dades de codi obert (fonts de l’apèndix següent), però fins i tot amb prop de 700.000 elements, en falten un gran nombre.

Amb aquest objectiu, he fet dues coses; un és centrar-se específicament en articles de queviures i l’altre és afegir un servidor web al Raspberry per permetre afegir nous codis UPC manualment, però, això requereix almenys connectivitat de xarxa local.

Treballs futurs:

Faria del Zero W un "punt d'accés" perquè pugueu connectar-vos-hi a qualsevol lloc per afegir nous codis UPC.

Pas 5: text a veu

He utilitzat el programa de text a veu anomenat "Flite", ja que tenia el millor compromís entre la qualitat de la veu i la velocitat de conversió al Zero. Altres sonaven una mica millor, però eren massa lents per convertir-los.

També podeu consultar el tutorial d’Adafruit:

Tingueu en compte que caldrà una mica d’entrenament de l’oïda per acostumar-se a la flexió de la parla, però no està gens malament.

Si torneu a escanejar el mateix element es repetirà l'àudio.

Treball de futur

Potser afegiu un endoll per a auriculars per tal que sigui més fàcil per a la gent gran sentir la veu en llocs sorollosos.

Pas 6: alimentació de la bateria

El sistema es pot executar des d’una bateria USB de 5V, com per exemple, per recarregar telèfons mòbils.

El problema és que quan desconnecteu la bateria o la bateria mor, el Pi es bloquejarà amb la possibilitat que corrompi la unitat SD.

Per solucionar-ho, cal un botó que executi una ordre d'aturada. Probablement en faré servir una d’aquest:

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

(Sí … un altre "Futur ToDo!")

Pas 7: primera part: afegir àudio a Pi Zero

Part I: afegir àudio a Pi Zero
Part I: afegir àudio a Pi Zero
Part I: afegir àudio a Pi Zero
Part I: afegir àudio a Pi Zero
Part I: afegir àudio a Pi Zero
Part I: afegir àudio a Pi Zero

(Omet aquesta part si no fas servir un zero!)

En un Pi Zero, haureu d'afegir àudio extern, ja que no està integrat. He utilitzat el baix cost "Adafruit I2S 3W Amplifier Breakout MAX98357A"

Per a això, cal configurar-lo mitjançant l'excel·lent tutorial d'Adafruit a:

Com es mostra a la part de cablejat del tutorial, connecteu-vos:

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

Connecteu un altaveu petit als cables d’àudio de la placa.

Configuració del programari d'àudio Pi Zero Adafruit: També es mostra al tutorial de configuració del programari Adafruit, executeu l'ordre CURL següent:

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

Després del reinici, proveu l'àudio mitjançant l'altaveu-test:

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

Si teniu problemes, torneu enrere a través del tutorial d'Adafruit començant per la descripció general. És possible que hagueu de passar pels passos d '"Instal·lació detallada" del tutorial per verificar tots els fitxers actualitzats.

Passos necessaris importants per a l'àudio Zero i Max98357: de manera predeterminada, l'àudio ALSA només funciona en estèreo mentre el text a veu de Flite és mono. A més, l'àudio conté "pops" cada cop que comença a reproduir-se.

(Vegeu:

Heu de fer el següent:

1) Afegiu una línia a /boot/config.txt

$ sudo nano /boot/config.txt

dtoverlay = i2s-mmap

2) Substituïu /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) Reinicieu el Pi.

Torneu a provar la prova de l’altaveu. Ara hauria de sonar millor. Un cop hàgiu completat el tutorial de configuració, incloses les proves d’àudio, el so hauria d’estar llest.

Tingueu en compte que és possible que vulgueu afegir un connector per a auriculars per a àudio, si el porteu a una botiga de queviures o a un entorn sorollós.

Pas 8: Part II - Instal·lació de programari

Això suposa que ja teniu instal·lat Raspbian Jessie i podeu accedir a la línia d'ordres de Linux. No necessiteu la versió GUI de Raspbian, però és correcte utilitzar-la.

No necessiteu l'escàner USB connectat de moment, en cas que necessiteu el port USB per a Ethernet o teclat / ratolí.

Assegureu-vos que el vostre sistema operatiu estigui actualitzat:

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

Des de la línia d’ordres, aneu al directori inicial de pi i descarregueu el dipòsit GITHUB:

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

Això trigarà una mica, sobretot si és la primera vegada i cal instal·lar o actualitzar el servidor web i PHP. Si cal, podeu executar-ho més d’una vegada. Entre altres coses, s’instal·len els fitxers de codis de barres i la base de dades UPC a: / var / www / html / upc

A continuació, editeu /etc/rc.local i afegiu la línia següent abans de la "sortida 0"

$ sudo nano /etc/rc.local

fi sudo /var/www/html/upc/bin/run.sh sortida 0

Un cop finalitzada la instal·lació, apagueu el Pi i connecteu el lector de codis de barres USB i reinicieu-lo.

$ sudo tancament ara

Feu-ne una còpia de seguretat i hauríeu d'escoltar un breu discurs d'inici.

Si és així, proveu d’escanejar un codi de barres d’un article de queviures. Si tot va bé, hauríeu d'escoltar-lo parlant de l'article (o de dir "No trobat"). En cas contrari, consulteu la guia de resolució de problemes següent.

Pas 9: resolució de problemes

Resolució de problemes
Resolució de problemes

Si no sentiu cap so, haureu de provar les ordres següents:

1) Verifiqueu que l'àudio de veu a text funcioni:

$ sudo flite -voice awb -t "proves"

Si teniu un error, assegureu-vos que s'ha instal·lat flite:

$ sudo apt install flite

Si obteniu el següent error, assegureu-vos que heu actualitzat /boot/config.txt i /etc/asound.conf que es mostren a la secció Configuració d’àudio de Raspi Zero a sobre: audio_open_alsa: no s’ha pogut establir el nombre de canals en 1. Argument no vàlid.

Si no obteniu cap error ni cap so, assegureu-vos que l’àudio del gerd funcioni.

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

1) Pot ser que hàgiu de forçar l’àudio a sortir de la presa d’àudio: (vegeu la figura 1 anterior)

$ sudo raspi-config -> 7 Opcions avançades -> Àudio A4

2) Un cop hàgiu verificat el so i el text a veu, comproveu el lector de codis de barres:

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

Hauríeu de veure un número de codi de barres numèric quan escanegeu un codi de barres. (El programa de prova NO inclou connexions de sortida d'àudio ni de base de dades.)

3) Si tot això és bo, comproveu si hi ha missatges d'error al fitxer "nohup.out":

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

És probable que hi hagi faltes de paquets o de permisos incorrectes (o BUGs al codi!). Assegureu-vos que el vostre sistema operatiu estigui actualitzat i torneu a executar install.sh.

Amb sort, ja esteu treballant.

Pas 10: Part III: servidor web

Part III: servidor web
Part III: servidor web

Com que hi ha MILIONS de codis UPC i la majoria de bases de dades disponibles públicament (és a dir, gratuïtes) són només un petit subconjunt de codis, aquest projecte es va centrar en els codis UPC per a queviures. Inclou diversos centenars de milers d'articles, però molts, molts no es trobaran.

Si necessiteu afegir o actualitzar la base de dades UPC, hi ha dos programes disponibles; una de línia d'ordres i una de navegador web. (substituïu els dígits pel número d'article UPC)

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

$ sudo./addDB.sh 01234567890 "El meu nou element"

Això afegirà un registre a la base de dades. En cas contrari, es recomana utilitzar la funció de base de dades del navegador web.

Per a la GUI del servidor web, necessiteu l'adreça IP del vostre raspberry.

Per trobar l'adreça IP, podeu utilitzar:

$ hostname -I 192.168.1.108

Des d’un navegador de PC, aneu a: https://192.168.1.108/upc/ Hauríeu de veure una pantalla similar a la de la figura 2 anterior.

Si és així, podeu afegir / actualitzar i suprimir registres. Aneu a la darrera pàgina mitjançant el botó ('> |') "últim registre" per veure els registres més recents tal com s'afegeixen al final de la base de dades.

SEGURETAT: Tingueu en compte que aquest servei web no està protegit (sense autenticació, ni SSL), així que és millor no exposar-lo a Internet públic. (Però, ja que no està configurat com a punt d'accés WiFi, és segur transportar-lo a la botiga).

Tot i que, com que no hi ha dades privades, el pitjor que podria passar és que algú manipuli les dades de la UPC.

També podeu limitar l'accés a adreces IP específiques perquè no hi puguin accedir altres. Només heu de substituir les adreces IP aquí per les que vulgueu permetre. Es bloquejarà l'accés a la resta de persones:

$ 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

A més, CANVIEU la contrasenya PI predeterminada. Tothom sap que el valor per defecte és pi / raspberry

$ passwd

Pas 11: resolució de problemes del servidor web

Resolució de problemes del servidor web
Resolució de problemes del servidor web
Resolució de problemes del servidor web
Resolució de problemes del servidor web

Amb el navegador, aneu a l'adreça IP del vostre gerd, de la manera següent:

192.168.1.108/

Hauríeu de veure la pantalla predeterminada de /var/www/html/index.html (figura 1 anterior)

Assegureu-vos també que el servidor web s’executa:

$ ps -ef | grep lighttpd

Per verificar que PHP sigui bo, creeu un fitxer de prova de php:

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

A continuació, aneu a

Hauríeu de veure una pantalla com la figura 2 anterior

Si teniu errors o pantalles en blanc, comproveu si hi ha errors a

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

Una vegada més, tornar a executar install.sh pot solucionar les dependències que falten.

Pas 12: Apèndix

A GRÀCIES aneu a continuació per fer disponible una gran base de dades UPC.

Obre el supermercat UPC DB

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

DB de dades obertes

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

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

Gràcies a EasyUI per la senzilla interfície web CRUD GUI

www.jeasyui.com/index.php

Recomanat: