Tabla de contenido:
- Paso 1: ACTUALIZAR
- Paso 2: Lista de piezas
- Paso 3: Lector de códigos de barras láser USB
- Paso 4: Base de datos UPC
- Paso 5: conversión de texto a voz
- Paso 6: Energía de la batería
- Paso 7: Parte I - Agregar audio a Pi Zero
- Paso 8: Parte II - Instalación del software
- Paso 9: solución de problemas
- Paso 10: Parte III - Servidor web
- Paso 11: Solución de problemas del servidor web
- Paso 12: Apéndice
Video: Lector de código de barras parlante Raspberry Pi: 12 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
Fig.1 Escáner de código de barras de DX.com
Visión general
Actualización: hay disponible un breve vídeo de demostración
Mi madre ya no puede leer las etiquetas de los alimentos, así que busqué soluciones. Después de ver que los lectores de códigos de barras para ciegos cuestan muchos cientos de dólares, quería ver qué se podía hacer con una Raspberry Pi y un lector de códigos de barras USB.
Otra imitación clave fue que esto debería funcionar SIN una conexión a Internet (como en una tienda o en la casa de un amigo). Por lo tanto, la base de datos y la conversión de texto a voz tenían que ser independientes.
Probé una versión del lector de códigos de barras basada en cámara, pero la iluminación y la posición de la cámara causaron problemas de confiabilidad para alguien que no podía ver con claridad. Estos también requerían vista para configurar y usar la aplicación. Así que cambié a un lector de códigos de barras láser USB, especialmente porque ahora están disponibles por menos de $ 30 y el Raspbian Jessie los admite desde el primer momento.
También probé el nuevo Amazon Dash Wand, pero no habla el elemento escaneado y requiere una conexión a Internet para funcionar.
La idea era escanear un artículo y hacer que la Raspberry consultara una base de datos interna de códigos UPC y luego dijera la descripción del producto usando texto a voz.
Para hacer la unidad lo más pequeña posible, quería usar una Raspberry Pi Zero. También quería hacer funcionar la unidad con la batería.
Para cumplir con estos requisitos, fueron necesarias algunas compensaciones. Como el Zero no tiene un conector de audio externo, reutilicé el diseño de audio de mi proyecto "Earthquake Pi", ya que era de bajo costo (alrededor de $ 6) y muy pequeño. Alternativamente, puede ser posible sustituir "One Transistor Audio por Pi Zero".
Para el escáner de código de barras láser, encontré uno de DX.com. Se apaga el USB Raspberry y cuesta alrededor de $ 25. (ver partes a continuación)
Paso 1: ACTUALIZAR
Con la llegada de la Raspberry Pi Zero W, la cambiaré. Todo aquí es igual, excepto que debe configurar la conexión WiFi al Pi. Esto significa que no necesitará un concentrador USB para el Zero para su configuración y uso.
Puede configurar el WiFi usando:
thepihut.com/blogs/raspberry-pi-tutorials/…
¿Sabías?
Si instala Raspbian Jessie en una tarjeta SD usando una PC con Windows, ¿puede crear dos archivos en la tarjeta para configurar el acceso WiFi y SSH antes de iniciarlo en una Raspberry?
Para esto, asuma que su tarjeta SD está actualmente montada como K: en su PC:
1) Instale la última imagen de Raspbian Jessie en la SD. Para este proyecto, Jessie Lite debería funcionar.
www.raspberrypi.org/downloads/raspbian/
2) Con el bloc de notas, cree un archivo llamado simplemente "ssh" y use Guardar como "Todos los archivos" en K: / ssh
El archivo puede contener cualquier cosa. Lo importante es el nombre del archivo. ¡¡¡NO debe ser "ssh.txt" !!!
3) Con el bloc de notas, cree un archivo llamado "wpa_supplicant.conf" con lo siguiente:
ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdevupdate_config = 1
red = {
ssid = "mySSID" psk = "mypassword" key_mgmt = WPA-PSK}
Use Guardar como "Todos los archivos" en K: / wpa_supplicant.conf ¡¡Nuevamente, no permita que el Bloc de notas lo cambie a "wpa_supplicant.conf.txt" !!
Cuando inicie la Raspberry por primera vez, Jessie los buscará y se conectará a su Wifi. Sin embargo, tendrá que buscar en su enrutador la dirección IP, ya que se asigna automáticamente.
Paso 2: Lista de piezas
- Raspberry Pi Zero (o cualquier Raspberry Pi, si el tamaño no es un problema)
-
Escáner de código de barras láser USB
www.dx.com/p/ls-4209-laser-bar-code-scanner…
- Para Raspi Zero, agregue Adafruit I2S 3W Class D Amplifier
- Pequeño altavoz. (Para Pi 2, 3, use amplificador y altavoz externos).
- Adaptador USB Micro a USB OTG
- Paquete de baterías USB de 5V 1Amp como por ejemplo
- Cable USB a micro USB para batería.
- Concentrador USB y Ethernet (al menos para el trabajo de configuración inicial, no es necesario para Zero W o Raspi 2, 3)
- Software de GITHUB:
Paso 3: Lector de códigos de barras láser USB
Los lectores de códigos de barras láser son más tolerantes en su capacidad para escanear una etiqueta UPC que las cámaras. También funcionan bien incluso en etiquetas mal iluminadas o mal colocadas.
Necesitará el micro adaptador USB a USB para conectarlo al Zero.
La empuñadura y el gatillo del escáner facilitan su uso.
También proporciona comentarios cuando escanea correctamente una etiqueta.
Futuro por hacer:
En el diseño final, cortaría el cable para acortarlo y soldaría directamente a los pines USB en el Zero para reducir el tamaño y la probabilidad de falla del conector. El Zero y la batería se conectarían directamente a la parte inferior del asa del escáner en una carcasa impresa en 3D.
Paso 4: Base de datos UPC
Esta es la parte del proyecto menos cubierta, ya que hay literalmente millones de códigos UPC y muy pocas bases de datos de código abierto disponibles para descargar. Desafortunadamente, la mayoría de las bases de datos de la UPC son bastante caras y requieren conectividad a Internet.
Pude juntar un par de bases de datos de código abierto (fuentes en el Apéndice a continuación), pero incluso con casi 700, 000 elementos, falta una gran cantidad.
Con este fin, he hecho dos cosas; una es enfocarse específicamente en artículos comestibles y la otra es agregar un servidor web a la Raspberry para permitir agregar nuevos códigos UPC manualmente, aunque esto requiere al menos conectividad de red local.
Futuro por hacer:
Haría del Zero W un "punto de acceso" para que puedas conectarte a él en cualquier lugar y agregar nuevos códigos UPC.
Paso 5: conversión de texto a voz
Usé el programa de texto a voz llamado "Flite", ya que tenía el mejor compromiso entre la calidad de voz y la velocidad de conversión en el Zero. Otros sonaban un poco mejor, pero eran demasiado lentos para convertir.
También puede consultar el tutorial de Adafruit:
Tenga en cuenta que se necesitará un poco de "entrenamiento auditivo" para acostumbrarse a la inflexión del habla, pero no es tan malo.
Si vuelve a escanear el mismo elemento, se repetirá el audio.
Futuro por hacer
Tal vez agregue un conector para auriculares para que sea más fácil para las personas mayores escuchar la voz en lugares ruidosos.
Paso 6: Energía de la batería
El sistema puede funcionar con una batería USB de 5 V, como la que se utiliza para recargar teléfonos móviles.
El problema es que cuando desenchufa la batería o la batería se agota, el Pi se bloqueará con la posibilidad de dañar la unidad SD.
Para resolver esto, se necesita un botón que ejecute un comando de apagado. Probablemente usaré uno como este:
www.element14.com/community/docs/DOC-78055…
(Sí … ¡otro "futuro pendiente!")
Paso 7: Parte I - Agregar audio a Pi Zero
(¡Omita esta parte si no usa un cero!)
En un Pi Zero, deberá agregar audio externo, ya que no está integrado. Utilicé el "Adafruit I2S 3W Amplifier breakout MAX98357A" de bajo costo
Esto requiere configuración usando el excelente tutorial de Adafruit en:
Como se muestra en la parte de cableado del tutorial, conecte:
• 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
Conecte un pequeño altavoz a los cables de audio de la placa.
Configuración del software de audio Pi Zero Adafruit También se muestra en el tutorial de configuración del software Adafruit, ejecute el comando CURL a continuación:
$ curl -sS https://raw.githubusercontent.com/adafruit/Raspbe…> | intento
Después del reinicio, pruebe el audio usando la prueba de altavoz:
$ prueba-de-altavoz -c2 --test = wav -w /usr/share/sounds/alsa/Front_Center.wav
Si tiene problemas, vuelva al tutorial de Adafruit comenzando desde la descripción general. Es posible que deba seguir los pasos de "Instalación detallada" en el tutorial para verificar todos los archivos actualizados.
Pasos importantes necesarios para el audio Zero y Max98357: de forma predeterminada, el audio de ALSA solo funciona en estéreo, mientras que la conversión de texto a voz de Flite es mono. Además, el audio tiene "estallidos" cada vez que comienza a reproducirse.
(Ver:
Debes hacer lo siguiente:
1) Agregue una línea a /boot/config.txt
$ sudo nano /boot/config.txt
dtoverlay = i2s-mmap
2) Reemplace /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) Reinicia tu Pi.
Intente la prueba de altavoz de nuevo. Debería sonar mejor ahora. Una vez que complete el tutorial de configuración, incluidas las pruebas de audio, el sonido debería estar listo.
Tenga en cuenta que es posible que desee agregar un conector para auriculares para audio, si lo lleva a una tienda de comestibles o un entorno ruidoso.
Paso 8: Parte II - Instalación del software
Esto supone que ya tiene Raspbian Jessie instalado y puede acceder a la línea de comandos de Linux. No necesita la versión GUI de Raspbian, pero está bien de usar.
NO necesita el escáner USB conectado en este momento, en caso de que necesite el puerto USB para Ethernet o teclado / mouse.
Asegúrese de que su sistema operativo esté actualizado:
$ sudo apt-get update $ sudo apt-get upgrade
Desde la línea de comandos, vaya al directorio de inicio de pi y descargue el repositorio de GITHUB:
$ cd / home / pi $ sudo apt install git $ git clone https://github.com/rgrokett/TalkingBarcodeReader….> https://github.com/rgrokett/TalkingBarcodeReader….> $ cd TalkingBarcodeReader $./install. sh
Esto llevará algún tiempo, especialmente si es la primera vez y es necesario instalar o actualizar el servidor web y PHP. Si es necesario, puede ejecutar esto más de una vez. Entre otras cosas, esto instala los archivos de código de barras y la base de datos UPC en: / var / www / html / upc
A continuación, edite /etc/rc.local y agregue la siguiente línea antes de "exit 0"
$ sudo nano /etc/rc.local
fi sudo /var/www/html/upc/bin/run.sh salida 0
Una vez completada la instalación, apague su Pi, conecte el lector de código de barras USB y reinicie.
$ sudo shutdown now
Vuelva a encenderlo y debería escuchar un breve discurso de inicio.
Si es así, intente escanear un código de barras de un artículo de la tienda. Si todo salió bien, debería escucharlo decir el elemento (o decir "No encontrado"). De lo contrario, consulte la guía de solución de problemas a continuación.
Paso 9: solución de problemas
Si no escucha ningún sonido, deberá probar los siguientes comandos:
1) Verifique que el audio de conversión de texto a voz esté funcionando:
$ sudo flite -voice awb -t "prueba"
Si recibe un error, asegúrese de que flite esté instalado:
$ sudo apt install flite
Si recibe el siguiente error, asegúrese de actualizar /boot/config.txt y /etc/asound.conf que se muestran en la sección Configuración de audio anterior en Raspi Zero: audio_open_alsa: no se pudo establecer el número de canales en 1. Argumento no válido.
Si no obtiene ningún error ni sonido, asegúrese de que el audio de su Raspberry esté funcionando.
sudo aplay /usr/share/sounds/alsa/Front_Center.wav
1) Es posible que deba forzar la salida de audio del conector de audio: (vea la figura 1 arriba)
$ sudo raspi-config -> 7 Opciones avanzadas -> Audio A4
2) Una vez que haya verificado que el audio y la conversión de texto a voz son correctos, verifique el lector de códigos de barras:
cd / var / www / html / upc / binsudo python./test.py
Debería ver un número de código de barras numérico cuando escanea un código de barras. (El programa de prueba NO incluye salida de audio ni conexiones de base de datos).
3) Si todo esto es bueno, revise el archivo "nohup.out" para ver si hay mensajes de error:
cd / var / www / html / upc / binsudo cat nohup.out
Los problemas probables son paquetes faltantes o permisos incorrectos (¡o ERRORES en el código!). Asegúrese de que su sistema operativo esté actualizado y vuelva a ejecutar install.sh.
¡Con suerte, ya estás trabajando!
Paso 10: Parte III - Servidor web
Dado que hay MILLONES de códigos UPC y la mayoría de las bases de datos disponibles públicamente (es decir, gratuitas) son solo un pequeño subconjunto de códigos, este proyecto se centró en los códigos UPC para comestibles. Incluye varios cientos de miles de artículos, pero muchos, muchos no se encontrarán.
Si necesita agregar o actualizar la base de datos UPC, hay dos programas disponibles; uno de línea de comandos y uno de navegador web. (reemplace los dígitos con su número de artículo UPC)
$ cd / var / www / html / upc / bin
$ sudo./addDB.sh 01234567890 "Mi nuevo artículo"
Esto agregará un registro a la base de datos. De lo contrario, se sugiere utilizar la función DB del navegador web.
Para la GUI del servidor web, necesita la dirección IP de su frambuesa.
Para encontrar la dirección IP, puede utilizar:
$ nombre de host -I 192.168.1.108
Desde un navegador de PC, vaya a: https://192.168.1.108/upc/ Debería ver una pantalla similar a la de la Fig.2 anterior.
Si es así, puede agregar / actualizar y eliminar registros. Navegue a la última página usando el botón (‘> |’) "último registro" para ver sus registros más recientes a medida que se adjuntan al final de la base de datos.
SEGURIDAD TENGA EN CUENTA que este servicio web no está protegido (sin autenticación, sin SSL), por lo que es mejor no exponerlo a la Internet pública. (Pero como no está configurado como un punto de acceso WiFi, es seguro llevarlo a la tienda).
Sin embargo, dado que no contiene datos privados, lo peor que podría pasar es que alguien manipule los datos de la UPC.
También puede limitar el acceso a direcciones IP específicas para que nadie más pueda entrar. Simplemente sustituya las IP aquí por las que desea permitir. Todos los demás no podrán acceder a:
$ 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
Además, ¡CAMBIE la contraseña PI predeterminada! Todo el mundo sabe que el valor predeterminado es pi / frambuesa.
$ passwd
Paso 11: Solución de problemas del servidor web
Usando su navegador, vaya a la dirección IP de su Raspberry, así:
192.168.1.108/
Debería ver la pantalla predeterminada de /var/www/html/index.html (Fig.1 arriba)
También asegúrese de que el servidor web se esté ejecutando:
$ ps -ef | grep lighttpd
Para verificar que PHP es bueno, cree un archivo de prueba php:
$ sudo nano /var/www/html/phpinfo.php
Luego vaya a
Debería ver una pantalla como la Fig.2 anterior
Si obtiene errores o pantallas en blanco, busque errores en
$ sudo cat /var/log/lighttpd/error.log
Nuevamente, volver a ejecutar install.sh puede corregir las dependencias faltantes.
Paso 12: Apéndice
MUCHAS GRACIAS a lo siguiente por poner a disposición una gran base de datos UPC.
Open Grocery UPC DB
www.grocery.com/open-grocery-database-proje…
Base de datos de datos abiertos
www.grocery.com/open-grocery-database-proje…
www.upc-search.org/perl/upc-search.pl?q=84…
Gracias a EasyUI por la sencilla interfaz gráfica de usuario de CRUD web
www.jeasyui.com/index.php
Recomendado:
Gráfico de barras de LED de transistores: 4 pasos
Gráfico de barras de LED de transistores: este artículo muestra una forma única y controvertida de crear una pantalla de gráfico de barras de LED. Este circuito necesita una señal de CA de alta amplitud. Puede intentar conectar un amplificador de clase D. Este circuito fue diseñado y publicado hace muchos años basándose en el arti
Superstock (stock controlado por escáner de código de barras): 5 pasos
Superstock (stock controlado por escáner de código de barras): en esta guía, le diré cómo construir Superstock, mi proyecto escolar para 1MCT en Howest. El concepto es crear una base de datos fácil de usar a la que pueda acceder a través de un sitio web para llevar la cuenta de lo que tiene en stock (en mi caso, ropa para mi
Grabador de código de barras de Apple (Photonics Hackathon Phablabs): 3 pasos
Grabador de código de barras de Apple (Photonics Hackathon Phablabs): Hola a todos: Como parte de nuestro desafío Phablabs Photonics, se nos pidió que creáramos un dispositivo capaz de reemplazar las pegatinas de las frutas. ¿También odias las pegatinas de frutas? ¿Y le gustaría hacer un cambio respetuoso con el medio ambiente? Entonces nos gustaría ins
Escáner de código de barras USB (Raspberry Pi): 4 pasos
Escáner de código de barras USB (Raspberry Pi): tutorial básico sobre cómo configurar un escáner de código de barras USB con Raspberry Pi
Lector RFID AVR / Arduino con código UART en C: 4 pasos
Lector RFID AVR / Arduino con código UART en C: RFID es la moda, se encuentra en todas partes, desde sistemas de inventario hasta sistemas de identificación de placas. Si alguna vez ha estado en una tienda departamental y atravesó esas cosas que parecen detectores de metales en los puntos de entrada / salida, entonces ha visto RFID. Hay varios