https://github.com/aprilnea/oxidoor
๐ An intelligent door lock written in Rust and ESP32. Supports NFC, Bluetooth, Wi-Fi, ETH, and even PoE power supply.
https://github.com/aprilnea/oxidoor
esp-rs esp32 iot iot-application rust
Last synced: 9 months ago
JSON representation
๐ An intelligent door lock written in Rust and ESP32. Supports NFC, Bluetooth, Wi-Fi, ETH, and even PoE power supply.
- Host: GitHub
- URL: https://github.com/aprilnea/oxidoor
- Owner: AprilNEA
- License: apache-2.0
- Created: 2025-09-26T08:15:06.000Z (9 months ago)
- Default Branch: master
- Last Pushed: 2025-09-27T15:46:21.000Z (9 months ago)
- Last Synced: 2025-09-27T16:27:41.643Z (9 months ago)
- Topics: esp-rs, esp32, iot, iot-application, rust
- Language: Rust
- Homepage:
- Size: 14.6 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
English | ็ฎไฝไธญๆ
>[!WARNING]
> ๐งUnder developmen and not ready for production.
>[!NOTE]
> [Unifi Protect](https://ui.com/us/en/physical-security/door-access) is too expensive, so I'm building my own.
# OXIDOOR ๐
An intelligent door lock system built with Rust and ESP32-S3, supporting multiple connectivity options and power supply methods.
## Features
- ๐ **Smart Door Lock Control**: Electromagnetic lock control with GPIO-based relay switching
- ๐ฎ **Multi-Input Support**: Dual button input for manual operation
- ๐ **Connectivity Ready**: Designed for NFC, Bluetooth, Wi-Fi, and Ethernet integration
- ๐ **Power Options**: Supports PoE (Power over Ethernet) power supply
- ๐ฆ **Rust-Powered**: Built with Rust for safety and performance on ESP32-S3
- โก๏ธ **Async Runtime**: Embassy-based asynchronous task handling
## Hardware Requirements
- ESP32-S3 microcontroller
- Electromagnetic door lock (controlled via GPIO5)
- Two input buttons (GPIO6, GPIO7)
- Power supply (standard or PoE)
- PN532/PN5180 NFC reader
- 3.3V relay
## Current Implementation
The current version provides basic door lock functionality:
- **Door Lock Control**: Electromagnetic lock connected to GPIO5
- **Button Inputs**: Two buttons (GPIO6, GPIO7) with internal pull-up resistors
- **Automatic Locking**: 3-second unlock duration when buttons are pressed
- **Async Operation**: Non-blocking operation using Embassy executor
## Building and Flashing
### Prerequisites
```bash
# Install Rust ESP toolchain
cargo install espup
espup install
# Source the environment
source ~/export-esp.sh
```
### Build and Flash
```bash
# Build the project
cargo build
# Flash to ESP32-S3
cargo run
```
## Pin Configuration
| Function | GPIO Pin | Description |
| --------- | -------- | ---------------------------------------------------- |
| Door Lock | GPIO5 | Relay control output (HIGH = locked, LOW = unlocked) |
| Button 1 | GPIO6 | Input with pull-up (LOW when pressed) |
| Button 2 | GPIO7 | Input with pull-up (LOW when pressed) |
## Project Structure
```
src/
โโโ main.rs # Main application entry point
โโโ task.rs # Async door control task implementation
```
## Future Roadmap
- ๐ฑ NFC card authentication
- ๐ก Bluetooth Low Energy support
- ๐ฑ Wi-Fi connectivity and remote control
- ๐ Ethernet connectivity
- ๐ Access logging and monitoring
- ๐ Enhanced security features
- ๐ฑ Mobile app integration
## License
Licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for details.
## Author
- [AprilNEA](https://github.com/aprilnea)
Repository: [https://github.com/aprilnea/oxidoor](https://github.com/aprilnea/oxidoor)
---
*OXIDOOR - Securing your space with Rust reliability*