Indholdsfortegnelse:
- Trin 1: OPDATER
- Trin 2: Deleliste
- Trin 3: USB laser stregkodelæser
- Trin 4: UPC -database
- Trin 5: Tekst-til-tale
- Trin 6: Batteristrøm
- Trin 7: Del I - Tilføjelse af lyd til Pi Zero
- Trin 8: Del II - Softwareinstallation
- Trin 9: Fejlfinding
- Trin 10: Del III - Webserver
- Trin 11: Fejlfinding af webserveren
- Trin 12: Tillæg
Video: Raspberry Pi Talking Barcode Reader: 12 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
Fig.1 Stregkodescanner fra DX.com
Oversigt
Opdatering: En kort videodemo er tilgængelig
Min mor kan ikke længere læse etiketter på dagligvarer, så jeg gik på udkig efter løsninger. Efter at have set, at stregkodelæsere for blinde kørte mange hundrede dollars, ville jeg se, hvad der kunne gøres ved hjælp af en Raspberry Pi og en USB -stregkodelæser.
En anden vigtig efterligning var, at dette skulle fungere UDEN en internetforbindelse (f.eks. I en butik eller en vens hus). Så databasen og tekst-til-tale skulle være selvstændige.
Jeg forsøgte en kamerabaseret version af stregkodelæser, men belysning og kameraposition forårsagede problemer med pålidelighed for nogen, der ikke kunne se klart. Disse krævede også syn for at konfigurere og bruge appen. Så jeg skiftede til en USB Laser stregkodelæser, især da de nu er tilgængelige for under $ 30, og Raspbian Jessie understøtter dem lige ud af kassen.
Jeg har også prøvet den nye Amazon Dash Wand, men den taler ikke det scannede element, og det kræver en internetforbindelse for at fungere.
Ideen var at scanne et element og få Raspberry-forespørgslen til en intern database med UPC-koder og derefter tale produktbeskrivelsen ved hjælp af tekst-til-tale.
For at gøre enheden så lille som muligt, ville jeg bruge en Raspberry Pi Zero. Jeg ville også også køre enheden fra batteristrøm.
For at opfylde disse krav var nogle afvejninger nødvendige. Da Zero ikke har et eksternt lydstik, genbrugte jeg lyddesignet fra mit "Earthquake Pi" -projekt, da det var lavt (ca. $ 6) og meget lille. Alternativt kan det være muligt at erstatte "One Transistor Audio for Pi Zero".
Til laserstregkodescanneren fandt jeg en fra DX.com. Den er slukket for Raspberry USB og koster omkring $ 25. (se dele herunder)
Trin 1: OPDATER
Med ankomsten af Raspberry Pi Zero W, vil jeg skifte til det. Alt her er det samme, bortset fra at du skal konfigurere WiFi -forbindelsen til Pi. Det betyder, at du ikke skal bruge en USB -hub til nul til installation og brug.
Du kan konfigurere WiFi ved hjælp af:
thepihut.com/blogs/raspberry-pi-tutorials/…
Vidste du?
Hvis du installerer Raspbian Jessie på et SD -kort ved hjælp af en Windows -pc, kan du oprette to filer på kortet for at konfigurere WiFi og SSH -adgang, før du starter det på en Raspberry?
For at gøre dette, antag at dit SD -kort i øjeblikket er monteret som K: på din pc:
1) Installer det nyeste Raspbian Jessie -billede til SD. Til dette projekt skulle Jessie Lite fungere.
www.raspberrypi.org/downloads/raspbian/
2) Med notesblok skal du oprette en fil kaldet bare “ssh” og bruge Gem som “Alle filer” til K: / ssh
Filen kan indeholde alt. Det er filnavnet, der er vigtigt. Må IKKE være “ssh.txt” !!!
3) Med notesblok skal du oprette en fil kaldet “wpa_supplicant.conf” med følgende:
ctrl_interface = DIR =/var/run/wpa_supplicant GROUP = netdevupdate_config = 1
netværk = {
ssid = "mySSID" psk = "mypassword" key_mgmt = WPA-PSK}
Brug Gem som "Alle filer" til K: / wpa_supplicant.conf Igen, lad ikke Notesblok ændre det til "wpa_supplicant.conf.txt" !!
Når du starter Raspberry første gang, vil Jessie lede efter disse og oprette forbindelse til din Wifi. Du bliver nødt til at kigge på din router efter IP -adressen, da den er automatisk tildelt.
Trin 2: Deleliste
- Raspberry Pi Zero (eller enhver Raspberry Pi, hvis størrelsen ikke er et problem)
-
USB laser stregkodescanner
www.dx.com/p/ls-4209-laser-bar-code-scanner…
- For Raspi Zero, tilføj Adafruit I2S 3W klasse D forstærkerhttps://www.adafruit.com/products/3006
- Lille højttaler. (Til Pi 2, 3 skal du bruge ekstern forstærker og højttaler.)
- USB Micro til USB OTG -adapterhttps://www.adafruit.com/products/2910
- 5V 1Amp USB -batteripakke, sådan ashttps://www.adafruit.com/products/1959
- USB til mikro USB kabel til batteripakke.
- USB- og Ethernet -hub (i det mindste til indledende installationsarbejde, ikke nødvendig for Zero W eller Raspi 2, 3)
- Software fra GITHUB:
Trin 3: USB laser stregkodelæser
Laser stregkodelæsere er mere tilgivende i deres evne til at scanne en UPC -etiket end kameraer. De fungerer også godt, selv i dårligt oplyste eller dårligt placerede etiketter.
Du skal bruge USB til USB -mikroadapteren for at tilslutte den til Zero.
Scannerens håndgreb og aftrækker gør det let at bruge.
Det giver også feedback, når det med succes scanner en etiket.
Fremtidig opgave:
I det endelige design ville jeg skære kablet ned for at forkorte det og lodde direkte til USB -benene på Zero for at reducere størrelsen og sandsynligheden for et stikfejl. Nul og batteri ville blive fastgjort direkte til bunden af scannerhåndtaget i et 3D -printet etui.
Trin 4: UPC -database
Dette er den dårligst dækkede del af projektet, da der bogstaveligt talt er millioner af UPC-koder og meget få open source-databaser tilgængelige til download. Desværre er de fleste UPC -databaser ret dyre og kræver internetforbindelse.
Jeg var i stand til at sammensætte et par open-source databaser (kilder i tillæg nedenfor), men selv med næsten 700.000 elementer i det mangler et stort antal.
Til dette formål har jeg gjort to ting; den ene er at fokusere på dagligvarer specifikt, og den anden er at tilføje en webserver til Raspberry for at tillade tilføjelse af nye UPC -koder manuelt, men dette kræver i det mindste lokal netværksforbindelse.
Fremtidig opgave:
Jeg ville gøre Zero W til et "hotspot", så du kunne oprette forbindelse til det hvor som helst for at tilføje nye UPC -koder.
Trin 5: Tekst-til-tale
Jeg brugte tekst til tale -programmet kaldet "Flite", da det havde det bedste kompromis mellem stemmekvalitet og konverteringshastighed på Zero. Andre lød lidt bedre, men var for langsomme til at konvertere.
Du kan også tjekke Adafruits tutorial:
Bemærk, at det vil tage lidt "øretræning" at vænne sig til talebøjningen, men det er ikke så slemt.
Hvis du scanner det samme element igen, gentages lyden.
Fremtidig ToDo
Måske tilføje et hovedtelefonstik for at gøre det lettere for ældre at høre stemmen støjende steder.
Trin 6: Batteristrøm
Systemet kan køres fra et 5V USB -batteri, som f.eks. Bruges til at genoplade mobiltelefoner.
Fangsten er, at når du tager stikket ud, eller batteriet dør, vil Pi gå ned med en chance for, at det vil ødelægge SD -drevet.
For at løse dette er der brug for en knap, der kører en lukningskommando. Jeg vil sandsynligvis bruge en sådan:
www.element14.com/community/docs/DOC-78055…
(Ja … endnu en "Future ToDo!")
Trin 7: Del I - Tilføjelse af lyd til Pi Zero
(Spring denne del over, hvis du ikke bruger en nul!)
På en Pi Zero skal du tilføje ekstern lyd, da den ikke er indbygget. Jeg brugte den billige “Adafruit I2S 3W Amplifier breakout MAX98357A”
Dette kræver opsætning ved hjælp af Adafruits fremragende vejledning på:
Som vist i ledningsdelen af selvstudiet, skal du tilslutte:
• 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
Tilslut en lille højttaler til lydledningerne på kortet.
Opsætning af Pi Zero Adafruit Audio SoftwareOgså vist i vejledningen til opsætning af Adafruit software, udfør CURL -kommandoen herunder:
$ curl -sS https://raw.githubusercontent.com/adafruit/Raspbe…> | bash
Efter genstart, test lyden ved hjælp af højttaler-test:
$ højttaler -test -c2 --test = wav -w /usr/share/sounds/alsa/Front_Center.wav
Hvis du har problemer, skal du gå tilbage gennem Adafruit -øvelsen og starte tilbage i oversigten. Du skal muligvis gå igennem trinene "Detaljeret installation" i selvstudiet for at kontrollere alle opdaterede filer.
Vigtige nødvendige trin for Zero & Max98357 Audio: Som standard fungerer ALSA-lyden kun i stereo, mens Flite tekst-til-tale er mono. Lyden har også "popper" i den, hver gang den begynder at afspille.
(Se:
Du skal gøre følgende:
1) Tilføj en linje til /boot/config.txt
$ sudo nano /boot/config.txt
dtoverlay = i2s-mmap
2) Udskift /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" kanaler 2}} ctl.dmixer {type hw card 0}
3) Genstart din Pi.
Prøv højttalertesten igen. Det skulle lyde bedre nu. Når du har gennemført installationsvejledningen inklusive lydtestene, skal lyden være klar.
Bemærk, at du måske vil tilføje et øretelefonstik til lyd, hvis du tager dette med til en købmand eller støjende miljø.
Trin 8: Del II - Softwareinstallation
Dette forudsætter, at du allerede har Raspbian Jessie installeret og kan få adgang til Linux-kommandolinjen. Du behøver ikke GUI -versionen af Raspbian, men det er ok at bruge.
Du behøver IKKE USB -scanneren tilsluttet i øjeblikket, hvis du har brug for USB -porten til Ethernet eller tastatur/mus.
Sørg for, at dit operativsystem er opdateret:
$ sudo apt-get opdatering $ sudo apt-get opgradering
Fra kommandolinjen skal du gå til pi-hjemmemappen og downloade 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 tage noget tid, især hvis det er første gang, og webserveren og PHP skal installeres eller opdateres. Hvis det er nødvendigt, kan du køre dette mere end én gang. Blandt andet installerer dette stregkodefilerne og UPC -databasen til:/var/www/html/upc
Rediger derefter /etc/rc.local og tilføj følgende linje før "exit 0"
$ sudo nano /etc/rc.local
fi sudo /var/www/html/upc/bin/run.sh exit 0
Når installationen er fuldført, skal du lukke din Pi og tilslutte USB -stregkodelæseren og genstarte.
$ sudo lukning nu
Start den igen, og du bør høre en kort opstartstale.
Prøv i så fald at scanne en stregkode fra en dagligvare. Hvis alt gik godt, skulle du høre det tale elementet (eller tale "Ikke fundet"). Ellers skal du tjekke fejlfindingsguiden næste.
Trin 9: Fejlfinding
Hvis du ikke hører nogen lyde, skal du prøve følgende kommandoer:
1) Kontroller, at lyden fra tekst til tale fungerer:
$ sudo flite -stemme awb -t "test"
Hvis du får en fejl, skal du sørge for, at flite blev installeret:
$ sudo apt installere flite
Hvis du får følgende fejl, skal du sørge for at opdatere /boot/config.txt og /etc/asound.conf vist i afsnittet Lydopsætning ovenfor på Raspi Zero’s: audio_open_alsa: mislykkedes med at indstille antallet af kanaler til 1. Ugyldigt argument.
Hvis du ikke får nogen fejl og ingen lyd, skal du sørge for, at din hindbærlyd fungerer.
sudo aplay /usr/share/sounds/alsa/Front_Center.wav
1) Du skal muligvis tvinge lyden ud af lydstikket: (se figur 1 ovenfor)
$ sudo raspi -config -> 7 Avancerede indstillinger -> A4 -lyd
2) Når du har bekræftet lyd og tekst-til-tale godt, skal du kontrollere stregkodelæseren:
cd/var/www/html/upc/binsudo python./test.py
Du bør se et numerisk stregkodenummer, når du scanner en stregkode. (Testprogrammet indeholder IKKE lydoutput eller databaseforbindelser.)
3) Hvis alt dette er godt, skal du kontrollere "nohup.out" -filen for fejlmeddelelser:
cd/var/www/html/upc/binsudo cat nohup.out
Sandsynligvis mangler problemer pakker eller dårlige tilladelser (eller BUG'er i koden!). Sørg for, at dit operativsystem er opdateret, og kør install.sh igen.
Forhåbentlig arbejder du nu!
Trin 10: Del III - Webserver
Da der er MILLIONER af UPC -koder og de fleste offentligt tilgængelige (dvs. gratis) tilgængelige databaser kun er en lille delmængde af koder, fokuserede dette projekt på UPC -koder til dagligvarer. Det indeholder flere hundrede tusinde genstande, men mange, mange vil ikke blive fundet.
Hvis du har brug for at tilføje eller opdatere UPC -databasen, er der to programmer tilgængelige; en kommandolinje en og en webbrowser. (udskift cifrene med dit UPC -varenummer)
$ cd/var/www/html/upc/bin
$ sudo./addDB.sh 01234567890 “Min nye vare”
Dette tilføjer en post til databasen. Ellers foreslås det at bruge webbrowserens DB -funktion.
For Web Server GUI skal du bruge din hindbærs IP -adresse.
For at finde IP -adressen kan du bruge:
$ værtsnavn -I 192.168.1.108
Gå fra en pc -browser til: https://192.168.1.108/upc/Du skal se en skærm, der ligner den i figur 2 ovenfor.
I så fald kan du tilføje/opdatere og slette poster. Naviger til den sidste side ved hjælp af knappen ('> |') "sidste post" for at se dine nyeste poster, når de føjes til slutningen af databasen.
SIKKERHED BEMÆRK, at denne webtjeneste ikke er sikret (ingen godkendelse, ingen SSL), så det er bedst ikke at udsætte den for det offentlige internet. (Men da det ikke er konfigureret som et WiFi -adgangspunkt, er det sikkert at have med til butikken.)
Selvom der ikke er private data om det, er det værre, der kan ske, en, der mangler UPC -data.
Du kan også begrænse adgangen til bestemte IP -adresser, så ingen andre kan komme ind. Bare erstat IP (erne) her med dem, du ønsker at tillade. Alle andre vil blive blokeret for at få adgang 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 genstart
SKIFT også standard PI -adgangskoden! Alle ved, at standarden er pi/hindbær
$ passwd
Trin 11: Fejlfinding af webserveren
Brug din browser til at gå til din Hindbærs IP -adresse, sådan her:
192.168.1.108/
Du skal se standardskærmen fra /var/www/html/index.html (figur 1 ovenfor)
Sørg også for, at webserveren kører:
$ ps -ef | grep lighttpd
For at kontrollere, at PHP er godt, skal du oprette en php -testfil:
$ sudo nano /var/www/html/phpinfo.php
Gå derefter til
Du bør se en skærm som figur 2 ovenfor
Hvis du får fejl eller tomme skærme, skal du kontrollere, om der er fejl i
$ sudo cat /var/log/lighttpd/error.log
Igen kan genstart af install.sh rette manglende afhængigheder.
Trin 12: Tillæg
En STOR TAK går til det følgende for at stille en stor UPC -database til rådighed.
Åben købmand UPC DB
www.grocery.com/open-grocery-database-proje…
Åbn Data DB
www.grocery.com/open-grocery-database-proje…
www.upc-search.org/perl/upc-search.pl?q=84…
Tak til EasyUI for den enkle web CRUD GUI
www.jeasyui.com/index.php
Anbefalede:
Litterært ur fremstillet af e-reader: 6 trin (med billeder)
Litterært ur lavet af e-læser: Min kæreste er en * meget * ivrig læser. Som lærer og forsker i engelsk litteratur læser hun i gennemsnit firs bøger om året. På hendes ønskeliste var et ur til vores stue. Jeg kunne have købt et vægur fra butikken, men hvor er det sjove
Lazy Novel Reader's Meal Time Assistance: 14 trin
Lazy Novel Reader's Meal Time Assistance: Projektet er at hjælpe den dovne læser, der læser romanen, når han spiser, men ikke vil gøre tastaturet snavset
Game Boy Reader Controller: 17 trin (med billeder)
Game Boy Reader Controller: I denne Instructable vil jeg forsøge at forklare, hvordan jeg lavede enheden ovenfor.Den fungerer som en Game Boy -patronlæser, som kan læse ROM og læse/skrive RAM'en i et Game Boy -spil. starter automatisk op, så du kan afspille det på dig
Sleep Reader Pandebånd: 24 trin (med billeder)
Sleep Reader Pandebånd: Har du nogensinde spekuleret på, hvordan du sover om natten? Enheder som FitBit sporer søvn ved at analysere din bevægelse hele natten, men de kan ikke se på, hvad din hjerne laver. Efter et semester med at lære om medicinsk instrumenter, venter vores klasse
USB Compact Flash Reader . i en altoid -dåse: 6 trin
USB Compact Flash Reader …. i en Altoids Tin .: Ja, jeg ved, at Altoids tin er blevet forvandlet til alt andet end en camode på dette tidspunkt, men dette er mit første "projekt", som jeg har forsøgt. Jeg kiggede rundt her, og jeg så NES controller mod, og det udløste min motivation til at gøre dette. Det