NEWS
Fingerprint an einem ESP8266
-
Hallo,
hat wer von euch schonmal einen Fingerprint-Sensor mit einem ESP8266 zum Laufen bekommen?
Ich habe den Fingerprint-Sensor mit dem AS608-Chip drauf (Link zum Sensor auf aliexpress). Die Pins habe ich folgendermaßen verbunden:
VCC --> 3,3V (auch mit 5V versucht)
TX --> RX (GPIO3)
RX --> D4 (GPIO2 - TX)
GND --> GND
TCH und VA habe ich nicht auf dem ESP verbunden, da nirgends davon etwas stand.Das hier ist mein Code (ist das Beispiel aus der Bibliothek), aber er gibt immer "Did not find fingerprint sensor" aus. Ich bin schon am verzweifeln.
#include <Adafruit_Fingerprint.h> // On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white // uncomment this line: //#define mySerial Serial1 // For UNO and others without hardware serial, we must use software serial... // pin #2 is IN from sensor (GREEN wire) // pin #3 is OUT from arduino (WHITE wire) // comment these two lines if using hardware serial SoftwareSerial mySerial(2, 3); Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); void setup() { Serial.begin(9600); while (!Serial); delay(100); Serial.println("\n\nAdafruit finger detect test"); finger.begin(57600); if (finger.verifyPassword()) { Serial.println("Found fingerprint sensor!"); } else { Serial.println("Did not find fingerprint sensor :("); while (1) { delay(1); } } } void loop() { }
Ich hoffe, mir kann einer von euch weiterhelfen, da ich einfach nicht mehr weiterkomme. Im Internet finde ich immer nur dieselbe Vorgehensweise, welche ich aber befolge und trotzdem nicht funktioniert. Ich befürchte ja schon, dass der Fingerprint-Sensor nur mit einem Arduino funktioniert und nicht mit einem ESP8266, aber so recht kann ich mir das auch nicht vorstellen.
Vielen Dank schonmal für eure Hilfe!
Liebe Grüße
Thomas -
@tööö sagte in Fingerprint an einem ESP8266:
VCC --> 3,3V (auch mit 5V versucht)
Er ging zwar vorher auch nicht, aber der verträgt keine 5V. Könnte also jetzt auch noch defekt sein.
Welchen ESP hast du denn genau benutzt? Wenn dort GPIO2/3 direkt mit RX/TX bezeichnet sind, musst du im Sketch Hardware Serial nutzen. Gelegentlich haben sie bei den Sensoren auch einfach RX und TX vertauscht. Umdrehen wenn es nicht funktioniert ist nie verkehrt. -
@tööö sagte in Fingerprint an einem ESP8266:
RX --> D4 (GPIO2 - TX)
Nur so am Rande:
GPIO2 ist nicht TX
Gruß
Christian -
Das wäre/ist nicht weiter schlimm, da in dem Sketch SoftwareSerial benutzt wird. Damit kannst du quasi jeden GPIO als RX/TX definieren.
SoftwareSerial mySerial(2, 3);
-
Hallo,
danke erstmal für eure Antworten.
Wegen den 5V, das habe ich zum Beispiel hier gelesen: https://www.hackster.io/remnis/fingerprint-sensor-with-an-arduino-or-an-esp-49194d
Leuchten tut er zumindest noch blau, wie am Anfang auch. Keine Ahnung, ob das ein Zeichen ist, dass er noch geht? Wie könnte man es denn testen, ob er nun defekt ist oder nicht?
Mit den Anschlüssen habe ich schon rumgespielt, wie es nur geht. TX mit RX vertauscht und auch mal GPIO3 und GPIO1 probiert.
Und laut Pin-Belegung steht hier zum Beispiel hinter dem GPIO2 das TXD1, oder ist das etwas anderes?
https://bennthomsen.files.wordpress.com/2015/12/nodemcu_pinout_700-2.png?w=584Ich nutze also den ESP8266Mod --> https://de.aliexpress.com/item/V2-4M-4FLASH-NodeMcu-Lua-WIFI-Networking-development-board-Based-ESP8266/32647690484.html?spm=a2g0s.9042311.0.0.37f64c4dOEY5Zi
Aber wenn man bei SoftwareSerial eh jeden Pin nehmen kann, sollte das ja wirklich egal sein. Ich würde ja auch HardwareSerial nehmen, dann müsste ich das also an GPIO3 und GPIO1 anschließen? Aber auch das will nicht funktionieren.
Liebe Grüße
Thomas -
YEAH!
Nun funktionierts. Ich habe nun D1 und D2 also GPIO5 und GPIO4 genommen mit folgender Zeile:
SoftwareSerial mySerial(5, 4);Will ich aber HardwareSerial nehmen (wobei ich da recht leidenschaftslos bin, aber wohl auch nur, weil ich den Unterschied nicht kenne ), nehme ich doch nach der Pinbelegung RX und TX, also GPIO3 und GPIO1, oder? Dann die Zeile mit "SoftwareSerial" durch "#define mySerial Serial1" ersetzen, aber das funktioniert nicht.
Vielleicht könnt ihr dazu noch ein paar Informationen schreiben, damit ich das besser verstehe?
Bis dahin aber erstmal vielen Dank, dass es nun überhaupt funktioniert.
-
Hmm..ein bisschen zu früh gefreut. Ich komme zwar nun weiter, aber nach Eingabe der ID (enroll-Skript), um einen Fingerabdruck zu speichern, kommt "Communication error".
Aus folgendem Codeabschnitt kommt der error.Serial.print("Waiting for valid finger to enroll as #"); Serial.println(id); while (p != FINGERPRINT_OK) { p = finger.getImage(); switch (p) { case FINGERPRINT_OK: Serial.println("Image taken"); break; case FINGERPRINT_NOFINGER: Serial.println("."); break; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); break; case FINGERPRINT_IMAGEFAIL: Serial.println("Imaging error"); break; default: Serial.println("Unknown error"); break; } }
Lege ich den Finger direkt schon drauf und und gebe dann eine Zahl ein, liest er das erste mal den Finger ein, doch dann soll ich den Finger ja wegtun und wieder hinmachen, aber so schnell kann ja keiner sein...
Hat der Fingerprint-Sensor vielleicht wirklich einen Defekt? Ich kann es mir nicht so richtig vorstellen.
Ich hoffe, es hat noch einer eine Idee, was ich probieren kann.
-
@tööö sagte in Fingerprint an einem ESP8266:
Wegen den 5V, das habe ich zum Beispiel hier...
Nunja, er könnte jetzt trotzdem defekt sein. Bei deinem Ali-Link steht eindeutig 3.3V, bei dem Link wo du es mit 5V gelesen hast: The sensor, I received, was only 5V compatible...
Deswegen nahm der auch dort die 5V.Zum Hardware-Seriel (braucht halt keine weiteren Treiber):
Gelb --> RX
Weiß -- TX
wären mit Spannungsversorgung also genau die vier "Eckpins". Der Sketch sähe dann so aus:// On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white // uncomment this line: #define mySerial Serial1 // For UNO and others without hardware serial, we must use software serial... // pin #2 is IN from sensor (GREEN wire) // pin #3 is OUT from arduino (WHITE wire) // comment these two lines if using hardware serial //#SoftwareSerial mySerial(2, 3); ...
Leider habe ich nirgends etwas zur Datentransferrate des Sensors gefunden. Das würde deinen "Communiction Error" erklären. Spiele ev. damit nochmal rum
finger.begin(57600);
(9600, 19200, 28800, 38400, 48000, 57600, 67200 usw.)...und ich wüsste nicht warum er am ESP nicht funktionieren sollte, außer du hast den Sensor ev. doch "gegrillt".
-
Ich glaub nun wirklich, ich habe ihn gegrillt.
Zum Hardware-Seriel (braucht halt keine weiteren Treiber):
Gelb --> RX
Weiß -- TX
wären mit Spannungsversorgung also genau die vier "Eckpins".Bei dieser Konstellation bringt er wieder "did not find fingerprint"
Leider habe ich nirgends etwas zur Datentransferrate des Sensors gefunden. Das würde deinen "Communiction Error" erklären. Spiele ev. damit nochmal rum
finger.begin(57600);
(9600, 19200, 28800, 38400, 48000, 57600, 67200 usw.)Mit den verschiedenen Baudraten habe ich auch probiert. Die einzige, wo er halbwegs zuverlässig zumindest den Fingerprint findet, ist die 57600, nur da kommt dann eben der Communication Error.
Ich werde mir mal einen neuen bestellen und diesmal nicht an 5V probieren.
Danke für deine Unterstützung.
-
Das ist nun alles sehr merkwürdig. Ich habe von einem Kollegen ein Arduino Nano bekommen, damit klappt der Fingerprint-Sensor wunderbar ohne Communication Error. Wieso bei meinem ESP8266 der Error kommt, kann ich mir beim besten Willen nicht erklären.
-
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
Das scheint ja ein Empfangsfehler des ESP zu sein.
Versorge mal den Fingerprint mit Externer Spannung nicht über den ESP.
Zur Not Oskar dran, Daten vom Arduino haste ja und vergleichen.
Schweben ist nie gut.
Würde auf GPIO 1 und 3 für RX TX bleiben.
57600 scheint ja richtig zu sein. -
Sorry, bin noch recht neu in dem Gebiet.
Wie soll ich denn den Fingerprint mit Strom versorgen? Der braucht ja 3,3V, also kann ich da auch nicht so einfach ein USB-Kabel dranlöten, oder?
Und was ist Oskar? Bzw. welche Daten soll ich vergleichen?
Sorry, wäre super, wenn du mir das genauer erklären kannst, damit ich das mal ausprobieren kann.
-
Sorry, bin noch recht neu in dem Gebiet.
Ich auch.
Grundsätzlich sollte jedes Bauteil eine ausreichende Spannungsversorgung haben.
Das wäre hier zu viel um das zu erklären.
USB geht ja wenn das Netzteil genug Ampere liefert.
Das geht per Spannungsteiler oder Spannungsregler etc.
Über die NodeMCU last zu ziehen geht nicht wirklich.Der Konflikt wird aber sein das du vom Fingerprint 5 Volt ( Arduino 5 Volt ) RX TX auf ESP 3,3 Volt RX TX möchtest.
Denke mal du brauchst einen Pegelwandler. -
@Ralla66 sagte in Fingerprint an einem ESP8266:
Der Konflikt wird aber sein das du vom Fingerprint 5 Volt ( Arduino 5 Volt ) RX TX auf ESP 3,3 Volt RX TX möchtest.
Denke mal du brauchst einen Pegelwandler.Am Arduino geht der Fingerprint mit 3,3Volt, wieso geht er dann am ESP mit 3,3Volt nicht? Das sollte doch keinen Unterschied machen, oder? Dafür habe ich ja am ESP die verschiedenen Anschlüsse.
Für 5 Volt ist der Fingerprint laut Beschreibung nicht ausgelegt.
-
Welches Datasheet zum Fingerprint ?
Was liefert der Arduino oder der ESP bei 3,3 Volt den an Ampere.
Warum bleibst du nicht auf GPIO 1 und 3 für RX TX mit 57600 ?
Oskar == Oszilloskop -
Hier ist der Link zum Fingerprint, da steht unten in der Beschreibung 3,3Volt.
Auf GPIO 1 und 3 erkennt er den Fingerprint nicht. Da kommt ja dann immer „did not find fingerprint“.
@Ralla66 sagte in [Fingerprint an einem ESP8266](/post/274947
Was liefert der Arduino oder der ESP bei 3,3 Volt den an Ampere.
Das kann ich leider nicht beantworten. Ich habe leider kein Messgerät, noch kenne ich mich damit aus. Meinst, da stimmt was mit den Ampere nicht beim ESP?
-
Nö, der braucht im Peak 150mA, dass schafft der ESP. Adafruit betreibt ihn auch direkt am ESP: PDF
Allerdings schreiben sie auch, dass es beim ESP mittels SoftwareSerial nur am GPIO 4+5 läuft. Sie bevorzugen aber eher HardwareSerial (sieht man auch als Beispiel in der PDF).
Das bezieht sich aber auf den Adafruit, zu deinem habe ich so nichts schlüssiges gefunden. Wenn es mit dem Nano geht, könnte man auch notgedrungen dort einen ESP-01 dranhängen, wenn WLAN nötig ist. Oder versucht mal einen Wemos D1 mini... -
Vielleicht sollten wir einfach mal versuchen, die technischen Voraussetzungen zu checken :
- Welche Stromversorgung nimmst du für den ESP?
- Hängt der Sensor an der gleichen Stromversorgung?
- Welchen Arduino meinst du denn, wenn du sagst, an dem geht es?
Ich vermute, du hast ein Spannungsversorgungsproblem.
Für den ESP wird eine Spannungsversorgung mit stabilen 500mA angeraten.
Dein Sensor zieht im max. 150mA.Wenn du den ganzen Kram über einen USB Seriell Wandler betreibst, und den auf 3,3V gestellt hast, dann vermute ich, dir bricht bei einigen Aktionen einfach die Spannung kurz ein und das führt dann zu Kommunikationsproblemen....
Ohne genauere Hardware details ist da letztlich alles Glaskugel lesen
Grüße
Tom -
-
Der hängt am USB vom Rechner, damit ich auch den Sketch direkt übertragen kann.
-
Ja, also der Sensor hängt am ESP und somit auch über das USB-Kabel am Rechner.
-
Der Arduino Nano mit einem Atmega168 Chip ist das, wo der Sensor funktioniert.
Wenn ich daheim bin, spiele ich damit nochmal rum. Evtl. auch mal Pin 4 und 5 probieren am ESP, wie es in der verlinkten pdf steht.
Liebe Grüße
Thomas -
-
Ich habe nun rumprobiert, bis zum Erbrechen, aber es will am ESP einfach nicht laufen. Weder am GPIO4+5 (erkennen ja, aber eben der Communication Error), noch am HardwareSerial (noch nicht mal erkennen).
Wenn es mit dem Nano geht, könnte man auch notgedrungen dort einen ESP-01 dranhängen, wenn WLAN nötig ist.
Kann ich da auch meinen ESP8266Mod mit verbinden? Was muss ich dafür denn genau machen, damit der Nano dann WLAN hat. Das wäre ja auch eine Lösung.
Der ESP8266Mod klingt vielleicht nun zu groß für dieses Vorhaben, aber da ich dort später noch mehr Sensoren dranhängen will, würde ich den dafür auch nehmen, außerdem hab ich davon noch ne Menge hier rumliegen.
Liebe Grüße
Thomas