Turinys:

„Raspberry Pi Talking“brūkšninių kodų skaitytuvas: 12 žingsnių
„Raspberry Pi Talking“brūkšninių kodų skaitytuvas: 12 žingsnių

Video: „Raspberry Pi Talking“brūkšninių kodų skaitytuvas: 12 žingsnių

Video: „Raspberry Pi Talking“brūkšninių kodų skaitytuvas: 12 žingsnių
Video: Automobilio kintamosios srovės generatorius į savaiminio susijaudinimo generatorių naudojant DIODE 2024, Lapkritis
Anonim
Raspberry Pi Talking brūkšninių kodų skaitytuvas
Raspberry Pi Talking brūkšninių kodų skaitytuvas

1 pav. Brūkšninių kodų skaitytuvas iš DX.com

Apžvalga

Atnaujinimas: trumpą vaizdo įrašo demonstraciją galima rasti

Mano mama nebegali skaityti maisto prekių etikečių, todėl aš ieškojau sprendimų. Pamatęs, kad aklųjų brūkšninių kodų skaitytuvai uždirba šimtus dolerių, norėjau sužinoti, ką galima padaryti naudojant „Raspberry Pi“ir USB brūkšninių kodų skaitytuvą.

Kitas esminis pavyzdys buvo tai, kad tai turėtų veikti BE interneto ryšio (pvz., Parduotuvėje ar draugo namuose). Taigi duomenų bazė ir tekstas į kalbą turėjo būti savarankiški.

Išbandžiau fotoaparatu pagrįstą brūkšninių kodų skaitytuvo versiją, tačiau apšvietimas ir kameros padėtis sukėlė patikimumo problemų tiems, kurie negalėjo aiškiai matyti. Norint nustatyti ir naudoti programą, taip pat reikėjo žvilgsnio. Taigi perėjau prie USB lazerinio brūkšninio kodo skaitytuvo, ypač todėl, kad dabar juos galima įsigyti už mažiau nei 30 USD, o „Raspbian Jessie“juos palaiko iš karto.

Aš taip pat išbandžiau naująją „Amazon Dash Wand“, tačiau ji nekalba apie nuskaitytą elementą ir tam reikia interneto ryšio.

Idėja buvo nuskaityti elementą ir turėti Raspberry užklausą vidinėje UPC kodų duomenų bazėje, o tada ištarti produkto aprašymą naudojant tekstą į kalbą.

Kad įrenginys būtų kuo mažesnis, norėjau naudoti „Raspberry Pi Zero“. Taip pat norėjau išjungti įrenginį iš akumuliatoriaus energijos.

Norint įvykdyti šiuos reikalavimus, reikėjo tam tikrų kompromisų. Kadangi „Zero“neturi išorinio garso lizdo, pakartotinai panaudojau savo „Earthquake Pi“projekto garso dizainą, nes jis buvo nebrangus (apie 6 USD) ir labai mažas. Arba „Pi Zero“gali pakeisti „vieno tranzistoriaus garsas“.

Lazerinio brūkšninio kodo skaitytuvui radau vieną iš DX.com. Jis išjungtas iš Raspberry USB ir kainuoja apie 25 USD. (žr. dalis žemiau)

1 žingsnis: ATNAUJINTI

Atėjus „Raspberry Pi Zero W“, ketinu pereiti prie jo. Viskas čia yra tas pats, išskyrus tai, kad jums reikia nustatyti „Wi -Fi“ryšį su „Pi“. Tai reiškia, kad norint nustatyti ir naudoti „Zero“nereikės USB šakotuvo.

„Wi -Fi“galite nustatyti naudodami:

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

Ar tu žinai?

Jei įdiegsite „Raspbian Jessie“į SD kortelę naudodami „Windows“asmeninį kompiuterį, prieš paleisdami „Raspberry“, kortelėje galite sukurti du failus, kad sukonfigūruotumėte „WiFi“ir SSH prieigą?

Norėdami tai padaryti, tarkime, kad jūsų SD kortelė šiuo metu jūsų kompiuteryje yra sumontuota kaip K:

1) Į SD įdiekite naujausią „Raspbian Jessie“vaizdą. Šiam projektui „Jessie Lite“turėtų veikti.

www.raspberrypi.org/downloads/raspbian/

2) Naudodami užrašų knygelę, sukurkite failą pavadinimu „ssh“ir naudokite Įrašyti kaip „Visi failai“į K: / ssh

Faile gali būti bet kas. Svarbus yra failo pavadinimas. Neturi būti „ssh.txt“!!!

3) Naudodami užrašų knygelę, sukurkite failą pavadinimu „wpa_supplicant.conf“su:

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

tinklas = {

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

Naudokite Įrašyti kaip „Visi failai“į K: / wpa_supplicant.conf Vėlgi, neleiskite „Notepad“jo pakeisti į „wpa_supplicant.conf.txt“!!

Kai pirmą kartą paleidžiate „Raspberry“, Jessie jų ieškos ir prisijungs prie jūsų „Wifi“. Vis dėlto turėsite ieškoti maršrutizatoriaus IP adreso, nes jis priskirtas automatiškai.

2 žingsnis: dalių sąrašas

  • „Raspberry Pi Zero“(arba bet kuris „Raspberry Pi“, jei dydis nėra problema)
  • USB lazerinis brūkšninių kodų skaitytuvas

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

  • Jei norite naudoti „Raspi Zero“, pridėkite „Adafruit I2S 3W D“klasės stiprintuvą
  • Mažas garsiakalbis. („Pi 2, 3“naudokite išorinį stiprintuvą ir garsiakalbį.)
  • USB Micro į USB OTG adapterishttps://www.adafruit.com/products/2910
  • 5V 1Amp USB akumuliatorius, pvz.,
  • USB į mikro USB kabelis akumuliatoriui.
  • USB ir Ethernet šakotuvas (bent jau pradiniam sąrankos darbui, nereikalingas „Zero W“ar „Raspi 2, 3“)
  • Programinė įranga iš GITHUB:

3 žingsnis: USB lazerinis brūkšninių kodų skaitytuvas

USB lazerinis brūkšninių kodų skaitytuvas
USB lazerinis brūkšninių kodų skaitytuvas

Lazeriniai brūkšninių kodų skaitytuvai yra labiau atlaidūs, nes gali nuskaityti UPC etiketę nei fotoaparatai. Jie taip pat gerai veikia net prastai apšviestose ar prastai uždėtose etiketėse.

Norėdami prijungti „Zero“, jums reikės USB -USB mikro adapterio.

Skaitytuvo rankena ir gaidukas palengvina naudojimą.

Tai taip pat duoda grįžtamąjį ryšį, kai sėkmingai nuskaito etiketę.

Būsimi darbai:

Galutiniame projekte aš nukirpčiau kabelį, kad jį sutrumpinčiau, ir lituoti tiesiai prie „Zero“USB kaiščių, kad sumažintumėte jungties gedimo dydį ir tikimybę. Nulis ir baterija būtų pritvirtinti tiesiai prie skaitytuvo rankenos apačios 3D spausdintame dėkle.

4 žingsnis: UPC duomenų bazė

Tai prasčiausiai padengta projekto dalis, nes pažodžiui yra milijonai UPC kodų ir labai mažai atviro kodo duomenų bazių, kurias galima atsisiųsti. Deja, dauguma UPC duomenų bazių yra gana brangios ir reikalauja interneto ryšio.

Galėjau sudėti kelias atvirojo kodo duomenų bazes (šaltiniai žemiau esančiame priede), tačiau net ir turint beveik 700 000 elementų, jų trūksta.

Šiuo tikslu aš padariau du dalykus; vienas yra sutelkti dėmesį į bakalėjos gaminius, o kitas - pridėti „Raspberry“žiniatinklio serverį, kad būtų galima rankiniu būdu pridėti naujų UPC kodų, tačiau tam reikia bent jau vietinio tinklo ryšio.

Būsimi darbai:

Aš padarysiu „Zero W“„viešosios interneto prieigos tašku“, kad galėtumėte prie jo prisijungti bet kur ir pridėti naujų UPC kodų.

5 veiksmas: teksto į kalbą

Aš naudojau teksto į kalbą programą „Flite“, nes ji turėjo geriausią kompromisą tarp balso kokybės ir konversijos greičio „Zero“. Kiti skambėjo šiek tiek geriau, tačiau buvo per lėtai konvertuojami.

Taip pat galite peržiūrėti „Adafruit“vadovėlį:

Atminkite, kad prireiks šiek tiek „ausų treniruotės“, kad priprastumėte prie kalbos linksnio, tačiau tai nėra labai blogai.

Dar kartą nuskenavus tą patį elementą, garsas kartosis.

Ateities uždaviniai

Galbūt pridėkite ausinių lizdą, kad senjorams būtų lengviau girdėti balsą triukšmingose vietose.

6 žingsnis: akumuliatoriaus energija

Sistemą galima paleisti iš 5 V USB akumuliatoriaus, pavyzdžiui, naudojamo mobiliesiems telefonams įkrauti.

Faktas yra tas, kad atjungus akumuliatorių arba akumuliatorius miršta, „Pi“suduš ir gali sugadinti SD diską.

Norėdami tai išspręsti, reikia mygtuko, kuris vykdo išjungimo komandą. Turbūt naudosiu tokį:

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

(Taip… dar vienas „Ateities uždavinys!“)

7 žingsnis: I dalis - garso pridėjimas prie „Pi Zero“

I dalis - garso pridėjimas prie „Pi Zero“
I dalis - garso pridėjimas prie „Pi Zero“
I dalis - garso pridėjimas prie „Pi Zero“
I dalis - garso pridėjimas prie „Pi Zero“
I dalis - garso pridėjimas prie „Pi Zero“
I dalis - garso pridėjimas prie „Pi Zero“

(Praleiskite šią dalį, jei nenaudojate nulio!)

„Pi Zero“turėsite pridėti išorinį garsą, nes jis nėra įmontuotas. Aš naudojau nebrangią „Adafruit I2S 3W Amplifier Breakout MAX98357A“

Tam reikia atlikti sąranką naudojant puikią „Adafruit“mokymo programą adresu

Kaip parodyta mokymo laidų dalyje, prijunkite:

• Amp Vin - Raspi Zero Pi 5V

Prijunkite nedidelį garsiakalbį prie garso laidų lentoje.

„Pi Zero Adafruit“garso programinės įrangos sąranka Taip pat parodyta „Adafruit“programinės įrangos sąrankos pamokoje, vykdykite toliau nurodytą komandą CURL:

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

Po perkrovimo patikrinkite garsą naudodami garsiakalbio testą:

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

Jei turite problemų, grįžkite per „Adafruit“vadovėlį, pradedant apžvalga. Jei norite patikrinti visus atnaujintus failus, jums gali tekti atlikti „Išsamios diegimo“instrukcijos veiksmus.

Svarbūs būtini „Zero & Max98357“garso veiksmai: pagal numatytuosius nustatymus ALSA garsas veikia tik stereo režimu, o „Flite“tekstas į kalbą yra monofoninis. Be to, garso įrašas turi „iššokti“kiekvieną kartą, kai jis pradedamas leisti.

(Žr.:

Turite atlikti šiuos veiksmus:

1) Pridėkite eilutę prie /boot/config.txt

$ sudo nano /boot/config.txt

dtoverlay = i2s-mmap

2) Pakeiskite /etc/asound.conf

$ sudo nano /etc/asound.conf

pcm.hifiberry {type hw card 0} pcm.! numatytasis {type plug slave.pcm "dmixer"} pcm.dmixer {type dmix ipc_key 1024 slave {pcm "hifiberry" channels 2}} ctl.dmixer {type hw card 0}

3) Iš naujo paleiskite „Pi“.

Bandykite garsiakalbio testą dar kartą. Dabar jis turėtų skambėti geriau. Kai baigsite sąrankos vadovą, įskaitant garso testus, garsas turėtų būti paruoštas.

Atminkite, kad galbūt norėsite pridėti ausinių lizdą garsui, jei nunešite jį į bakalėjos parduotuvę ar triukšmingą aplinką.

8 žingsnis: II dalis - programinės įrangos diegimas

Tai reiškia, kad jau turite įdiegtą „Raspbian Jessie“ir galite pasiekti „Linux“komandų eilutę. Jums nereikia „Raspbian“GUI versijos, tačiau ją naudoti galima.

Šiuo metu jums nereikia prijungto USB skaitytuvo, jei jums reikia USB prievado eternetui arba klaviatūrai/pelėms.

Įsitikinkite, kad jūsų OS yra atnaujinta:

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

Iš komandinės eilutės eikite į pi namų katalogą ir atsisiųskite GITHUB saugyklą:

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

Tai užtruks šiek tiek laiko, ypač jei tai pirmas kartas ir reikia įdiegti arba atnaujinti žiniatinklio serverį ir PHP. Jei reikia, galite tai paleisti daugiau nei vieną kartą. Be kitų dalykų, tai įdiegia brūkšninio kodo failus ir UPC duomenų bazę į:/var/www/html/upc

Tada redaguokite /etc/rc.local ir pridėkite šią eilutę prieš „exit 0“

$ sudo nano /etc/rc.local

fi sudo /var/www/html/upc/bin/run.sh išeiti 0

Baigę diegti, išjunkite „Pi“ir prijunkite USB brūkšninių kodų skaitytuvą ir paleiskite iš naujo.

$ sudo dabar išjungtas

Įjunkite maitinimą ir turėtumėte išgirsti trumpą paleidimo kalbą.

Jei taip, pabandykite nuskaityti brūkšninį kodą iš bakalėjos prekės. Jei viskas klostėsi gerai, turėtumėte išgirsti, kaip jis kalba elementą (arba pasakyti „Nerasta“). Priešingu atveju peržiūrėkite trikčių šalinimo vadovą.

9 veiksmas: trikčių šalinimas

Problemų sprendimas
Problemų sprendimas

Jei negirdite jokių garsų, turėsite išbandyti šias komandas:

1) Patikrinkite, ar veikia teksto į kalbą garsas:

$ sudo flite -voice awb -t "testavimas"

Jei gaunate klaidą, įsitikinkite, kad „flite“buvo įdiegta:

$ sudo apt install flite

Jei gaunate šią klaidą, būtinai atnaujinkite /boot/config.txt ir /etc/asound.conf, rodomus aukščiau esančioje „Raspi Zero“garso sąrankos skiltyje: audio_open_alsa: nepavyko nustatyti kanalų skaičiaus į 1. Neteisingas argumentas.

Jei negaunate klaidos ir garso, įsitikinkite, kad „Raspberry“garso įrašas veikia.

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

1) Gali tekti priversti garsą iš garso lizdo: (žr. 1 pav. Aukščiau)

$ sudo raspi -config -> 7 Išplėstinės parinktys -> A4 garsas

2) Kai patikrinsite garso ir teksto į kalbą kokybę, patikrinkite brūkšninių kodų skaitytuvą:

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

Skenuojant brūkšninį kodą turėtumėte matyti skaitinį brūkšninio kodo numerį. (Į bandymo programą neįeina garso išvesties ar duomenų bazės jungtys.)

3) Jei visa tai gerai, patikrinkite failo „nohup.out“klaidų pranešimus:

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

Tikėtinos problemos yra trūkstami paketai arba blogi leidimai (arba klaidos kode!). Įsitikinkite, kad jūsų OS yra atnaujinta, ir dar kartą paleiskite install.sh.

Tikimės, kad jūs jau dirbate!

10 veiksmas: III dalis - žiniatinklio serveris

III dalis - žiniatinklio serveris
III dalis - žiniatinklio serveris

Kadangi yra MILIJONAI UPC kodų ir dauguma viešai (t. Y. Nemokamų) prieinamų duomenų bazių yra tik nedidelis kodų pogrupis, šis projektas buvo sutelktas į bakalėjos UPC kodus. Jame yra keli šimtai tūkstančių daiktų, tačiau daug daug jų nebus rasta.

Jei reikia pridėti arba atnaujinti UPC duomenų bazę, yra dvi programos; komandinės eilutės ir žiniatinklio naršyklės. (pakeiskite skaitmenis savo UPC prekės numeriu)

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

$ sudo./addDB.sh 01234567890 „Mano naujas elementas“

Tai pridės įrašą prie duomenų bazės. Priešingu atveju siūloma naudoti žiniatinklio naršyklės DB funkciją.

Norėdami naudoti žiniatinklio serverio GUI, jums reikia jūsų aviečių IP adreso.

Norėdami rasti IP adresą, galite naudoti:

$ hostname -I 192.168.1.108

Kompiuterio naršyklėje eikite į: https://192.168.1.108/upc/ Turėtumėte pamatyti ekraną, panašų į 2 paveiksle pateiktą.

Jei taip, galite pridėti/atnaujinti ir ištrinti įrašus. Eikite į paskutinį puslapį naudodami („> |“) „paskutinio įrašo“mygtuką, kad pamatytumėte naujausius įrašus, pridedamus prie duomenų bazės pabaigos.

SAUGUMAS PASTABA, kad ši žiniatinklio paslauga nėra apsaugota (nėra autentifikavimo, nėra SSL), todėl geriausia jos neatskleisti viešajam internetui. (Bet kadangi jis nėra nustatytas kaip „WiFi“prieigos taškas, jį saugu nešiotis į parduotuvę.)

Nors, kadangi apie tai nėra privačių duomenų, blogiausia, kas gali atsitikti, yra tai, kad kažkas tvarko UPC duomenis.

Taip pat galite apriboti prieigą prie konkrečių IP adresų, kad kiti negalėtų patekti. Tiesiog pakeiskite čia nurodytus IP adresus. Visiems kitiems bus uždrausta pasiekti:

$ 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

Taip pat PAKEISKITE numatytąjį PI slaptažodį! Visi žino, kad numatytasis yra pi/avietė

$ passwd

11 veiksmas: žiniatinklio serverio trikčių šalinimas

Žiniatinklio serverio trikčių šalinimas
Žiniatinklio serverio trikčių šalinimas
Žiniatinklio serverio trikčių šalinimas
Žiniatinklio serverio trikčių šalinimas

Naudodamiesi naršykle eikite į savo Raspberry IP adresą, pavyzdžiui:

192.168.1.108/

Turėtumėte matyti numatytąjį ekraną iš /var/www/html/index.html (1 pav. Aukščiau)

Taip pat įsitikinkite, kad veikia žiniatinklio serveris:

$ ps -ef | grep lighttpd

Norėdami patikrinti, ar PHP yra geras, sukurkite php bandymo failą:

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

Tada eikite į

Turėtumėte pamatyti ekraną, panašų į 2 paveikslą aukščiau

Jei gaunate klaidų arba tušti ekranai, patikrinkite, ar nėra klaidų

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

Vėlgi, pakartotinai paleisdami install.sh gali ištaisyti trūkstamas priklausomybes.

12 žingsnis: Priedas

DIDELIS AČIŪ teikiama, kad būtų galima naudotis didele UPC duomenų baze.

Atidarykite bakalėjos UPC DB

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

Atidarykite duomenų DB

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

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

Dėkojame „EasyUI“už paprastą žiniatinklio CRUD GUI

www.jeasyui.com/index.php

Rekomenduojamas: