Sommario:

Lettore di codici a barre parlante Raspberry Pi: 12 passaggi
Lettore di codici a barre parlante Raspberry Pi: 12 passaggi

Video: Lettore di codici a barre parlante Raspberry Pi: 12 passaggi

Video: Lettore di codici a barre parlante Raspberry Pi: 12 passaggi
Video: CS50 2014 - Week 7 2024, Dicembre
Anonim
Lettore di codici a barre parlante Raspberry Pi
Lettore di codici a barre parlante Raspberry Pi

Fig.1 Scanner di codici a barre da DX.com

Panoramica

Aggiornamento: è disponibile una breve demo video

Mia madre non è più in grado di leggere le etichette sugli articoli della spesa, quindi sono andato alla ricerca di soluzioni. Dopo aver visto che i lettori di codici a barre per non vedenti costano molte centinaia di dollari, volevo vedere cosa si poteva fare usando un Raspberry Pi e un lettore di codici a barre USB.

Un'altra imitazione chiave era che questo dovrebbe funzionare SENZA una connessione Internet (come in un negozio oa casa di amici). Quindi il database e la sintesi vocale dovevano essere autonomi.

Ho provato una versione basata su fotocamera del lettore di codici a barre, ma l'illuminazione e la posizione della fotocamera hanno causato problemi di affidabilità per qualcuno che non riusciva a vedere chiaramente. Questi richiedevano anche la vista per configurare e utilizzare l'app. Quindi sono passato a un lettore di codici a barre laser USB, soprattutto perché ora sono disponibili per meno di $ 30 e Raspbian Jessie li supporta immediatamente.

Ho anche provato il nuovo Amazon Dash Wand ma non parla l'elemento scansionato e richiede una connessione Internet per funzionare.

L'idea era di scansionare un articolo e fare in modo che Raspberry interrogasse un database interno di codici UPC e poi pronunciasse la descrizione del prodotto usando la sintesi vocale.

Per rendere l'unità il più piccola possibile, ho voluto utilizzare un Raspberry Pi Zero. Volevo anche far funzionare l'unità anche a batteria.

Per soddisfare questi requisiti erano necessari alcuni compromessi. Poiché lo Zero non ha un jack audio esterno, ho riutilizzato il design audio del mio progetto "Earthquake Pi" poiché era a basso costo (circa $ 6) e molto piccolo. In alternativa, potrebbe essere possibile sostituire "One Transistor Audio for Pi Zero".

Per lo scanner di codici a barre laser, ne ho trovato uno da DX.com. È spento dal Raspberry USB e costa circa $ 25. (vedi parti sotto)

Passaggio 1: AGGIORNAMENTO

Con l'arrivo del Raspberry Pi Zero W, passerò ad esso. Tutto qui è lo stesso, tranne che è necessario configurare la connessione WiFi al Pi. Ciò significa che non avrai bisogno di un hub USB per lo Zero per la configurazione e l'uso.

Puoi configurare il WiFi usando:

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

Lo sapevate?

Se installi Raspbian Jessie su una scheda SD utilizzando un PC Windows, puoi creare due file sulla scheda per configurare l'accesso WiFi e SSH prima di avviarlo su un Raspberry?

Per questo, supponi che la tua scheda SD sia attualmente montata come K: sul tuo PC:

1) Installa l'ultima immagine Raspbian Jessie sulla SD. Per questo progetto, Jessie Lite dovrebbe funzionare.

www.raspberrypi.org/downloads/raspbian/

2) Con il blocco note, crea un file chiamato semplicemente "ssh" e usa Salva come "Tutti i file" in K:\ssh

Il file può contenere qualsiasi cosa. È il nome del file che è importante. NON deve essere "ssh.txt"!!!

3) Con il blocco note, creare un file chiamato "wpa_supplicant.conf" con quanto segue:

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

rete={

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

Usa Salva come "Tutti i file" in K:\wpa_supplicant.conf Ancora una volta, non lasciare che Blocco note lo cambi in "wpa_supplicant.conf.txt"!!

Quando avvii il Raspberry per la prima volta, Jessie li cercherà e si connetterà al tuo Wifi. Dovrai cercare sul tuo router l'indirizzo IP, tuttavia, poiché è stato assegnato automaticamente.

Passaggio 2: elenco delle parti

  • Raspberry Pi Zero (o qualsiasi Raspberry Pi, se le dimensioni non sono un problema)
  • Scanner di codici a barre laser USB

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

  • Per Raspi Zero, aggiungi l'amplificatore Adafruit I2S 3W Classe Dhttps://www.adafruit.com/products/3006
  • Piccolo altoparlante. (Per Pi 2, 3, utilizzare un amplificatore e un altoparlante esterni.)
  • Adattatore USB da Micro a USB OTGhttps://www.adafruit.com/products/2910
  • Pacco batteria USB 5V 1Amp comehttps://www.adafruit.com/products/1959
  • Cavo da USB a micro USB per batteria.
  • Hub USB ed Ethernet (almeno per il lavoro di configurazione iniziale, non necessario per Zero W o Raspi 2, 3)https://www.adafruit.com/products/2992
  • Software da GITHUB:

Passaggio 3: lettore di codici a barre laser USB

Lettore di codici a barre laser USB
Lettore di codici a barre laser USB

I lettori di codici a barre laser sono più indulgenti nella loro capacità di scansionare un'etichetta UPC rispetto alle fotocamere. Funzionano bene anche con etichette poco illuminate o mal posizionate.

Avrai bisogno del micro adattatore da USB a USB per collegarlo a Zero.

L'impugnatura e il grilletto dello scanner lo rendono facile da usare.

Fornisce inoltre un feedback quando esegue correttamente la scansione di un'etichetta.

Futuro da fare:

Nel progetto finale, taglierei il cavo per accorciarlo e saldarlo direttamente ai pin USB dello Zero per ridurre le dimensioni e la probabilità di un guasto del connettore. Lo Zero e la batteria sarebbero collegati direttamente alla parte inferiore dell'impugnatura dello scanner in una custodia stampata in 3D.

Passaggio 4: database UPC

Questa è la parte meno coperta del progetto, poiché ci sono letteralmente milioni di codici UPC e pochissimi database open source disponibili per il download. Sfortunatamente, la maggior parte dei database UPC è piuttosto costosa e richiede la connettività a Internet.

Sono stato in grado di mettere insieme un paio di database open source (fonti nell'appendice di seguito), ma anche con quasi 700.000 elementi, ne manca un numero enorme.

A tal fine, ho fatto due cose; uno è concentrarsi in particolare sugli articoli alimentari e l'altro è aggiungere un server web al Raspberry per consentire l'aggiunta manuale di nuovi codici UPC, tuttavia, ciò richiede almeno la connettività di rete locale.

Futuro da fare:

Renderei lo Zero W un "hotspot" in modo da poterti connettere ovunque per aggiungere nuovi codici UPC.

Passaggio 5: sintesi vocale

Ho usato il programma di sintesi vocale chiamato "Flite", in quanto aveva il miglior compromesso tra qualità della voce e velocità di conversione sullo Zero. Altri suonavano un po' meglio, ma erano troppo lenti per essere convertiti.

Puoi anche dare un'occhiata al tutorial di Adafruit:

Nota che ci vorrà un po' di "allenamento dell'orecchio" per abituarti all'inflessione del discorso, ma non è male.

La scansione di nuovo dello stesso elemento ripeterà l'audio.

Futuro da fare

Forse aggiungi un jack per le cuffie in modo da rendere più facile per gli anziani sentire la voce in luoghi rumorosi.

Passaggio 6: alimentazione a batteria

Il sistema può essere alimentato da una batteria USB da 5V, come quella utilizzata per ricaricare i telefoni cellulari.

Il problema è che quando si scollega la batteria o la batteria si scarica, il Pi si bloccherà con la possibilità che danneggi l'unità SD.

Per risolvere questo problema, è necessario un pulsante che esegua un comando di spegnimento. Probabilmente ne userò uno come questo:

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

(Sì… un altro "Future ToDo!")

Passaggio 7: Parte I - Aggiunta di audio a Pi Zero

Parte I - Aggiunta di audio a Pi Zero
Parte I - Aggiunta di audio a Pi Zero
Parte I - Aggiunta di audio a Pi Zero
Parte I - Aggiunta di audio a Pi Zero
Parte I - Aggiunta di audio a Pi Zero
Parte I - Aggiunta di audio a Pi Zero

(Salta questa parte se non usi uno Zero!)

Su un Pi Zero, dovrai aggiungere audio esterno, poiché non è integrato. Ho usato il low cost “Adafruit I2S 3W Amplifier breakout MAX98357A”

Ciò richiede l'installazione utilizzando l'eccellente tutorial di Adafruit su:

Come mostrato nella parte relativa al cablaggio del tutorial, collegare:

• 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

Collega un piccolo altoparlante ai cavi audio sulla scheda.

Configurazione del software audio Pi Zero Adafruit Anche mostrato nel tutorial di installazione del software Adafruit, eseguire il comando CURL di seguito:

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

Dopo il riavvio, prova l'audio usando il test dell'altoparlante:

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

In caso di problemi, torna indietro nel tutorial di Adafruit partendo dalla panoramica. Potrebbe essere necessario seguire i passaggi "Installazione dettagliata" nel tutorial per verificare tutti i file aggiornati.

Passaggi importanti richiesti per Zero e Max98357 Audio: per impostazione predefinita, l'audio ALSA funziona solo in Stereo mentre la sintesi vocale di Flite è mono. Inoltre, l'audio ha dei "pop" ogni volta che inizia la riproduzione.

(Vedi:

Devi fare quanto segue:

1) Aggiungi una riga a /boot/config.txt

$ sudo nano /boot/config.txt

dtoverlay=i2s-mmap

2) Sostituisci /etc/asound.conf

$ sudo nano /etc/asound.conf

pcm.hifiberry { tipo scheda hw 0 } pcm.!default { tipo plug slave.pcm "dmixer" } pcm.dmixer { tipo dmix ipc_key 1024 slave { pcm "hifiberry" canali 2 } } ctl.dmixer { tipo scheda hw 0 }

3) Riavvia il tuo Pi.

Riprovare il test dell'altoparlante. Dovrebbe suonare meglio ora. Una volta completato il tutorial di installazione inclusi i test audio, il suono dovrebbe essere pronto.

Tieni presente che potresti voler aggiungere un jack per auricolari per l'audio, se lo porti in un negozio di alimentari o in un ambiente rumoroso.

Passaggio 8: Parte II – Installazione del software

Ciò presuppone che tu abbia già installato Raspbian Jessie e possa accedere alla riga di comando di Linux. Non hai bisogno della versione GUI di Raspbian, ma è ok da usare.

NON è necessario che lo scanner USB sia collegato al momento, nel caso in cui sia necessaria la porta USB per Ethernet o tastiera/mouse.

Assicurati che il tuo sistema operativo sia aggiornato:

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

Dalla riga di comando, vai alla directory home di pi e scarica il repository GITHUB:

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

Ciò richiederà del tempo, in particolare se è la prima volta e il server Web e PHP devono essere installati o aggiornati. Se necessario, puoi eseguirlo più di una volta. Tra le altre cose, installa i file del codice a barre e il database UPC su: /var/www/html/upc

Quindi, modifica /etc/rc.local e aggiungi la seguente riga prima di "exit 0"

$ sudo nano /etc/rc.local

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

Una volta completata l'installazione, spegni il Pi e collega il lettore di codici a barre USB e riavvia.

$ sudo spegnimento ora

Riaccendilo e dovresti sentire un breve discorso di avvio.

In tal caso, prova a scansionare un codice a barre da un articolo di alimentari. Se tutto è andato bene, dovresti sentirlo pronunciare l'elemento (o pronunciare "Non trovato"). Altrimenti, controlla la guida alla risoluzione dei problemi successiva.

Passaggio 9: risoluzione dei problemi

Risoluzione dei problemi
Risoluzione dei problemi

Se non senti alcun suono, dovrai provare i seguenti comandi:

1) Verifica che l'audio della sintesi vocale funzioni:

$ sudo flite -voice awb -t "testing"

Se ricevi un errore, assicurati che flite sia stato installato:

$ sudo apt install flite

Se ricevi il seguente errore, assicurati di aver aggiornato /boot/config.txt e /etc/asound.conf mostrati nella sezione Configurazione audio sopra su Raspi Zero: audio_open_alsa: impossibile impostare il numero di canali su 1. Argomento non valido.

Se non ricevi alcun errore e nessun suono, assicurati che l'audio del tuo Raspberry funzioni.

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

1) Potrebbe essere necessario forzare l'uscita audio dal jack audio: (vedi fig.1 sopra)

$ sudo raspi-config -> 7 Opzioni avanzate -> Audio A4

2) Una volta verificato che l'audio e la sintesi vocale sono corretti, controlla il lettore di codici a barre:

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

Dovresti vedere un numero di codice a barre numerico visualizzato quando esegui la scansione di un codice a barre. (Il programma di test NON include l'uscita audio o le connessioni al database.)

3) Se tutto questo va bene, controlla il file "nohup.out" per i messaggi di errore:

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

I problemi probabili sono pacchetti mancanti o permessi errati (o BUG nel codice!). Assicurati che il tuo sistema operativo sia aggiornato ed esegui nuovamente install.sh.

Spero che tu stia lavorando ormai!

Passaggio 10: Parte III – Server Web

Parte III – Server Web
Parte III – Server Web

Poiché ci sono MILIONI di codici UPC e la maggior parte dei database disponibili pubblicamente (cioè gratuiti) sono solo un piccolo sottoinsieme di codici, questo progetto si è concentrato sui codici UPC per i generi alimentari. Comprende diverse centinaia di migliaia di articoli, ma molti, molti non verranno trovati.

Se devi aggiungere o aggiornare il Database UPC, sono disponibili due programmi; uno da riga di comando e uno da browser web. (sostituisci le cifre con il tuo codice articolo UPC)

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

$ sudo./addDB.sh 01234567890 “Il mio nuovo articolo”

Questo aggiungerà un record al database. In caso contrario, si suggerisce di utilizzare la funzione DB del browser web.

Per la GUI del server Web, è necessario l'indirizzo IP del raspberry.

Per trovare l'indirizzo IP, puoi utilizzare:

$ nome host -I 192.168.1.108

Da un browser del PC, vai a: https://192.168.1.108/upc/ Dovresti vedere una schermata simile a quella in Fig.2 sopra.

In tal caso, puoi aggiungere/aggiornare ed eliminare i record. Passare all'ultima pagina utilizzando il pulsante ('>|') "ultimo record" per vedere i record più recenti mentre vengono aggiunti alla fine del database.

SICUREZZANOTA che questo servizio web non è protetto, (nessuna autenticazione, nessun SSL), quindi meglio non esporlo all'Internet pubblico. (Ma dal momento che non è configurato come punto di accesso WiFi, è sicuro da portare al negozio.)

Tuttavia, dal momento che non ci sono dati privati su di esso, il peggio che potrebbe accadere è che qualcuno storpi i dati UPC.

Puoi anche limitare l'accesso a indirizzi IP specifici in modo che nessun altro possa entrare. Basta sostituire gli IP qui con quelli che desideri consentire. A tutti gli altri verrà impedito l'accesso:

$ 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

Inoltre, CAMBIA la password PI predefinita! Tutti sanno che l'impostazione predefinita è pi/raspberry

$ passwd

Passaggio 11: risoluzione dei problemi del server Web

Risoluzione dei problemi del server Web
Risoluzione dei problemi del server Web
Risoluzione dei problemi del server Web
Risoluzione dei problemi del server Web

Usando il tuo browser vai all'indirizzo IP del tuo Raspberry, in questo modo:

192.168.1.108/

Dovresti vedere la schermata predefinita da /var/www/html/index.html (Fig.1 sopra)

Assicurati anche che il server web sia in esecuzione:

$ ps -ef|grep lighttpd

Per verificare che PHP sia buono, crea un file di test php:

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

Quindi vai su

Dovresti vedere una schermata come la Fig.2 sopra

Se ricevi errori o schermate vuote, controlla la presenza di errori in

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

Ancora una volta, rieseguire install.sh potrebbe correggere le dipendenze mancanti.

Passaggio 12: Appendice

UN GRANDE GRAZIE va a quanto segue per aver messo a disposizione un grande database UPC.

Apri drogheria UPC DB

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

Open Data DB

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

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

Grazie a EasyUI per la semplice GUI web CRUD

www.jeasyui.com/index.php

Consigliato: