Inhoudsopgave:

Raspberry Pi pratende streepjescodelezer - Ajarnpa
Raspberry Pi pratende streepjescodelezer - Ajarnpa

Video: Raspberry Pi pratende streepjescodelezer - Ajarnpa

Video: Raspberry Pi pratende streepjescodelezer - Ajarnpa
Video: Winnaar Raspberry Pi competitie 2020 in de categorie Algemeen – De AAA Award 2024, November
Anonim
Raspberry Pi pratende streepjescodelezer
Raspberry Pi pratende streepjescodelezer

Fig.1 Barcodescanner van DX.com

Overzicht

Update: een korte videodemo is beschikbaar

Mijn moeder kan geen etiketten meer lezen op boodschappen, dus ging ik op zoek naar oplossingen. Nadat ik had gezien dat barcodelezers voor blinden vele honderden dollars kosten, wilde ik zien wat er gedaan kon worden met een Raspberry Pi en een USB-barcodelezer.

Een andere belangrijke imitatie was dat dit zou moeten werken ZONDER een internetverbinding (zoals in een winkel of bij een vriend thuis). Dus de database en tekst-naar-spraak moesten op zichzelf staand zijn.

Ik heb een op camera gebaseerde versie van de streepjescodelezer geprobeerd, maar verlichting en camerapositie veroorzaakten betrouwbaarheidsproblemen voor iemand die niet duidelijk kon zien. Deze hadden ook zicht nodig om de app in te stellen en te gebruiken. Dus schakelde ik over naar een USB Laser-barcodelezer, vooral omdat ze nu beschikbaar zijn voor minder dan $ 30 en de Raspbian Jessie ze direct uit de doos ondersteunt.

Ik heb ook de nieuwe Amazon Dash Wand uitgeprobeerd, maar deze spreekt het gescande item niet uit en vereist een internetverbinding om te werken.

Het idee was om een item te scannen en de Raspberry een interne database met UPC-codes te laten doorzoeken en vervolgens de productbeschrijving in tekst-naar-spraak te laten spreken.

Om het apparaat zo klein mogelijk te maken, wilde ik een Raspberry Pi Zero gebruiken. Ik wilde het apparaat ook op batterijvoeding laten werken.

Om aan deze eisen te voldoen waren enkele afwegingen nodig. Omdat de Zero geen externe audio-aansluiting heeft, heb ik het audio-ontwerp van mijn "Earthquake Pi"-project hergebruikt omdat het goedkoop was (ongeveer $ 6) en erg klein was. Als alternatief is het mogelijk om de "One Transistor Audio for Pi Zero" te vervangen.

Voor de laserbarcodescanner vond ik er een van DX.com. Het wordt aangedreven door de Raspberry USB en kost ongeveer $ 25. (zie Onderdelen hieronder)

Stap 1: BIJWERKEN

Met de komst van de Raspberry Pi Zero W ga ik daarop overstappen. Alles is hier hetzelfde, behalve dat je de wifi-verbinding met de Pi moet instellen. Dit betekent dat je geen USB-hub nodig hebt voor de Zero voor installatie en gebruik.

U kunt de wifi instellen met:

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

Wist u?

Als je Raspbian Jessie op een SD-kaart installeert met een Windows-pc, kun je twee bestanden op de kaart maken om wifi- en SSH-toegang te configureren voordat je hem opstart op een Raspberry?

Neem hiervoor aan dat uw SD-kaart momenteel als K: op uw pc is gemonteerd:

1) Installeer de nieuwste Raspbian Jessie-afbeelding op de SD. Voor dit project zou Jessie Lite moeten werken.

www.raspberrypi.org/downloads/raspbian/

2) Maak met Kladblok een bestand met de naam "ssh" en gebruik Opslaan als "Alle bestanden" naar K:\ssh

Het bestand kan van alles bevatten. Het is de bestandsnaam die belangrijk is. Mag NIET "ssh.txt" zijn!!!

3) Maak met Kladblok een bestand met de naam "wpa_supplicant.conf" met het volgende:

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

netwerk={

ssid="mijnSSID" psk="mijnwachtwoord" key_mgmt=WPA-PSK }

Gebruik Opslaan als “Alle bestanden” naar K:\wpa_supplicant.conf Nogmaals, laat Kladblok het niet veranderen in “wpa_supplicant.conf.txt”!!

Wanneer je de Raspberry de eerste keer opstart, zal Jessie hiernaar zoeken en verbinding maken met je wifi. U zult echter op uw router moeten zoeken naar het IP-adres, aangezien het automatisch wordt toegewezen.

Stap 2: Onderdelenlijst

  • Raspberry Pi Zero (of een Raspberry Pi, als grootte geen probleem is)
  • USB-laserbarcodescanner

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

  • Voeg voor Raspi Zero Adafruit I2S 3W Klasse D-versterker toehttps://www.adafruit.com/products/3006
  • Kleine luidspreker. (Gebruik voor Pi 2, 3 een externe versterker en luidspreker.)https://www.adafruit.com/product/1890
  • USB Micro naar USB OTG-adapterhttps://www.adafruit.com/products/2910
  • 5V 1Amp USB-batterijpakket zoals
  • USB naar micro-USB-kabel voor batterijpakket.
  • USB & Ethernet-hub (tenminste voor eerste installatiewerk, niet nodig voor Zero W of Raspi 2, 3)https://www.adafruit.com/products/2992
  • Software van GITHUB:https://github.com/rgrokett/TalkingBarcodeReader

Stap 3: USB-laserbarcodelezer

USB-laserbarcodelezer
USB-laserbarcodelezer

Laser-barcodelezers zijn vergevingsgezinder in hun vermogen om een UPC-label te scannen dan camera's. Ze werken ook goed, zelfs in slecht verlichte of slecht geplaatste labels.

U hebt de USB-naar-USB-microadapter nodig om deze op de Zero aan te sluiten.

De handgreep en trekker van de scanner maken hem gemakkelijk te gebruiken.

Het geeft ook feedback wanneer het een label met succes scant.

Toekomstige taak:

In het uiteindelijke ontwerp zou ik de kabel inkorten om hem in te korten en rechtstreeks op de USB-pinnen op de Zero solderen om de grootte en de kans op een defecte connector te verkleinen. De Zero en batterij zouden direct aan de onderkant van de scannerhandgreep worden bevestigd in een 3D-geprinte behuizing.

Stap 4: UPC-database

Dit is het slechtst behandelde deel van het project, aangezien er letterlijk miljoenen UPC-codes en zeer weinig open-sourcedatabases beschikbaar zijn om te downloaden. Helaas zijn de meeste UPC-databases nogal prijzig en hebben ze een internetverbinding nodig.

Ik heb een paar open-sourcedatabases kunnen samenstellen (bronnen in bijlage hieronder), maar zelfs met bijna 700.000 items erin, ontbreken er nog een groot aantal.

Daartoe heb ik twee dingen gedaan; de ene is om zich specifiek te concentreren op kruidenierswaren en de andere is om een webserver aan de Raspberry toe te voegen om handmatig nieuwe UPC-codes toe te voegen, hoewel dit op zijn minst een lokale netwerkverbinding vereist.

Toekomstige taak:

Ik zou van de Zero W een "hotspot" maken, zodat je er overal verbinding mee kunt maken om nieuwe UPC-codes toe te voegen.

Stap 5: Tekst-naar-spraak

Ik gebruikte het tekst-naar-spraakprogramma genaamd "Flite", omdat het het beste compromis had tussen spraakkwaliteit en conversiesnelheid op de Zero. Anderen klonken een beetje beter, maar waren te traag om te converteren.

Je kunt ook de tutorial van Adafruit bekijken:

Merk op dat het een beetje "oortraining" zal kosten om aan de spraakverbuiging te wennen, maar het valt mee.

Als u hetzelfde item opnieuw scant, wordt de audio herhaald.

Toekomstige taken

Voeg misschien een koptelefoonaansluiting toe om het voor senioren gemakkelijker te maken om de stem op lawaaierige plaatsen te horen.

Stap 6: Batterijvermogen

Het systeem kan werken op een 5V USB-batterij, zoals die wordt gebruikt om mobiele telefoons op te laden.

De vangst is dat wanneer u de batterij loskoppelt of de batterij leeg raakt, de Pi zal crashen met een kans dat deze de SD-schijf zal beschadigen.

Om dit op te lossen, is een knop nodig die een afsluitopdracht uitvoert. Ik zal er waarschijnlijk een gebruiken zoals deze:

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

(Ja… nog een "Toekomstige ToDo!")

Stap 7: Deel I - Audio toevoegen aan Pi Zero

Deel I - Audio toevoegen aan Pi Zero
Deel I - Audio toevoegen aan Pi Zero
Deel I - Audio toevoegen aan Pi Zero
Deel I - Audio toevoegen aan Pi Zero
Deel I - Audio toevoegen aan Pi Zero
Deel I - Audio toevoegen aan Pi Zero

(Sla dit deel over als u geen nul gebruikt!)

Op een Pi Zero moet je externe audio toevoegen, omdat deze niet ingebouwd is. Ik gebruikte de goedkope "Adafruit I2S 3W versterker breakout MAX98357A"

Dit vereist installatie met behulp van de uitstekende tutorial van Adafruit op:

Zoals weergegeven in het bedradingsgedeelte van de zelfstudie, sluit u aan:

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

Sluit een kleine luidspreker aan op de audiokabels op het bord.

Pi Zero Adafruit Audio Software SetupOok getoond in de Adafruit software setup tutorial, voer de CURL opdracht hieronder uit:

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

Test na het opnieuw opstarten de audio met de luidsprekertest:

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

Als je problemen hebt, ga dan terug door de Adafruit-tutorial, beginnend bij het overzicht. Mogelijk moet u de stappen voor "Gedetailleerde installatie" in de zelfstudie doorlopen om alle bijgewerkte bestanden te verifiëren.

Belangrijke vereiste stappen voor Zero & Max98357 Audio: Standaard werkt de ALSA-audio alleen in stereo terwijl Flite tekst-naar-spraak mono is. Ook heeft de audio "pops" elke keer dat het begint te spelen.

(Zie:

U moet het volgende doen:

1) Voeg een regel toe aan /boot/config.txt

$ sudo nano /boot/config.txt

dtoverlay=i2s-mmap

2) Vervang /etc/asound.conf

$ sudo nano /etc/asound.conf

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

3) Start je Pi opnieuw op.

Probeer de Speaker-test opnieuw. Het zou nu beter moeten klinken. Zodra je de setup-tutorial hebt voltooid, inclusief de audiotests, zou het geluid klaar moeten zijn.

Houd er rekening mee dat u misschien een oortelefoonaansluiting voor audio wilt toevoegen, als u deze naar een supermarkt of een lawaaierige omgeving brengt.

Stap 8: Deel II – Software-installatie

Dit veronderstelt dat je Raspbian Jessie al hebt geïnstalleerd en toegang hebt tot de Linux-opdrachtregel. Je hebt de GUI-versie van Raspbian niet nodig, maar het is prima om te gebruiken.

U heeft de USB-scanner op dit moment NIET nodig, voor het geval u de USB-poort voor Ethernet of toetsenbord/muis nodig heeft.

Zorg ervoor dat uw besturingssysteem up-to-date is:

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

Ga vanaf de opdrachtregel naar de pi-thuismap en download de GITHUB-repository:

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

Dit zal enige tijd duren, vooral als dit de eerste keer is en de webserver en PHP moeten worden geïnstalleerd of bijgewerkt. Indien nodig kunt u dit meer dan eens uitvoeren. Dit installeert onder andere de barcodebestanden en de UPC-database naar: /var/www/html/upc

Bewerk vervolgens /etc/rc.local en voeg de volgende regel toe voor de "exit 0"

$ sudo nano /etc/rc.local

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

Nadat de installatie is voltooid, sluit u uw Pi af, sluit u de USB-barcodelezer aan en start u opnieuw op.

$ sudo nu afsluiten

Schakel het weer in en u zou een korte opstarttoespraak moeten horen.

Als dat zo is, probeer dan een streepjescode van een boodschappenartikel te scannen. Als alles goed is gegaan, zou je het item het item moeten horen uitspreken (of "Niet gevonden"). Raadpleeg anders de volgende gids voor probleemoplossing.

Stap 9: Problemen oplossen

Probleemoplossen
Probleemoplossen

Als u geen geluiden hoort, moet u de volgende opdrachten proberen:

1) Controleer of de tekst-naar-spraak-audio werkt:

$ sudo flite -voice awb -t "testen"

Als je een foutmelding krijgt, zorg er dan voor dat flite is geïnstalleerd:

$ sudo apt install flite

Als u de volgende foutmelding krijgt, zorg er dan voor dat u /boot/config.txt en /etc/asound.conf hebt bijgewerkt, zoals weergegeven in het gedeelte Audio-instellingen hierboven op Raspi Zero's: audio_open_alsa: kan het aantal kanalen niet instellen op 1. Ongeldig argument.

Als je geen foutmelding en geen geluid krijgt, zorg er dan voor dat je Raspberry-audio werkt.

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

1) Mogelijk moet u de audio uit de audio-aansluiting forceren: (zie fig.1 hierboven)

$ sudo raspi-config -> 7 Geavanceerde opties -> A4 Audio

2) Zodra de audio en tekst-naar-spraak goed zijn geverifieerd, controleert u de barcodelezer:

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

U zou een numeriek streepjescodenummer moeten zien verschijnen wanneer u een streepjescode scant. (Het testprogramma bevat GEEN audio-uitvoer of databaseverbindingen.)

3) Als dit allemaal goed is, controleer dan het bestand "nohup.out" op foutmeldingen:

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

Waarschijnlijke problemen zijn ontbrekende pakketten of slechte machtigingen (of BUG's in de code!). Zorg ervoor dat uw besturingssysteem up-to-date is en voer install.sh opnieuw uit.

Hopelijk ben je inmiddels aan het werk!

Stap 10: Deel III – Webserver

Deel III – Webserver
Deel III – Webserver

Aangezien er MILJOENEN UPC-codes zijn en de meeste openbaar (d.w.z. gratis) beschikbare databases slechts een kleine subset van codes zijn, richtte dit project zich op UPC-codes voor boodschappen. Het bevat enkele honderdduizenden items, maar veel, veel zullen niet worden gevonden.

Als u de UPC-database moet toevoegen of bijwerken, zijn er twee programma's beschikbaar; een opdrachtregel en een webbrowser. (vervang de cijfers door uw UPC artikelnummer)

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

$ sudo./addDB.sh 01234567890 "Mijn nieuwe item"

Hiermee wordt een record aan de database toegevoegd. Anders wordt voorgesteld om de DB-functie van de webbrowser te gebruiken.

Voor de Web Server GUI heb je het IP-adres van je Raspberry nodig.

Om het IP-adres te vinden, kunt u gebruik maken van:

$ hostnaam -I 192.168.1.108

Ga vanuit een pc-browser naar: https://192.168.1.108/upc/U zou een scherm moeten zien dat lijkt op dat in Fig.2 hierboven.

Dan kunt u records toevoegen/bijwerken en verwijderen. Navigeer naar de laatste pagina met de knop ('>|') 'laatste record' om uw nieuwste records te zien zoals ze aan het einde van de database zijn toegevoegd.

BEVEILIGING OPMERKING dat deze webservice niet beveiligd is (geen authenticatie, geen SSL), dus het is het beste om deze niet bloot te stellen aan het openbare internet. (Maar aangezien het niet is ingesteld als wifi-toegangspunt, is het veilig om mee te nemen naar de winkel.)

Maar aangezien er geen privégegevens op staan, is het erger dat iemand de UPC-gegevens kan manipuleren.

U kunt ook de toegang tot specifieke IP-adressen beperken, zodat anderen er niet in kunnen. Vervang de IP('s) hier door degene die u wilt toestaan. Alle anderen hebben geen 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 herstart

WIJZIG ook het standaard PI-wachtwoord! Iedereen weet dat de standaard pi/framboos is

$ wachtwoord

Stap 11: Problemen met de webserver oplossen

Problemen met de webserver oplossen
Problemen met de webserver oplossen
Problemen met de webserver oplossen
Problemen met de webserver oplossen

Ga met je browser naar het IP-adres van je Raspberry, als volgt:

192.168.1.108/

U zou het standaardscherm moeten zien van /var/www/html/index.html (Fig.1 hierboven)

Zorg er ook voor dat de webserver draait:

$ ps -ef|grep lighttpd

Om te controleren of PHP goed is, maakt u een php-testbestand:

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

Ga dan naar

U zou een scherm moeten zien zoals in Fig.2 hierboven

Als u fouten of lege schermen krijgt, controleer dan op fouten in

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

Nogmaals, het opnieuw uitvoeren van install.sh kan ontbrekende afhankelijkheden herstellen.

Stap 12: Bijlage

EEN GROTE DANK gaat uit naar het volgende voor het beschikbaar stellen van een grote UPC-database.

Open supermarkt UPC DB

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

Gegevens-DB openen

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

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

Dankzij EasyUI voor de eenvoudige web CRUD GUI

www.jeasyui.com/index.php

Aanbevolen: