İçindekiler:

Raspberry Pi Konuşan Barkod Okuyucu: 12 Adım
Raspberry Pi Konuşan Barkod Okuyucu: 12 Adım

Video: Raspberry Pi Konuşan Barkod Okuyucu: 12 Adım

Video: Raspberry Pi Konuşan Barkod Okuyucu: 12 Adım
Video: 6 ayda yazilim ogrenin, 3 ayda yazilimin icinden gecin... Balya yapin ahsgajajavsva 2024, Kasım
Anonim
Raspberry Pi Konuşan Barkod Okuyucu
Raspberry Pi Konuşan Barkod Okuyucu

Şekil.1 DX.com'dan Barkod Tarayıcı

genel bakış

Güncelleme: Kısa bir video demosu mevcuttur

Annem artık bakkal ürünlerindeki etiketleri okuyamıyor, bu yüzden çözümler aramaya başladım. Görme engelliler için barkod okuyucuların yüzlerce dolar çalıştığını gördükten sonra, bir Raspberry Pi ve bir USB Barkod okuyucu kullanarak neler yapılabileceğini görmek istedim.

Bir başka önemli taklit, bunun bir İnternet bağlantısı OLMADAN çalışması gerektiğiydi (örneğin bir mağazada veya bir arkadaşın evinde). Bu yüzden veritabanı ve metinden konuşmaya bağımsız olmak zorundaydı.

Barkod okuyucunun kamera tabanlı bir sürümünü denedim, ancak aydınlatma ve kamera konumu, net göremeyen biri için güvenilirlik sorunlarına neden oldu. Bunlar ayrıca uygulamayı kurmak ve kullanmak için görüş gerektiriyordu. Bu yüzden bir USB Lazer barkod okuyucuya geçtim, özellikle de artık 30 doların altında olduklarından ve Raspbian Jessie onları kutudan çıkar çıkmaz desteklediğinden.

Yeni Amazon Dash Wand'ı da denedim ama taranan öğeyi söylemiyor ve çalışması için İnternet bağlantısı gerekiyor.

Fikir, bir öğeyi taramak ve Raspberry'nin dahili bir UPC kodları veritabanını sorgulamasını sağlamak ve ardından metinden konuşmaya kullanarak ürün açıklamasını söylemekti.

Üniteyi olabildiğince küçük yapmak için Raspberry Pi Zero kullanmak istedim. Ayrıca üniteyi pil gücüyle de çalıştırmak istedim.

Bu gereksinimleri karşılamak için bazı ödünleşmeler gerekliydi. Zero'nun harici bir ses jakı olmadığından, düşük maliyetli (yaklaşık 6 $) ve çok küçük olduğu için “Deprem Pi” projemin ses tasarımını yeniden kullandım. Alternatif olarak, "Pi Zero için Tek Transistör Ses"in değiştirilmesi de mümkün olabilir.

Lazer Barkod tarayıcı için DX.com'dan bir tane buldum. Ahududu USB'den güç alıyor ve yaklaşık 25 dolara mal oluyor. (bkz. aşağıdaki Parçalar)

1. Adım: GÜNCELLEME

Raspberry Pi Zero W'nin gelmesiyle ona geçiş yapacağım. Buradaki her şey aynı, ancak Pi'ye WiFi bağlantısını kurmanız gerekiyor. Bu, kurulum ve kullanım için Zero için bir USB hub'ına ihtiyacınız olmayacağı anlamına gelir.

WiFi'yi aşağıdakileri kullanarak kurabilirsiniz:

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

Biliyor musun?

Raspbian Jessie'yi bir Windows PC kullanarak bir SD karta kurarsanız, bir Raspberry'de başlatmadan önce WiFi ve SSH erişimini yapılandırmak için kartta iki dosya oluşturabilirsiniz.

Bunun için SD kartınızın şu anda PC'nizde K: olarak takılı olduğunu varsayın:

1) En son Raspbian Jessie görüntüsünü SD'ye yükleyin. Bu proje için Jessie Lite çalışmalıdır.

www.raspberrypi.org/downloads/raspbian/

2) Not defteri ile sadece "ssh" adında bir dosya oluşturun ve Save As "All files" to K:\ssh'yi kullanın.

Dosya her şeyi içerebilir. Önemli olan dosya adıdır. “ssh.txt” OLMAMALIDIR!!!

3) Not defteri ile aşağıdakileri içeren “wpa_supplicant.conf” adlı bir dosya oluşturun:

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

ağ={

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

“Tüm dosyalar”ı K:\wpa_supplicant.conf'a Farklı Kaydet'i kullanın. Yine, Not Defteri'nin onu “wpa_supplicant.conf.txt” olarak değiştirmesine izin vermeyin!

Ahududuyu ilk kez başlattığınızda, Jessie bunları arayacak ve Wifi'nize bağlanacaktır. Otomatik olarak atandığından, IP adresi için Yönlendiricinize bakmanız gerekecektir.

Adım 2: Parça Listesi

  • Raspberry Pi Zero (veya boyut sorun değilse herhangi bir Raspberry Pi)
  • USB Lazer barkod tarayıcı

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

  • Raspi Zero için Adafruit I2S 3W D Sınıfı Amplifikatör ekleyinhttps://www.adafruit.com/products/3006
  • Küçük hoparlör. (Pi 2, 3 için harici amfi ve hoparlör kullanın.)https://www.adafruit.com/product/1890
  • USB Mikro - USB OTG adaptörühttps://www.adafruit.com/products/2910
  • 5V 1Amp USB pil takımı, https://www.adafruit.com/products/1959 gibi
  • Pil paketi için USB'den mikro USB'ye kablo.
  • USB ve Ethernet hub (en azından ilk kurulum çalışması için, Zero W veya Raspi 2, 3 için gerekli değildir)https://www.adafruit.com/products/2992
  • GITHUB'dan yazılım:https://github.com/rgrokett/TalkingBarcodeReader

3. Adım: USB Lazer Barkod Okuyucu

USB Lazer Barkod Okuyucu
USB Lazer Barkod Okuyucu

Lazer barkod okuyucular, bir UPC etiketini tarama konusunda kameralardan daha bağışlayıcıdır. Ayrıca yetersiz aydınlatılmış veya kötü yerleştirilmiş etiketlerde bile iyi çalışırlar.

Sıfıra takmak için USB'den USB'ye mikro adaptöre ihtiyacınız olacak.

Tarayıcının tutma yeri ve tetiği, kullanımı kolaylaştırır.

Bir etiketi başarıyla taradığında da geri bildirim verir.

Gelecekte Yapılacaklar:

Son tasarımda, kabloyu kısaltmak için keser ve bir konektör arızasının boyutunu ve olasılığını azaltmak için doğrudan Sıfırdaki USB pinlerine lehimlerdim. Sıfır ve pil, 3D baskılı bir kutuda doğrudan tarayıcı sapının altına takılacaktır.

4. Adım: UPC Veritabanı

Bu, kelimenin tam anlamıyla milyonlarca UPC kodu ve indirilebilecek çok az sayıda açık kaynaklı veritabanı olduğundan, projenin en kötü kapsanan kısmıdır. Ne yazık ki, çoğu UPC veritabanları oldukça pahalıdır ve internet bağlantısı gerektirir.

Birkaç açık kaynak veritabanını bir araya getirebildim (kaynaklar aşağıdaki Ek'te), ancak içinde yaklaşık 700.000 öğe olsa bile, çok sayıda eksik var.

Bu amaçla iki şey yaptım; biri özellikle bakkaliye ürünlerine odaklanmak, diğeri ise yeni UPC kodlarının manuel olarak eklenmesine izin vermek için Raspberry'ye bir web sunucusu eklemek, ancak bu en azından yerel ağ bağlantısı gerektiriyor.

Gelecekte Yapılacaklar:

Yeni UPC kodları eklemek için herhangi bir yere bağlanabilmeniz için Zero W'yi bir "sıcak nokta" yapardım.

Adım 5: Metinden Konuşmaya

Zero'da ses kalitesi ve dönüştürme hızı arasında en iyi uzlaşmaya sahip olduğu için “Flite” adlı metinden konuşmaya programını kullandım. Diğerleri biraz daha iyi geliyordu, ancak dönüştürmek için çok yavaştı.

Adafruit'in eğitimine de göz atabilirsiniz:https://learn.adafruit.com/speech-synthesis-on-the…

Konuşma bükülmesine alışmak biraz "kulak eğitimi" gerektireceğini unutmayın, ancak bu çok da kötü değil.

Aynı öğeyi yeniden taramak sesi tekrarlayacaktır.

Gelecek Yapılacaklar

Yaşlıların gürültülü yerlerde sesi daha kolay duymalarını sağlamak için bir kulaklık jakı ekleyebilirsin.

Adım 6: Pil Gücü

Sistem, cep telefonlarını şarj etmek için kullanılan bir 5V USB pil ile çalıştırılabilir.

Buradaki sorun, pili çıkardığınızda veya pil bittiğinde, Pi'nin SD sürücüyü bozma olasılığıyla çökmesidir.

Bunu çözmek için bir kapatma komutu çalıştıran bir düğmeye ihtiyaç vardır. Muhtemelen böyle bir tane kullanacağım:

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

(Evet… başka bir "Gelecek Yapılacaklar!")

Adım 7: Kısım I - Pi Zero'ya Ses Ekleme

Bölüm I - Pi Zero'ya Ses Ekleme
Bölüm I - Pi Zero'ya Ses Ekleme
Bölüm I - Pi Zero'ya Ses Ekleme
Bölüm I - Pi Zero'ya Ses Ekleme
Bölüm I - Pi Zero'ya Ses Ekleme
Bölüm I - Pi Zero'ya Ses Ekleme

(Sıfır kullanmıyorsanız bu bölümü atlayın!)

Pi Zero'da yerleşik olmadığı için harici ses eklemeniz gerekecek. Düşük maliyetli “Adafruit I2S 3W Amplifikatör koparma MAX98357A” kullandım

Bu, Adafruit'in mükemmel öğreticisini kullanarak kurulum gerektirir:

Eğitimin kablolama bölümünde gösterildiği gibi, şunları bağlayın:

• Amp Vin - Raspi Sıfır Pi 5V• Amp GND - Raspi Sıfır Pi GND • Amp DIN - Raspi Sıfır Pi #21 • Amp BCLK - Raspi Sıfır Pi #18 • Amp LRCLK - Raspi Sıfır Pi #19

Karttaki ses kablolarına küçük bir hoparlör bağlayın.

Pi Zero Adafruit Ses Yazılımı KurulumuAdafruit yazılımı kurulum eğitiminde de gösterildiği gibi, aşağıdaki CURL komutunu yürütün:

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

Yeniden başlattıktan sonra, hoparlör testini kullanarak sesi test edin:

$ hoparlör testi -c2 --test=wav -w /usr/share/sounds/alsa/Front_Center.wav

Sorun yaşarsanız, genel bakıştan başlayarak Adafruit öğreticisine geri dönün. Güncellenen tüm dosyaları doğrulamak için öğreticideki "Ayrıntılı kurulum" adımlarını uygulamanız gerekebilir.

Zero ve Max98357 Ses için Gerekli Önemli Adımlar: Varsayılan olarak, ALSA sesi yalnızca Stereo'da, Flite metinden sese mono ise çalışır. Ayrıca, ses her çalmaya başladığında içinde "açılır".

(Bakınız:

Aşağıdakileri yapmalısınız:

1) /boot/config.txt dosyasına bir satır ekleyin

$ sudo nano /boot/config.txt

dtoverlay=i2s-mmap

2) /etc/asound.conf'u değiştirin

$ sudo nano /etc/asound.conf

pcm.hifiberry { hw kartı 0 tipi } pcm.!default { fiş slave.pcm "dmixer" } pcm.dmixer { tip dmix ipc_key 1024 slave { pcm "hifiberry" kanalları 2 } } ctl.dmixer { hw kartı 0 tipi }

3) Pi'nizi yeniden başlatın.

Hoparlör testini tekrar deneyin. Şimdi daha iyi ses vermelidir. Ses testlerini içeren kurulum eğitimini tamamladığınızda, ses hazır olmalıdır.

Bunu bir markete veya gürültülü bir ortama götürürseniz, ses için bir kulaklık jakı eklemek isteyebileceğinizi unutmayın.

Adım 8: Kısım II – Yazılım Kurulumu

Bu, Raspbian Jessie'nin zaten kurulu olduğunu ve Linux komut satırına erişebildiğinizi varsayar. Raspbian'ın GUI sürümüne ihtiyacınız yok, ancak kullanmanız uygun.

Ethernet veya klavye/fare için USB bağlantı noktasına ihtiyacınız olması durumunda, şu anda takılı USB tarayıcıya ihtiyacınız YOKTUR.

İşletim sisteminizin güncel olduğundan emin olun:

$ sudo apt-get güncelleme $ sudo apt-get yükseltme

Komut satırından pi ana dizinine gidin ve GITHUB deposunu indirin:

$ cd /home/pi$ sudo apt kurulum git $ git klon https://github.com/rgrokett/TalkingBarcodeReader….> https://github.com/rgrokett/TalkingBarcodeReader….> $ cd TalkingBarcodeReader $./install. NS

Bu, özellikle ilk kez yapılıyorsa ve web sunucusunun ve PHP'nin kurulması veya güncellenmesi gerekiyorsa, biraz zaman alacaktır. Gerekirse, bunu birden fazla kez çalıştırabilirsiniz. Diğer şeylerin yanı sıra, bu, barkod dosyalarını ve UPC veritabanını şuraya yükler: /var/www/html/upc

Ardından, /etc/rc.local dosyasını düzenleyin ve “çıkış 0”dan önce aşağıdaki satırı ekleyin

$ sudo nano /etc/rc.local

fi sudo /var/www/html/upc/bin/run.sh çıkış 0

Kurulum tamamlandıktan sonra Pi'nizi kapatın ve USB Barkod okuyucuyu takın ve yeniden başlatın.

$ sudo şimdi kapatma

Tekrar açın ve kısa bir başlangıç konuşması duymalısınız.

Öyleyse, bir bakkal ürününden bir barkod taramayı deneyin. Her şey yolunda giderse, öğeyi konuştuğunu duymalısınız (veya “Bulunamadı” deyin). Aksi takdirde, sonraki sorun giderme kılavuzuna bakın.

9. Adım: Sorun Giderme

Sorun giderme
Sorun giderme

Herhangi bir ses duymuyorsanız, aşağıdaki komutları denemeniz gerekecektir:

1) Metinden konuşmaya sesin çalıştığını doğrulayın:

$ sudo flite -voice awb -t "test"

Bir hata alırsanız, flite'ın kurulu olduğundan emin olun:

$ sudo apt kurulum flite

Aşağıdaki hatayı alırsanız, Raspi Zero'da yukarıdaki Audio Setup bölümünde gösterilen /boot/config.txt ve /etc/asound.conf'u güncellediğinizden emin olun: audio_open_alsa: kanal sayısı 1 olarak ayarlanamadı. Geçersiz argüman.

Herhangi bir hata ve ses almıyorsanız, Raspberry sesinizin çalıştığından emin olun.

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

1) Sesi, ses jakından çıkarmaya zorlamanız gerekebilir: (yukarıdaki şek.1'e bakın)

$ sudo raspi-config -> 7 Gelişmiş Seçenek -> A4 Ses

2) Ses ve metin okumanın iyi olduğunu doğruladıktan sonra, barkod okuyucuyu kontrol edin:

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

Bir barkodu taradığınızda görüntülenen sayısal bir barkod numarası görmelisiniz. (Test programı, ses çıkışı veya veritabanı bağlantıları İÇERMEZ.)

3) Tüm bunlar iyiyse, hata mesajları için “nohup.out” dosyasına bakın:

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

Muhtemel sorunlar, eksik paketler veya hatalı izinlerdir (veya koddaki HATALAR!). İşletim sisteminizin güncel olduğundan emin olun ve install.sh dosyasını yeniden çalıştırın.

Umarım, şimdiye kadar çalışıyorsundur!

Adım 10: Bölüm III – Web Sunucusu

Bölüm III – Web Sunucusu
Bölüm III – Web Sunucusu

MİLYONLARCA UPC kodu olduğundan ve halka açık (yani ücretsiz) çoğu veritabanları yalnızca küçük bir kod alt kümesi olduğundan, bu proje bakkaliye için UPC kodlarına odaklandı. Birkaç yüz bin öğe içerir, ancak pek çoğu bulunmayacaktır.

UPC Veritabanını eklemeniz veya güncellemeniz gerekirse, iki program mevcuttur; bir komut satırı ve bir web tarayıcısı. (rakamları UPC ürün numaranızla değiştirin)

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

$ sudo./addDB.sh 01234567890 "Yeni öğem"

Bu, veritabanına bir kayıt ekleyecektir. Aksi takdirde, web tarayıcısının DB işlevini kullanmanız önerilir.

Web Sunucusu GUI'si için ahududunuzun IP adresine ihtiyacınız vardır.

IP adresini bulmak için şunları kullanabilirsiniz:

$ ana bilgisayar adı -I 192.168.1.108

Bir PC tarayıcısından şu adrese gidin: https://192.168.1.108/upc/Yukarıdaki Şekil 2'dekine benzer bir ekran görmelisiniz.

Eğer öyleyse, kayıtları ekleyebilir/güncelleyebilir ve silebilirsiniz. En yeni kayıtlarınızı veritabanının sonuna eklenirken görmek için ('>|') “son kayıt” düğmesini kullanarak Son Sayfaya gidin.

SECURITYNOT, bu web hizmeti güvenli değildir, (kimlik doğrulama yok, SSL yok), bu nedenle onu genel İnternet'e maruz bırakmamak en iyisidir. (Ancak WiFi Erişim Noktası olarak kurulmadığı için mağazaya götürmek güvenlidir.)

Bununla birlikte, üzerinde özel bir veri olmadığı için, olabilecek en kötü şey, birinin UPC verilerini karıştırmasıdır.

Başkalarının girememesi için erişimi belirli IP adreslerine de sınırlayabilirsiniz. İzin vermek istediğiniz IP'leri burada değiştirin. Tüm diğerlerinin şunlara erişmesi engellenecektir:

$ 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

Ayrıca, varsayılan PI şifresini DEĞİŞTİRİN! Herkes varsayılanın pi/ahududu olduğunu bilir

$ şifre

Adım 11: Web Sunucusunda Sorun Giderme

Web Sunucusunda Sorun Giderme
Web Sunucusunda Sorun Giderme
Web Sunucusunda Sorun Giderme
Web Sunucusunda Sorun Giderme

Tarayıcınızı kullanarak Raspberry'nizin IP adresine şu şekilde gidin:

192.168.1.108/

/var/www/html/index.html adresinden varsayılan ekranı görmelisiniz (yukarıdaki Şekil 1)

Ayrıca web sunucusunun çalıştığından emin olun:

$ ps -ef|grep lighttpd

PHP'nin iyi olduğunu doğrulamak için bir php test dosyası oluşturun:

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

Ardından https://192.168.1.108/phpinfo.php adresine gidin.

Yukarıdaki Şekil 2 gibi bir ekran görmelisiniz

Hatalar veya boş ekranlar alırsanız, hata olup olmadığını kontrol edin.

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

Yine, install.sh dosyasını yeniden çalıştırmak, eksik bağımlılıkları düzeltebilir.

Adım 12: Ek

BÜYÜK TEŞEKKÜR, büyük bir UPC veritabanını kullanıma sunduğu için aşağıdakilere gider.

Açık Bakkal UPC DB

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

Veri DB'sini açın

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

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

Basit web CRUD GUI için EasyUI sayesinde

www.jeasyui.com/index.php

Önerilen: