Type-Safe Rust Wrappers for various ESP-IDF services (WiFi, Network, Httpd, Logging, etc.)
Safe Rust wrappers for the services in the ESP IDF SDK
Highlights
- Supports almost all ESP IDF services: timers, event loop, Wifi, Ethernet, HTTP client & server, MQTT, WS, NVS, OTA, etc.
- Implements the traits of embedded-svc
- Blocking and
asyncmode for each service (asyncsupport where feasible) - Re-exports
esp-idf-halandesp-idf-sysasespidfsvc::halandespidfsvc::sys. You only need to depend onespidfsvcto get everything you need
Community Effort
Please note that all esp-idf-* crates are a community effort, in that Espressif puts little to no paid developer time in these. So while ESP-IDF itself is very popular and well tested, the esp-idf-* crates:
- Might be a bit lagging behind the latest stable ESP-IDF version
- Are (currently) missing HIL tests
- Need more documentation
esp-hal. Keep in mind that esp-hal is nostd-only, does not use ESP-IDF and requires async programming.
Build Prerequisites
Follow the Prerequisites section in the esp-idf-template crate.
Examples
The examples could be built and flashed conveniently with cargo-espflash. To run e.g. wifi on an e.g. ESP32-C3: (Swap the Rust target and example name with the target corresponding for your ESP32 MCU and with the example you would like to build)
with cargo-espflash:
$ MCU=esp32c3 cargo espflash flash --target riscv32imc-esp-espidf --example wifi --monitor
| MCU | "--target" | | --- | ------ | | esp32c2 | riscv32imc-esp-espidf | | esp32c3| riscv32imc-esp-espidf | | esp32c6| riscv32imac-esp-espidf | | esp32h2 | riscv32imac-esp-espidf | | esp32p4 | riscv32imafc-esp-espidf | | esp32 | xtensa-esp32-espidf | | esp32s2 | xtensa-esp32s2-espidf | | esp32s3 | xtensa-esp32s3-espidf |
Setting up a "Hello, world!" binary crate with ESP IDF
Use the esp-idf-template project. Everything would be arranged and built for you automatically - no need to manually clone the ESP IDF repository.
More information
For more information, check out:
- The Rust on ESP Book
- The ESP Embedded Training
- The esp-idf-template project
- The embedded-svc project
- The esp-idf-hal project
- The embedded-hal project
- The esp-idf-sys project
- The Rust for Xtensa toolchain
- The Rust-with-STD demo project