Skip to content

anapeksha/numio

Repository files navigation

Numio RS

Numio RS is a standalone embedded Rust firmware for the Arduino Nesso N1.

It ports the Numio wearable/controller experience to Rust while keeping board bring-up, display, radio, storage, input, motion, power, and audio access behind the public nesso SDK.

Current Features

  • Landscape desk mode with clock, weather, battery, and minute progress UI
  • Play mode with IMU-driven ball movement
  • Step and system information screen
  • Wi-Fi connection from build-time credentials
  • App-owned embassy-net stack after Nesso Wi-Fi handoff
  • NTP time sync and Open-Meteo weather fetch
  • Battery and charging status
  • Motion and step calculation
  • Touch/button navigation
  • Non-blocking queued buzzer feedback
  • Persistent preferences through nesso::storage
  • CI and release workflows for quality checks and firmware artifacts

Hardware

  • Board: Arduino Nesso N1
  • MCU: ESP32-C6
  • Display: built-in LCD
  • Input: built-in touch and buttons
  • Sensors: IMU and power-management hardware
  • Wireless: Wi-Fi and BLE
  • Audio: passive buzzer

Build-Time Wi-Fi Credentials

Numio reads Wi-Fi credentials from environment variables at build time:

export WIFI_SSID="your-ssid"
export WIFI_PASSWORD="your-password"

These are embedded into the firmware image by build.rs.

Build

cargo fmt --all --check
cargo test --lib
cargo clippy --workspace --all-targets --all-features --target riscv32imac-unknown-none-elf -- -D warnings
cargo check --workspace --all-features --target riscv32imac-unknown-none-elf
cargo build --workspace --release --target riscv32imac-unknown-none-elf

Flash

The project runner is configured for ESP32-C6 flashing through espflash. Update .cargo/config.toml if your serial port differs.

cargo run --release --target riscv32imac-unknown-none-elf

Release Artifacts

Pushing a v* tag runs .github/workflows/release.yml, builds the firmware, and attaches:

  • numio-esp32c6.elf
  • numio-esp32c6.bin
  • SHA256SUMS

Architecture

The application is split into focused modules:

  • app: boot flow and event loop
  • screens: desk, play, system, and reusable widgets
  • services: network, desk data, battery, motion, input, storage, BLE mirror
  • ui: Numio-specific drawing helpers
  • logic: host-testable pure logic
  • config: constants and storage keys

Numio owns application behavior such as NTP, weather, UI state, retries, and screen flows. The nesso SDK owns Nesso N1 hardware setup and access.

License

MIT

About

Numio is a tiny wearable desk clock, motion game, and system companion for the Arduino Nesso N1, built in Rust.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages