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-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 |
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