The FP001 and FP002 are face and palm vein recognition modules equipped with a bionic face recognition algorithm. They support UVC/UAC transmission and MJPEG video format, achieving both security and a good user experience. Featuring low power consumption, low cost, fast recognition, exquisite appearance, and compact structure, these modules utilize high-performance chips to quickly complete the entire process of face recognition and palm vein recognition.
The Biometric library provides a unified encapsulation of the functions for these two modules. Compared with FP001, FP002 adds infrared detection and a controllable tri-color indicator light. It offers two user registration methods (face and palm vein) with high recognition efficiency, fast and accurate response. The library also includes an administrator user function. The recognition algorithms are executed within the module itself; this library primarily handles command interaction – sending commands, receiving feedback – and ensures timely command response.
Product Link (www.dfrobot.com)
SKU: SEN0736 FP001 and SEN0737 FP002 Face and Palm Vein Recognition Modules
Introduce the basic and special functions of this Arduino Library.
To use this library, first download the library file, paste it into the \Arduino\libraries directory, then open the examples folder and run the demo in the folder.
/**
* @fn checkState
* @brief Check if the module is ready and idle
* @return bool type
* @retval true Module is ready
* @retval false Module is not ready
* @note Use checkState() to check status before initialization or executing commands
*/
bool checkState(void);
/**
* @fn enrollUser
* @brief Enroll face or palm for recognition
* @details Ensure that the parameters meet the requirements.
* @param kind eFaceUser for face enrollment, eFaceUser for palm enrollment
* @param userName User name, length 1 to 32 characters
* @param id Store the enrolled user ID, range 1 to800
* @param idAdmin Set user role, eRoleAdmin for administrator, eRoleNormal
* @return Task execution result
* @retval NO_ACK -1 No response from module
* @retval ERROR -2 User parameter error, such as invalid user type or name length
* @retval 1 Success
* @retval 2 Duplicate
* @retval 3 Enrollment timeout
*/
int8_t enrollUser(eUserKind_t kind, const char* userName, uint16_t* id, eIsAdmin_t idAdmin);
/**
* @fn getAllNumsFaceUserIDs
* @brief Get the number of face users
* @return Number of face users
* @retval NO_ACK -1 No response from module
*/
int16_t getAllNumsFaceUserIDs(void);
/**
* @fn getAllNumsPalmUserIDs
* @brief Get the number of palm users
* @return Number of palm users
* @retval NO_ACK -1 No response from module
*/
int16_t getAllNumsPalmUserIDs(void);
/**
* @fn getAllFaceUserIDs
* @brief Retrieve the specific information of the face user
* @param id_buffer store the specific information of the face user
* @param length the length of the id_buffer
* @return result
* @retval NO_ACK -1 No response from module
* @retval ERROR -2 User parameter error:The length of the incoming array is less than the number of users.
*/
int8_t getAllFaceUserIDs(uint16_t *id_buffer,uint16_t length);
/**
* @fn getRecognitionResult
* @brief Recognize the user
* @param ID Store the recognized user information
* @return Execution result
* @retval NO_ACK -1 No response from module
* @retval 1 Success
* @retval 2 Timeout
* @retval 3 User not found
*/
int8_t getRecognitionResult(sId_t* ID);
/**
* @fn deleteUser
* @brief Delete specified user
* @details The ID must fall within the valid range
* @param id User ID, range 1 to 800
* @return Delete result
* @retval NO_ACK -1 No response from module
* @retval ERROR -2 ID out of range 1 to 800
* @retval 1 Delete success
* @retval 2 User not found
* @retval 3 Unknown error, suggest retry
*/
int8_t deleteUser(uint16_t id);
/**
* @fn deleteAllUser
* @brief Delete all users
* @return Delete result
* @retval NO_ACK -1 No response from module ,ERROR -2 User parameter error
* @retval 1 Delete success
* @retval 2 Unknown error, suggest retry
*/
int8_t deleteAllUser(void);
/**
* @fn ledColor
* @brief Control LED status
* @details Ensure that the parameters meet the requirements
* @param color LED color: COLOR_GREEN green, COLOR_RED red, COLOR_WHITE white
* @param kind LED_ON turn on, LED_OFF turn off
* @return Execution result
* @retval NO_ACK -1 No response from module
* @retval ERROR -2 Invalid kind or color parameter
* @retval 1 Success
*/
int8_t ledColor(uint8_t color, uint8_t kind);| MCU | Work Well | Work Wrong | Untested | Remarks |
|---|---|---|---|---|
| Arduino Uno | √ | unstable | ||
| Arduino Leonardo | √ | |||
| Arduino MEGA2560 | √ | |||
| FireBeetle-ESP32 | √ | |||
| ESP8266 | √ | |||
| FireBeetle-M0 | √ | |||
| Micro:bit | √ | |||
| Raspberry Pi | √ |
- 2026/05/22 - Version 1.0.0 released.
Written by Olive-hy(feng.yang@dfrobot.com), 2026-4-30 (Welcome to our website)

