2026-07-05 10:39:57 +02:00
2026-07-05 10:06:21 +02:00
2026-07-05 10:06:21 +02:00
2026-07-05 10:36:05 +02:00
2026-07-05 10:06:21 +02:00
2026-07-05 10:06:21 +02:00
2026-07-05 10:39:57 +02:00
2026-07-05 10:08:07 +02:00
2026-07-05 10:06:21 +02:00
2026-07-05 10:39: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)

Distribution Group for serial access
Debian, Ubuntu, Raspberry Pi OS dialout
Arch Linux, CachyOS uucp
# Debian / Ubuntu / Pi
sudo usermod -aG dialout $USER

# Arch / CachyOS
sudo usermod -aG uucp $USER

Log out and back in after adding your user to the group.

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 logging

Optional CSV capture over USB is documented in pi-instructions.md.

Description
No description provided
Readme 3 MiB
Languages
Python 93.7%
C++ 5.3%
C 0.9%
Shell 0.1%