# 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. ```bash ~/.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: ```bash sudo pacman -S platformio ``` If upload cannot find the port, add to `platformio.ini`: ```ini upload_port = /dev/ttyUSB0 ; or /dev/ttyACM0, or a /dev/serial/by-id/... path monitor_port = /dev/ttyUSB0 ``` List available ports: ```bash 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` | ```bash # 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 (`ch2`–`ch5`). 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](pi-instructions.md).