Fingerprint Circuit Not Working

Hello!

I am currently working on an idea that powers a solenoid motor when scanning the correct fingerprint on a sensor. The sensor and the board are working fine, I can check in the serial monitor that the code is working. However, the solenoid will not power and retract, so I wonder what I can do to fix it. Here is how the circuit works,

  • An Arduino nano is the brains of the system, powered by USB power, with enough voltage to power the system
  • A 3-pin transistor (I don't know the best way to explain it, I'll leave links below of the parts that I'm using), the right pin goes to D12 on the board, the middle pin goes to the solenoid ground wire, and the left pin goes to a AA 4 battery pack ground wire
  • The positive pins of the battery pack and solenoid motor are connected

Here is the code that I am using,

/***************************************************
 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>
#include <SoftwareSerial.h>
#include<stdint.h>
 
int getFingerprintIDez();
 
int pinRelay = 12;
int pinFPS = 8;
int count = 0;
 
 
#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
// 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)
// Set up the serial port to use softwareserial..
SoftwareSerial mySerial(2, 3);
 
#else
// On Leonardo/M0/etc, others with hardware serial, use hardware serial!
// #0 is green wire, #1 is white
#define mySerial Serial1
 
#endif
 
 
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
 
void setup()
{
 Serial.begin(9600);
 while (!Serial);  // For Yun/Leo/Micro/Zero/...
 delay(100);
 Serial.println("\n\nAdafruit finger detect test");
 
 pinMode(pinRelay, OUTPUT);
 pinMode(pinFPS, OUTPUT);
 
 digitalWrite(pinFPS, HIGH);
 
 // set the data rate for the sensor serial port
 finger.begin(57600);
 delay(5);
 if (finger.verifyPassword()) {
   Serial.println("Found fingerprint sensor!");
 } else {
   Serial.println("Did not find fingerprint sensor :(");
   while (1) { delay(1); }
 }
 
 Serial.println(F("Reading sensor parameters"));
 finger.getParameters();
 Serial.print(F("Status: 0x")); Serial.println(finger.status_reg, HEX);
 Serial.print(F("Sys ID: 0x")); Serial.println(finger.system_id, HEX);
 Serial.print(F("Capacity: ")); Serial.println(finger.capacity);
 Serial.print(F("Security level: ")); Serial.println(finger.security_level);
 Serial.print(F("Device address: ")); Serial.println(finger.device_addr, HEX);
 Serial.print(F("Packet len: ")); Serial.println(finger.packet_len);
 Serial.print(F("Baud rate: ")); Serial.println(finger.baud_rate);
 
 finger.getTemplateCount();
 
 if (finger.templateCount == 0) {
   Serial.print("Sensor doesn't contain any fingerprint data. Please run the 'enroll' example.");
 }
 else {
   Serial.println("Waiting for valid finger...");
     Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
 }
}
void loop()
{
 getFingerprintIDez();
 delay(50);
 
 Serial.print("Awake for ");
 Serial.print(count);
 Serial.println("sec");
 count++;
 delay(1000);
 
 if (Serial.available()) {
   int serialData = Serial.read();
   if (serialData == 'Serial')
   {
     Serial.println("Serial: No finger detected");
     delay(100);
     count = 0;
   }
 }
 if (count >= 10) {
   Serial.println("FPS in sleep Mode");
   delay(100);
   count = 0;
   digitalWrite(pinFPS,LOW);
  
 }
}
 
 
uint8_t getFingerprintID() {
 uint8_t p = finger.getImage();
 switch (p) {
   case FINGERPRINT_OK:
     Serial.println("Image taken");
     break;
   case FINGERPRINT_NOFINGER:
     Serial.println("No finger detected");
     return p;
   case FINGERPRINT_PACKETRECIEVEERR:
     Serial.println("Communication error");
     return p;
   case FINGERPRINT_IMAGEFAIL:
     Serial.println("Imaging error");
     return p;
   default:
     Serial.println("Unknown error");
     return p;
 }
 
 // OK success!
 
 p = finger.image2Tz();
 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!
 p = finger.fingerSearch();
 if (p == FINGERPRINT_OK) {
   Serial.println("Found a print match!");
 } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
   Serial.println("Communication error");
   return p;
 } else if (p == FINGERPRINT_NOTFOUND) {
   Serial.println("Did not find a match");
   return p;
 } else {
   Serial.println("Unknown error");
   return p;
 }
 
 // found a match!
 Serial.print("Found ID #"); Serial.print(finger.fingerID);
 Serial.print(" with confidence of "); Serial.println(finger.confidence);
 digitalWrite(pinRelay, HIGH);
 delay(3000);
 digitalWrite(pinRelay, LOW);
 return finger.fingerID;
}
 
// returns -1 if failed, otherwise returns ID #
int getFingerprintIDez() {
 uint8_t p = finger.getImage();
 if (p != FINGERPRINT_OK)  return -1;
 
 p = finger.image2Tz();
 if (p != FINGERPRINT_OK)  return -1;
 
 p = finger.fingerFastSearch();
 if (p != FINGERPRINT_OK)  return -1;
 
 // found a match!
 Serial.print("Found ID #"); Serial.print(finger.fingerID);
 Serial.print(" with confidence of "); Serial.println(finger.confidence);
 digitalWrite(pinRelay, HIGH);
 delay(3000);
 digitalWrite(pinRelay, LOW);
 return finger.fingerID;
}
 

Here are the devices I am using,
Arduino Nano
Solenoid Motor

If you need any more details, I am happy to provide them. Thank you for the help! Have a great day!

The other thing is because I am a "new user", I can only post 2 links at a time, so here are the other devices I am using,

Battery Pack
Fingerprint Sensor

Thanks.

That is not a good enough description to comment on. Please post a schematic of your project (a photo of a hand drawn circuit is good enough) and tell us the exact transistor type that you are using.

Where did you get the circuit diagram from ?

You need trust level 1, you can get there by:

  • Entering at least 5 topics
  • Reading at least 30 posts
  • Spend a total of 10 minutes reading posts

Users at trust level 1 can…

  • Use all core Discourse functions; all new user restrictions are removed
  • Send PMs
  • Upload images and attachments

Hello @UKHeliBob!

Here are some photos of the circuit. Thanks




Such photos are a waste of time. Even you cannot see how things are connected Read wat I actually said

Give me a moment to draw a schismatic. Thanks

Yes there is but you can equally well use pencil and paper hence my suggestion to use pencil and paper

If you want to use software then take a look at EasyEDA which runs in your browser

Hello @UKHeliBob!

Here is this for you.

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