Innholdsfortegnelse:

Raspberry Pi Talking Barcode Reader: 12 trinn
Raspberry Pi Talking Barcode Reader: 12 trinn

Video: Raspberry Pi Talking Barcode Reader: 12 trinn

Video: Raspberry Pi Talking Barcode Reader: 12 trinn
Video: RASPBERRY PI TALKING BARCODE READER 2024, November
Anonim
Raspberry Pi Talking Barcode Reader
Raspberry Pi Talking Barcode Reader

Fig.1 Strekkodeskanner fra DX.com

Oversikt

Oppdatering: En kort videodemo er tilgjengelig

Moren min klarer ikke å lese etiketter på dagligvarer lenger, så jeg lette etter løsninger. Etter å ha sett at strekkodelesere for blinde løp mange hundre dollar, ville jeg se hva som kunne gjøres ved hjelp av en Raspberry Pi og en USB -strekkodeleser.

En annen viktig etterligning var at dette skulle fungere UTEN en Internett -tilkobling (for eksempel i en butikk eller hos en venn). Så databasen og tekst-til-tale måtte være frittstående.

Jeg prøvde en kamerabasert versjon av strekkodeleser, men belysning og kameraposisjon forårsaket pålitelighetsproblemer for noen som ikke kunne se tydelig. Disse krevde også syn for å sette opp og bruke appen. Så jeg byttet til en USB Laser strekkodeleser, spesielt siden de nå er tilgjengelige for under $ 30 og Raspbian Jessie støtter dem rett ut av esken.

Jeg prøvde også den nye Amazon Dash Wand, men den snakker ikke det skannede elementet, og det krever en Internett -tilkobling for å fungere.

Tanken var å skanne et element og få Raspberry-spørringen til en intern database med UPC-koder og deretter snakke produktbeskrivelsen ved hjelp av tekst-til-tale.

For å gjøre enheten så liten som mulig, ønsket jeg å bruke en Raspberry Pi Zero. Jeg ønsket også å kjøre enheten av batteristrøm også.

Noen avveininger var nødvendige for å oppfylle disse kravene. Siden Zero ikke har en ekstern lydkontakt, gjenbrukte jeg lyddesignet fra mitt "Earthquake Pi" -prosjekt, ettersom det var billig (ca. $ 6) og veldig lite. Alternativt kan det være mulig å erstatte "One Transistor Audio for Pi Zero".

For laser strekkodeskanneren fant jeg en fra DX.com. Den er slått av Raspberry USB og koster omtrent $ 25. (se deler nedenfor)

Trinn 1: OPPDATER

Med ankomsten av Raspberry Pi Zero W, kommer jeg til å bytte til den. Alt her er det samme, bortsett fra at du må sette opp WiFi -tilkoblingen til Pi. Dette betyr at du ikke trenger en USB -hub for Zero for oppsett og bruk.

Du kan konfigurere WiFi ved å:

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

Visste du?

Hvis du installerer Raspbian Jessie på et SD -kort ved hjelp av en Windows -PC, kan du opprette to filer på kortet for å konfigurere WiFi og SSH -tilgang før du starter det på et bringebær?

For dette, anta at SD -kortet ditt for øyeblikket er montert som K: på din PC:

1) Installer det nyeste Raspbian Jessie -bildet til SD -en. For dette prosjektet burde Jessie Lite fungere.

www.raspberrypi.org/downloads/raspbian/

2) Med notisblokk, opprett en fil som bare heter “ssh” og bruk Lagre som “Alle filer” til K: / ssh

Filen kan inneholde alt. Det er filnavnet som er viktig. Må IKKE være “ssh.txt” !!!

3) Med notisblokk, opprett en fil som heter “wpa_supplicant.conf” med følgende:

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

nettverk = {

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

Bruk Lagre som "Alle filer" til K: / wpa_supplicant.conf Igjen, ikke la Notisblokk endre det til "wpa_supplicant.conf.txt" !!

Når du starter Raspberry første gang, vil Jessie se etter disse og koble til Wifi. Du må imidlertid se på ruteren din etter IP -adressen siden den er automatisk tildelt.

Trinn 2: Deleliste

  • Raspberry Pi Zero (eller hvilken som helst Raspberry Pi, hvis størrelsen ikke er et problem)
  • USB laser strekkodeskanner

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

  • For Raspi Zero, legg til Adafruit I2S 3W klasse D -forsterkerhttps://www.adafruit.com/products/3006
  • Liten høyttaler. (For Pi 2, 3, bruk ekstern forsterker og høyttaler.)
  • USB Micro til USB OTG -adapterhttps://www.adafruit.com/products/2910
  • 5V 1Amp USB -batteripakke slik aske: //www.adafruit.com/products/1959
  • USB til mikro USB -kabel for batteripakke.
  • USB- og Ethernet -hub (i det minste for første oppsett, ikke nødvendig for Zero W eller Raspi 2, 3)
  • Programvare fra GITHUB:

Trinn 3: USB Laser strekkodeleser

USB laser strekkodeleser
USB laser strekkodeleser

Laser strekkodelesere er mer tilgivende i sin evne til å skanne en UPC -etikett enn kameraer. De fungerer også godt, selv i etiketter med dårlig belysning eller dårlig plassering.

Du trenger USB -til -USB -mikroadapteren for å koble den til Zero.

Håndgrepet og utløseren til skanneren gjør det enkelt å bruke.

Den gir også tilbakemelding når den skanner en etikett.

Fremtidig gjøremål:

I den endelige designen ville jeg kutte kabelen for å forkorte den og lodde direkte til USB -pinnene på Zero for å redusere størrelsen og sannsynligheten for en kontaktfeil. Null og batteri vil bli festet direkte til bunnen av skannerhåndtaket i et 3D -trykt etui.

Trinn 4: UPC -database

Dette er den dårligst dekkede delen av prosjektet, ettersom det er bokstavelig talt millioner av UPC-koder og svært få open source-databaser tilgjengelig for nedlasting. Dessverre er de fleste UPC -databaser ganske dyre og krever internettilkobling.

Jeg klarte å sette sammen et par åpne kildedatabaser (kilder i vedlegg nedenfor), men selv med nesten 700 000 elementer i det, mangler et stort antall.

For dette formål har jeg gjort to ting; den ene er å fokusere på dagligvarer spesielt, og den andre er å legge til en webserver til bringebæret for å tillate å legge til nye UPC -koder manuelt, men dette krever i det minste lokale nettverkstilkoblinger.

Fremtidig gjøremål:

Jeg vil gjøre Zero W til et "hotspot" slik at du kan koble til den hvor som helst for å legge til nye UPC -koder.

Trinn 5: Tekst-til-tale

Jeg brukte tekst til tale -programmet kalt "Flite", ettersom det hadde det beste kompromisset mellom stemmekvalitet og konverteringshastighet på Zero. Andre hørtes litt bedre ut, men var for trege til å konvertere.

Du kan også sjekke opplæringen til Adafruit:

Vær oppmerksom på at det vil ta litt "øretrening" for å bli vant til talebøyningen, men det er ikke så ille.

Hvis du skanner det samme elementet igjen, gjentas lyden.

Fremtidig gjøremål

Kanskje legge til en hodetelefonkontakt for å gjøre det lettere for eldre å høre stemmen på støyende steder.

Trinn 6: Batteristrøm

Systemet kan kjøres fra et 5V USB -batteri, for eksempel for å lade mobiltelefoner.

Fangsten er at når du trekker ut batteriet eller batteriet dør, vil Pi krasje med en sjanse for at det vil ødelegge SD -stasjonen.

For å løse dette er det nødvendig med en knapp som kjører en avslutningskommando. Jeg kommer nok til å bruke en slik:

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

(Ja … nok en "Future ToDo!")

Trinn 7: Del I - Legge til lyd til Pi Zero

Del I - Legge til lyd til Pi Zero
Del I - Legge til lyd til Pi Zero
Del I - Legge til lyd til Pi Zero
Del I - Legge til lyd til Pi Zero
Del I - Legge til lyd til Pi Zero
Del I - Legge til lyd til Pi Zero

(Hopp over denne delen hvis du ikke bruker en null!)

På en Pi Zero må du legge til ekstern lyd, siden den ikke er innebygd. Jeg brukte den billige “Adafruit I2S 3W Amplifier breakout MAX98357A”

Dette krever oppsett ved hjelp av Adafruits utmerkede opplæring på:

Som vist i ledningsdelen av opplæringen, kobler du til:

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

Koble en liten høyttaler til lydledningene på brettet.

Oppsett av Pi Zero Adafruit Audio SoftwareOgså vist i opplæringsprogrammet for Adafruit -programvare, utfør CURL -kommandoen nedenfor:

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

Etter omstart, test lyden ved hjelp av høyttalertest:

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

Hvis du har problemer, kan du gå tilbake til Adafruit -opplæringen og begynne på oversikten. Du må kanskje gå gjennom trinnene "Detaljert installasjon" i opplæringen for å bekrefte at alle filene er oppdatert.

Viktige nødvendige trinn for Zero & Max98357 lyd: Som standard fungerer ALSA-lyden bare i stereo mens Flite tekst-til-tale er mono. Lyden har også "pops" i den hver gang den begynner å spille.

(Se:

Du må gjøre følgende:

1) Legg til en linje i /boot/config.txt

$ sudo nano /boot/config.txt

dtoverlay = i2s-mmap

2) Erstatt /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) Start Pi på nytt.

Prøv høyttalertesten igjen. Det burde høres bedre ut nå. Når du har fullført oppsettopplæringen inkludert lydtestene, bør lyden være klar.

Vær oppmerksom på at du kanskje vil legge til en høretelefonkontakt for lyd, hvis du tar dette med til en matbutikk eller et støyende miljø.

Trinn 8: Del II - Programvareinstallasjon

Dette forutsetter at du allerede har Raspbian Jessie installert og kan få tilgang til Linux-kommandolinjen. Du trenger ikke GUI -versjonen av Raspbian, men er ok å bruke.

Du trenger IKKE USB -skanneren plugget inn for øyeblikket, i tilfelle du trenger USB -porten for Ethernet eller tastatur/mus.

Sørg for at operativsystemet er oppdatert:

$ sudo apt-get oppdatering $ sudo apt-get oppgradering

Fra kommandolinjen, gå til pi-hjemmekatalogen og last ned GITHUB-depotet:

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

Dette vil ta litt tid, spesielt hvis dette er første gang og webserveren og PHP må installeres eller oppdateres. Om nødvendig kan du kjøre dette mer enn én gang. Blant annet installerer dette strekkodefilene og UPC -databasen til:/var/www/html/upc

Rediger deretter /etc/rc.local og legg til følgende linje før "exit 0"

$ sudo nano /etc/rc.local

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

Når installasjonen er fullført, slår du av Pi og kobler til USB -strekkodeleseren og starter på nytt.

$ sudo nedleggelse nå

Slå den på igjen, og du bør høre en kort oppstartstale.

Prøv i så fall å skanne en strekkode fra en dagligvare. Hvis alt gikk bra, bør du høre det snakke elementet (eller snakke "Ikke funnet"). Ellers kan du sjekke feilsøkingsguiden neste.

Trinn 9: Feilsøking

Feilsøking
Feilsøking

Hvis du ikke hører noen lyder, må du prøve følgende kommandoer:

1) Kontroller at tekst-til-tale-lyden fungerer:

$ sudo flite -stemme awb -t "testing"

Hvis du får en feil, må du kontrollere at flite ble installert:

$ sudo apt installere flite

Hvis du får følgende feil, må du sørge for at du oppdaterte /boot/config.txt og /etc/asound.conf vist i Lydoppsett -delen ovenfor på Raspi Zero: audio_open_alsa: mislyktes i å angi antall kanaler til 1. Ugyldig argument.

Hvis du ikke får feil og ingen lyd, må du passe på at Raspberry -lyden din fungerer.

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

1) Du må kanskje tvinge ut lyden fra lydkontakten: (se figur 1 ovenfor)

$ sudo raspi -config -> 7 avanserte alternativer -> A4 -lyd

2) Når du har bekreftet at lyd og tekst-til-tale er bra, sjekk strekkodeleseren:

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

Du bør se et numerisk strekkodnummer som vises når du skanner en strekkode. (Testprogrammet inkluderer IKKE lydutgang eller databasetilkoblinger.)

3) Hvis alt dette er bra, sjekk "nohup.out" -filen for feilmeldinger:

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

Sannsynligvis mangler problemer pakker eller dårlige tillatelser (eller feil i koden!). Sørg for at operativsystemet er oppdatert og kjør install.sh på nytt.

Forhåpentligvis jobber du nå!

Trinn 10: Del III - Webserver

Del III - Webserver
Del III - Webserver

Siden det er MILLJONER av UPC -koder og de fleste offentlig (dvs. gratis) tilgjengelige databasene bare er en liten del av koder, fokuserte dette prosjektet på UPC -koder for dagligvarer. Den inneholder flere hundre tusen gjenstander, men mange, mange vil ikke bli funnet.

Hvis du trenger å legge til eller oppdatere UPC -databasen, er det to programmer tilgjengelig; en kommandolinje en og en nettleser. (bytt ut sifrene med UPC -varenummeret ditt)

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

$ sudo./addDB.sh 01234567890 “Mitt nye element”

Dette vil legge til en post i databasen. Ellers foreslås det å bruke nettleserens DB -funksjon.

For Web Server GUI trenger du IP -adressen til bringebæret ditt.

For å finne IP -adressen kan du bruke:

$ vertsnavn -I 192.168.1.108

Fra en PC -nettleser, gå til: https://192.168.1.108/upc/Du bør se en skjerm som ligner den på figur 2 ovenfor.

I så fall kan du legge til/oppdatere og slette poster. Naviger til den siste siden ved å bruke (‘> |’) “siste post” -knappen for å se de nyeste postene når de legges til slutten av databasen.

SIKKERHET MERK at denne webtjenesten ikke er sikret (ingen autentisering, ingen SSL), så det er best å ikke avsløre den for det offentlige Internett. (Men siden det ikke er konfigurert som et WiFi -tilgangspunkt, er det trygt å ta med til butikken.)

Selv om det ikke er private data om det, er det verre som kan skje, noen som henger med UPC -dataene.

Du kan også begrense tilgangen til bestemte IP -adresser, slik at ingen andre kan komme inn. Bare erstatt IP -ene (e) her med de du vil tillate. Alle andre vil bli blokkert fra å få tilgang til:

$ 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

Endre også standard PI -passord! Alle vet at standarden er pi/bringebær

$ passwd

Trinn 11: Feilsøking av webserveren

Feilsøking av webserveren
Feilsøking av webserveren
Feilsøking av webserveren
Feilsøking av webserveren

Gå til din bringebærs IP -adresse ved å bruke nettleseren din, slik:

192.168.1.108/

Du bør se standardskjermen fra /var/www/html/index.html (figur 1 ovenfor)

Sørg også for at webserveren kjører:

$ ps -ef | grep lighttpd

For å bekrefte at PHP er bra, opprett en php -testfil:

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

Gå deretter til

Du bør se en skjerm som figur 2 ovenfor

Hvis du får feil eller tomme skjermer, må du se etter feil i

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

Igjen kan kjøring av install.sh fikse manglende avhengigheter.

Trinn 12: Vedlegg

En STOR TAKK går til det følgende for å gjøre tilgjengelig en stor UPC -database.

Åpne dagligvare UPC DB

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

Åpne Data DB

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

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

Takk til EasyUI for den enkle web CRUD GUI

www.jeasyui.com/index.php

Anbefalt: