Nova is a Bluetooth Low Energy (BLE) project designed to transmit both normal and encrypted data between devices. It serves as a learning project for exploring BLE using Rust, while testing out the trouble framework.
- Data Transmission
- Supports sending and receiving plain and encrypted data over BLE.
- Encryption Support
- Demonstrates secure communication between devices.
- Rust
no_std- Built for embedded environments with limited resources.
- Async Runtime
embassyframework for async runtime.
- Custom State Machine
- Implements a state machine to handle device-specific actions and events cleanly.
- Trouble Framework Integration
- Uses
troublefor BLE protocol handling and doubles as a playground to learn and test how BLE works in Rust.
- Uses
- Framework Contribution
- Identified and resolved critical disconnection issues in collaboration with framework maintainer Ulf Lilleengen.
Nova is configured to use a custom Rust toolchain:
[toolchain]
channel = "esp"This ensures the project builds for Xtensa embedded targets without an operating system.
- Language: Rust (
no_std) - Frameworks & Libraries:
Embassy→ async runtime for embedded systemsTrouble→ BLE framework for Rust
- Build a lightweight BLE communication layer in Rust.
- Explore and validate features of the
troubleframework. - Provide a clean example of using
Embassy+no_stdwith a custom state machine. - Serve as a learning project for understanding BLE concepts and their implementation in Rust.
- Contribute to the improvement and stability of the
troubleframework ecosystem.
-
Clone the repository:
git clone git@github.com:Makuo12/nova.git cd nova -
Install ESP Rust toolchain:
cargo install espup --locked
-
Set up ESP32 development environment:
espup install
- Add more robust encryption schemes for secure communication.
- Extend state machine logic for richer device interactions.
- Provide example apps for mobile devices to communicate with Nova.
- Document BLE concepts in Rust to help others learn from this project.