Spisu treści:

Mówiący czytnik kodów kreskowych Raspberry Pi: 12 kroków
Mówiący czytnik kodów kreskowych Raspberry Pi: 12 kroków

Wideo: Mówiący czytnik kodów kreskowych Raspberry Pi: 12 kroków

Wideo: Mówiący czytnik kodów kreskowych Raspberry Pi: 12 kroków
Wideo: Raspberry Pi 2 - Czytnik kodów kreskowych / sprawdzarka cen - Oprogramowanie gotowe! 2024, Listopad
Anonim
Mówiący czytnik kodów kreskowych Raspberry Pi
Mówiący czytnik kodów kreskowych Raspberry Pi

Rys.1 Skaner kodów kreskowych z DX.com

Przegląd

Aktualizacja: dostępne jest krótkie demo wideo

Moja mama nie jest już w stanie czytać etykiet na artykułach spożywczych, więc szukałam rozwiązań. Po tym, jak zobaczyłem, że czytniki kodów kreskowych dla niewidomych zarabiają wiele setek dolarów, chciałem zobaczyć, co można zrobić za pomocą Raspberry Pi i czytnika kodów kreskowych USB.

Inną kluczową imitacją było to, że powinno to działać BEZ połączenia z Internetem (na przykład w sklepie lub w domu znajomego). Tak więc baza danych i zamiana tekstu na mowę musiały być samowystarczalne.

Wypróbowałem wersję czytnika kodów kreskowych opartą na kamerze, ale oświetlenie i pozycja kamery powodowały problemy z niezawodnością dla kogoś, kto nie może wyraźnie widzieć. Wymagały one również wzroku do skonfigurowania i korzystania z aplikacji. Więc przerzuciłem się na czytnik kodów kreskowych USB Laser, zwłaszcza, że są teraz dostępne za mniej niż 30 USD, a Raspbian Jessie obsługuje je od razu po wyjęciu z pudełka.

Wypróbowałem również nową różdżkę Amazon Dash Wand, ale nie odczytuje ona zeskanowanego przedmiotu i wymaga połączenia z Internetem.

Pomysł polegał na zeskanowaniu przedmiotu i zleceniu Raspberry zapytaniu wewnętrznej bazy danych kodów UPC, a następnie wypowiedzeniu opisu produktu za pomocą zamiany tekstu na mowę.

Aby urządzenie było jak najmniejsze, chciałem użyć Raspberry Pi Zero. Chciałem również odłączyć urządzenie od zasilania z baterii.

Aby spełnić te wymagania, konieczne były pewne kompromisy. Ponieważ Zero nie ma zewnętrznego gniazda audio, ponownie wykorzystałem projekt audio z mojego projektu „Earthquake Pi”, ponieważ był tani (około 6 USD) i bardzo mały. Alternatywnie, możliwe jest zastąpienie „One Transistor Audio for Pi Zero”.

W przypadku skanera laserowego kodów kreskowych znalazłem jeden z DX.com. Jest zasilany z Raspberry USB i kosztuje około 25 USD. (patrz części poniżej)

Krok 1: AKTUALIZACJA

Wraz z pojawieniem się Raspberry Pi Zero W zamierzam się do niego przełączyć. Wszystko tutaj jest takie samo, z wyjątkiem tego, że musisz skonfigurować połączenie Wi-Fi z Pi. Oznacza to, że nie będziesz potrzebować koncentratora USB do konfiguracji i użytkowania Zero.

Możesz skonfigurować WiFi za pomocą:

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

Czy wiedziałeś?

Jeśli zainstalujesz Raspbian Jessie na karcie SD za pomocą komputera z systemem Windows, możesz utworzyć dwa pliki na karcie, aby skonfigurować dostęp Wi-Fi i SSH przed uruchomieniem go na Raspberry?

W tym celu załóżmy, że twoja karta SD jest obecnie zamontowana jako K: na twoim komputerze:

1) Zainstaluj najnowszy obraz Raspbian Jessie na karcie SD. W tym projekcie Jessie Lite powinno działać.

www.raspberrypi.org/downloads/raspbian/

2) Za pomocą notatnika utwórz plik o nazwie „ssh” i użyj Zapisz jako „Wszystkie pliki” do K: / ssh

Plik może zawierać wszystko. Ważna jest nazwa pliku. NIE MOŻE być „ssh.txt”!!!

3) Za pomocą notatnika utwórz plik o nazwie „wpa_supplicant.conf” z następującymi danymi:

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

sieć={

ssid = "moje SSID" psk = "moje hasło" key_mgmt = WPA-PSK }

Użyj Zapisz jako „Wszystkie pliki” do K:\wpa_supplicant.conf Ponownie, nie pozwól, aby Notatnik zmienił go na „wpa_supplicant.conf.txt”!!

Gdy uruchomisz Raspberry po raz pierwszy, Jessie poszuka ich i połączy się z Wifi. Musisz jednak poszukać adresu IP na routerze, ponieważ jest on automatycznie przypisywany.

Krok 2: Lista części

  • Raspberry Pi Zero (lub dowolne Raspberry Pi, jeśli rozmiar nie stanowi problemu)
  • Laserowy skaner kodów kreskowych USB

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

  • Dla Raspi Zero dodaj wzmacniacz klasy D Adafruit I2S 3W
  • Mały głośnik. (Dla Pi 2, 3 użyj zewnętrznego wzmacniacza i głośnika.)
  • Adapter USB Micro na USB OTGhttps://www.adafruit.com/products/2910
  • Akumulator USB 5V 1Amp taki jak
  • Kabel USB do micro USB do akumulatora.
  • Hub USB i Ethernet (przynajmniej do wstępnej konfiguracji, nie jest potrzebny dla Zero W lub Raspi 2, 3)https://www.adafruit.com/products/2992
  • Oprogramowanie z GITHUB:

Krok 3: Laserowy czytnik kodów kreskowych USB

Laserowy czytnik kodów kreskowych USB
Laserowy czytnik kodów kreskowych USB

Laserowe czytniki kodów kreskowych są bardziej wybaczające w swojej zdolności do skanowania etykiety UPC niż aparaty fotograficzne. Sprawdzają się również dobrze nawet w słabo oświetlonych lub źle umieszczonych etykietach.

Aby podłączyć go do Zero, będziesz potrzebować przejściówki USB na USB.

Uchwyt i spust skanera ułatwiają obsługę.

Przekazuje również informację zwrotną, gdy pomyślnie zeskanuje etykietę.

Przyszłe zadania do wykonania:

W ostatecznym projekcie skróciłbym kabel, aby go skrócić i przylutował bezpośrednio do pinów USB w Zero, aby zmniejszyć rozmiar i prawdopodobieństwo awarii złącza. Zero i bateria byłyby przymocowane bezpośrednio do dolnej części uchwytu skanera w obudowie wydrukowanej w 3D.

Krok 4: Baza danych UPC

Jest to najsłabiej objęta częścią projektu, ponieważ istnieją dosłownie miliony kodów UPC i bardzo niewiele baz danych o otwartym kodzie źródłowym dostępnych do pobrania. Niestety większość baz danych UPC jest dość droga i wymaga połączenia z Internetem.

Udało mi się zebrać razem kilka baz danych o otwartym kodzie źródłowym (źródła w załączniku poniżej), ale nawet przy prawie 700 000 pozycji brakuje ogromnej liczby.

W tym celu zrobiłem dwie rzeczy; jednym jest skupienie się na artykułach spożywczych, a drugim jest dodanie serwera WWW do Raspberry, aby umożliwić ręczne dodawanie nowych kodów UPC, chociaż wymaga to przynajmniej lokalnej łączności sieciowej.

Przyszłe zadania do wykonania:

Uczyniłbym Zero W „hotspotem”, aby można było połączyć się z nim w dowolnym miejscu, aby dodać nowe kody UPC.

Krok 5: Zamiana tekstu na mowę

Użyłem programu zamiany tekstu na mowę o nazwie „Flite”, ponieważ miał najlepszy kompromis między jakością głosu a szybkością konwersji na Zero. Inne brzmiały trochę lepiej, ale były zbyt wolne, by je nawrócić.

Możesz również sprawdzić samouczek Adafruit:

Pamiętaj, że przyzwyczajenie się do odmiany mowy zajmie trochę „treningu słuchu”, ale nie jest tak źle.

Ponowne skanowanie tego samego elementu spowoduje powtórzenie dźwięku.

Przyszłe zadania

Może dodać gniazdo słuchawkowe, aby ułatwić seniorom słyszenie głosu w hałaśliwych miejscach.

Krok 6: Moc baterii

System może być zasilany z baterii USB 5V, takiej jak używana do ładowania telefonów komórkowych.

Połów polega na tym, że po odłączeniu baterii lub jej wyczerpaniu, Pi ulegnie awarii z szansą, że uszkodzi dysk SD.

Aby rozwiązać ten problem, potrzebny jest przycisk uruchamiający polecenie zamknięcia. Prawdopodobnie użyję takiego:

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

(Tak… kolejne „Do zrobienia w przyszłości!”)

Krok 7: Część I – Dodawanie dźwięku do Pi Zero

Część I – Dodawanie dźwięku do Pi Zero
Część I – Dodawanie dźwięku do Pi Zero
Część I – Dodawanie dźwięku do Pi Zero
Część I – Dodawanie dźwięku do Pi Zero
Część I – Dodawanie dźwięku do Pi Zero
Część I – Dodawanie dźwięku do Pi Zero

(Pomiń tę część, jeśli nie używasz Zero!)

W Pi Zero musisz dodać zewnętrzny dźwięk, ponieważ nie jest on wbudowany. Użyłem taniego „Adafruit I2S 3W Amplifier breakout MAX98357A”

Wymaga to konfiguracji za pomocą doskonałego samouczka Adafruit pod adresem:

Jak pokazano w części samouczka poświęconej okablowaniu, połącz:

• Wzmacniacz Vin do Raspi Zero Pi 5 V• Wzmacniacz GND do Raspi Zero Pi GND • Wzmacniacz DIN do Raspi Zero Pi #21 • Wzmacniacz BCLK do Raspi Zero Pi #18 • Wzmacniacz LRCLK do Raspi Zero Pi #19

Podłącz mały głośnik do przewodów audio na płycie.

Konfiguracja oprogramowania Pi Zero Adafruit Audio Również pokazana w samouczku konfiguracji oprogramowania Adafruit, wykonaj poniższe polecenie CURL:

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

Po ponownym uruchomieniu przetestuj dźwięk za pomocą testu głośników:

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

Jeśli masz problemy, wróć do samouczka Adafruit, zaczynając od przeglądu. Może być konieczne przejście przez kroki „Instalacji szczegółowej” w samouczku, aby zweryfikować wszystkie zaktualizowane pliki.

Ważne wymagane kroki dla dźwięku Zero i Max98357: Domyślnie dźwięk ALSA działa tylko w trybie stereo, podczas gdy zamiana tekstu na mowę Flite jest mono. Ponadto dźwięk ma „wyskakiwanie” za każdym razem, gdy zaczyna grać.

(Patrz:

Musisz wykonać następujące czynności:

1) Dołącz linię do /boot/config.txt

$ sudo nano /boot/config.txt

dtoverlay=i2s-mmap

2) Zastąp /etc/asound.conf

$ sudo nano /etc/asound.conf

pcm.hifiberry { typ karty hw 0 } pcm.!default { typ wtyczki slave.pcm "dmixer" } pcm.dmixer { typ dmix ipc_key 1024 slave { pcm "hifiberry" kanały 2 } } ctl.dmixer { typ karty hw 0 }

3) Zrestartuj swoje Pi.

Spróbuj ponownie wykonać test głośnika. Teraz powinno brzmieć lepiej. Po ukończeniu samouczka konfiguracji, w tym testów audio, dźwięk powinien być gotowy.

Pamiętaj, że możesz chcieć dodać gniazdo słuchawkowe do dźwięku, jeśli zabierzesz to do sklepu spożywczego lub hałaśliwego otoczenia.

Krok 8: Część II – Instalacja oprogramowania

Zakłada się, że masz już zainstalowany Raspbian Jessie i masz dostęp do wiersza poleceń systemu Linux. Nie potrzebujesz wersji Raspbian z graficznym interfejsem użytkownika, ale jest w porządku.

W tej chwili NIE potrzebujesz podłączonego skanera USB, na wypadek gdybyś potrzebował portu USB do Ethernetu lub klawiatury/myszy.

Upewnij się, że Twój system operacyjny jest aktualny:

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

Z wiersza poleceń przejdź do katalogu domowego pi i pobierz repozytorium GITHUB:

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

Zajmie to trochę czasu, szczególnie jeśli jest to pierwszy raz, a serwer WWW i PHP muszą zostać zainstalowane lub zaktualizowane. Jeśli to konieczne, możesz uruchomić to więcej niż raz. Między innymi instaluje pliki kodów kreskowych i bazę danych UPC do: /var/www/html/upc

Następnie edytuj /etc/rc.local i dodaj następującą linię przed „exit 0”

$ sudo nano /etc/rc.local

fi sudo /var/www/html/upc/bin/run.sh wyjście 0

Po zakończeniu instalacji wyłącz Pi, podłącz czytnik kodów kreskowych USB i uruchom ponownie.

$ wyłącz sudo teraz

Włącz go ponownie i powinieneś usłyszeć krótką przemowę startową.

Jeśli tak, spróbuj zeskanować kod kreskowy z artykułu spożywczego. Jeśli wszystko poszło dobrze, powinieneś usłyszeć, jak mówi przedmiot (lub mówi „Nie znaleziono”). W przeciwnym razie sprawdź następny przewodnik rozwiązywania problemów.

Krok 9: Rozwiązywanie problemów

Rozwiązywanie problemów
Rozwiązywanie problemów

Jeśli nie słyszysz żadnych dźwięków, musisz wypróbować następujące polecenia:

1) Sprawdź, czy dźwięk zamiany tekstu na mowę działa:

$ sudo flite -voice awb -t "testowanie"

Jeśli pojawi się błąd, upewnij się, że flite został zainstalowany:

$ sudo apt install flite

Jeśli pojawi się następujący błąd, upewnij się, że zaktualizowałeś /boot/config.txt i /etc/asound.conf pokazane w sekcji Audio Setup powyżej w Raspi Zero: audio_open_alsa: nie udało się ustawić liczby kanałów na 1. Nieprawidłowy argument.

Jeśli nie pojawi się błąd i dźwięk, upewnij się, że dźwięk Raspberry działa.

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

1) Może być konieczne wymuszenie wyjścia audio z gniazda audio: (patrz rys. 1 powyżej)

$ sudo raspi-config -> 7 opcji zaawansowanych -> A4 Audio

2) Po sprawdzeniu poprawności dźwięku i zamiany tekstu na mowę sprawdź czytnik kodów kreskowych:

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

Powinieneś zobaczyć numeryczny numer kodu kreskowego wyświetlany podczas skanowania kodu kreskowego. (Program testowy NIE obejmuje wyjścia audio ani połączeń z bazą danych.)

3) Jeśli wszystko jest w porządku, sprawdź plik „nohup.out” pod kątem komunikatów o błędach:

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

Prawdopodobnymi problemami są brakujące pakiety lub złe uprawnienia (lub BŁĘDY w kodzie!). Upewnij się, że system operacyjny jest aktualny i ponownie uruchom plik install.sh.

Mam nadzieję, że już pracujesz!

Krok 10: Część III – Serwer WWW

Część III – Serwer WWW
Część III – Serwer WWW

Ponieważ istnieją MILIONY kodów UPC, a większość publicznie (tj. bezpłatnych) dostępnych baz danych to tylko niewielki podzbiór kodów, ten projekt skupił się na kodach UPC do artykułów spożywczych. Zawiera kilkaset tysięcy pozycji, ale wiele, wiele nie zostanie odnalezionych.

Jeśli chcesz dodać lub zaktualizować bazę danych UPC, dostępne są dwa programy; jeden z wiersza poleceń i jeden z przeglądarki internetowej. (zastąp cyfry numerem pozycji UPC)

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

$ sudo./addDB.sh 01234567890 „Mój nowy przedmiot”

Spowoduje to dodanie rekordu do bazy danych. W przeciwnym razie sugeruje się skorzystanie z funkcji DB przeglądarki internetowej.

Do interfejsu graficznego serwera WWW potrzebny jest adres IP maliny.

Aby znaleźć adres IP, możesz użyć:

$ nazwa hosta -I 192.168.1.108

W przeglądarce na komputerze wejdź na: https://192.168.1.108/upc/ Powinieneś zobaczyć ekran podobny do tego na Rys.2 powyżej.

Jeśli tak, możesz dodawać/aktualizować i usuwać rekordy. Przejdź do ostatniej strony za pomocą przycisku ('>|') „ostatni rekord”, aby zobaczyć najnowsze rekordy dodawane na końcu bazy danych.

BEZPIECZEŃSTWOUWAGA, że ta usługa sieci Web nie jest zabezpieczona (bez uwierzytelniania, bez SSL), więc najlepiej nie udostępniać jej w publicznym Internecie. (Ale ponieważ nie jest skonfigurowany jako punkt dostępu Wi-Fi, można go bezpiecznie zabrać do sklepu).

Chociaż, ponieważ nie ma na nim prywatnych danych, najgorsze, co może się stać, to ktoś, kto manipuluje danymi UPC.

Możesz także ograniczyć dostęp do określonych adresów IP, aby nikt inny nie mógł się do niego dostać. Po prostu zastąp adresy IP tymi, na które chcesz zezwolić. Wszyscy pozostali zostaną zablokowani przed dostępem:

$ 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

ZMIEŃ również domyślne hasło PI! Wszyscy wiedzą, że domyślna wartość to pi/malin

$ passwd

Krok 11: Rozwiązywanie problemów z serwerem internetowym

Rozwiązywanie problemów z serwerem internetowym
Rozwiązywanie problemów z serwerem internetowym
Rozwiązywanie problemów z serwerem internetowym
Rozwiązywanie problemów z serwerem internetowym

Korzystając z przeglądarki przejdź do adresu IP Twojego Raspberry, w ten sposób:

192.168.1.108/

Powinieneś zobaczyć domyślny ekran z /var/www/html/index.html (rys.1 powyżej)

Upewnij się również, że serwer WWW działa:

$ ps -ef|grep lighttpd

Aby sprawdzić, czy PHP jest dobre, utwórz plik testowy php:

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

Następnie przejdź do

Powinieneś zobaczyć ekran jak na Rys.2 powyżej

Jeśli pojawią się błędy lub puste ekrany, poszukaj błędów w

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

Ponowne uruchomienie pliku install.sh może naprawić brakujące zależności.

Krok 12: Dodatek

WIELKIE PODZIĘKOWANIA należą się następującym osobom za udostępnienie dużej bazy danych UPC.

Otwórz sklep spożywczy UPC DB

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

Otwarta baza danych

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

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

Dzięki EasyUI dla prostego webowego CRUD GUI

www.jeasyui.com/index.php

Zalecana: