A secure Arduino-based electronic voting system implementing PIN authentication, EEPROM-backed vote persistence, and tamper detection for small-scale elections.
- PIN-based voter authentication with one-vote enforcement
- EEPROM index mapping to prevent duplicate voting across power cycles
- Finite State Machine (WAIT → VOTE → LOCK) for controlled execution
- Tamper detection via invalid input and simultaneous button press monitoring
- Real-time feedback using LCD, buzzer, and lock indicator LED
- Microcontroller: Arduino Uno
- Input: 4×4 Keypad, Push Buttons
- Output: 16×2 I2C LCD, Buzzer, LED
- Storage: Arduino EEPROM
- Concepts: Embedded Systems, State Machines, Non-Volatile Memory, Input Validation
- Verifies voters using predefined 5-digit PINs
- Ensures one-person-one-vote using persistent EEPROM flags
- Automatically locks on tampering or invalid operations
- Preserves vote data during reset or power failure
Functional behavior validated through circuit and logic simulation.

System initialization and idle state before voter interaction

PIN input interface via keypad

Candidate selection and vote registration

System lock triggered after vote or tampering

Access denied due to incorrect PIN entry

Vote rejected for a PIN already marked as voted in EEPROM
Physical prototype assembled and tested using off-the-shelf components.

Complete electronic voting machine prototype

Internal circuit connections and testing setup
Designed for academic, institutional, and small-scale elections where reliability, security, and low cost are required.
- Biometric authentication (fingerprint / face recognition)
- Encrypted vote storage
- Wireless result transmission
- Larger voter database support
