Issues with FPC-1020A fingerprint module

hey! I am working with a FPC1020A fingerprint sensor module,problem is.... nothing works. I have wired everything according to diagrams i've seen on the internet but i dont receive anything from uart interface and even the Touch function doesnt work, it doesnt output anything even when i put my finger on the sensor. I am 100% sure current is going in the module as i tested it with a multimeter and i can feel the module heating up a tiny bit. Since it is powered up, what am i doing wrong? is there a switch i need to turn on for it to work or something like that? also the code im using is the example code provided witht he FPC1020.h library.

here are my connections:
FPC ground => arduino ground
FPC RX => pin 3
FPC TX => pin 2
FPC V => arduino 3.3v
FPC Touch-out => positive terminal of led (negative connected to arduino ground)
FPC V-touch => 3.3v

here is the link to the module i bought FPC1020A Capacitive Fingerprint Identification Module UART Semiconductor Capacitive Fingerprint Reader Module (elecbee.com)

any help is appreciated.

Welcome.

You will very likely get more help if you were to post a link to the datasheet for the fingerprint sensor. You also need to tell us which Arduino you are using and post the code that you are having trouble with too.

i have not found any datasheet for the module itself, only for kits but i found one for the FPC-1020 module which i think is similar, here it is U008_Web.pdf (digikey.com) and 710-FPC1020_PB3_Product-Specification.pdf (shenzhen2u.com) i am using the arduino uno r3 board as of now but will soon switch over to esp32. here is the sample code, `//
// Demo code for FPC1020 Fingerprint Sensor
// Created by Deray on 2015-10-07.
//

#include <SoftwareSerial.h>
#include <FPC1020.h>

extern unsigned char l_ucFPID;
extern unsigned char rBuf[192]; //Receive return data
#define sw_serial_rx_pin 2 // Connect this pin to TX on the FPC1020
#define sw_serial_tx_pin 3 // Connect this pin to RX on the FPC1020

SoftwareSerial swSerial(sw_serial_rx_pin, sw_serial_tx_pin); // Fingerprint serial (RX, TX)
FPC1020 Finger(&swSerial);

void setup(){
Serial.begin(19200);
pinMode(4, INPUT); // IRQ

Serial.println("Fingerprint Test ! ");

}

void loop(){
unsigned int User_ID = 0;
unsigned char incomingNub;
unsigned int matchUserID = 0;
unsigned char rtf = 0;

while(1){
    Serial.println("============== Menu ================");
    Serial.println("Add a New User ----------------- 1");
    Serial.println("Fingerprint Matching --------------- 2");
    Serial.println("Get User Number and Print All User ID ------ 3 ");
    Serial.println("Delete Assigned User --------- 4");
    Serial.println("Delete All User ---------- 5");
    Serial.println("============== End =================");
    
    unsigned char  MODE = 0;
    
    while(Serial.available()<=0);
    
    MODE = Serial.read()-0x30;
    
    switch(MODE){
      case 0:  // Null
          break;
      
      case 1:   // Fingerprint Input and Add a New User
          MODE = 0;
          User_ID = 0;
          
          Serial.println("Please input the new user ID (0 ~ 99).");
          while(Serial.available()<=0);
          delay(100);
          incomingNub = Serial.available();
          for(char i=incomingNub; i>=1; i--){
              User_ID = User_ID + (Serial.read()-0x30)*pow(10,(i-1));
          }
          
          Serial.println("Add Fingerprint, please put your finger on the Fingerprint Sensor.");
          rtf = Finger.Enroll(User_ID);
          
          if(rtf == TRUE) { 
              Serial.print("Success, your User ID is: "); 
              Serial.println( User_ID , DEC);
          }
          else if (rtf == FALSE) {
              Serial.println("Failed, please try again.");
          }
          else if( rtf == ACK_USER_OCCUPIED){
              Serial.println("Failed, this User ID alread exsits.");
          }
          else if( rtf == ACK_USER_EXIST){
              Serial.println("Failed, this fingerprint alread exsits.");
          }
          delay(2000);
          break;
     
     case 2:  // Fingerprint Matching
         MODE = 0 ;                                   
         Serial.println("Mctch Fingerprint, please put your finger on the Sensor.");
   
         if( Finger.Search()){
         Serial.print("Success, your User ID is: "); 
         Serial.println( l_ucFPID, DEC);
         }
         
         else {
             Serial.println("Failed, please try again.");
         } 								
         delay(1000);
         break;
     
     case 3:   // Print all user ID
         MODE = 0;
         if(Finger.PrintUserID()){
             Serial.print("Number of Fingerprint User is:"); 
             unsigned char UserNumb;
             UserNumb = (l_ucFPID-2)/3;
        
             Serial.println(UserNumb,DEC);
             Serial.println("Print all the User ID:"); 
             
             for(char i = 0; i < UserNumb; i++){
                 Serial.println(rBuf[12+i*3],DEC);
             }
         }
         
         else {
             Serial.println("Print User ID Fail!");
         }
         delay(1000);
         break;
         
     case 4:   // Delete Assigned User ID
         MODE = 0;
         User_ID = 0;
         Serial.println("Please input the user ID(0 ~ 99) you want to delecte.");
         while(Serial.available()<=0);
         delay(100);
         incomingNub = Serial.available();
         for(char i=incomingNub; i>=1; i--){
         User_ID = User_ID + (Serial.read()-0x30)*pow(10,(i-1));
         }
         
         if(Finger.Delete(User_ID)) {
            Serial.println("Delete Fingerprint User Success!"); 
         }   
         else{
             Serial.println("Delete Fingerprint User Fail!");
         }
         delay(1000);
         break;
     
     case 5:  // Delete All User ID
         
         MODE = 0;
         unsigned char DeleteFlag = 0;
            
            Serial.println("Delete All Users, Y/N ?");
            
            for(unsigned char i=200; i>0; i--)//wait response info
            {
                delay(20);
                if(Serial.available()>0)
                {
                    DeleteFlag = Serial.read();
                    break;
                }
            }
            
            if(DeleteFlag == 'Y'||'y'){
                if(Finger.Clear()){
                Serial.println("Delete All Fingerprint User Success!");
                }
                else{
                Serial.println("Delete All Fingerprint User Fail!");
                }
            }
            delay(500);
            break;
 }

}
}`
i tried changing it to use the default tx and rx pins but i cant because of serial monitor. plus i dont think its the issue, but im not receiving anything from the module, not even an error. you can find the library here,https://forum.arduino.cc/uploads/short-url/6jG6HgW83Cg6uXYBjnnrqXEjX6n.zip in the name it says fpc-1020 btu i figured it would work with 1020a and its the only library that works with arduino uno so i didnt really have a choice. i found these infos from this forum: How to use FPC1020A Capacitive Fingerprint Identification Module with Arduino | Andrey Ovcharov

I had a quick look for some information on the FPC1020A but couldn't really find much. Certainly no datasheet or user manual (of any use) to speak of. I did find a website that suggested that possibly Rx and Tx may be swapped.

The lack of documentation is likely to be your biggest issue whilst trying to track down the problem(s).

Yeah theres not much documentation, ill try switching them, thanks.

little update, it is doing something. i can see a 1v spike coming from the module with a multimeter and around 0.5 when no finger, arduino doesnt seem to be able to see it tho, i tried to test it by triggering an led but it didnt see it very well and kept flickering, im wondering if i need to put something liek a cpacitor or something or is the voltage just too low, power comign in is at almost 4v ( even if im connected to the 3.3v pin on arduino :upside_down_face:) and in arduino to detect it i actually had to set the min trigger voltage update to 3.7v and even then it flickers but if i go higher it doesnt work anymore, this is very weird as it is as if the module is constantly sending 3.6v but thats not what the multimeter says, might be a problem with the arduino board. Will update.

other little update, i tested the pins for tx and rx both on the arduino and on the fpc module, on the module, rx and tx have power, now i dont knwo if its from the arduino or from the module, but they do so i guess it might have to do with the library im using. Gonna have to wait till i can try it on my esp32 to be sure.

edit: i tried deconnecting the tx pin since i figured if it was the module generating it would work anyway and it did so the module IS sending something which confirms by theory about the library.

Sounds like you are making progress. A web site I came across also used an ESP32. Hopefully, once you get it going, you may be able to figure out why the UNO code isn't working.

i think there are actually no library for arduino that works with that specific module. the one i was using is for fpc-1020 no 1020a

if you look on google the two modules are fairly different

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.