Inhoudsopgave:
- Stap 1: BIJWERKEN
- Stap 2: Onderdelenlijst
- Stap 3: USB-laserbarcodelezer
- Stap 4: UPC-database
- Stap 5: Tekst-naar-spraak
- Stap 6: Batterijvermogen
- Stap 7: Deel I - Audio toevoegen aan Pi Zero
- Stap 8: Deel II – Software-installatie
- Stap 9: Problemen oplossen
- Stap 10: Deel III – Webserver
- Stap 11: Problemen met de webserver oplossen
- Stap 12: Bijlage
Video: Raspberry Pi pratende streepjescodelezer - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
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
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
(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
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
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
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:
Pratende Peter: 4 stappen
Pratende Peter: Dit is een Arduino-project wat ik heb gemaakt op de HKU. Hij heet Pratende Peter, en hij opent graag zijn mond. De mond is te bedienen via een sensor. Je kan hem gebruiken als pop tijdens je zelf de stem inspreekt, of je kan hem dingen voeren. ik ben
Pratende kerstman blaasvorm: 5 stappen
Talking Santa Blowmold: In dit project wordt uitgelegd hoe je een decoratie maakt die een geluidsbestand afspeelt als er iemand langsloopt. Dit kan eenvoudig worden bereikt met een computer die het Motion-programma kan uitvoeren en een of andere camera. In dit geval gebruikte ik een 20" lange Sinterklaas
Pratende Arduino - Een MP3 afspelen met Arduino zonder enige module - Mp3-bestand afspelen vanaf Arduino met PCM: 6 stappen
Pratende Arduino | Een MP3 afspelen met Arduino zonder enige module | Mp3-bestand van Arduino afspelen met PCM: in deze instructie leren we hoe we een mp3-bestand met arduino kunnen spelen zonder een audiomodule te gebruiken, hier gaan we de PCM-bibliotheek voor Arduino gebruiken die 16 bit PCM van 8 kHz-frequentie speelt, dus laten we dit doen
Barbara: de pratende AI-camera: 4 stappen (met afbeeldingen)
Barbara: de Talking AI Camera: AI is het nieuwste modewoord, dit project gaat helemaal over het enigszins nutteloze. Na het vinden van een nette API die afbeeldingen ondertitelt en een oude camera, is het doel gesteld: een camera die ondertitelt wat hij ziet
Een pratende klok maken: 10 stappen (met afbeeldingen)
Maak een pratende klok: deze klok kondigt de tijd aan met je eigen stem! Ik heb het samengesteld als een eerbetoon aan de oude Popcorn-service in Noord-Californië. Je zou POPCORN kunnen bellen vanaf elke telefoon, en een opname zou je vertellen hoe laat het is. Origineel