Files
arduino-filament-dryer/dev-instructions.md

3.3 KiB

Development environment setup

Instructions for setting up firmware development on a new machine (laptop/desktop). For Raspberry Pi CSV logging, see pi-instructions.md.

1. Get the repo

git clone <repo-url> voron-filament-dryer
cd voron-filament-dryer

.pio/, logs/, and compile_commands.json are gitignored — they are created locally on each machine.

2. Install PlatformIO Core (CLI only)

This project uses PlatformIO from the command line, not the IDE extension (the extension is explicitly discouraged in .vscode/extensions.json because it hangs in Cursor).

Option A — pip/pipx (simplest on Linux):

pip install --user platformio
# or: pipx install platformio

Option B — official installer:

curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core/develop/platformio/assets/get-platformio.py -o get-platformio.py
python3 get-platformio.py

After install, pio should be on your PATH, or at ~/.platformio/penv/bin/pio (what .vscode/tasks.json uses).

First build downloads the AVR toolchain, Arduino framework, and Adafruit libs:

pio run

Target: Arduino Nano (ATmega328P) — see platformio.ini.

3. Editor (Cursor / VS Code)

What is already in the repo:

Piece Purpose
.vscode/tasks.json Build, Upload, Monitor, Clean, Upload+Monitor
.vscode/settings.json clangd + compile_commands.json
.vscode/extensions.json Install clangd; do not install PlatformIO IDE

One-time after clone — regenerate IntelliSense DB (paths are machine-specific):

  • Run task: PlatformIO: Update IntelliSense DB
  • Or: pio run -t compiledb

Daily workflow:

  • Ctrl+Shift+B → Build
  • Tasks: Run Task → Upload / Monitor / Upload and Monitor

4. USB serial (upload + monitor)

Connect the Nano over USB, then:

pio device list          # find port, e.g. /dev/ttyUSB0 or /dev/ttyACM0
pio run -t upload        # auto-detects port if only one device
pio device monitor       # 115200 baud (set in platformio.ini)

Linux permissions — add your user to the serial group, then log out/in:

Distro Group
Arch / CachyOS uucp
Debian / Ubuntu / Raspberry Pi OS dialout
# Arch example
sudo usermod -aG uucp $USER

If upload fails with "permission denied", that is usually the missing step.

Optional — fixed port in platformio.ini:

upload_port = /dev/ttyUSB0
monitor_port = /dev/ttyUSB0

5. Optional: CSV capture on the dev machine

Only if you want logging from the laptop instead of the Pi:

pip install -r scripts/requirements.txt
python3 scripts/capture_csv.py -p /dev/ttyUSB0

Only one process can hold the serial port (Pi logger or dev monitor, not both).

6. What you do not need

  • Arduino IDE
  • PlatformIO VS Code / Cursor extension
  • Committing .pio/ or compile_commands.json
  • Anything on the Pi for building firmware (Pi is only for capture_csv.py if you use it there)

Quick sanity checklist

pio --version
pio run
pio run -t compiledb    # for clangd
pio run -t upload       # Nano plugged in

If tasks.json cannot find pio, either add ~/.platformio/penv/bin to PATH or change the task command to wherever which pio points on that machine.