Wie benutze ich die Raspberry Pi als QR-Code-Lesegerät?

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

qrcode

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.

26 Gedanken zu „Wie benutze ich die Raspberry Pi als QR-Code-Lesegerät?

  1. 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

  2. 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

  3. 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

  4. 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 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

  5. 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

  6. 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

  7. 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

  8. 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

      • 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

  9. 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

          • 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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert