Skip to content
/ rued Public

RTOS in Rust - my explorations into an embedded, async, real-world project

License

Notifications You must be signed in to change notification settings

bsodmike/rued

Repository files navigation

rued

[Ru]st [E]lectronic [D]atalogger - my explorations into an embedded, async, real-world project

This is heavily inspired by ruwm by ivmarkov.

If you have questions, find me on Discord in the #embedded channel or in #esp-rs on Matrix

Yet another IoT stack?

With any IoT 'stack', there are some rudimentary basics; this repo is an attempt at building these out using the embedded_svc library and its family of crates from Espressif, such as esp-idf-svc, esp-idf-sys, and esp-idf-hal.

Feature list

Done? Feature Notes
[X] RTOS: High priority executor
[X] Wifi
[X] Httpd server with TLS
[X] Httpd server Middleware Added to provide JSON responses for matching Content-Type headers
[X] SNTP *Fallback to RTC is pending
[X] Ext. RTC RV8803 module used.
[Testing] Display: I2C **Requires further testing.
[X] Display: SPI ili9342 fully tested.
[Testing] SD/MMC Card: SPI **Requires further testing.
[Testing] ADC: Battery voltage
[X] MQTT
[X] OTA Ref: https://github.com/bsodmike/rued-mqtt-client

Quick setup

// flash
scp 10.0.3.70:~/esp/rued/partitions.csv . \
    && scp 10.0.3.70:~/esp/rued/target/xtensa-esp32-espidf/release/rued-esp32 . \
    && espflash flash --baud 920000 --monitor rued-esp32 --partition-table partitions.csv

// monitor for stack-traces
scp 10.0.3.70:~/esp/rued/target/xtensa-esp32-espidf/release/rued-esp32 . && espflash monitor --baud 115200 --elf rued-esp32
// You will need to restart the chip

VSCode

Add the following to settings for rust-analyzer

{
    "rust-analyzer.server.extraEnv": {"LIBCLANG_PATH": "/home/mdesilva/.espressif/tools/xtensa-esp32-elf-clang/esp-15.0.0-20221014-x86_64-unknown-linux-gnu/esp-clang/lib/"},
}

Upgrading to ESP-IDF 5 (and beyond)

espup install --esp-idf-version 5.0
export LIBCLANG_PATH=$HOME/.espressif/tools/xtensa-esp32-elf-clang/esp-15.0.0-20221014-x86_64-unknown-linux-gnu/esp-clang/lib/

# cd into your app root
cargo clean
rm -rf .embuild
cargo build --release

# check for `~/.espressif/esp-idf/release-v5.0`

Semantic Versioning (SemVer)

This project implements SemVer. Please pay attension to Major version changes as these largely include backwards incompatible changes introduced to the public API.

About

RTOS in Rust - my explorations into an embedded, async, real-world project

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages