Preconditions: #
- Rust:
rustupinstalled. - ESP32 Toolchain:
espupinstalled. - Build Utilities:
ldproxyandespflashinstalled. - Node.js:
npminstalled (for the web interface).
Cloning the Repository #
Clone the repository including submodules:
git clone --recursive https://git.mannheim.ccc.de/C3MA/PlantCtrl.git
cd PlantCtrl/Software/MainBoard/rustToolchain Setup #
- Install Rust: If not already done, visit rustup.rs.
- Install ldproxy:
cargo install ldproxy - Install espup:
cargo install espup - Install ESP toolchain:
espup install - Install espflash:
cargo install espflash
Building the Web Interface #
The configuration website is built using TypeScript and Webpack, then embedded into the Rust binary.
cd src_webpack/
npm install
npx webpack
cd ..Compiling the Firmware #
Build the project using Cargo:
cargo build --releaseThe resulting binary will be located in target/riscv32imac-unknown-none-elf/release/plant-ctrl2.
Using Build Scripts #
To simplify the process, several bash scripts are provided in the Software/MainBoard/rust directory:
image_build.sh: Automatically builds the web interface, compiles the Rust firmware in release mode, and creates a flashableimage.bin.all.sh: Performs all steps fromimage_build.shand additionally flashes the firmware to a connected device and starts the serial monitor.wokwi_build.sh: Builds a debug version of the firmware and creates a full 16MB flash image for use with the Wokwi simulator.