In dieser kurzen Anleitung zeige ich, wie man mit einer Webcam und ein paar Zeilen Python Quellcode die Raspberry dazu bekommt, einem beliebige QR-Codes zu lesen. Den eingelesenen QR-Code kann man für vieles mehr verwenden. Sobald ich den QR-Code gescannt habe, spielt bei mir die Raspberry das korrekte Musikstück, das in diesem hinterlegt ist, über den Audioausgang ab. Im Folgenden zeige ich jedoch nur das Grundprinzip.
(Schwierigkeit Fortgeschritten)
Erforderliche Software
Für das Tutorial benötigt ihr eine Raspberry Pi mit dem aktuellen Raspbian “wheezy” Betriebssystem und eine gewöhnliche USB-Webcam. Zusätzlich muss noch folgende Software über die Kommandozeile installiert werden:
sudo apt-get install python-imaging sudo apt-get install zbar-tools sudo apt-get install qrencode sudo apt-get install python-pygame
Das Programm teile ich in 2 Dateien auf, um es übersichtlich und leicht wartbar zu halten. Den Programmcode könnt ihr hier herunterladen: source.tar
main.py
#!/usr/bin/env python #-*- coding: UTF-8 -*- ''' Hauptprogramm ''' import qrcode while (True): print "1: qrcode erstellen" print "2: qrcode anzeigen" print "3: exit" select=int(raw_input("Treffen Sie eine Auswahl: ")) if select == 1: qrcode.erzeugen() elif select == 2: result=qrcode.lesen().strip() print result elif select == 3: print "beende Programm..." break
qrcode.py
Mit qrcode.py implementiere ich sowohl das Erstellen eines benutzerdefinierten QR-Codes als auch das Einlesen über die Webcam, die bei mir über /dev/video0 angesprochen werden kann. Ihr könnte jedoch auch jeden anderen QR-Code verwenden. Beim erzeugen des QR-Codes kann man auch eine Variante implementieren, die über eine Schleife „for filename in sorted(os.listdir(strpath)):“ die sortierte Ausgabe eines Verzeichnisses mit Dateien durchläuft und deren Dateinamen als Input (variable „text“) zur Codierung im QR-Code übergibt.
#!/usr/bin/env python #-*- coding: UTF-8 -*- ''' erzeugt QR-Codes: muss dazu ausgedruckt werden liest QR-Codes ''' import os, signal, subprocess strfile1 = "qrcode" def erzeugen(): text=raw_input("Geben Sie einen Text für den QRCode an: ") os.system("qrencode -o "+strfile1+".png '"+text+"'") print "QRCode unter: "+strfile1+".png" def lesen(): zbarcam=subprocess.Popen("zbarcam --raw --nodisplay /dev/video0", stdout=subprocess.PIPE, shell=True, preexec_fn=os.setsid) print "zbarcam erfolgreich gestartet..." while True: qrcodetext=zbarcam.stdout.readline() if qrcodetext!="": print "success" break os.killpg(zbarcam.pid, signal.SIGTERM) # Prozess stoppen print "zbarcam erfolgreich gestoppt" return qrcodetext
Programm bei der Ausführung
In dem unten stehenden Screenshot sehen Sie eine Programmausführung in der Kommandozeile. Weiterhin noch den Aufbau des Protoypen auf einem Steckbrett.
Hallo Stefan,
auch ich bin gerade dabei einen MP3 Player mit QR-Code Scanner für meine Tochter zu bauen. Kannst du mir bitte auch deine Quellen schicken. Gerne kann ich dir dann eine Rückmeldung geben, was ich wie umgesetzt habe.
Vielen Dank
Steffen
Hallo Stefan,
könntest Du mir das Projekt ebenfalls schicken, da ich für meinem Sohenmann einen Musikplayer mit Scanner bauen möchten. Vorab vielen Dank.
Grüsse
Maik
Hallo Maik,
viel Spass mit den Projektdateien. Feedback bzgl. deinem eigenen Projekt würde mich freuen!
Viele Grüße,
Stefan
Hi Stefan,
zurzeit probiere ich mich auch daran die Kamera als Scanner zu verwenden um dann eine Webseite zu öffnen.
Da ich ein absoluter Anfänger bin, komme ich ab dem Punkt, wo er die Webseite öffnen soll, nicht weiter.
Kannst du mir bitte dein Projekt zusenden?
VG
Tim
Hallo Tim,
ich habe dir das Projekt geschickt, kann jedoch bis auf die mitgelieferte Dokumentation keinen zusätzlichen Support geben.
Viel Spass damit,
Stefan
Hey Stefan, ich versuche gerade meiner Tochter einen QR- Code Player in ihr Puppenhaus einzubauen. der Pi 2 hat anscheinend Probleme mit xmms2. ich komme leider kein Stück mehr weiter solange xmms2-launcher nicht funktioniert. Dürfte ich dich bitten auch mir dein Projekt zu senden? Ich glaube außer Axel Schemberg und Markus Nasarek bist du der einzige im www der einen QR-Code Player mit dem raspberry zum laufen bekommen hat.
viele Grüße und herzlichen Dank, Axel
Hallo Axel,
ich habe dir das Projekt geschickt, mit dem du dann auch die Audiodateien (aktuell nur wav-Dateien, aber mp3-dürfte mit mplayer auch möglich sein) wiedergeben kannst. Wie geschrieben, würde ich mich freuen, wenn du mir Rückmeldung gibst, wie dein Projekt final aussieht. Ich habe auch eine kleine Tochter, die sich für so etwas interessieren dürfte.
Viele Grüße,
Stefan
Hallo Stefan,
ich bin ebenfalls über den Geek-Artikel gestolpert.
Danach über die Seite http://www.die-schembergs.de und http://techniklive.blogspot.de/.
Die Taster funktionieren, die Kamera macht Aufnahmen und wertet den Barcode aus – nur das Zusammenspiel (bzw die Übergabe an xmms2) funktioniert nicht 🙁
Kannst Du mir bitte ebenfalls Dein Projekt schicken?
Vielen Dank.
Gruß Dirk
Hallo Dirk,
bin leider nicht früher dazu gekommen dir zu antworten. Gerne schicke ich dir mein Projekt und hoffe, dass dir das bei deinem beschriebenen Problem weiterhilft.
Viele Grüße,
Stefan
Hallo Stefan!
Wollte ursprünglich den Raspi Player aus der Raspberry Pi GEEK nachbauen und scheitere an einem Script. Kannst du mir bitte ebenfalls mal dein Projekt schicken?
Vielen Dank!
lg
Thomas
Hallo Thomas,
gerne. Ich habe es dir eben mit ein paar Erläuterungen zugeleitet, sodass es selbsterklärend sein sollte…
Viele Grüße,
Stefan
Hallo,
ich habe dein Skript eben ausprobiert und es hat aus dem Stand sofort einwandfrei funktioniert. Vielen Dank!
Dürfte ich mir Deinen Code für die Musikplayer ansteuerung ebenfalls mal ansehen?
Mit Gruß und Dank!
Sebastian
Hallo Sebastian,
danke für die positive Rückmeldung! Code-Paket ist eben an deine E-Mail gegangen.
Viel Spass damit!
Stefan
Hallo Stefan,
tolles Projekt.
War auf der suche nach so etwas.
Würde mich auch über genauere Details zum Projekt (speziell der Musikplayer Geschichte) freuen.
Gruß Matze
Hallo Matze,
das Projekt ist dafür gedacht „analoge“ Kinderbücher zu digitalisieren (d.h. QR-Code bei Kuh platzieren –> es gibt ein „Muhen“ aus der Raspberry Pi).
Was benötigst du für Infos?
Viele Grüße,
Stefan
Hi,
würde mich auch freuen, wenn du mir das Projekt mal schicken würdest.
Dann könnte ich mal testen, ob ich das zum laufen bekomme.
Gruß Matze
Hi Matze,
ich habe die eben den Sourcecode geschickt! Viel Spass damit und gib‘ doch Rückmeldung, wenn alles geklappt hat.
Grüße,
Stefan
Hey Stefan,
Danke für deine Hilfe, hat dann doch endlich geklappt.
Wird mich jetzt mal dran machen, das einlesen der Codes, mit einer Fernbedienung zu starten
Grüße aus Rahden
Hallo Stefan,
super zu hören! Hattest du noch etwaige Herausforderungen zu bewältigen, bis es auch bei dir funktioniert hat?
Grüße,
Stefan
Hi,
da bin ich auch mal wieder, naja denke die allgemeinen Schwierigkeiten die man hat wenn man sich noch nicht wirklich mit Linux beschäftigt hat, man muß das auch erst einmal alles verstehen.
Bin jetzt da dran ne Fernbedienung anzulernen damit man, nachden das Hörbuch geladen wurde auch ein Lied/Geschichte weiter machen kann.
Gruß
Stefan
Hi,
super von dir zu hören! Ja, das ganze ist nicht so trivial, aber Linux ist super! Das Wissen kannst du überalle gebrauchen, wo es um wichtige Rechnersysteme geht. Vom Router bis zum Server wird hier nämlich sehr oft Linux eingesetzt. Das ganze ist ein Prozess, bei dem auch ich noch nicht am Ende angekommen bin. Einen Teil meines Wissens und nützliche Anleitungen zu Linux habe ich auf einem eigenen Weblog zusammengetragen.
Wenn du nicht Shellscript als Programmiersprache lernen willst (ein bisschen ist manchmal gut für kleine Scripte), kommst du schnell in den Bereich: Welche Programmiersprache nehmen. Ich habe mich mit Büchern in Python eingelernt, da man hier schön „wie Kleber“ bestehende Programme für seine Zwecke als Komponenten einbinden kann (vgl. das Vorgehen im Artikel bei qrcode.py). Ich kann folgende Quelle empfehlen: http://www.diveintopython.net/
Ich bin gespannt, wie es bei dir weitergeht!
Viele Grüße,
Stefan
Hi Stefan,
der Beitrag ist zwar schon etwas älter, aber bin gerade dabei meiner kleinen Tochter einen mp3-Player
mit dem Raspberry Pi zu basteln, ich wollte diesen Beitrag (http://www.raspberry-pi-geek.de/article/info/32086) aus der Raspberry Pi GEEK als Leitfaden nutzen, ich komm aber nicht ganz klar mit deren Anleitung.
Es gibt zwar alle Dateien fertig zum Downloaden, ich weis aber nicht wo ich sie hin kopieren soll, wahrscheinlich ist das jemandem der sich mit Linux auskennt klar wo sie hin gehören…
Wo muß ich deine Skripte denn hin kopieren damit es läuft?
Gruß Stefan
Hallo Stefan,
ich habe dir eben das vollständige Projekt per email geschickt. Dort sind auch die Ordner für „QR-Codes“ und „Sounds“ eingerichtet. Die Dateien müssten noch mit chmod 555 ausführbar gemacht werden. Falls das Script nicht starten sollte, liegt es sicherlich an der Einrichtung der PYTHONPATH-Umgebungsvariable in Linux.
Viele Grüße,
Stefan
Danke dir, werd das am Wochenende mal testen.
Werde dann berichten wenn es geklappt hat.
Grüße
Hi,
kann man irgendwo beobachten / sehen was die WebCam sieht und ob der Code eingelesen wurde.
Gruß
Hallo Stefan,
das habe ich z.B. an meinem Laptop (läuft mit Debian Linux) machen können. Das Programm habe ich dort in einem Terminal gestartet und konnte zbarcam live in Aktion erleben (kleines Fenster mit Bilder der Webcam hat sich geöffnet).
Das müsstest du auch an der Raspberry Pi sehen, wenn du diese mit LXDE hochfährst und im Desktop ein Terminal startest (habe ich jedoch nicht gestest, sondern wie gesagt beim Debugging auf meinem Laptop). Dorst startest du dann main.py über die Kommandozeile.
Viele Grüße,
Stefan