Safe Rust wrappers for the services in the ESP IDF SDK
- 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
async
mode for each service (async
support where feasible) - Re-exports
esp-idf-hal
andesp-idf-sys
asesp_idf_svc::hal
andesp_idf_svc::sys
. You only need to depend onesp_idf_svc
to get everything you need
You might want to also check out the ESP IDF Drivers wrappers, and the raw bindings to ESP IDF in the esp-idf-sys crate!
Follow the Prerequisites section in the esp-idf-template
crate.
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-esptool v1.7:
$ ESP_IDF_VERSION=release/v4.4 cargo espflash --target riscv32imc-esp-espidf --example wifi --monitor /dev/ttyUSB0
with cargo-esptool v2.0:
$ ESP_IDF_VERSION=release/v4.4 cargo espflash flash --target riscv32imc-esp-espidf --example wifi --monitor
Use the esp-idf-template project. Everything would be arranged and built for you automatically - no need to manually clone the ESP IDF repository.
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