INHOUDSOPGAWE:

Raspberry Pi Talking Barcode Reader: 12 stappe
Raspberry Pi Talking Barcode Reader: 12 stappe

Video: Raspberry Pi Talking Barcode Reader: 12 stappe

Video: Raspberry Pi Talking Barcode Reader: 12 stappe
Video: 10 Coolest SCIENCE TOY GADGETS That Will BLOW YOUR MIND 2024, November
Anonim
Framboos Pi Talking Barcode Reader
Framboos Pi Talking Barcode Reader

Figuur 1 strepieskodeskandeerder van DX.com

Oorsig

Opdatering: 'n Kort videodemo is beskikbaar

My ma kan nie meer etikette op kruideniersware lees nie, so ek het oplossings gaan soek. Nadat ek gesien het dat strepieskode -lesers vir blindes baie honderde dollars kos, wou ek kyk wat gedoen kan word met 'n Raspberry Pi en 'n USB -strepieskode -leser.

'N Ander belangrike nabootsing was dat dit SONDER 'n internetverbinding (soos by 'n winkel of by 'n vriend) moet werk. Die databasis en teks-na-spraak moes dus selfstandig wees.

Ek het 'n kamera -weergawe van strepieskode -leser probeer, maar beligting en kameraposisie het probleme met betroubaarheid veroorsaak vir iemand wat nie duidelik kan sien nie. Dit het ook sig nodig gehad om die app op te stel en te gebruik. Dus het ek oorgeskakel na 'n USB Laser -strepieskode -leser, veral omdat dit nou beskikbaar is vir minder as $ 30 en die Raspbian Jessie dit onmiddellik ondersteun.

Ek het ook die nuwe Amazon Dash Wand probeer, maar dit spreek nie die geskandeerde item nie, en dit benodig 'n internetverbinding om te werk.

Die idee was om 'n item te skandeer en die Framboos-navraag 'n interne databasis van UPC-kodes te hê en dan die produkbeskrywing deur middel van teks-na-spraak te spreek.

Om die eenheid so klein moontlik te maak, wou ek 'n Raspberry Pi Zero gebruik. Ek wou ook die eenheid van die batterykrag af laat werk.

'N Paar afwykings was nodig om aan hierdie vereistes te voldoen. Aangesien die Zero nie 'n eksterne klankaansluiting het nie, het ek die klankontwerp van my "Earthquake Pi" -projek hergebruik, want dit was goedkoop (ongeveer $ 6) en baie klein. Alternatiewelik kan dit moontlik wees om die "One Transistor Audio by Pi Zero" te vervang.

Vir die laser -strepieskodeskandeerder het ek een van DX.com gevind. Dit word van die Raspberry USB afgeskakel en kos ongeveer $ 25. (sien onderdele hieronder)

Stap 1: UPDATE

Met die aankoms van die Raspberry Pi Zero W, gaan ek daarna oorskakel. Alles hier is dieselfde, behalwe dat u die WiFi -verbinding met die Pi moet instel. Dit beteken dat u nie 'n USB -hub vir die nul benodig vir opstelling en gebruik nie.

U kan die WiFi instel met:

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

Het jy geweet?

As u Raspbian Jessie op 'n SD -kaart met 'n Windows -rekenaar installeer, kan u twee lêers op die kaart skep om WiFi- en SSH -toegang op te stel voordat u dit op 'n Framboos opstart?

Aanvaar hiervoor dat u SD -kaart tans as K: op u rekenaar gemonteer is:

1) Installeer die nuutste Raspbian Jessie -beeld op die SD. Vir hierdie projek behoort Jessie Lite te werk.

www.raspberrypi.org/downloads/raspbian/

2) Met 'n notaboek, skep 'n lêer genaamd net "ssh" en gebruik Stoor as "Alle lêers" in K: / ssh

Die lêer kan enigiets bevat. Dit is die lêernaam wat belangrik is. Moet NIE "ssh.txt" wees nie !!!

3) Maak met notepad 'n lêer met die naam "wpa_supplicant.conf" met die volgende:

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

netwerk = {

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

Gebruik Stoor as 'Alle lêers' in K: / wpa_supplicant.conf Weer, laat Notepad dit nie verander na 'wpa_supplicant.conf.txt' nie !!

As u die Framboos die eerste keer opstart, sal Jessie hierna soek en aan u Wifi koppel. U moet egter die IP -adres op u router soek, aangesien dit outomaties toegewys is.

Stap 2: Onderdele lys

  • Raspberry Pi Zero (of enige Raspberry Pi, as die grootte nie 'n probleem is nie)
  • USB laser strepieskode skandeerder

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

  • Voeg vir Raspi Zero Adafruit I2S 3W Klas D -versterker by
  • Klein luidspreker. (Gebruik eksterne versterker en luidspreker vir Pi 2, 3.)
  • USB Micro na USB OTG -adapter
  • 5V 1Amp USB -battery, soos as:
  • USB na mikro USB kabel vir battery pack.
  • USB- en Ethernet -hub (ten minste vir aanvanklike opstelwerk, nie nodig vir Zero W of Raspi 2, 3)
  • Sagteware van GITHUB:

Stap 3: USB -strepieskode -leser

USB laser strepieskode leser
USB laser strepieskode leser

Laserstreepieslesers is meer vergewensgesind in hul vermoë om 'n UPC -etiket te skandeer as kameras. Hulle werk ook goed, selfs in etikette met 'n swak lig of 'n slegte posisie.

U benodig die USB -na -USB -mikroadapter om dit in die Zero te koppel.

Die handgreep en sneller van die skandeerder maak dit maklik om te gebruik.

Dit gee ook terugvoer as dit 'n etiket suksesvol skandeer.

Toekomstige ToDo:

In die finale ontwerp sou ek die kabel afsny om dit te verkort en direk aan die USB -penne op die nul te soldeer om die grootte en waarskynlikheid van 'n aansluiting te verminder. Die nul en die battery word direk aan die onderkant van die skandeerderhandvatsel vasgemaak in 'n 3D -gedrukte omhulsel.

Stap 4: UPC -databasis

Dit is die swakste deel van die projek, aangesien daar letterlik miljoene UPC-kodes en baie min open source databasisse beskikbaar is om af te laai. Ongelukkig is die meeste UPC -databasisse taamlik duur en benodig internetverbinding.

Ek kon 'n paar open-source databasisse saamstel (bronne in aanhangsel hieronder), maar selfs met byna 700 000 items daarin, ontbreek 'n groot aantal.

Vir hierdie doel het ek twee dinge gedoen; die een is om spesifiek op kruideniersware te fokus, en die ander is om 'n webbediener by die Framboos te voeg om nuwe UPC -kodes met die hand by te voeg, maar dit vereis ten minste 'n plaaslike netwerkverbinding.

Toekomstige ToDo:

Ek sou die Zero W 'n 'hotspot' maak, sodat u dit oral kon verbind om nuwe UPC -kodes by te voeg.

Stap 5: Teks-na-spraak

Ek het die teks -na -spraak -program genaamd 'Flite' gebruik, aangesien dit die beste kompromie gehad het tussen stemkwaliteit en omskakelingsnelheid op die Zero. Ander klink 'n bietjie beter, maar was te traag om om te skakel.

U kan ook die tutoriaal van Adafruit besoek:

Let daarop dat dit 'n bietjie "ooropleiding" verg om aan die spraakbuiging gewoond te raak, maar dit is nie so erg nie.

Deur dieselfde item weer te skandeer, word die klank herhaal.

Toekomstige ToDo

Miskien 'n koptelefoonaansluiting byvoeg, sodat dit makliker is vir seniors om die stem op raserige plekke te hoor.

Stap 6: Batterykrag

Die stelsel kan van 'n 5V USB -battery gebruik word, soos om selfone te herlaai.

Die punt is dat as u die battery ontkoppel of die battery doodgaan, die Pi ineenstort met die kans dat dit die SD -skyf sal beskadig.

Om dit op te los, is 'n knoppie nodig wat 'n afsluitopdrag uitvoer. Ek sal waarskynlik een soos hierdie gebruik:

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

(Ja … nog 'n "Future ToDo!")

Stap 7: Deel I - Voeg klank by Pi Zero

Deel I - Voeg audio by Pi Zero
Deel I - Voeg audio by Pi Zero
Deel I - Voeg audio by Pi Zero
Deel I - Voeg audio by Pi Zero
Deel I - Voeg audio by Pi Zero
Deel I - Voeg audio by Pi Zero

(Slaan hierdie deel oor as u nie 'n nul gebruik nie!)

Op 'n Pi Zero moet u eksterne klank byvoeg, aangesien dit nie ingebou is nie. Ek gebruik die goedkoop “Adafruit I2S 3W Versterker -uitbreek MAX98357A”

Dit vereis opstelling met behulp van die uitstekende tutoriaal van Adafruit op:

Soos aangedui in die bedradinggedeelte van die tutoriaal, koppel:

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

Koppel 'n klein luidspreker aan die klankkabels op die bord.

Voer ook die sagteware -opstelling van Pi Zero Adafruit uit, voer die onderstaande CURL -opdrag uit:

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

Na die herlaai, toets die klank met behulp van luidspreker-toets:

$ luidspreker -toets -c2 -toets = wav -w /usr/share/sounds/alsa/Front_Center.wav

As u probleme ondervind, gaan terug deur die Adafruit -tutoriaal, begin terug in die oorsig. Miskien moet u die stappe "Gedetailleerde installasie" in die tutoriaal ondergaan om te verifieer dat alle lêers opgedateer is.

Belangrike vereiste stappe vir Zero & Max98357 Audio: Standaard werk die ALSA-klank slegs in stereo terwyl Flite teks-na-spraak mono is. Die klank bevat ook 'pops' elke keer as dit begin speel.

(Sien:

U moet die volgende doen:

1) Voeg 'n reël by /boot/config.txt

$ sudo nano /boot/config.txt

dtoverlay = i2s-mmap

2) Vervang /etc/asound.conf

$ sudo nano /etc/asound.conf

pcm.hifiberry {tipe hw kaart 0} pcm.! standaard {tipe plug slave.pcm "dmixer"} pcm.dmixer {tipe dmix ipc_key 1024 slave {pcm "hifiberry" kanale 2}} ctl.dmixer {tipe hw kaart 0}

3) Herlaai u Pi.

Probeer weer die luidspreker-toets. Dit behoort nou beter te klink. Sodra u die opstelhandleiding, insluitend die klanktoetse, voltooi het, moet die geluid gereed wees.

Let daarop dat u 'n koptelefoonaansluiting vir klank wil byvoeg as u dit na 'n kruidenierswinkel of 'n lawaaierige omgewing neem.

Stap 8: Deel II - sagteware -installasie

Dit veronderstel dat u reeds Raspbian Jessie geïnstalleer het en toegang tot die Linux-opdragreël het. U het nie die GUI -weergawe van Raspbian nodig nie, maar dit is goed om te gebruik.

U het tans nie die USB -skandeerder nodig nie, as u die USB -poort vir Ethernet of sleutelbord/muis benodig.

Maak seker dat u bedryfstelsel op datum is:

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

Gaan vanaf die opdraglyn na die pi-tuisgids en laai die GITHUB-bewaarplek af:

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

Dit sal tyd neem, veral as dit die eerste keer is dat die webbediener en PHP geïnstalleer of bygewerk moet word. As dit nodig is, kan u dit meer as een keer uitvoer. Onder andere installeer dit die strepieskodelêers en UPC -databasis na:/var/www/html/upc

Wysig dan /etc/rc.local en voeg die volgende reël by voor die "afrit 0"

$ sudo nano /etc/rc.local

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

Nadat die installasie voltooi is, skakel u Pi af en sluit die USB -strepieskode -leser aan en herbegin.

$ sudo sluit nou af

Skakel dit weer aan, en u moet 'n kort opstartrede hoor.

As dit die geval is, probeer om 'n strepieskode van 'n kruideniersware te skandeer. As alles goed verloop het, moet u dit hoor (of 'nie gevind nie'). Gaan andersins na die gids vir probleemoplossing.

Stap 9: Probleemoplossing

Probleemoplossing
Probleemoplossing

As u geen geluide hoor nie, moet u die volgende opdragte probeer:

1) Verifieer dat die teks-na-spraak-klank werk:

$ sudo flite -stemme awb -t "toets"

As u 'n fout kry, moet u seker maak dat flite geïnstalleer is:

$ sudo apt installeer flite

As u die volgende fout kry, moet u /boot/config.txt en /etc/asound.conf in die afdeling Audio Setup hierbo op Raspi Zero's: audio_open_alsa: opgedateer het om die aantal kanale op 1. Ongeldige argument te stel.

As u geen fout of klank kry nie, moet u seker maak dat u Raspberry -klank werk.

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

1) Miskien moet u die klank uit die klankaansluiting dwing: (sien fig. 1 hierbo)

$ sudo raspi -config -> 7 gevorderde opsies -> A4 Audio

2) As u klank en teks-na-spraak goed geverifieer het, kyk na die strepieskode-leser:

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

U moet 'n numeriese strepieskodenommer sien wanneer u 'n strepieskode skandeer. (Die toetsprogram bevat NIE klankuitsette of databasisverbindings nie.)

3) As dit alles goed is, kyk dan na die 'nohup.out' -lêer vir foutboodskappe:

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

Probleme ontbreek waarskynlik pakkette of slegte toestemmings (of foute in die kode!). Maak seker dat u bedryfstelsel op datum is en herlaai die install.sh weer.

Hopelik werk jy nou!

Stap 10: Deel III - Webbediener

Deel III - Webbediener
Deel III - Webbediener

Aangesien daar miljoene UPC -kodes is en die meeste in die openbaar beskikbare databasisse slegs 'n klein deel van kodes is, fokus hierdie projek op UPC -kodes vir kruideniersware. Dit bevat 'n paar honderdduisend items, maar baie, baie sal nie gevind word nie.

As u die UPC -databasis wil byvoeg of bywerk, is daar twee programme beskikbaar; 'n opdragreël een en 'n webblaaier een. (vervang die syfers met u UPC -itemnommer)

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

$ sudo./addDB.sh 01234567890 “My nuwe item”

Dit sal 'n rekord by die databasis voeg. Andersins word voorgestel dat u die DB -funksie van die webblaaier gebruik.

Vir die Web Server GUI benodig u die IP -adres van u framboos.

Om die IP -adres te vind, kan u die volgende gebruik:

$ gasheernaam -I 192.168.1.108

Gaan vanaf 'n rekenaarblaaier na: https://192.168.1.108/upc/Jy behoort 'n skerm te sien wat soortgelyk is aan die in figuur 2 hierbo.

As dit die geval is, kan u rekords byvoeg/opdateer en uitvee. Navigeer na die laaste bladsy met die ('> |') "laaste rekord" -knoppie om u nuutste rekords te sien terwyl dit aan die einde van die databasis geheg word.

VEILIGHEID LET OP dat hierdie webdiens nie beveilig is nie (geen verifikasie, geen SSL nie), daarom is dit die beste om dit nie aan die openbare internet bloot te stel nie. (Aangesien dit nie as 'n WiFi -toegangspunt ingerig is nie, is dit veilig om na die winkel te neem.)

Aangesien daar geen privaat data is nie, is dit egter die ergste dat iemand die UPC -data kan misbruik.

U kan ook toegang tot spesifieke IP -adresse beperk sodat geen ander toegang kan kry nie. Vervang net die IP (s) hier vir die wat u wil toelaat. Alle ander sal toegang tot:

$ sudo vi /etc/lighttpd/lighttpd.conf

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

VERANDER ook die standaard PI -wagwoord! Almal weet dat die standaard pi/framboos is

$ passwd

Stap 11: Probleemoplossing van die webbediener

Probleemoplossing van die webbediener
Probleemoplossing van die webbediener
Probleemoplossing van die webbediener
Probleemoplossing van die webbediener

Gebruik u blaaier na die IP -adres van u Framboos, soos volg:

192.168.1.108/

U moet die standaardskerm sien vanaf /var/www/html/index.html (figuur 1 hierbo)

Maak ook seker dat die webbediener werk:

$ ps -ef | grep lighttpd

Om te verifieer dat PHP goed is, skep 'n php -toetslêer:

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

Gaan dan na

U behoort 'n skerm soos Fig. 2 hierbo te sien

As u foute of leë skerms kry, kyk of daar foute in is

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

Weereens, herlaai van die install.sh kan ontbrekende afhanklikes regstel.

Stap 12: Bylaag

'N GROOT DANKIE gaan aan die volgende vir die beskikbaarstelling van 'n groot UPC -databasis.

Open kruideniersware UPC DB

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

Maak Data DB oop

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

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

Dankie aan EasyUI vir die eenvoudige web CRUD GUI

www.jeasyui.com/index.php

Aanbeveel: