Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality. Learn more →
Top 16 Rust Esp32 Projects
-
rust-esp32-std-demo
Rust on ESP32 STD demo app. A demo STD binary crate for the ESP32[XX] and ESP-IDF, which connects to WiFi, Ethernet, drives a small HTTP server and draws on a LED screen.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
esp-idf-svc
Type-Safe Rust Wrappers for various ESP-IDF services (WiFi, Network, Httpd, Logging, etc.)
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
coffee-scale-app
Firmware and Progressive Web App to connect to a DIY bluetooth enabled coffee and espresso scale.
-
OFMon
Offline-first smart energy monitoring platform using Rust, ESP32, Thingsboard, and a fork of Thingsboard Mobile flutter app.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Project mention: ESP32 USB is frustrating, try JCUSB for S3 + USB + CDC + OpenOCD + Arduino IDE | /r/esp32 | 2023-06-04This is my link: https://github.com/ivmarkov/rust-esp32-std-demo
In the esp-hal, they appear to offer both sync and async I2C implementations, depending on what works best for an application. Since the async implementation is gated by a feature, it may not show up in the docs you linked.
Async implementation: https://github.com/esp-rs/esp-hal/blob/main/esp-hal-common/s...
You can also see the async feature mentioned here: https://docs.rs/crate/esp32s2-hal/latest/features
It's well established that interrupts are a tough concept to grasp for the embedded beginner. Add to that when doing it in Rust the complexity of dealing with mutable static variables. This is because working with shared variables and interrupts is inherently unsafe if proper measures are not taken. When looking at how to do interrupts using the esp-idf-hal I first resorted to the Embedded Rust on Espressif book. Interrupts are covered under the Advanced Workshop in section 4.3, and to be honest, I was taken aback a little at what could be an additional level of complexity for a beginner. Without too much detail, this is because the book resorts to using lower-level implementations. For those interested, by that, I mean FFI interfaces to FreeRTOS which I will be creating a separate post about later.
Project mention: Computer Science graduate soon, looking at getting into embedded? | /r/embedded | 2023-04-27it's a great jumping off point as well if you want to experiment with rust: https://github.com/esp-rs/esp-idf-sys
Project mention: Rust Based Linux Process Manager with both a TUI and a GUI | /r/Ubuntu | 2023-05-10https://github.com/esp-rs/espup/issues/19 https://github.com/tauri-apps/tauri/issues/1355
The no-std ecosystem follows the same layering approach that exists within embedded Rust. In embedded Rust, there are several levels of abstraction that are introduced on top of microcontroller hardware as shown in the figure below. The first level is the peripheral access crate (PAC) which gives us access to low-level microcontroller registers at the bit level. It's also worth noting that the PAC is specific to a particular microcontroller series. For ESP devices the different PACs are captured in the esp-pacs repository. The microarchitecture crate is at a similar abstraction level to the PAC but specific to processor core (Ex. RISC-V) functions.
Project mention: no_std with ESP32: "rustc --print target-list" changes result depending on directory it's run from | /r/learnrust | 2023-11-10The first Book example is here: https://github.com/esp-rs/no_std-training/tree/main/intro/hello-world
Afaik there while there are some OSS projects they aren't necessarily mature.
The no_std hal is still a bit of a moving target so it's not as beginner friendly, the most mature here seems to be the SlimeVR firmware: https://github.com/SlimeVR/SlimeVR-Rust/tree/main/firmware
For std hal there are a few more, OFMon being a good one: https://github.com/arashsm79/OFMon
Project mention: Unlocking Possibilities: 4 Reasons Why ESP32 and Rust Make a Winning Combination | dev.to | 2023-06-29This repo has a nice example of a project set up with Gitpod. Also, Dev Container support can be added when creating project templates (more detail here).
Among these several abstractions, we can program a microcontroller device at any level we like. Additionally, we can develop code with a mix of low-level and high-level abstractions. Obviously, to make code more portable it's better to stick to higher-level abstractions. Also in addition to the above, there exists other crates supporting other functions in no-std development. These include wifi services in the esp-wifi repository, heap allocators in the esp-alloc repository, logging features in the esp-println repository, exception handlers in the esp-backtrace repository, and finally embedded storage traits in the esp-storage repository.
Project mention: Official /r/rust "Who's Hiring" thread for job-seekers and job-offerers [Rust 1.70] | /r/rust | 2023-06-03rustlink: small set of Rust tools to program STM32 devices esp32-phantom: Rust sandbox to explore the WiFi and BLE capabilities of the ESP32 stm32-rf-scanner: STM32 and nRF24L01+ based 2.4GHz RF scanner stm32-dc-dc: STM32 based DC-DC converter
Rust Esp32 related posts
- Rust on Espressif chips – 29-09-2023
- The Embedded Rust ESP Development Ecosystem
- Espressif advances with Rust – 30-06-2023
- Unlocking Possibilities: 4 Reasons Why ESP32 and Rust Make a Winning Combination
- Rust on my ESP32 (using idf framework)
- Switching from C++ to Rust
- MCloudTT: An asynchronous MQTT v5 Broker written in Rust
-
A note from our sponsor - InfluxDB
www.influxdata.com | 25 Apr 2024
Index
What are some of the best open-source Esp32 projects in Rust? This list will help you:
Project | Stars | |
---|---|---|
1 | rust-esp32-std-demo | 766 |
2 | esp-hal | 565 |
3 | std-training | 545 |
4 | esp-idf-hal | 387 |
5 | esp-idf-svc | 262 |
6 | esp-idf-sys | 234 |
7 | espup | 198 |
8 | coffee-scale-app | 95 |
9 | esp-pacs | 89 |
10 | no_std-training | 42 |
11 | OFMon | 34 |
12 | rustzx-esp32 | 33 |
13 | esp32-spooky-maze-game | 28 |
14 | esp-storage | 23 |
15 | mcloudtt | 14 |
16 | esp32-phantom | 4 |
Sponsored