A complete access control solution using ESP32 and Arduino platforms to manage secure entry via multiple authentication methods.
![]() |
![]() |
-
Multi-factor Authentication:
- NFC card scanning
- Fingerprint recognition
- Motion detection
-
Security Monitoring:
- Photo capture on access attempts
- Comprehensive logging system
- Real-time notifications
-
Web Interface:
- User-friendly dashboard
- Credential management
- Access logs and reporting
The system consists of three main components:
-
ESP32-CAM: Core controller that handles:
- Camera functionality for security photos
- WiFi connectivity
- API communication with backend
-
Arduino Controller: Manages physical peripherals including:
- NFC card reading and verification
- Bluetooth device detection
- Fingerprint registration and verification
- Door lock control
-
Backend Server: Provides administration and data persistence:
- Web interface for system management
- Database for users and access logs
- API endpoints for device communication
- ESP32-CAM module
- Arduino (Uno/Nano/Mega)
- RFID-RC522 NFC reader
- R503 Fingerprint sensor
- Door lock relay mechanism
- Status LEDs
- Power supply
Arduino NFC Reader (MFRC522)
----------------------------
3.3V <-> 3.3V
GND <-> GND
D10 <-> SDA/SS
D13 <-> SCK
D12 <-> MISO
D11 <-> MOSI
D9 <-> RST
Arduino Fingerprint Sensor
----------------------------
5V <-> VCC
GND <-> GND
D2 (RX) <-> TX
D3 (TX) <-> RX
ESP32 Door Control
-----------------------
GPIO26 <-> Relay for lock
GPIO27 <-> Door status sensor
GPIO13 <-> Access LED (green)
GPIO12 <-> Deny LED (red)
-
Clone the repository
git clone 'https://github.com/Josanchdev/RingDoor.git' cd RingDoor
-
Install and start the server
./setup.sh ./start.sh
-
Access the web interface at http://localhost:3000
-
Login with the default credentials
Username: admin Password: esp32admin
-
Connect components according to the wiring diagram above
-
Configure the ESP32 with your network settings:
// WiFi Credentials const char* ssid = "YOUR_WIFI_SSID"; const char* password = "YOUR_WIFI_PASSWORD"; // Server details const char* apiBaseUrl = "http://YOUR_SERVER_IP:3000";
-
Upload the Arduino code:
- Upload
arduino/main.inoto your Arduino board - Upload
esp32/main.inoto your ESP32-CAM
- Upload
-
Power up the system and verify connectivity
- SPI
- MFRC522 (for NFC reading)
- ArduinoJson
- WiFi
- Adafruit Fingerprint Sensor
- SSD1306 (for OLED display)
- ESP32Servo
- Present a new card to the reader
- The system will capture the UID
- Approve via web interface
- Assign a user name and access permissions
- Present an authorized NFC card
- Follow the OLED display instructions to scan fingerprint twice
- The system will confirm successful registration
Present either:
- An authorized NFC card
- A registered fingerprint
- Have an authorized Bluetooth device in range
The system will authenticate, log the access attempt with photo, and unlock the door if authorized.
├── arduino/ # Arduino controller code
│ ├── main.ino # Main Arduino sketch
│ └── clear-fingerprints.ino # Utility for sensor maintenance
├── esp32/ # ESP32-CAM code
│ └── main.ino # Main ESP32 sketch
├── backend/ # Node.js server
│ ├── server.js # API implementation
│ └── data/ # Data persistence
└── frontend/ # Web interface
├── index.html # Dashboard
├── login.html # Authentication
└── script.js # Frontend logic
- ESP32 Not Connecting: Check WiFi credentials
- NFC Reader Not Working: Verify wiring connections to the RC522 module
- Server Not Responding: Make sure the server is running and the ESP32 is using the correct IP address
- Access Problems: Check the serial output for debugging information
This project is licensed under the MIT License - see the LICENSE file for details.
This project was developed by:
The main control interface provides an at-a-glance view of system status, including:
- Current date and time
- Connected ESP32 devices count
- Access activity summary
- Real-time system metrics
The user management interface allows administrators to:
- View all registered users and their fingerprint IDs
- Monitor registration dates for each user
- Modify user names as needed
- Delete users from the system
The security log system provides:
- Comprehensive audit trails of all access attempts
- Color-coded severity indicators
- Timestamp and user information
- Filtering and search capabilities


