#esp32 #esp-idf #svc #idf #embedded-hal-async #wrapper

sys no-std esp-idf-svc

Implementation of the embedded-svc traits for ESP-IDF (Espressif's IoT Development Framework)

90 releases

0.49.1 Jul 9, 2024
0.48.1 Feb 22, 2024
0.47.3 Nov 12, 2023
0.46.2 Jul 30, 2023
0.16.1 Jul 21, 2021

#142 in Embedded development

Download history 1551/week @ 2024-04-05 1785/week @ 2024-04-12 1626/week @ 2024-04-19 1542/week @ 2024-04-26 1604/week @ 2024-05-03 1447/week @ 2024-05-10 1740/week @ 2024-05-17 1726/week @ 2024-05-24 1468/week @ 2024-05-31 1440/week @ 2024-06-07 1592/week @ 2024-06-14 2481/week @ 2024-06-21 1970/week @ 2024-06-28 1943/week @ 2024-07-05 2217/week @ 2024-07-12 1811/week @ 2024-07-19

8,393 downloads per month
Used in 22 crates

MIT/Apache

725KB
17K SLoC

Safe Rust wrappers for the services in the ESP IDF SDK

CI crates.io Documentation Matrix Wokwi

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 async mode for each service (async support where feasible)
  • Re-exports esp-idf-hal and esp-idf-sys as esp_idf_svc::hal and esp_idf_svc::sys. You only need to depend on esp_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!

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:

Dependencies

~5–14MB
~184K SLoC