Skip to content

Rust no_std embedded firmware for the watchy open hardware project

License

Notifications You must be signed in to change notification settings

arlyon/watchy-rs

Repository files navigation

watchy-rs

A firmware for the watchy smartwatch written in rust. This firmware targets watchy v3, which is based on the ESP32S3 chip and the xtensa rust toolchain. It uses embassy-rs, an async executor for embedded rust, to power its tasks and attempts to use async drivers as much as possible for better performance and power consumption.

The firmware is #[no_std] and requires allocations only for the wifi stack. It uses the esp-hal crate to provide implementations of the embedded-hal and embedded-hal-async traits for the ESP32S3 chip.

Embassy will automatically put the chip into modem sleep when it is idle. As of now, battery life is in the 4 hour range, but that is only because we do not use the deep or light sleep modes.

Energy consumption is roughtly 40Ma, but is expected to be closer to 1Ma average once full sleep works.

Getting Started

The watchy is based on esp32s3 which uses xtensa's llvm fork. We use mise to manage all the toolchains and dependencies so this should be painless.

This will install a rust toolchain, espup, espflash, and then install the xtenza toolchain.

mise install
mise run init

This project is overrides the run command so after the dev enviroment is set up a simple cargo run should be enough.

cargo run --release

Roadmap

  • Async wifi connection
  • Async ntp time sync
  • Async display driver
  • Battery status reading
  • Accelerometer reading
  • Automatic modem sleep
  • RTC time syncing
  • Buttons and vibration
  • Light sleep between updates
  • Deep sleep between updates

Testing

This is in progress, based on hil-test.

See https://github.com/esp-rs/esp-hal/tree/main/hil-test

Inspirations / Bookmarks

https://gitlab.com/claudiomattera/esp32c3-embassy

About

Rust no_std embedded firmware for the watchy open hardware project

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages