An intelligent coconut drying system designed for the Southern Luzon State University (SLSU) Lucban BSME program. This Arduino-based embedded system provides automated temperature, humidity, and moisture control for efficient coconut drying operations using PID control algorithms and real-time sensor monitoring.
- Features
- System Architecture
- Hardware Components
- Software Dependencies
- Installation
- Usage
- Configuration
- Project Structure
- 3D Models and Manufacturing
- Technical Specifications
- Contributing
- License
- Developer
- Automated Drying Process: PID-controlled temperature regulation for optimal drying conditions
- Multi-Parameter Monitoring: Real-time tracking of temperature, humidity, and moisture levels
- Smart Control System: Automatic shutdown when target moisture levels are achieved
- User Interface: 20x4 LCD display with intuitive menu navigation
- Status Indicators: Real-time system status and operational feedback
- PID Control Algorithm: Precise temperature control using industry-standard PID implementation
- Sensor Integration: SHT31 temperature/humidity sensor and soil moisture monitoring
- Relay Control: Multiple solid-state relay (SSR) control for heating elements and fans
- Push Button Interface: Multi-button navigation system for parameter adjustment
- Serial Monitoring: Real-time debugging and monitoring via serial communication
The system employs a modular architecture with separate components for different functionalities:
CoconutDryer.ino (Main Controller)
├── LCD_CONFIG.h (Display Management)
├── SHT31_CONFIG.h (Temperature/Humidity Sensor)
├── SOIL_MOISTURE_CONFIG.h (Moisture Monitoring)
├── RELAY_CONFIG.h (Actuator Control)
├── PID_CONFIG.h (Control Algorithm)
├── BUZZER_CONFIG.h (Audio Feedback)
├── PUSH_BUTTON_CONFIG.h (User Input)
└── LIB.h (Utility Functions)
- Microcontroller: Arduino-compatible board (ESP32/Arduino Uno)
- Display: 20x4 I2C LCD (Address: 0x27)
- Temperature/Humidity Sensor: Adafruit SHT31 (I2C Address: 0x44)
- Moisture Sensor: Analog soil moisture sensor
- Relays: Multiple solid-state relays for heating elements and fans
- User Interface: Push button array for navigation
- Audio Feedback: Buzzer for system alerts
- Operating Voltage: 5V/12V (depending on relay configuration)
- Power Consumption: Variable based on heating element usage
- Backup Power: Optional battery backup for data retention
#include <LiquidCrystal_I2C.h> // LCD display control
#include <Adafruit_SHT31.h> // Temperature/humidity sensor
#include <PID_v1.h> // PID control algorithm
#include <Wire.h> // I2C communication- Arduino IDE 1.8.x or higher
- ESP32/Arduino board support packages
- Required libraries (installable via Arduino Library Manager)
- Circuit Assembly: Connect components according to the provided schematic
- Sensor Calibration: Calibrate moisture sensors for coconut-specific readings
- Relay Configuration: Set up solid-state relays for heating elements and fans
- Display Connection: Wire I2C LCD to appropriate pins
-
Clone Repository:
git clone https://github.com/qppd/coconut-dryer.git cd coconut-dryer -
Open Arduino IDE: Load
source/CoconutDryer/CoconutDryer.ino -
Install Dependencies: Install required libraries via Library Manager
-
Board Configuration: Select appropriate board and port
-
Upload Firmware: Compile and upload to microcontroller
- Power On: Connect power supply and initialize system
- Calibration: Allow sensors to stabilize (approximately 30 seconds)
- Parameter Setting: Use push buttons to set desired parameters:
- Temperature Setpoint: Default 60°C
- Humidity Setpoint: Default 20%
- Moisture Setpoint: Default 6%
- Standby Mode: System monitoring without active drying
- Drying Mode: Active temperature control and moisture monitoring
- Completion Mode: Automatic shutdown when target moisture is achieved
T:XX.X°C SP:XX.X°C
H:XX.X% SP:XX.X%
M:XX.X% SP:XX.X%
Status: [Standby/Drying]
Located in PID_CONFIG.h:
double THRESHOLD_1 = 4; // Proportional gain
double THRESHOLD_2 = 0; // Integral gain
double THRESHOLD_3 = 22; // Derivative gainModify calibration constants in respective configuration files:
- SHT31: Temperature offset adjustment
- Moisture sensor: Analog-to-percentage conversion
Default setpoints can be modified in main code:
double TEMPERATURE_SETPOINT = 60; // °C
double HUMIDITY_SETPOINT = 20; // %
double MOISTURE_SETPOINT = 6; // %coconut-dryer/
├── LICENSE # Project license
├── README.md # Project documentation
├── models/ # 3D models and manufacturing files
│ ├── gcode/ # G-code files for 3D printing
│ │ ├── Coconut_Dryer_Board_Mount.gcode
│ │ ├── Coconut_Dryer_Button_Lock.gcode
│ │ ├── Coconut_Dryer_Case_Cover.gcode
│ │ └── Coconut_Dryer_Case.gcode
│ └── stl/ # STL files for 3D printing
└── source/ # Source code
└── CoconutDryer/ # Main Arduino project
├── CoconutDryer.ino # Main program file
├── BUZZER_CONFIG.h # Audio feedback configuration
├── LCD_CONFIG.h # Display configuration
├── LIB.h # Utility functions
├── PID_CONFIG.h # PID control configuration
├── PUSH_BUTTON_CONFIG.h # Input handling
├── RELAY_CONFIG.h # Actuator control
├── SHT31_CONFIG.h # Temperature/humidity sensor
├── SOIL_MOISTURE_CONFIG.h # Moisture sensor configuration
├── include/ # Header files
│ ├── LCDController.h
│ ├── MoistureSensor.h
│ ├── RelayController.h
│ └── TemperatureHumiditySensor.h
└── src/ # Implementation files
├── LCDController.cpp
├── MoistureSensor.cpp
├── RelayController.cpp
└── TemperatureHumiditySensor.cpp
The project includes complete 3D models for manufacturing:
- Board Mount: Secure mounting for electronic components
- Button Lock: User interface protection and organization
- Case Cover: Protective housing for the control system
- Main Case: Primary enclosure for all components
- STL Files: Ready for 3D printing on standard FDM printers
- G-code Files: Pre-sliced for common 3D printer configurations
- Material Recommendations: PLA or PETG for durability and temperature resistance
- Temperature Range: 0-100°C (sensor range)
- Humidity Range: 0-100% RH
- Moisture Detection: Analog sensing with percentage conversion
- Control Precision: ±0.1°C temperature control
- Response Time: <60 seconds for temperature stabilization
- Serial: 9600 baud rate for debugging and monitoring
- I2C: For sensor and display communication
- Digital I/O: Push button inputs and relay outputs
- Loop Interval: 500ms for real-time monitoring
- PID Update Rate: Synchronized with main loop
- Display Refresh: Real-time parameter updates
- Auto-completion: Moisture-based process termination
We welcome contributions to improve the Coconut Dryer project. Please follow these guidelines:
- Fork the repository
- Create a feature branch
- Make your changes with proper documentation
- Test thoroughly with hardware setup
- Submit a pull request with detailed description
- Follow Arduino coding conventions
- Document all functions and major code blocks
- Test with actual hardware before submission
- Maintain backward compatibility when possible
This project is open source and available under the MIT License.
Sajed Lopez Mendoza - Full Stack Developer & IoT Specialist
- Location: Unisan, Quezon Province, Philippines
- Specialization: Embedded Systems, IoT Development, Full-Stack Web Development
- Experience: Freelance Developer at QPPD (Quezon Province Programmers/Developers)
- Education: Southern Luzon State University (SLSU) Lucban
- Embedded Systems: ESP32, Arduino, Raspberry Pi development
- IoT Solutions: Sensor integration, real-time monitoring systems
- Hardware Integration: 3D printing, PCB design, solar power systems
- Programming: C/C++, Python, JavaScript, PHP, Java
- Machine Learning: TensorFlow, AI-powered applications
- Mobile Development: Android applications with hardware integration
- IoT Smart Fan: Intelligent climate control system
- IoT Bike Tracker: Solar-powered GPS tracking solution
- CNC Jog Trainer: GRBL-based CNC machine controller
- Smart Cabinet: Advanced automated storage solution
- Umbrella Holder: PID-controlled drying system
- Email: quezon.province.pd@gmail.com
- GitHub: github.com/qppd
- Portfolio: sajed-mendoza.onrender.com
- Facebook: facebook.com/qppd.dev
- Community: facebook.com/QUEZONPROVINCEDEVS
Project Status: Finished | Last Updated: November 2025 | Version: 1.0