ESP32-S3-BOX-3B embedded application that connects to a presentation server (Toboggan) via WiFi and WebSocket to display slides on a built-in screen with RGB LED status indicators.
Note: This is an educational and fun project created to explore Rust's capabilities across different platforms - from embedded systems to web browsers. While fully functional, it's designed primarily for learning and experimentation rather than production use. It's a playground to demonstrate how Rust can target everything from microcontrollers to iOS apps!
Target Device: ESP32-S3-BOX-3B
- MCU: ESP32-S3 (Xtensa dual-core)
- Display: MIPIDSI 240x320 SPI
- RGB LED: GPIO 39 (red), 40 (green), 41 (blue)
- WiFi: Built-in 802.11b/g/n
Install tools via mise:
mise installThis installs: ldproxy, espflash, espup, and esp-generate.
Create .mise.local.toml (gitignored):
[env]
WIFI_SSID = "your-wifi-network"
WIFI_PASSWORD = "your-password"
TOBOGGAN_HOST = "192.168.1.100"
TOBOGGAN_PORT = "8080"# Build for release
cargo build --release
# Flash and monitor
cargo espflash flash --monitor --release- Multi-threaded: WiFi, API, WebSocket, and main display loop
- State machine: Booting → Connecting → Loading → Play/Paused/Done
- Message passing: Workers communicate via
std::sync::mpscchannels - LED indicators: Visual feedback for each application state
- esp-idf-svc - High-level Rust bindings for ESP-IDF services (WiFi, HTTP, WebSocket)
- esp-idf-sys - Low-level ESP-IDF bindings (auto-generated)
- embuild - ESP-IDF build integration for Cargo
- embedded-svc - Embedded service traits (WiFi, HTTP client, etc.)
- mipidsi - MIPI Display Serial Interface driver
- embedded-graphics - 2D graphics library for embedded systems
- heapless - Static data structures (Vec, String) without heap allocation
- serde / serde_json - JSON serialization for WebSocket messages
- anyhow - Flexible error handling
- log - Logging facade
- Rust on ESP Book - Comprehensive guide
- ESP-IDF Training - Hands-on exercises
- ESP Rust Board Support - HAL and PAC crates
- espflash - Flash utility (
cargo espflash) - espup - Toolchain installer
- esp-generate - Project generator
- esp-rs GitHub Organization
- ESP32 Rust Community Matrix
- Awesome ESP Rust - Curated list of resources
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.