Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
nesso-rs
nesso-rs is a Rust-native SDK for the Arduino Nesso N1, an ESP32-C6 based
device with display, touch, IMU, Wi-Fi, audio, and battery/power-management
hardware and optional external unit support for Nesso-compatible expansion
sensors such as M5Stack Unit ENV Pro.
The public crate is nesso. The repository is
a Cargo workspace for examples and validation, but only the nesso crate is
published to crates.io.
Status
This project is an early hardware-validated SDK foundation.
This SDK targets only the Arduino Nesso N1. It intentionally does not provide a generic board abstraction layer, an M5Stack compatibility layer, or support for other ESP32-C6 boards.
Validated examples currently cover:
- ST7789P3 display initialization and text rendering
- FT6336U touch reads
- BMI270 IMU live axis reads
- KEY1/KEY2 button events
- Passive buzzer tone output
- BQ27220/AW32001 battery and charger status reads
- Heapless settings storage
- ESP32-C6 Wi-Fi scan using
esp-radio - M5Stack Unit ENV Pro BME688 environmental reads over I2C/Qwiic
- Board information display
Installation
Add the public facade crate:
Enable Wi-Fi only for applications that use the ESP32-C6 radio:
[]
= { = "crates/nesso", = ["wifi"] }
= "0.10"
Enable ENV Pro support only for applications that use the external unit:
[]
= { = "crates/nesso", = ["env"] }
Public Modules
nesso::Nesso: public facade and shared board ownership.nesso::bsp: Nesso N1 board constants, GPIOs, I2C addresses, and board-specific setup helpers.nesso::display: ST7789P3 display driver withembedded-graphicsintegration.nesso::env: external environmental unit support, gated behind theenvfeature.nesso::touch: FT6336U touch controller support.nesso::input: button event state machine helpers.nesso::imu: BMI270 initialization, config upload, and sensor reads.nesso::audio: passive buzzer output and blocking tone generation.nesso::power: BQ27220 fuel gauge and AW32001 charger status support.nesso::wifi: ESP32-C6 Wi-Fi scan support, gated behind thewififeature.nesso::storage: heapless settings storage primitives andesp-storageflash-backed persistence.nesso::sprite: caller-owned RGB565 sprite/framebuffer support for flicker-free dirty-region rendering.
Examples
Each public module has one focused hardware or module-validation example:
| Module | Example |
|---|---|
nesso::Nesso |
hello_world |
nesso::bsp |
board_info |
nesso::display |
display_test |
nesso::touch |
touch_test |
nesso::input |
input_test |
nesso::imu |
imu_test |
nesso::audio |
audio_test |
nesso::power |
battery_test |
nesso::wifi |
wifi_scan |
nesso::storage |
storage_test |
nesso::env |
env_pro_test |
Example
The facade owns the fixed Nesso N1 wiring. Applications initialize ESP-HAL once,
then hand the peripherals to Nesso::new.
use ;
use DelayNs;
use ;
use Nesso;
!
See examples/ for hardware-focused examples.
Wi-Fi is behind the optional wifi feature and is initialized lazily with
nesso.init_wifi(). Only applications that enable Wi-Fi need to compile
esp-radio/esp-rtos and provide an esp_alloc heap for the ESP radio stack.
Build
Install Rust with the target specified in rust-toolchain.toml, then run:
Flashing Examples
Build and flash an example with espflash:
Change the serial port for your host.
Documentation
Hardware and architecture notes are kept in docs/:
docs/hardware.mddocs/architecture.mddocs/m5gfx-analysis.mddocs/gap-analysis.mddocs/roadmap.md
Release Process
Releases are published from GitHub Releases.
- Merge through a pull request to
main. - Create and push the release tag.
- Publish a GitHub Release for that tag.
The release workflow validates the workspace and publishes only the public
nesso crate to crates.io.
The workflow uses crates.io trusted publishing and does not require a long-lived Cargo registry token.
License
Licensed under the MIT License. See the LICENSE file.