Cuprins:

Cititor de coduri de bare vorbitor Raspberry Pi: 12 pași
Cititor de coduri de bare vorbitor Raspberry Pi: 12 pași

Video: Cititor de coduri de bare vorbitor Raspberry Pi: 12 pași

Video: Cititor de coduri de bare vorbitor Raspberry Pi: 12 pași
Video: Cum facem coduri de bare in Excel 2024, Noiembrie
Anonim
Cititor de coduri de bare Raspberry Pi Talking
Cititor de coduri de bare Raspberry Pi Talking

Fig.1 Scanner de coduri de bare de la DX.com

Prezentare generală

Actualizare: este disponibilă o scurtă demonstrație video

Mama mea nu mai poate citi etichetele articolelor alimentare, așa că am căutat soluții. După ce am văzut că cititorii de coduri de bare pentru nevăzători rulează multe sute de dolari, am vrut să văd ce se poate face folosind un Raspberry Pi și un cititor de coduri de bare USB.

O altă imitație cheie a fost că aceasta ar trebui să funcționeze FĂRĂ o conexiune la Internet (cum ar fi la un magazin sau la casa unui prieten). Deci baza de date și text-to-speech trebuiau să fie autonome.

Am încercat o versiune bazată pe cameră a cititorului de coduri de bare, dar iluminatul și poziția camerei au cauzat probleme de fiabilitate pentru cineva care nu poate vedea clar. Acestea necesită, de asemenea, vedere pentru a configura și utiliza aplicația. Așa că am trecut la un cititor de coduri de bare USB cu laser, mai ales că acum sunt disponibile pentru mai puțin de 30 USD, iar Raspbian Jessie le acceptă chiar din cutie.

De asemenea, am încercat noua baghetă Amazon Dash, dar nu vorbește despre elementul scanat și necesită o conexiune la internet pentru a funcționa.

Ideea a fost să scanați un articol și să solicitați Raspberry o bază de date internă de coduri UPC și apoi să rostiți descrierea produsului folosind text-to-speech.

Pentru a face unitatea cât mai mică posibil, am vrut să folosesc un Raspberry Pi Zero. De asemenea, am vrut să scot unitatea și de pe baterie.

Pentru a îndeplini aceste cerințe au fost necesare unele compromisuri. Deoarece Zero nu are o mufă audio externă, am refolosit designul audio din proiectul meu „Earthquake Pi”, deoarece a fost cost redus (aproximativ 6 USD) și foarte mic. Alternativ, poate fi posibilă înlocuirea „One Transistor Audio cu Pi Zero”.

Pentru scanerul cu cod de bare laser, am găsit unul de pe DX.com. Este oprit Raspberry USB și costă aproximativ 25 USD. (a se vedea părțile de mai jos)

Pasul 1: ACTUALIZARE

Odată cu sosirea Raspberry Pi Zero W, voi trece la el. Totul aici este la fel, cu excepția faptului că trebuie să configurați conexiunea WiFi la Pi. Aceasta înseamnă că nu veți avea nevoie de un hub USB pentru Zero pentru configurare și utilizare.

Puteți configura WiFi utilizând:

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

Știați?

Dacă instalați Raspbian Jessie pe un card SD utilizând un PC Windows, puteți crea două fișiere pe card pentru a configura accesul WiFi și SSH înainte de al porni pe un Raspberry?

Pentru aceasta, presupuneți că cardul dvs. SD este montat în prezent ca K: pe computer:

1) Instalați cea mai recentă imagine Raspbian Jessie pe SD. Pentru acest proiect, Jessie Lite ar trebui să funcționeze.

www.raspberrypi.org/downloads/raspbian/

2) Cu notepad, creați un fișier numit doar „ssh” și utilizați Salvare ca „Toate fișierele” în K: / ssh

Fișierul poate conține orice. Numele fișierului este important. NU trebuie să fie „ssh.txt” !!!

3) Cu notepad, creați un fișier numit „wpa_supplicant.conf” cu următoarele:

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

rețea = {

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

Folosiți Salvare ca „Toate fișierele” în K: / wpa_supplicant.conf Din nou, nu lăsați Notepad să-l schimbe în „wpa_supplicant.conf.txt” !!

Când porniți Raspberry prima dată, Jessie le va căuta și se va conecta la Wifi. Totuși, va trebui să căutați pe router-ul dvs. adresa IP, de la atribuirea sa automată.

Pasul 2: Lista pieselor

  • Raspberry Pi Zero (sau orice Raspberry Pi, dacă dimensiunea nu este o problemă)
  • Scanner USB cu cod de bare laser

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

  • Pentru Raspi Zero, adăugați amplificatorul Adafruit I2S 3W Clasa D
  • Mic difuzor. (Pentru Pi 2, 3, utilizați amplificator și difuzor extern.)
  • Adaptor USB Micro la USB OTG
  • Acumulator USB de 5V 1Amp, precum:
  • Cablu USB la micro USB pentru acumulator.
  • Hub USB și Ethernet (cel puțin pentru configurarea inițială, nu este necesar pentru Zero W sau Raspi 2, 3)
  • Software de la GITHUB:

Pasul 3: USB Laser Reader Code Reader

Cititor de coduri cu bare laser USB
Cititor de coduri cu bare laser USB

Cititorii de coduri de bare cu laser sunt mai iertători în ceea ce privește capacitatea lor de a scana o etichetă UPC decât camerele. De asemenea, funcționează bine chiar și pe etichete slab iluminate sau prost plasate.

Veți avea nevoie de adaptorul micro USB la USB pentru al conecta la zero.

Mânerul și declanșatorul scanerului îl fac ușor de utilizat.

De asemenea, oferă feedback atunci când scanează cu succes o etichetă.

A face viitor:

În designul final, aș tăia cablul pentru al scurta și l-aș lipi direct la pinii USB de pe zero pentru a reduce dimensiunea și probabilitatea unei defecțiuni a conectorului. Zero și bateria ar fi atașate direct la partea inferioară a mânerului scanerului într-o carcasă imprimată 3D.

Pasul 4: Baza de date UPC

Aceasta este cea mai prost acoperită parte a proiectului, deoarece există literalmente milioane de coduri UPC și foarte puține baze de date open source disponibile pentru descărcare. Din păcate, majoritatea bazelor de date UPC sunt destul de scumpe și necesită conectivitate la internet.

Am reușit să pun laolaltă câteva baze de date open source (surse din apendicele de mai jos), dar chiar și cu aproape 700 000 de articole, lipsesc un număr mare.

În acest scop, am făcut două lucruri; una este să se concentreze în mod special pe articolele alimentare, iar cealaltă este să adăugați un server web la Raspberry pentru a permite adăugarea manuală de noi coduri UPC, deși acest lucru necesită cel puțin conectivitate la rețea locală.

A face viitor:

Aș face Zero W un „hotspot”, astfel încât să vă puteți conecta oriunde pentru a adăuga noi coduri UPC.

Pasul 5: Text-to-Speech

Am folosit programul text to speech numit „Flite”, deoarece avea cel mai bun compromis între calitatea vocii și viteza de conversie pe Zero. Alții au sunat puțin mai bine, dar au fost prea încet pentru a converti.

De asemenea, puteți consulta tutorialul Adafruit:

Rețineți că va fi nevoie de un pic de „antrenament al urechii” pentru a vă obișnui cu inflexiunea vorbirii, dar nu este prea rău.

Scanarea din nou a aceluiași element va repeta sunetul.

ToDo viitor

Poate adăugați o mufă pentru căști, astfel încât să fie mai ușor pentru seniori să audă vocea în locuri zgomotoase.

Pasul 6: Alimentarea bateriei

Sistemul poate fi rulat de la o baterie USB de 5V, cum ar fi cea utilizată pentru reîncărcarea telefoanelor mobile.

Problema este că atunci când deconectați bateria sau bateria moare, Pi-ul se va prăbuși cu șansa că va deteriora unitatea SD.

Pentru a rezolva acest lucru, este necesar un buton care execută o comandă de oprire. Probabil voi folosi unul ca acesta:

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

(Da … încă un „Viitor de făcut!”)

Pasul 7: Partea I - Adăugarea audio la Pi Zero

Partea I - Adăugarea audio la Pi Zero
Partea I - Adăugarea audio la Pi Zero
Partea I - Adăugarea audio la Pi Zero
Partea I - Adăugarea audio la Pi Zero
Partea I - Adăugarea audio la Pi Zero
Partea I - Adăugarea audio la Pi Zero

(Omiteți această parte dacă nu utilizați un zero!)

Pe un Pi Zero, va trebui să adăugați sunet extern, deoarece nu este încorporat. Am folosit costul redus „Adafruit I2S 3W Amplifier Breakout MAX98357A”

Acest lucru necesită configurare utilizând excelentul tutorial Adafruit la:

Așa cum se arată în partea de cablare a tutorialului, conectați-vă:

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

Conectați un difuzor mic la cablurile audio de pe placă.

Pi Zero Adafruit Audio Software Setup De asemenea, prezentat în tutorialul de configurare software Adafruit, executați comanda CURL de mai jos:

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

După repornire, testați sunetul folosind difuzorul-test:

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

Dacă aveți probleme, reveniți prin tutorialul Adafruit, începând cu prezentarea generală. Poate fi necesar să parcurgeți pașii „Instalare detaliată” din tutorial pentru a verifica toate fișierele actualizate.

Pași necesari importanți pentru audio Zero și Max98357: În mod implicit, sunetul ALSA funcționează numai în stereo, în timp ce textul în vorbire Flite este mono. De asemenea, sunetul are „pop-uri” în el de fiecare dată când începe redarea.

(A se vedea:

Trebuie să faceți următoarele:

1) Adăugați o linie la /boot/config.txt

$ sudo nano /boot/config.txt

dtoverlay = i2s-mmap

2) Înlocuiți /etc/asound.conf

$ sudo nano /etc/asound.conf

pcm.hifiberry {tip hw card 0} pcm.! implicit {tip plug slave.pcm "dmixer"} pcm.dmixer {tip dmix ipc_key 1024 slave {pcm "hifiberry" canale 2}} ctl.dmixer {tip hw card 0}

3) Reporniți Pi.

Încercați din nou testul difuzorului. Ar trebui să sune mai bine acum. După ce finalizați tutorialul de configurare, inclusiv testele audio, sunetul ar trebui să fie gata.

Rețineți că poate doriți să adăugați o mufă pentru căști pentru sunet, dacă o duceți la un magazin alimentar sau într-un mediu zgomotos.

Pasul 8: Partea II - Instalarea software-ului

Aceasta presupune că aveți deja Raspbian Jessie instalat și puteți accesa linia de comandă Linux. Nu aveți nevoie de versiunea GUI a Raspbian, dar este ok de utilizat.

Nu aveți nevoie de scanerul USB conectat în acest moment, în cazul în care aveți nevoie de portul USB pentru Ethernet sau tastatură / mouse.

Asigurați-vă că sistemul dvs. de operare este actualizat:

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

Din linia de comandă, accesați directorul principal pi și descărcați depozitul GITHUB:

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

Acest lucru va dura ceva timp, mai ales dacă este prima dată și serverul web și PHP trebuie instalate sau actualizate. Dacă este necesar, puteți rula acest lucru de mai multe ori. Printre alte lucruri, acesta instalează fișierele cu coduri de bare și baza de date UPC pe: / var / www / html / upc

Apoi, editați /etc/rc.local și adăugați următoarea linie înainte de „ieșirea 0”

$ sudo nano /etc/rc.local

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

Odată ce instalarea este finalizată, opriți dispozitivul Pi și conectați cititorul de coduri de bare USB și reporniți.

$ sudo închidere acum

Porniți-l înapoi și ar trebui să auziți un discurs scurt de pornire.

Dacă da, încercați să scanați un cod de bare dintr-un produs alimentar. Dacă totul a mers bine, ar trebui să-l auzi vorbind despre articol (sau să spună „Nu a fost găsit”). În caz contrar, verificați următorul ghid de depanare.

Pasul 9: Depanare

Depanare
Depanare

Dacă nu auziți sunete, va trebui să încercați următoarele comenzi:

1) Verificați dacă sunetul text-to-speech funcționează:

$ sudo flite -voice awb -t "testare"

Dacă primiți o eroare, asigurați-vă că ați instalat flite:

$ sudo apt instalează flite

Dacă primiți următoarea eroare, asigurați-vă că ați actualizat /boot/config.txt și /etc/asound.conf afișate în secțiunea Audio Setup de mai sus pe Raspi Zero’s: audio_open_alsa: nu a reușit să setați numărul de canale la 1. Argument nevalid.

Dacă nu primiți nicio eroare și niciun sunet, asigurați-vă că sunetul dvs. Raspberry funcționează.

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

1) Poate fi necesar să forțați sunetul să scoată mufa audio: (a se vedea fig.1 de mai sus)

$ sudo raspi-config -> 7 Opțiuni avansate -> A4 Audio

2) Odată ce sunetul și textul în vorbire sunt verificate, verificați cititorul de coduri de bare:

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

Ar trebui să vedeți un număr numeric de cod de bare afișat atunci când scanați un cod de bare. (Programul de testare NU include ieșiri audio sau conexiuni la baza de date.)

3) Dacă toate acestea sunt bune, verificați fișierul „nohup.out” pentru mesaje de eroare:

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

Problemele probabile lipsesc pachete sau permisiuni greșite (sau BUG-uri în cod!). Asigurați-vă că sistemul dvs. de operare este actualizat și rulați din nou install.sh.

Sperăm că lucrezi până acum!

Pasul 10: Partea a III-a - Server Web

Partea a III-a - Server web
Partea a III-a - Server web

Deoarece există MILIOANE de coduri UPC și cele mai multe baze de date disponibile public (adică gratuite) sunt doar un mic subset de coduri, acest proiect s-a axat pe codurile UPC pentru alimente. Include câteva sute de mii de articole, dar multe, multe nu vor fi găsite.

Dacă trebuie să adăugați sau să actualizați baza de date UPC, există două programe disponibile; una din linia de comandă și una din browserul web. (înlocuiți cifrele cu numărul articolului dvs. UPC)

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

$ sudo./addDB.sh 01234567890 „Elementul meu nou”

Aceasta va adăuga o înregistrare la baza de date. În caz contrar, se recomandă utilizarea funcției DB a browserului web.

Pentru GUI-ul serverului web, aveți nevoie de adresa IP a zmeurii dvs.

Pentru a găsi adresa IP, puteți utiliza:

$ hostname -I 192.168.1.108

Dintr-un browser pentru computer, accesați: https://192.168.1.108/upc/ Ar trebui să vedeți un ecran similar cu cel din Fig.2 de mai sus.

Dacă da, puteți adăuga / actualiza și șterge înregistrări. Navigați la Ultima pagină folosind butonul (‘> |’) „ultima înregistrare” pentru a vedea cele mai noi înregistrări pe măsură ce sunt anexate la sfârșitul bazei de date.

SIGURANȚĂ Rețineți că acest serviciu web nu este securizat (fără autentificare, fără SSL), deci este mai bine să nu îl expuneți la internetul public. (Dar, deoarece nu este configurat ca punct de acces WiFi, este sigur să îl transportați la magazin.)

Deși, din moment ce nu există date private, cu atât mai rău s-ar putea întâmpla este cineva care manipulează datele UPC.

De asemenea, puteți limita accesul la adrese IP specifice, astfel încât să nu poată intra alții. Doar înlocuiți IP-urile de aici cu cele pe care doriți să le permiteți. Toți ceilalți vor avea acces blocat:

$ 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

De asemenea, SCHIMBAți parola implicită PI! Toată lumea știe că implicit este pi / raspberry

$ passwd

Pasul 11: Depanarea serverului Web

Depanarea serverului Web
Depanarea serverului Web
Depanarea serverului Web
Depanarea serverului Web

Folosind browserul, accesați adresa IP a Raspberry, astfel:

192.168.1.108/

Ar trebui să vedeți ecranul implicit din /var/www/html/index.html (Fig.1 de mai sus)

De asemenea, asigurați-vă că serverul web rulează:

$ ps -ef | grep lighttpd

Pentru a verifica dacă PHP este bun, creați un fișier de testare php:

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

Apoi accesați

Ar trebui să vedeți un ecran precum Fig.2 de mai sus

Dacă primiți erori sau ecrane goale, verificați dacă există erori în

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

Din nou, reluarea programului install.sh poate remedia dependențele lipsă.

Pasul 12: Anexă

O MULȚUMIREA MARE merge la următoarele pentru a pune la dispoziție o bază de date mare UPC.

Deschideți grocery UPC DB

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

Deschideți baza de date

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

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

Mulțumim EasyUI pentru interfața simplă web CRUD GUI

www.jeasyui.com/index.php

Recomandat: