Rusty Lock Access System
The Rusty Lock Access System is a multi-authentication security solution designed to control access using multiple user validation methods.
Author: Bejinaru Matei-Cristian
GitHub Project Link: https://github.com/UPB-PMRust-Students/project-Matty27100
Descriptionβ
Built around the Raspberry Pi Pico 2W microcontroller, this project integrates an RFID reader, Wi-Fi-based control, a matrix keypad, LCD feedback display, and a servo motor attatched by an iron wire to a door mechanism. The goal is to provide secure, user-friendly access control that can be managed both locally and remotely.
Motivationβ
I've been brainstorming project ideas with a friend who shares my passion for technology and automation earlier this year. We came up with a few concepts for the Innovation Labs competition, with smart-home equipment being a central theme. Although we werenβt able to participate, the idea of creating a smart device stuck with me. When the time came to choose a project for this course, I knew I wanted to pursue something in that direction. Thatβs how I arrived at the idea of building a versatile smart lock system.
Architectureβ
Logical Diagramβ
The Diagram with all the components:
How it worksβ
Initialization:β
The system boots and initializes all components. The LCD displays a welcome message.
Authentication:β
RFID: When a card is detected, its UID is checked against a known list.
Keypad: A valid PIN entered via the keypad is accepted.
Wi-Fi: Pressing the "Unlock" button on the web app sends a request that, if received, triggers the unlock.
Unlocking:β
A validated user causes the servo to open the lock and display a message for a few seconds.
Locking:β
After a delay, the servo returns to the locked position.
Logβ
Week 5 - 11 Mayβ
Once my project idea was approved, I ordered most of the required components and began implementation step by step. I started by configuring the second Pico as a debugger. After that, I got the RFID reader to work, successfully lighting up an LED upon tag detection. After that, I moved on to integrating the LCD screen.
Week 12 - 18 Mayβ
Week 19 - 25 Mayβ
Hardwareβ
The hardware setup is centered around the Raspberry Pi Pico 2W, with its built-in Wi-Fi capabilities. A variety of peripherals are used to create an interactive, multi-authentication smart lock system.
Components Used
Raspberry Pi Pico 2W Central microcontroller; manages all logic and peripherals
Raspberry Pi Pico 2W Microcontroller configured as a debugger for the central Pico
RC522 RFID Reader SPI-based tag reader for user authentication
HD44780 16x2 LCD (via PCF8574) Displays system messages over I2C using an I/O expander
4x4 Matrix Keypad Used to enter a PIN code for access
SG90 Servo Motor Drives the door lock mechanism (via PWM control)
Passive Buzzer Emits audio feedback upon certain actions (e.g. denied access)
LED Status indicator (access granted, error, etc.)
External 5V Power Source Provides sufficient current for the LCD and servo motor
Schematicsβ
KiCad Scheme
Bill of Materialsβ
Device | Usage | Price |
---|---|---|
2xRaspberry Pi Pico 2W | Main Controller & Debugger | 39.66 RON x2 |
RFID RC522 | RFID Reader | 9,99 RON |
4x4 Keypad | PIN Insertion | 6.99 RON |
Active Buzzer Module | Buzzer | 1.40 RON |
Breadboard, Jumpers & Power Supply Kit | General Wiring & Voltage | 22.00 RON |
3 mm Diffused LED Diode Assortment Kit | LEDs & Resistors | 29.99 RON |
Micro Servomotor SG90 90Β° | Unlocking mechanism | 13.99 RON |
16x2 LCD with PCF8574 Backpack | Status Display | 16.34 RON |
Softwareβ
Library | Description | Usage |
---|---|---|
embassy-rp | Embassy HAL for Raspberry Pi Pico (RP2040) | Direct access and async control of peripherals like SPI, I2C, GPIO, and timers |
embassy-executor | Async executor designed for embedded systems | Manages asynchronous task execution without needing an OS |
embassy-time | Timekeeping and delay abstraction | Used for creating delays and timers without blocking |
embassy-sync | Primitives for concurrency and synchronization | Enables mutexes, signals, and channels between async tasks |
embassy-net | Async embedded TCP/IP network stack | Used to serve a web interface over Wi-Fi (for unlocking remotely) |
cyw43 | Driver for the CYW43 Wi-Fi chip on the Pico W | Used to join a Wi-Fi network and host a small HTTP server |
mfrc522 | Rust driver for the MFRC522 RFID reader | Handles tag detection and UID reading |
gpio | GPIO management | Used for controlling GPIO pins |
pcf857x | Driver for PCF8574 I/O expander | Used to communicate with the I2C backpack for LCDs |
pwm | PWM module | Used for controlling the buzzer |