Firmware for the lander and its ground station, targeting the ESP32 on ESP-IDF v6.0.2. This repo is a VS Code multi-root workspace with two independent ESP-IDF projects:
lander/— flight controller (IMU, Kalman filter, DShot motors, ESP-NOW telemetry)ground-station/— ESP-NOW receiver +gui.pydesktop GUI
-
Clone with submodules (the
esp32_BNO08xIMU driver is a git submodule — the build fails with "does not contain a CMakeLists.txt" if it's missing):git clone --recurse-submodules <repo-url> # or, in an existing clone: git submodule update --init --recursive
-
Install ESP-IDF v6.0.2. Use the ESP-IDF Installation Manager (EIM) or the VS Code ESP-IDF extension's "Configure" flow. The default install location is
~/.espressif(%USERPROFILE%\.espressifon Windows). -
Open the workspace, not a single folder: open
workspace.code-workspacein VS Code and install the recommended extensions when prompted (ESP-IDF, clangd, Python). -
Point the ESP-IDF extension at your local install. This is per-machine config and is intentionally not committed — set it locally via Command Palette → "ESP-IDF: Configure ESP-IDF Extension". (See Per-machine config below.)
Via task (fastest):
Ctrl+Shift+B → "Build Select Project" → Lander or Ground StationVia CLI:
source ~/.espressif/tools/activate_idf_v6.0.2.sh
idf.py -C lander build # or: -C ground-stationVia task (fastest):
Cmd+Shift+B → "Build Select Project" → Lander or Ground Station(The task automatically sources ~/.espressif/tools/activate_idf_v6.0.2.sh.)
Via CLI:
source ~/.espressif/tools/activate_idf_v6.0.2.sh
idf.py -C lander buildVia ESP-IDF extension (recommended):
- Open the workspace
- Command Palette (Ctrl+Shift+P) → "ESP-IDF: Pick a Workspace Folder"
→ select
landerorground-station - Click the Build button in the bottom status bar, or press Ctrl+E then B
Via CLI (PowerShell):
# Activate ESP-IDF v6.0.2 (installed via EIM or Windows installer)
& "${env:USERPROFILE}\.espressif\tools\idf-cmd-tools\cmdline_tools\bin\idf.cmd" -C lander buildThe ESP-IDF extension works on all platforms. Use the bottom-bar build/flash/monitor buttons:
- Command Palette → "ESP-IDF: Pick a Workspace Folder" (select
landerorground-station) - Click Build (or Flash, Monitor)
Machine-specific VS Code settings are not tracked — .vscode/settings.json
is git-ignored (see .gitignore). The ESP-IDF extension writes
values like idf.currentSetup, idf.port, and absolute toolchain paths there;
committing them breaks other contributors. Configure them locally through the
extension and they'll stay on your machine.
Shared, portable config is tracked: the workspace layout and build task in
workspace.code-workspace and the recommended
extensions in .vscode/extensions.json. The
Microsoft CMake Tools extension is intentionally disabled for this
workspace (it configures ESP-IDF projects with the host compiler and corrupts
build/); build only through ESP-IDF.