habe in den Anhang den Aufbau meiner Schaltung und das Programm gepackt. Mein Problem ist das der Fingerabdrucksensor noch an geht, aber nicht mehr auf einen Finger reagiert. Er merkt einfach nicht mehr wenn ein Finger auf den Sensor gelegt wird.
Kann es sein das was kaputt ist oder mache ich was falsch?
Sieht so aus, als würdest Du einen Eintrag übergeben, der Sensor aber den Finger nicht dem Eintrag zuordnen kann.
Stell doch mal den Code vollständig ein, aus dem Bildschirmausschnitt lässt sich nicht viel erkennen.
Passwörter etc ausxxxen.
Und bitte Codetags verwenden - </> oben am Editorrand.
Der Fingerabdrucksensor hat schon funktioniert. Als ich dann neue Fingerabdrücke einlernen wollte ging er dann auf einmal nicht mehr. Hab nichts an der Verkablung geändert.
Jetzt habe ich die Daten gelöscht und versucht komplett neu die Fingerabdrücke einzulernen, aber er wartet nur auf das drauflegen eines neuen Fingers und erkennt nicht da er draufliegt.
/***************************************************
This is an example sketch for our optical Fingerprint sensor
Designed specifically to work with the Adafruit BMP085 Breakout
----> http://www.adafruit.com/products/751
These displays use TTL Serial to communicate, 2 pins are required to
interface
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, all text above must be included in any redistribution
****************************************************/
#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);
uint8_t id;
void setup()
{
Serial.begin(9600);
while (!Serial); // For Yun/Leo/Micro/Zero/...
delay(100);
Serial.println("\n\nAdafruit Fingerprint sensor enrollment");
// set the data rate for the sensor serial port
finger.begin(57600);
if (finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!");
} else {
Serial.println("Did not find fingerprint sensor :(");
while (1) { delay(1); }
}
}
uint8_t readnumber(void) {
uint8_t num = 0;
while (num == 0) {
while (! Serial.available());
num = Serial.parseInt();
}
return num;
}
void loop() // run over and over again
{
Serial.println("Ready to enroll a fingerprint!");
Serial.println("Please type in the ID # (from 1 to 127) you want to save this finger as...");
id = readnumber();
if (id == 0) {// ID #0 not allowed, try again!
return;
}
Serial.print("Enrolling ID #");
Serial.println(id);
while (! getFingerprintEnroll() );
}
uint8_t getFingerprintEnroll() {
int p = -1;
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;
}
}
// OK success!
p = finger.image2Tz(1);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}
Serial.println("Remove finger");
delay(2000);
p = 0;
while (p != FINGERPRINT_NOFINGER) {
p = finger.getImage();
}
Serial.print("ID "); Serial.println(id);
p = -1;
Serial.println("Place same finger again");
while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
Serial.print(".");
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
break;
default:
Serial.println("Unknown error");
break;
}
}
// OK success!
p = finger.image2Tz(2);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}
// OK converted!
Serial.print("Creating model for #"); Serial.println(id);
p = finger.createModel();
if (p == FINGERPRINT_OK) {
Serial.println("Prints matched!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_ENROLLMISMATCH) {
Serial.println("Fingerprints did not match");
return p;
} else {
Serial.println("Unknown error");
return p;
}
Serial.print("ID "); Serial.println(id);
p = finger.storeModel(id);
if (p == FINGERPRINT_OK) {
Serial.println("Stored!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_BADLOCATION) {
Serial.println("Could not store in that location");
return p;
} else if (p == FINGERPRINT_FLASHERR) {
Serial.println("Error writing to flash");
return p;
} else {
Serial.println("Unknown error");
return p;
}
}
Was'n fürn Arduino hängt da dran?
Das Teil ist nur möglicherweise mit 3,3V zu betreiben.
Es gibt anscheinend mehrere Part-Nummern. Alle JM-101 werden mit 3,3/5V angegeben, der einzige JM-101B den ich gefunden habe hat einen kleinen PeakCurrent und nur 3,3V...
Ich hab auf die Schnelle ein Usermanual gefunden - word Datei, liest sich auch in libreOffice - da sind die Funktionscodes beschrieben. Evtl. lässt sich ja dem Modul noch was entlocken. Denn er antwortet ja noch auf das initialisieren.
Habe den Fingerabdrucksensor an 5V angeschlossen, weil er bei 3,3V geflackert hat. Aber kann gut sein das ich ihn damit zerstört habe. Am Anfang lief er mit 5V zumindest gut.
Ich nutze einen Arduino Nano von banggood.
Adafruit Fingerprint sensor enrollment
Found fingerprint sensor!
Ready to enroll a fingerprint!
Please type in the ID # (from 1 to 127) you want to save this finger as...
Enrolling ID #22
Waiting for valid finger to enroll as #22
.
.
.
.
.
.
.
// pin #2 is IN from sensor (GREEN wire)
// pin #3 is OUT from arduino (WHITE wire)
wenn ich das so verbinde, bekomme ich immer die Meldung das kein Fingerabdrucksensor gefunden wurde. Also habe ich anstatt das grüne Kabel das gelbe angeschlossen(weil das auch an Tx-Pin des Sensors geht) und schon wird der Sensor erkannt, aber mehr auch nicht.
Scheibe ist sauber und ich habe das gleiche auch nochmal mit einem anderen Fingerabdrucksensor den ich noch daheim hatte ausprobiert. Ich habe bei beiden das gleiche Problem. Vielleicht kann jemand nochmal über die Verkabelung schauen.
Aus der Doku die ich Dir verlinkt hatte: (Da sieht übrigens auch die Platine 1:1 so aus wie Deine)
1 +3.3V In Module power positive input
2 TX Out Serial data output. TTL logic level.
3 RX In Serial data input. TTL logic level.
4 GND - Signal ground. Connected with power ground internally.
5 Touch Out sense signal output, high level effectively as default
6 TouchVin In Touch-sensitive power input, 3.3 v power supply
Bei Dir ist TX gelb und RX weiss!
Der (example-)Sketch bezieht sich auf Adafruits Sensor, deren Aussehen und Beschaltung:
Seite 6.
Und weiter:
2.2 Touch-sensitive
The default access voltage of touch-sensitive input power supply is 3.3 V. The touch-sensitive circuit's overall power consumption is < 10 ua. The power supply of circuit can be sustained.
The high level of touch sensing signal output is effective. The touch signal output is low level when there is no finger put on acquisition window. When fingers are put on the acquisition window, the touch signal output changes into a high level. The signal can be connected to interrupt pin or IO port of MCU by a certain circuit. When the induction signal is received, the MCU is awaken to supply power for fingerprint module and then fingerprint module start to work (considering the overall power consumption of the circuit, the fingerprint module only has two kinds of status, work and not work, no sleep or standby mode.
Usually just supply power to touch circuit, the fingerprint module will not work when shutting down power supply. When touch signal is got, fingerprint module will be supplied power. Then the fingerprint module work for completing the corresponding command. If we don’t use the fingerprint module any more, cut off the power supply of fingerprint module and then the fingerprint module get into not working mode.
Prüfe, ob der sensitive-inputpin mit Spannung versorgt wird. - ist bei Dir der grüne Draht.
Der blaue Draht ist der Output. Mit dem kannst Du prüfen, ob der Sensor überhaupt arbeitet.