A Rust application for ESP32 microcontrollers that creates a web interface for controlling your availability status, with real-time display on an SSD1306 OLED screen.
- 🌐 WiFi connectivity to your local network
- 🖥️ Built-in HTTP server with a responsive web interface
- 📱 Toggle between "Free" and "Do Not Disturb" status from any device
- 📊 OLED display showing real-time status, IP address, and request count
- 🛠️ Built entirely in Rust using the ESP-IDF framework
- ESP32 development board
- SSD1306 OLED display (128x32 or 128x64)
- I2C connection wires
Connect the SSD1306 OLED display to the ESP32:
- SDA to GPIO21
- SCL to GPIO22
- VCC to 3.3V
- GND to GND
- Install Rust and Cargo (https://rustup.rs/)
- Install ESP-IDF toolchain using
espup(https://github.com/esp-rs/espup) - Add the ESP32 target:
rustup target add xtensa-esp32-espidf
-
Clone this repository:
git clone https://github.com/charmitro/busier.git cd busier -
Configure your WiFi credentials (use environment variables for security):
export WIFI_SSID="your_wifi_name" export WIFI_PASS="your_wifi_password" -
Build and flash:
cargo build --release cargo espflash flash --release -
Monitor the serial output (optional):
cargo espflash monitor
- After the ESP32 boots, it will display the IP address on the OLED screen
- Open a web browser and navigate to the displayed IP address
- Use the web interface to toggle between "Free" and "Do Not Disturb" status
- The OLED display will update to show the current status
src/main.rs- Main application codebuild.rs- Build script for embedding environment variablesCargo.toml- Project dependencies and configuration
The project uses the following environment variables:
WIFI_SSID: Your WiFi network nameWIFI_PASS: Your WiFi password
This project is licensed under the MIT License - see the LICENSE file for details.
- esp-rs - Rust support for ESP32
- embedded-graphics - Graphics library for embedded displays
- ssd1306 - SSD1306 OLED driver