The MDS-01 is a material dryer/dehumidifier designed to maintain optimal moisture levels in sensitive materials (3D printing filaments). It features an ESP32-S3 microcontroller with a dial display for intuitive control of both the moisture recirculation and heater systems.
- Microcontroller: ESP32-S3-DevKitM-1
- Display: ST7567 JLX12864 LCD (128x64)
- Sensors: DHT22 Temperature & Humidity sensor
- User Input: Rotary encoder with push button
- Indicators: WS2812B NeoPixel RGB LEDs (x3)
- Outputs: 2x Relay modules (Heater & Fan control)
- Audio: Buzzer for feedback
- Connection: USB Type-C for flashing and power
| Function | GPIO Pin |
|---|---|
| NeoPixel | 14 |
| LCD Clock | 36 |
| LCD Data | 35 |
| LCD CS | 21 |
| LCD DC | 47 |
| LCD Reset | 13 |
| DHT22 | 12 |
| Encoder A | 5 |
| Encoder B | 4 |
| Encoder Button | 1 |
| Buzzer | 48 |
| Relay 1 (Fan) | 15 |
| Relay 2 (Heater) | 16 |
- Visual Studio Code (VSCode) - Free code editor
- PlatformIO IDE Extension - Development platform for embedded systems
- USB drivers for ESP32-S3 (usually auto-installed)
- ESP32-S3-DevKitM-1 board
- USB Type-C cable (data-capable, not charge-only)
- MDS-01 hardware assembly
- Download VSCode from https://code.visualstudio.com/
- Run the installer and follow the prompts
- Launch VSCode after installation
- Open VSCode
- Click the Extensions icon in the left sidebar (or press
Ctrl+Shift+X) - Search for "PlatformIO IDE"
- Click Install on the PlatformIO IDE extension
- Wait for installation to complete (may take a few minutes)
- Restart VSCode when prompted
Option A: Using Git (Recommended)
git clone https://github.com/FracktalWorks/MDS-01-De-Humidifier.gitOption B: Download ZIP
- Go to the repository on GitHub
- Click the green "Code" button
- Select "Download ZIP"
- Extract the ZIP to your desired location
- Open VSCode
- Go to File → Open Folder
- Navigate to:
MDS-01-De-Humidifier/Production Code/Dehumidifier V2 - Click Select Folder
- PlatformIO will automatically detect the project
Dependencies are automatically installed when you build the project. The following libraries will be downloaded:
| Library | Version | Purpose |
|---|---|---|
| U8g2 | ^2.35.10 | LCD display driver |
| SimpleRotary | ^1.1.3 | Rotary encoder handling |
| Adafruit NeoPixel | ^1.12.0 | RGB LED control |
| Adafruit Unified Sensor | ^1.1.14 | Sensor abstraction |
| DHT sensor library | ^1.4.6 | Temperature/humidity sensor |
To manually trigger dependency installation:
- Click the PlatformIO icon (alien head) in the left sidebar
- Under PROJECT TASKS → esp32s3, click Build
- Wait for the build to complete (first build downloads all libraries)
- Connect the ESP32-S3 to your computer using a USB Type-C cable
- Windows should automatically install drivers
- Verify connection:
- Open Device Manager (Windows)
- Look for a new COM port under "Ports (COM & LPT)"
- Note the COM port number (e.g., COM3)
If the device is not recognized:
- Try a different USB cable (some cables are charge-only)
- Try a different USB port
- Install CP210x drivers if needed
- In VSCode, click the PlatformIO icon (alien head) in the left sidebar
- Under PROJECT TASKS → esp32s3, click Upload
- Or use the keyboard shortcut:
Ctrl+Alt+U - Or run in terminal:
pio run --target upload
- Wait for the upload to complete
- The ESP32 will automatically reboot with the new firmware
To view debug messages:
- Click PlatformIO icon → PROJECT TASKS → esp32s3 → Monitor
- Or use keyboard shortcut:
Ctrl+Alt+S - Or run in terminal:
pio device monitor
- Ensure USB cable supports data transfer
- Try holding the BOOT button while clicking Upload
- Check Device Manager for COM port
- Close any other programs using the COM port
- Try running VSCode as Administrator
- Check SPI wiring connections
- Verify pin definitions in
include/pins.h - Ensure LCD contrast is set correctly in code
- Check DHT22 wiring (VCC, GND, DATA)
- Ensure 10kΩ pull-up resistor on data line
- Sensor needs 2+ seconds between reads
- Check encoder pin connections
- Verify debounce delay setting
- Test encoder with simple example sketch
Dehumidifier V2/
├── platformio.ini # PlatformIO configuration
├── include/
│ └── pins.h # Pin definitions
├── src/
│ └── main.cpp # Main application code
├── lib/ # Private libraries (if any)
└── test/ # Unit tests (if any)
| Filament | Temperature | Dry Time |
|---|---|---|
| Custom | User-defined | User-defined |
| PLA | 50°C | 4 hours |
| ABS/ASA | 70°C | 6 hours |
| NYLON/PC | 80°C | 10 hours |
| PETG | 70°C | 10 hours |
| TPU | 80°C | 10 hours |
| PEEK | 100°C | 24 hours |
| ULTEM | 100°C | 24 hours |
Please see LICENSE file for details.
Contributions are welcome! Please open an issue or submit a pull request.
If you encounter any problems, please open an issue on GitHub.
For further details on configuration, contributing, or advanced features, see additional documentation or contact the maintainers.