Skip to content

Makuo12/nova

Repository files navigation

Nova

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.


Features

  • 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
    • embassy framework for async runtime.
  • Custom State Machine
    • Implements a state machine to handle device-specific actions and events cleanly.
  • Trouble Framework Integration
    • Uses trouble for BLE protocol handling and doubles as a playground to learn and test how BLE works in Rust.
  • Framework Contribution

Toolchain

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.


Tech Stack

  • Language: Rust (no_std)
  • Frameworks & Libraries:
    • Embassy → async runtime for embedded systems
    • Trouble → BLE framework for Rust

Project Goals

  • Build a lightweight BLE communication layer in Rust.
  • Explore and validate features of the trouble framework.
  • Provide a clean example of using Embassy + no_std with 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 trouble framework ecosystem.

Getting Started

⚠️ Nova is an embedded Rust project targeting the original ESP32 microcontroller (Xtensa LX6 dual-core, 240 MHz) with Wi-Fi, BLE connectivity, 520KB SRAM, and 4MB flash memory for wireless-enabled embedded applications.

Installation

  1. Clone the repository:

    git clone git@github.com:Makuo12/nova.git
    cd nova
  2. Install ESP Rust toolchain:

    cargo install espup --locked
  3. Set up ESP32 development environment:

    espup install

Future Plans

  • 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.

About

Learning BLE in rust with no_std

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages