2026-07-05 19:12:54 +02:00
2026-07-05 10:06:21 +02:00
2026-07-05 19:12:54 +02:00
2026-07-05 10:06:21 +02:00
2026-07-05 10:39:57 +02:00
2026-07-05 10:06:21 +02:00
2026-07-05 14:11:57 +02:00

Voron filament dryer

Arduino Nano firmware for a chamber dryer with four SHT31 humidity/temperature sensors, PID heater control, and PWM fan mixing.

Pinout (Arduino Nano)

All settings below are defined in include/config.h.

Signal Nano pin Notes
I2C SDA A4 Shared bus (Wire)
I2C SCL A5 Shared bus (Wire)
TCA9548A mux I2C 0x70 8-channel I2C multiplexer
SHT31 sensors Mux channels 2, 3, 4, 5 One sensor per channel
SHT31 address 0x44 ADDR pin low; use 0x45 if ADDR is high
Fan D5 24 V fan via N-channel MOSFET (hardware PWM)
Heater A2 Solid-state relay (burst control)

USB serial: 115200 baud.

Dev setup

PlatformIO

This repo uses the PlatformIO CLI (see .vscode/tasks.json). If PlatformIO is already installed under ~/.platformio/penv/, use that directly — you do not need to run the web installer again.

~/.platformio/penv/bin/pio --version
~/.platformio/penv/bin/pio run              # build
~/.platformio/penv/bin/pio run -t upload    # flash
~/.platformio/penv/bin/pio device monitor   # serial monitor

On Arch Linux / CachyOS, install via the package manager if you prefer:

sudo pacman -S platformio

If upload cannot find the port, add to platformio.ini:

upload_port = /dev/ttyUSB0    ; or /dev/ttyACM0, or a /dev/serial/by-id/... path
monitor_port = /dev/ttyUSB0

List available ports:

ls -la /dev/serial/by-id/

Serial port permissions (Linux)

Recommended — udev rules (one-time, works in Cursor without re-login):

sudo ./scripts/install-udev-rules.sh
# unplug and replug the Arduino

This installs PlatformIOs 99-platformio-udev.rules (covers CH340 clone Nanos and other common adapters).

Alternative — group membership:

# Arch / CachyOS
sudo usermod -aG uucp $USER

You must fully log out of the desktop (not just reboot or open a new terminal) so id shows the new group. Cursors terminal often keeps the old group list until you restart Cursor after logging out.

Immediate workaround (no sudo, current terminal only):

sg uucp -c "$HOME/.platformio/penv/bin/pio run -t upload"

Verify access: test -w /dev/ttyUSB0 && echo ok

First run

  1. Flash firmware and open the serial monitor at 115200 baud.

  2. Confirm TCA9548A detected and four valid sensor channels (ch2ch5).

  3. Run PID autotune once per physical unit (values are stored in EEPROM):

    target 0
    autotune 45
    
  4. Start drying:

    target 55
    

Send help over serial for all commands (target, fan on/off, log on/off, status, pid, etc.).

Raspberry Pi control

On the Pi, use the curses TUI to set targets and monitor the chamber (SSH with a TTY: ssh -t):

python3 scripts/capture_csv.py tui

Keys: 0 idle · t target · p material presets · f/F fan · l CSV log · a autotune · : command · q quit

Headless CSV-only logging (e.g. systemd) is documented in pi-instructions.md.

Filament drying table

Filament Dryer temperature Drying time (hours)
PLA 5055 °C (122131 °F) > 6
ABS 6065 °C (140149 °F) > 6
PETG 6065 °C (140149 °F) > 6
Nylon 7075 °C (158167 °F) > 24
Desiccants 6065 °C (149 °F) > 12
PVA 4045 °C (104113 °F) > 24
TPU/TPE 5055 °C (122131 °F) > 8
ASA 6065 °C (140149 °F) > 8
PP 5055 °C (122131 °F) > 6
HIPS 6065 °C (140149 °F) > 8
PC 7075 °C (158167 °F) > 12
PEEK 120125 °C (248257 °F) > 24
Description
No description provided
Readme 3 MiB
Languages
Python 93.7%
C++ 5.3%
C 0.9%
Shell 0.1%