Raspberry Pi QR / Barcode Scanner mit Kamera selber bauen

Barcodes sowie QR Codes sind heute überall zu finden, ob auf Produkten oder gar auf Visitenkarten. Die enthaltenen Informationen sind nicht mit dem Auge zu entziffern, dafür aber von Maschinen lesbar. De Raspberry Pi ist dafür also optimal geeignet. In diesem Tutorial bauen wir mittels einer einfachen Kamera unseren eigenen Raspberry Pi Barcode Scanner, der ebenfalls QR Codes lesen kann. Hierfür nutzen wir unter anderem OpenCV.

Die daraus gewonnene Funktionalität kann in verschiedenen Projekten verwendet werden. So können QR / Barcodes z.B. zur Identifikation genutzt werden, oder bspw. eine eigene Raspberry Pi Lagerverwaltung damit aufgebaut werden.

Raspberry Pi Tutorials QR Code

Beispielhafter QR Code mit wenigen Zeichen.

Barcodes / QR Codes sind ein- bzw. zweidimensionale Codes, in denen Textinformationen in Form von Bits gespeichert werden. Um diese anschließend zu entziffern, wird ein QR / Barcode Lesegerät benötigt. Dies besteht aus einer Kamera (dem Scanner), welche ein Bild des Codes macht und anschließend von einem PC / Mikrocontroller umgewandelt wird. Der Vorteil des QR Codes ist dabei, dass auch teilweise falsch gelesene Informationen (Bits) mittels Prüfsummen „repariert“ werden können und somit das Ergebnis trotzdem richtig ausgelesen wird.

 

Zubehör für den Raspberry Pi Barcode Scanner

In diesem Tutorial wird folgendes Zubehör verwendet:

Des weiteren werden wir Python Codeschnipsel nutzen. Es empfiehlt sich also, wenn du bereits grundlegende Python Programmierkenntnisse hast. Falls du neu einsteigst oder deine Kenntnisse auffrischen willst, gibt es hier ein gutes Tutorial zum Einstieg.

 

Vorbereitung: Benötigte Tools zum Lesen von QR / Barcodes

Zunächst einmal benötigen wir eine Linux Distribution als Betriebssystem des Raspberry Pi’s. Hierbei bietet sich vor allem Raspbian oder ein darauf basierendes Betriebssystem (OpenHAB, KODI, OpenELEC, etc.) an. Falls du noch kein Betriebssystem auf deiner Micro SD Karte installiert hast, so findest du hier eine kurze Anleitung, wie du das Betriebssystem auf eine SD Karte flashst.

Wir loggen uns nun z.B. per SSH ein und installieren die nötigen Tools (unter Python 3):

sudo apt-get update
sudo apt-get install python3 python3-pip libzbar0 
sudo pip3 install opencv-python pyzbar imutils
sudo apt-get install libcblas-dev libhdf5-dev libhdf5-serial-dev libatlas-base-dev libjasper-dev libqtgui4 libqt4-test

Die Installation sollte ohne weitere Fehler verlaufen.

Die Kamera kannst du auch bereits anschließen. Dabei spielt es keine Rolle, ob du eine offizielle Raspberry Pi Kamera nutzt, die über den CSI Anschluss direkt am Pi betrieben wird, oder eine Webcam über USB. Wichtig ist lediglich, dass die Webcam am Raspberry Pi und über OpenCV unterstützt wird. Bei aktuellen Kameras ist dies jedoch fast immer der Fall.

 

 

Erster Test: Mit dem Raspberry Pi QR / Barcodes lesen

Nun wollen wir auf einem einfachen Bild unsere QR und Barcodes mittels zbar erkennen und in lesbaren Text umwandeln. Dafür benötigen wir eine Datei eines solchen Codes.

Um schnell einen einfachen QR bzw. Barcode zu erstellen, gibt es dutzende Webseiten im Internet. Eine kurze Google Suche nach „Barcode Generator“ bzw. „QR Code Generator“ ergibt verschiedene Seiten. Ich habe hiermit bzw. hiermit folgenden Barcode und QR Code erstellt, welche „https://tutorials-raspberrypi.de/“ beinhalten.

Raspberry Pi Tutorials BarcodeRaspberry Pi Tutorials QR CodeJetzt wollen wir einen oder beide dieser Codes lesen lassen. Dazu laden wir die Bilddateien zunächst auf dem Raspberry Pi herunter:

wget https://tutorials-raspberrypi.de/wp-content/uploads/barcode-tutorials-raspberrypi.de_.jpg
wget https://tutorials-raspberrypi.de/wp-content/uploads/qr-code-tutorials-raspberrypi.de_.png

Nun erstellen wir eine neue Python Datei, in der wir den Code zum Auslesen der Bilder hinein kopieren:

sudo nano barcode-scanner.py

Folgenden Inhalt fügen wir ein (falls du eine andere Datei auslesen willst, kannst du den Namen und Pfad entsprechend in Zeile 6 anpassen):

Zunächst importieren wir die benötigten Pakete. In Zeile 11 lesen wir alle QR und Barcodes aus dem Bild aus – hierbei bekommen wir ein Array zurück, das folgende Werte beinhaltet:

  • data: Der dekodierte Text, welcher sich durch den Code repräsentiert wurde.
  • type: Der Typ des Codes (z.B. CODE128 oder QRCODE).
  • rect: Ein Objekt, welches die Koordinaten des Punkt oben links (left + top) und die Breite/Höhe (width/height) angeben.
  • polygon: Array an Punkten (mit x und y-Wert), die das Polygon kennzeichnen, in dem der Code enthalten ist.

Speichere das Skript (STRG + O), schließe die Datei (STRG + X) und führe sie aus (Abbrechen mit STRG+C):

sudo python3 barcode-scanner.py

Insgesamt sehen die Daten meines Bildes so aus:

Decoded(data=b'https://tutorials-raspberrypi.de/', type='CODE128', rect=Rect(left=4, top=0, width=786, height=75), polygon=[Point(x=4, y=1), Point(x=4, y=75), Point(x=790,y=74), Point(x=790, y=0)])

Für den Anfang nicht schlecht, oder?

 

Raspberry Pi Barcode Scanner: Einbinden des Kamera-Streams

Raspberry Pi Überwachungskamera Livestream NoIR

Offizielle Raspberry Pi Kamera.

Wir haben bisher gesehen, dass das Auslesen von Barcodes mittels Raspberry Pi sehr einfach ist! Was uns jetzt noch fehlt, ist dies live (in Echtzeit) per Kamera Stream / Videoauszulesen. Dadurch können wir direkt reagieren, wenn ein bestimmter Code vor die Kamera gehalten wird. Dazu kommt, dass Echtzeit-Bilder nicht immer den perfekten Winkel etc. haben.

Sofern du eine offizielle Raspberry Pi Kamer nutzt, muss diese erst aktiviert werden. Wir rufen dafür folgenden Befehl auf:

sudo raspi-config

Unter Interfacing Options -> Camera lässt sie sich aktivieren. Danach muss neu gestartet werden.

Wir erstellen nun eine weitere neue Datei:

sudo python3 barcode-scanner-live.py

Ähnlich zur vorherigen Datei, bekommt diese folgenden Inhalt (falls du keine Raspberry Pi Kamera verwendest, so kannst du in Zeile 9 usePiCamera = False setzen):

Nachdem speichern und schließen (Strg+O, Strg+X) starten wir auch diese Datei:

sudo python3 barcode-scanner-live.py

Lasse nun die Kamera z.B. auf deinen Bildschirm oder auf einen ausgedruckten QR Code zeigen. Der dechiffrierte Text wird sofort angezeigt.

In diesem Beispiel geben wir den Text einfach nur aus, was relativ unspektakulär ist. Hier ist nun deine Kreativität gefragt, was damit angestellt werden soll. Ein paar Ideen wären folgende:

  • Öffne ein Schloss beim Zeigen eines bestimmten Codes  (mittels Relais)
  • Jeder Nutzer bekommt einen Code, mit dem er sich authentifizieren kann. Beim Scannen des QR Codes werden seine Daten nach einer Datenbankanfrage angezeigt.
  • Markiere Objekte anhand Codes und lasse diese vom Raspberry Pi erkennen.
  • Füttere deinen Twitter Bot.
  • Frage Produktdetails mittels Barcode-Datenbanken ab.
  • Versende Mails.
  • Lagerverwaltung: Speichere Informationen zur Lagerung eines Produkts mittels des Barcodes – so findest du es einfacher wieder.

Gerne kannst du weitere Ideen (idealerweise mit Skripten) in den Kommentaren posten.

 

Barcode Scanner Fazit

Der Raspberry Pi ist hervorragend als Barcode Scanner geeignet. Mittels Bibliotheken wie zlib und OpenCV lässt sich in nur wenigen Minuten ein kompletter Raspberry Pi Barcode Scanner selber bauen. Das Auslesen eines QR bzw. Barcodes kann in vielen anderen Projekten zum Einsatz kommen. Die möglichen Einsatzorte sind groß.

Außerdem ist unser Scanner enorm schnell. Das ermöglicht einen Betrieb in Echtzeit. Dazu haben wir gesehen, dass wir sowohl einzelne Bilder, als auch Videostreams mittels Python verarbeiten können.

3 Kommentare

  1. auf einem neuen 2019-06-20-raspian-buster.img führe ich den Befehl „sudo pip3 install opencv-python pyzbar imutils“ aus und erhalte „Could not find a version that satisfies the requirement opencv-python (from versions: )
    No matching distribution found for opencv-python“
    Was muss ich tun?

    Antworten
  2. Hallo,

    Super Erklärung und genau das was ich suche. Ich habe gerade ein Projekt laufen (allerdings in der Windows-Welt) bei dem diese Anleitung mir weiterhelfen könnte. Allerdings bräuchte ich die Ausgabe des Barcodewertes als „Tastatureingabe“ für den PC. Gibt es eine Möglichkeit den Raspberry quasi als HID für einen Windows-PC zu nutzen? Der sich vielleicht nicht direkt erschließende Sinn hinter der Frage ist folgender. Ich nutze für ein bestehendes Erfassungstool aktuell Barcodescanner (Bluetooth und kabelgebunden). Der Wunsch ist nun quasi wie eine Supermarktkasse einen fest installierten Scanner zu nutzen, der einfach den Barcodewert an den PC übermittelt. Dafür wäre das oben beschriebene Projekt super.

    Antworten

Hinterlasse einen Kommentar

Deine Email Adresse wird nicht veröffentlicht.

Blog abonnieren

Abonniere Raspberry Pi Tutorials, um kein Tutorial mehr zu verpassen!