Skip to content

๐Ÿ”’ An intelligent door lock written in Rust and ESP32. Supports NFC, Bluetooth, Wi-Fi, ETH, and even PoE power supply.

License

Notifications You must be signed in to change notification settings

oxidome/oxidoor

Repository files navigation

Warning

๐ŸšงUnder developmen and not ready for production.

Note

Unifi Protect 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

# Install Rust ESP toolchain
cargo install espup
espup install

# Source the environment
source ~/export-esp.sh

Build and Flash

# 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 for details.

Author

Repository: https://github.com/aprilnea/oxidoor


OXIDOOR - Securing your space with Rust reliability

About

๐Ÿ”’ An intelligent door lock written in Rust and ESP32. Supports NFC, Bluetooth, Wi-Fi, ETH, and even PoE power supply.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published