Situatie
Required Components
| Component | Quantity | Description |
|---|---|---|
| Arduino Uno / Nano / Mega | 1 | Main controller |
| Fingerprint Sensor (R307 / ZFM-20 / Adafruit) | 1 | Biometric identification |
| 16×2 LCD with I2C Module | 1 | Display user messages |
| 12V Solenoid Lock | 1 | Door/box locking mechanism |
| 5V Relay Module | 1 | Controls solenoid lock |
| 12V Power Supply | 1 | Powers solenoid |
| Jumper Wires | – | Connections |
The fingerprint sensor scans the user’s finger. Arduino checks if the fingerprint matches a stored ID. If it matches, the relay is activated and unlocks the solenoid lock. The LCD shows:
- Scanning
- Access Granted
- Access Denied
Fingerprint Sensor → Arduino
VCC → 5V GND → GND TX → D2 RX → D3
I2C LCD → Arduino
VCC → 5V GND → GND SDA → A4 SCL → A5
Relay Module → Arduino
IN → D8 VCC → 5V GND → GND
Solenoid Lock Power Wiring
12V+ → COM on Relay NO → Solenoid + Solenoid - → 12V -
IMPORTANT: Use a diode (1N4007) across solenoid terminals to prevent voltage spikes.
Arduino Code (Copy & Paste)
This code controls the fingerprint module, LCD display, and solenoid lock.
#include <Adafruit_Fingerprint.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
SoftwareSerial fingerSerial(2, 3); // RX, TX
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&fingerSerial);
LiquidCrystal_I2C lcd(0x27, 16, 2);
int relayPin = 8;
void setup() {
lcd.init();
lcd.backlight();
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW); // lock OFF at start
lcd.setCursor(0, 0);
lcd.print("Fingerprint");
lcd.setCursor(0, 1);
lcd.print("Access System");
delay(2000);
lcd.clear();
finger.begin(57600);
if (finger.verifyPassword()) {
lcd.print("Sensor Ready");
} else {
lcd.print("Sensor Error");
while (1);
}
delay(2000);
lcd.clear();
}
void loop() {
lcd.setCursor(0, 0);
lcd.print("Place Finger...");
lcd.setCursor(0, 1);
lcd.print(" ");
int result = getFingerprintID();
if (result >= 0) {
lcd.clear();
lcd.print("Access Granted");
unlockDoor();
} else if (result == -1) {
lcd.clear();
lcd.print("Access Denied");
delay(1500);
}
lcd.clear();
}
int getFingerprintID() {
finger.getImage();
if (finger.image2Tz() != FINGERPRINT_OK) return -1;
if (finger.fingerSearch() != FINGERPRINT_OK) return -1;
return finger.fingerID; // valid ID returned
}
void unlockDoor() {
digitalWrite(relayPin, HIGH); // open lock
delay(3000); // unlock duration
digitalWrite(relayPin, LOW); // lock again
}
You must add fingerprints before using the system.
- In Arduino IDE, go to File → Examples → Adafruit Fingerprint Sensor Library → Enroll
- Upload the sketch
- Open Serial Monitor
- Type the fingerprint ID number (1–127)
- Place finger twice when instructed
Fingerprint is now stored.
LCD Display Messages
| Event | Message |
|---|---|
| Startup | Fingerprint Access System |
| Ready | Sensor Ready |
| Waiting | Place Finger… |
| Match | Access Granted |
| No Match | Access Denied |
Troubleshooting
- Fingerprint not detected: TX/RX wiring reversed
- LCD not showing text: Wrong I2C address (try 0x3F)
- Solenoid not activating: Check relay NO/COM wiring
- Machine resets: Solenoid drawing current — use separate 12V supply.
Leave A Comment?