Raspberry Pi Talking Streckkodsläsare: 12 steg
Raspberry Pi Talking Streckkodsläsare: 12 steg
Anonim
Raspberry Pi Talking Streckkodsläsare
Raspberry Pi Talking Streckkodsläsare

Fig.1 Streckkodsläsare från DX.com

Översikt

Uppdatering: En kort videodemo finns tillgänglig

Min mamma kan inte läsa etiketter på matvaror längre, så jag letade efter lösningar. Efter att ha sett att streckkodsläsare för blinda kör många hundratals dollar, ville jag se vad som kan göras med en Raspberry Pi och en USB -streckkodsläsare.

En annan viktig imitation var att det här skulle fungera UTAN en internetanslutning (till exempel i en butik eller hos en kompis). Så databasen och text-till-tal måste vara fristående.

Jag försökte en kamerabaserad version av streckkodsläsare, men belysning och kameraposition orsakade problem med tillförlitlighet för någon som inte kunde se tydligt. Dessa krävde också syn för att konfigurera och använda appen. Så jag bytte till en USB Laser -streckkodsläsare, särskilt eftersom de nu är tillgängliga för under $ 30 och Raspbian Jessie stöder dem direkt ur lådan.

Jag testade också den nya Amazon Dash Wand men den talar inte det skannade objektet och det kräver en internetanslutning för att fungera.

Tanken var att skanna ett objekt och få Raspberry-frågan till en intern databas med UPC-koder och sedan tala produktbeskrivningen med text-till-tal.

För att göra enheten så liten som möjligt ville jag använda en Raspberry Pi Zero. Jag ville också köra enheten från batteriet.

Några avvägningar var nödvändiga för att uppfylla dessa krav. Eftersom nollan inte har ett externt ljuduttag återanvände jag ljuddesignen från mitt "Earthquake Pi" -projekt eftersom det var lågt (cirka $ 6) och väldigt litet. Alternativt kan det vara möjligt att ersätta "One Transistor Audio med Pi Zero".

För laserstreckkodsläsaren hittade jag en från DX.com. Den är avstängd från Raspberry USB och kostar cirka $ 25. (se delar nedan)

Steg 1: UPPDATERA

Med ankomsten av Raspberry Pi Zero W kommer jag att byta till den. Allt här är detsamma, förutom att du måste konfigurera WiFi -anslutningen till Pi. Det betyder att du inte behöver en USB -hubb för nollan för installation och användning.

Du kan konfigurera WiFi med:

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

Visste du?

Om du installerar Raspbian Jessie på ett SD -kort med en Windows -dator kan du skapa två filer på kortet för att konfigurera WiFi och SSH -åtkomst innan du startar det på ett hallon?

För detta, anta att ditt SD -kort för närvarande är monterat som K: på din dator:

1) Installera den senaste Raspbian Jessie -bilden till SD: n. För detta projekt borde Jessie Lite fungera.

www.raspberrypi.org/downloads/raspbian/

2) Med anteckningsblock skapar du en fil som bara heter "ssh" och använder Spara som "Alla filer" till K: / ssh

Filen kan innehålla vad som helst. Det är filnamnet som är viktigt. Får INTE vara “ssh.txt” !!!

3) Med anteckningsblock skapar du en fil som heter “wpa_supplicant.conf” med följande:

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

nätverk = {

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

Använd Spara som "Alla filer" till K: / wpa_supplicant.conf Återigen, låt inte Anteckningar ändra det till "wpa_supplicant.conf.txt" !!

När du startar hallon första gången kommer Jessie att leta efter dessa och ansluta till din Wifi. Du måste dock leta efter din IP -adress på din router eftersom den har tilldelats automatiskt.

Steg 2: Dellista

  • Raspberry Pi Zero (eller någon Raspberry Pi, om storleken inte är ett problem)
  • Streckkodsläsare med USB -laser

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

  • För Raspi Zero, lägg till Adafruit I2S 3W Class D Amplifierhttps://www.adafruit.com/products/3006
  • Liten högtalare. (För Pi 2, 3, använd extern förstärkare och högtalare.)
  • USB Micro till USB OTG -adapterhttps://www.adafruit.com/products/2910
  • 5V 1Amp USB -batteri, till exempel ashttps://www.adafruit.com/products/1959
  • USB till mikro USB -kabel för batteripaket.
  • USB- och Ethernet -hubb (åtminstone för första installationsarbetet, behövs inte för Zero W eller Raspi 2, 3)
  • Programvara från GITHUB:

Steg 3: USB -laserstreckkodsläsare

USB -laserstreckkodsläsare
USB -laserstreckkodsläsare

Laserstreckkodsläsare är mer förlåtande i sin förmåga att skanna en UPC -etikett än kameror. De fungerar också bra även i dåligt upplysta eller dåligt placerade etiketter.

Du behöver USB -till -USB -mikroadaptern för att ansluta den till nollan.

Skannerns handtag och avtryckare gör det enkelt att använda.

Det ger också feedback när den lyckas skanna en etikett.

Framtida att göra:

I den slutliga designen skulle jag klippa ner kabeln för att förkorta den och löda direkt till USB -stiften på nollan för att minska storleken och sannolikheten för ett kontaktfel. Nollan och batteriet skulle fästas direkt på undersidan av skannerhandtaget i ett 3D -tryckt fodral.

Steg 4: UPC -databas

Detta är den mest dåligt täckta delen av projektet, eftersom det bokstavligen finns miljontals UPC-koder och mycket få öppen källkoddatabaser tillgängliga för nedladdning. Tyvärr är de flesta UPC -databaser ganska dyra och kräver internetanslutning.

Jag kunde sätta ihop ett par databaser med öppen källkod (källor i bilaga nedan), men även med nästan 700 000 objekt i det saknas ett stort antal.

För detta ändamål har jag gjort två saker; en är att fokusera på livsmedelsvaror specifikt och den andra är att lägga till en webbserver till hallon för att tillåta att man lägger till nya UPC -koder manuellt, men detta kräver åtminstone lokal nätverksanslutning.

Framtida att göra:

Jag skulle göra Zero W till en "hotspot" så att du kan ansluta till den var som helst för att lägga till nya UPC -koder.

Steg 5: Text-till-tal

Jag använde text -till -tal -programmet som kallades "Flite", eftersom det hade den bästa kompromissen mellan röstkvalitet och konverteringshastighet på Zero. Andra lät lite bättre, men var för långsamma att konvertera.

Du kan också kolla in Adafruits handledning:

Observera att det kommer att ta lite "öronträning" för att vänja sig vid talböjningen, men det är inte så illa.

Om du skannar samma objekt igen upprepas ljudet.

Framtida ToDo

Kanske lägga till ett hörlursuttag så att det blir lättare för seniorer att höra rösten på bullriga platser.

Steg 6: Batteriström

Systemet kan köras från ett 5V USB -batteri, som används för att ladda mobiltelefoner.

Haken är att när du kopplar ur batteriet eller batteriet dör kommer Pi att krascha med en chans att det kommer att skada SD -enheten.

För att lösa detta behövs en knapp som kör ett avstängningskommando. Jag kommer förmodligen att använda en så här:

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

(Ja … ännu en "Future ToDo!")

Steg 7: Del I - Lägga till ljud till Pi Zero

Del I - Lägga till ljud till Pi Zero
Del I - Lägga till ljud till Pi Zero
Del I - Lägga till ljud till Pi Zero
Del I - Lägga till ljud till Pi Zero
Del I - Lägga till ljud till Pi Zero
Del I - Lägga till ljud till Pi Zero

(Hoppa över denna del om du inte använder en noll!)

På en Pi Zero måste du lägga till externt ljud, eftersom det inte är inbyggt. Jag använde den låga kostnaden “Adafruit I2S 3W Amplifier breakout MAX98357A”

Detta kräver installation med Adafruits utmärkta handledning på:

Som visas i kopplingsdelen av självstudien, anslut:

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

Anslut en liten högtalare till ljudkablarna på kortet.

Installation av Pi Zero Adafruit Audio SoftwareOch visas också i installationshandledningen för Adafruit, utför CURL -kommandot nedan:

$ curl -sS https://raw.githubusercontent.com/adafruit/Raspbe…> | våldsamt slag

Efter omstart, testa ljudet med högtalartest:

$ högtalartest -c2 --test = wav -w /usr/share/sounds/alsa/Front_Center.wav

Om du har problem, gå tillbaka genom Adafruit -handledningen med början i översikten. Du kan behöva gå igenom stegen "Detaljerad installation" i självstudien för att verifiera alla filer som uppdaterats.

Viktiga steg som krävs för Zero & Max98357-ljud: Som standard fungerar ALSA-ljudet bara i stereo medan Flite text-till-tal är mono. Dessutom har ljudet "poppar" i det varje gång det börjar spela.

(Se:

Du måste göra följande:

1) Lägg till en rad i /boot/config.txt

$ sudo nano /boot/config.txt

dtoverlay = i2s-mmap

2) Ersätt /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" channel 2}} ctl.dmixer {type hw card 0}

3) Starta om din Pi.

Prova högtalartestet igen. Det borde låta bättre nu. När du har slutfört installationshandledningen inklusive ljudtesterna ska ljudet vara klart.

Observera att du kanske vill lägga till ett hörlursuttag för ljud om du tar det till en mataffär eller bullrig miljö.

Steg 8: Del II - Programvaruinstallation

Detta förutsätter att du redan har Raspbian Jessie installerat och kan komma åt kommandoraden Linux. Du behöver inte GUI -versionen av Raspbian, men är ok att använda.

Du behöver INTE USB -skannern ansluten för tillfället, om du behöver USB -porten för Ethernet eller tangentbord/mus.

Se till att ditt operativsystem är uppdaterat:

$ sudo apt-get uppdatering $ sudo apt-get uppgradering

Från kommandoraden, gå till pi-hemkatalogen och ladda ner GITHUB-förvaret:

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

Detta kommer att ta lite tid, särskilt om det är första gången och webbservern och PHP måste installeras eller uppdateras. Om det behövs kan du köra detta mer än en gång. Bland annat installerar detta streckkodsfilerna och UPC -databasen till:/var/www/html/upc

Redigera sedan /etc/rc.local och lägg till följande rad före "exit 0"

$ sudo nano /etc/rc.local

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

När installationen är klar stänger du av din Pi och ansluter USB -streckkodsläsaren och startar om.

$ sudo avstängning nu

Slå på den igen och du bör höra ett kort starttal.

Försök i så fall att skanna en streckkod från en livsmedelsartikel. Om allt gick bra borde du höra det tala föremålet (eller tala "Hittades inte"). Annars kan du kolla i felsökningsguiden härnäst.

Steg 9: Felsökning

Felsökning
Felsökning

Om du inte hör några ljud måste du prova följande kommandon:

1) Kontrollera att text-till-tal-ljudet fungerar:

$ sudo flite -röst awb -t "testning"

Om du får ett fel, se till att flite har installerats:

$ sudo apt installera flite

Om du får följande fel, se till att du uppdaterade /boot/config.txt och /etc/asound.conf som visas i avsnittet Ljudinställningar ovan på Raspi Zero: audio_open_alsa: misslyckades med att ställa in antalet kanaler till 1. Ogiltigt argument.

Om du inte får något fel och inget ljud, se till att ditt hallonljud fungerar.

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

1) Du kan behöva tvinga ut ljudet från ljuduttaget: (se bild 1 ovan)

$ sudo raspi -config -> 7 Avancerade alternativ -> A4 -ljud

2) När du har verifierat ljud och text-till-tal bra, kontrollera streckkodsläsaren:

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

Du bör se ett numeriskt streckkodsnummer när du skannar en streckkod. (Testprogrammet innehåller INTE ljudutdata eller databasanslutningar.)

3) Om allt detta är bra, kolla filen “nohup.out” efter felmeddelanden:

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

Sannolikt saknas problem eller dåliga behörigheter (eller FEL i koden!). Se till att ditt operativsystem är uppdaterat och kör installationsprogrammet igen.

Förhoppningsvis är du igång nu!

Steg 10: Del III - Webbserver

Del III - Webbserver
Del III - Webbserver

Eftersom det finns MILJONER UPC -koder och de flesta offentligt tillgängliga (dvs. gratis) tillgängliga databaserna bara är en liten delmängd av koder, fokuserade detta projekt på UPC -koder för dagligvaror. Den innehåller flera hundra tusen föremål, men många, många kommer inte att hittas.

Om du behöver lägga till eller uppdatera UPC -databasen finns det två program tillgängliga; en kommandorad en och en webbläsare. (ersätt siffrorna med ditt UPC -artikelnummer)

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

$ sudo./addDB.sh 01234567890 “Mitt nya objekt”

Detta lägger till en post i databasen. Annars föreslås det att använda webbläsarens DB -funktion.

För webbservers GUI behöver du ditt hallons IP -adress.

För att hitta IP -adressen kan du använda:

$ värdnamn -I 192.168.1.108

Från en PC -webbläsare går du till: https://192.168.1.108/upc/Du bör se en skärm som liknar den i figur 2 ovan.

I så fall kan du lägga till/uppdatera och ta bort poster. Navigera till den sista sidan med knappen ('> |') "senaste posten" för att se dina senaste poster när de läggs till i slutet av databasen.

SÄKERHET OBSERVERA att denna webbtjänst inte är säker (ingen autentisering, ingen SSL), så det är bäst att inte exponera den för det offentliga Internet. (Men eftersom det inte är konfigurerat som en WiFi -åtkomstpunkt är det säkert att ta med till affären.)

Men eftersom det inte finns några privata data om det är det värsta som kan hända någon som tappar UPC -data.

Du kan också begränsa åtkomsten till specifika IP -adresser så att inga andra kan komma in. Ersätt bara IP (erna) här med de som du vill tillåta. Alla andra kommer att blockeras från att komma åt:

$ sudo vi /etc/lighttpd/lighttpd.conf

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

ÄNDRA också standard PI -lösenordet! Alla vet att standarden är pi/hallon

$ passwd

Steg 11: Felsökning av webbservern

Felsökning av webbservern
Felsökning av webbservern
Felsökning av webbservern
Felsökning av webbservern

Använd din webbläsare till din hallons IP -adress, så här:

192.168.1.108/

Du bör se standardskärmen från /var/www/html/index.html (bild 1 ovan)

Se också till att webbservern körs:

$ ps -ef | grep lighttpd

För att verifiera att PHP är bra, skapa en php -testfil:

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

Gå sedan till

Du bör se en skärm som figur 2 ovan

Om du får fel eller tomma skärmar, kolla efter fel i

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

Återigen kan installationen.sh fixa saknade beroenden igen.

Steg 12: Bilaga

Ett STORT TACK går till följande för att göra tillgänglig en stor UPC -databas.

Öppna livsmedelsbutiken UPC DB

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

Öppna Data DB

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

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

Tack till EasyUI för det enkla webben CRUD GUI

www.jeasyui.com/index.php

Rekommenderad: