Fingerprint Scanner am Raspberry Pi 3B+ funktioniert nicht.

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Guten Morgen.

    Vor Kurzem habe ich meinen ersten Raspberry Pi 3B+ und dazu ein Fingerprint Scanner gekauft und darauf gleich mal das "Rasphian Jessie" als Betriebssystem installiert.

    Pi: https://www.bastelgarage.ch/raspberry-pi/n…ry-pi-3-model-b

    Betriebssystem: http://downloads.raspberrypi.org/raspbian/image…ian-2018-11-15/

    Fingerprint Scanner: https://www.bastelgarage.ch/kapazitiver-fi…rch=fingerprint

    Gemäss der nachfolgenden Dokumentation wurde der Fingerprint-Scanner an den Pi angeschlossen:

    https://www.waveshare.com/w/upload/8/82/…r_Manual_EN.pdf

    Anschluss Scanner am PI:

    VCC am Pin 2 (+5V)

    GND am Pin 6 (GND)

    TXD am Pin 8 (GPIO 14)

    RXD am Pin 10 (GPIO 15)

    Wake am Pin 16 (GPIO 23)

    RST am Pin 18 (GPIO 24)

    Anschliessend die nachfolgenden Schritte von der nachfolgenden Anleitung (ab Seite 22) durchgeführt:

    https://www.waveshare.com/w/upload/8/82/…r_Manual_EN.pdf

    ...und die in dieser Doku verlinkten Libraries installiert:

    https://www.waveshare.com/wiki/Libraries…llation_for_RPi

    Im Raspberry-System habe ich unter "Raspberry-Pi-Konfiguration" sind "I2C", "Serial Port", "Serial Console" und "GPIO-Fernzugriff" aktiviert. Als Versuch wurden auch alle Schnittstellen einmal aktiviert.

    In der Datei "/boot/config.txt" ist "enabled_uart=1" vorhanden.

    Den Demo-Code von der offiziellen Site wurde heruntergeladen. Im Code steht "ser = serial.Serial("/dev/ttyS0", 19200), welches ja gemäss der Doku passen sollte.

    Der GPIO 24 wird gemäss der Messung mit dem Multimeter gegen GND auch wirklich auf HIGH und wieder auf LOW zurückgeschaltet. Auch habe ich versucht, den Scanner nur an 3.3V anzuschliessen - ohne Erfolg.

    Speicherorte:

    bcm2835-1.39 -> /home/pi/Downloads/bcm2835-1.39

    Capacitive_Fingerprint_Reader_Code -> /home/pi/Downloads/Capacitive_Fingerprint_Reader_Code/RaspberryPi/python3/

    RPi.GPIO-0.6.5 -> /home/pi/Downloads/RPi.GPIO-0.6.5

    spidev-3.4 -> /home/pi/Downloads/spidev-3.4

    wiringPi -> /home/pi/Downloads/wiringPi

    Sind die Dateien in einem speziellen Verzeichnis abzulegen?

    Wechsle ich über das LXTerminal ins Verzeichnis /home/pi/Downloads/Capacitive_Fingerprint_Reader_Code/RaspberryPi/python3/ und gebe dort den nachfolgenden Befehl ein, wird stets eine Fehlermeldung ausgegeben:


    Befehl: “sudo python3.5 main.py"

    Fehlermeldung: "***ERROR***: Please ensure that the modul power supply is 3.3V or 5V, the serial line connection ist correct, the baud rate defaults to 19200, and finally the power is switched off, and the power on again"

    Unter diesem Link steht auch noch folgender Eintrag:

    Note: the serial port on Raspberry Pi 3 Model B is unusable, because Pin 14 and Pin 15 is connected to the on-board Bluetooth model.

    Bluetooth habe ich über das Menü oben rechts "Turn Off Bluetooth" deaktiviert - leider auch ohne Erfolg.

    im LXTerminal gibt der Befehl "ls /dev/ttyS0" den Wert "/dev/ttyS0" zurück. Die Schnittstelle scheint demnach in Ordnung zu sein...?

    Hat jemand eine Idee, was schief laufen kann oder was ich noch testen kann, um dem Problem auf die Pelle zu rücken?

    Mit dem DemoTool unter Windows (über USB) funktioniert der Scanner - ein Defekt kann demnach ausgeschlossen werden.

    Danke bereits im Voraus.

    Gruss

    ADB

  • Fingerprint Scanner am Raspberry Pi 3B+ funktioniert nicht.? Schau mal ob du hier fündig wirst!

  • Vor Kurzem habe ich meinen ersten Raspberry Pi 3B+ und dazu ein Fingerprint Scanner gekauft und darauf gleich mal das "Rasphian Jessie" als Betriebssystem installiert.

    Der Pi 3B+ dürfte gar nicht starten, weil Jessie dafür viel zu alt ist. Erst ab Raspbian Stretch (ab Version 13.3.2018) dürfte er starten.

  • Speicherorte:

    bcm2835-1.39 -> /home/pi/Downloads/bcm2835-1.39

    Die Libraries musst Du auch installieren, nicht nur irgendwo hinlegen, haste gemacht?


    AUf dem Pi3B+ musst Du BT sowie evt. die serielle Konsole komplett abschalten, wenn Du die vollständige UART nutzen willst. Was sagt

    Code
    ls -la /dev/serial*

    auf Deinem Pi?

  • Danke für eure Antworten.

    Ich muss gestehen, dass ich bereits vor einigen Tagen einige Versucht mit einer Raspberry-Kamera unternommen habe und so wie es aussieht, schlussendlich doch noch ein anderes System installiert - wenn ich dies jedenfalls richtig interpretiere.

    Beim Befehl

    Code
    cat /etc/os-release"

    ...wird jedenfalls folgendes angezeigt:

    PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"

    Name="Raspbian GNU/Linux"

    Version_ID="9"

    Mit den nachfolgenden Befehlen sollten die Libraries aus dem Link doch eigentlich installiert worden sein...?

    Code
    chmod 777 build
    ./build

    ...und...

    Code
    ./configure
    make
    sudo make check
    sudo make install

    ...usw.

    Und betreffend...

    Code
    ls -la /dev/serial*

    ...folgendes:

    Code
    lrwxrwxrwx 1 root root 5 Mär 21 07:02 /dev/serial0 -> ttyS0
    lrwxrwxrwx 1 root root 7 Mär 21 07:02 /dev/serial1 -> ttySAMA0

    .


    Zitat

    AUf dem Pi3B+ musst Du BT sowie evt. die serielle Konsole komplett abschalten, wenn Du die vollständige UART nutzen willst.

    Reicht es aus, oben rechts in der Leiste Bluetooth über "Turn Off Bluetooth" zu deaktivieren?

    Und unter "Raspberry-Pi-Konfiguration" wird "Serial Console" deaktiviert, nehme ich an...?

    Aktuell sind diese beiden (Bluetooth + Serial Console" deaktiviert und ein Aufrufen der main.py möchte trotzdem noch nicht korrekt ausgeführt werden...

  • Vielleicht möchtest Du einfach einen USB-zu-tty Konverter einsetzen. Dann kannst Du den Sensor auch an einem normalen (linux) PC betreiben und dort auch die Software entwickeln, wenn nötig. So ein Konverter kostet nicht die Welt (3 EURO) und ist sehr praktisch.

    Jedenfalls entfällt dann das ganze Gehühnere beim PI3, die Serielle Schnittstelle freizubekommen.

  • Danke für deine Antwort.

    Eigentlich ist so ein Konverter gar nicht notwendig.

    Wenn die Platine vom oben erwähnten Link genauer betrachtest, siehst du, dass dort bereits ein Mikro-USB-Anschluss auf der Rückseite verbaut ist.

    Auch diese Möglichkeit habe ich natürlich versucht. In den Code-Einstellungen wurde bei dem Versuch noch folgendes angepasst:

    Code
    ser = serial.serial('/dev/ttyusb0' 9600)

    Theoretisch spielt es eigentlich keine Rolle.

    Was müsste ich denn sonst noch anpassen, damit ich per USB den Scanner zum Laufen kriege?

  • Funktioniert denn die serielle Schnittstelle überhaupt? Testen kannst Du das, indem Du Rx und Tx verbindest und mit einem Terminalptogramm ein paar Zeichen tippst (lokales Echo muss aus sein) Wenn das geht, dann kann man weiter sehen.

  • Nach der Anleitung von dieser Seitehabe ich folgendes eingegeben:

    Zum Testen, ob die serielle Schnittstelle auch wunschgemäß arbeitet, verbinden Sie die GPIO-Ports TX und RX des UART miteinander (Pins 8 und 10 der Stiftleiste). Dmit wird jedes gesendete Byte gleich wieder auf den Empfang zurückgegeben. Dann starten Sie das Teminalprogramm Minicom (ggf. muss das erst nachinstalliert werden) im lokalen Modus, d. h. ohne Senden von Init-Strings etc.:

    Code
    minicom -b 9600 -o -D /dev/ttyAMA0

    Jedes Zeichen, das Sie eintippen wird nun als Echo auf dem Bildschirm angezeigt (sofern alles in Ordnung ist). Einen Zeilenvorschub erreichen Sie übrigens mit "Strg-J" (Linefeed). Beenden läßt sich Minicom mit der Tastenfolge "Strg-A" und "q".


    Im Terminal-Programm heisst es nach dem Eingeben des Befehls:

    Willkommen zu minicom 2.7

    Optionen: I18n

    Übersetzt am Apr 22 2017, 09:14:19

    Port /dev/ttyAMA0

    Drücken Sie CTRL-A Z für Hilfe zu speziellen Tasten


    Auch wenn ich RXD und TXD (Pin 8 & 10) miteinander verbinde und anschliessend irgendwelche Zeichen im LXTerminal eingeben will, erscheint leider gar nichts - d.h. der Cursor im Terminal bewegt sich beim Eingeben der Zeichen überhaupt nicht.

    Starte ich das "minicom" überhaupt so richtig?

  • Probiere es mit :

    Code
    minicom -b 9600 -o -D /dev/serial0

    Jetzt sah es vielversprechender aus.

    Die getippten Zeichen werden in der untersten Zeile des Terminals geschrieben. Sobald ich die Brücke zwischen RXD und TXD entfernt habe, wurden keine Zeichen mehr angezeigt. Demnach nehme ich an, dass die serielle Schnittstelle soweit in Ordnung ist...?

  • Leider immer noch diesselbe Fehlermeldung.

    Wenn ich den Code von Main.py anschaue...

    ...müsste dieser Fehler nicht angezeigt werden, wenn es Probleme beim Reset (Schalten der GPIO) gibt?

    Hier wäre dann auch noch der Code von der "Capacitive_Fingerprint_Reader.py"

    Was kann ich sonst noch überprüfen?

    Einmal editiert, zuletzt von ADB (23. März 2019 um 15:14)

  • Gebe ich deinen Befehl in das LXTerminal ein und starte anschliessend über

    Code
    sudo python3 main.py

    das main.py, erhalte ich wieder diesselbe Fehlermeldung.

    Fallen dir noch weitere Ideen ein, um den Fehler einzugrenzen?

  • müsste denn der pi-Benutzer nicht bereits Root-Rechte durch das "Vorwort" sudo erhalten und entsprechend auch die Berechtigung auf die serielle Schnittstelle erhalten?

    Habe auch noch folgende zwei Tipps versucht:

    https://pi-buch.info/die-serielle-s…raspberry-pi-3/

    https://maker-tutorials.com/uart-schnittst…y-pi-aktiveren/

    Es scheint ja so, als würden die Schnittstellen sich gegenseitig noch bekämpfen...

    Leider jedoch auch dabei keinen Erfolg.

    Habe es auch ein weiteres Mal mit dem USB-Kabel (statt den einzelnen Drähten von UART). Auch da kein Fortschritt.

    Wie kann ich herausfinden, welche Schnittstelle die richtige ist (z.B. ttyUSB0, ttyUSB1...)?

    Und welche Bitrate hat die Verbindung über USB?

  • EDIT

    Verdammt, jetzt ärgere ich mich aber über mich selbst. Schließ doch erst einmal das Modul richtig an (Seiten 4,6 und 22 Deiner Anleitung). In Deinem ersten Post hab ich’s glatt übersehen...

    TX (Modul) gehört an RX (RPi Pin 10 - BCM 15)

    RX (Modul) gehört an TX (RPi Pin 8, BCM 14)

    /EDIT

    Pack den Benutzer, der die Zugriffe benötigt, in die passende Gruppe, die Zugriff auf die Serielle Schnittstelle benötigt.

    pi darf das bereits, es nochmals zu tun, dürfte keinen Unterschied ergeben. (#9, #10)

    An Deiner Stelle würde ich jetzt erst einmal mit einem komplett neuen System anfangen. Durch das anwenden mehrerer „Tipps“ hast Du u.U. Einstellungen vergeigt. Wenn Du etwas änderst, dann schreib Dir das auf und mach es rückgängig, wenn es keinen Erfolg bringt. Schnittstellen bekämpfen sich nicht. Dass sie generell (zum Zeitpunkt von #9 und #10) funktionierte, hattest Du probiert. Auf einem neu installierten System befolge ausschließlich die Hinweise aus der originalen Anleitung.

    Das Anstecken des USB-UART Adapters hinterlässt Spuren inmden logfiles. Starte dmesg -w in der shell und stecke dann den Adapter an. In den Meldungen siehst Du, was passiert.

    Serielle Schnittstellen können mit verschiedenen Parametern arbeiten (Geschwindigkeit, Parität, Stopbits usw.) Das stellt entweder Dein Programm ein oder Du definierst vorher die Schnittstellenparameter mit stty, Beispiel in #15.

    Aus der Anleitung:

    Zitat

    Download the code for Raspberry Pi, install all of required libraries and configure serial port.

    Zitat

    Note: If the serial assistant always returns the error message“***ERROR***”, then please ensure that the module is powered by 3.3V or 5V, whether the serial wired connection is correct, the module baud rate is 19200 by default, and finally power off, then power on again.

  • Verdammt, jetzt ärgere ich mich aber über mich selbst. Schließ doch erst einmal das Modul richtig an (Seiten 4,6 und 22 Deiner Anleitung). In Deinem ersten Post hab ich’s glatt übersehen...

    TX (Modul) gehört an RX (RPi Pin 10 - BCM 15)

    RX (Modul) gehört an TX (RPi Pin 8, BCM 14)

    Du sprichst mir aus der Seele!! Habe mich natürlich zu sehr darauf fixiert, dass der RX auf RX gehört und TX auf TX - in dieser Art natürlich eine etwas "einseitige" Kommunikation. Sorry!

    Im Nachhinein ist man immer schlauer und es wird mir wohl für immer in Erinnerung bleiben! :shy:

    Nachdem ich die Anschlüsse auf Pin 8 und 10 getauscht und die seriellen Einträge im Code wieder angepasst hatte, hat das System (kurz bevor ich das Tuch werfen wollte) doch noch funktioniert. Wie so oft: Der Fehler liegt zwischen dem Stuhl und der Tastatur. :lol:

    Auch die Parameter der seriellen Schnittstelle scheinen auch mit der Original-Konfiguration zu funktionieren:

    Code
    ser = serial.Serial("/dev/ttyS0", 19200)

    Aktuell fehlt mir die Zeit, um noch weiter mit dem Code des Fingerprints zu basteln. Der Fingerprint-Reader soll in einem zukünftigen Projekt eingesetzt werden und dafür musste ich natürlich zuerst wissen, ob er überhaupt funktioniert.

    Zur Erkennungsrate kann ich nur sagen: Top! Auch auf dem obersten "Compare Level".

    In wie fern das System gegen Manipulation sicher ist, kann ich aktuell nicht sagen. Aber man soll ja den Zugang zu einem Objekt grundsätzlich nie nur über ein einziges System gewähren -> und schon gar nicht über einen Finger, den man (bei Verlust) nicht mehr ersetzten kann. :lol:

    Bedanke mich recht herzlich für eure Unterstützung!

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!