Important NoteThis entire repo was AI created - including all of the data within. The intent was to A) help me with my personal electronics inventory; and B) see how I could use AI to make that process a bit easier. DO NOT TRUST!
Water Level and Soil Moisture Sensors
Collection of water detection and soil moisture sensors for irrigation systems, plant monitoring, and environmental sensing applications.
Overview
This collection includes water level sensors and soil moisture sensors designed for agricultural, gardening, and environmental monitoring applications. These sensors provide both analog and digital outputs for detecting water presence and measuring soil moisture content.
Included Sensors
Funduino Water Level Sensors (5)
Drop Sensor Water Level Sensor for Microcontroller
Key Features
- Water detection through conductivity measurement
- Analog output proportional to water level/coverage
- Digital output with adjustable threshold
- Corrosion-resistant gold-plated traces
- Compact design for easy integration
- Wide voltage range operation
Technical Specifications
- Operating Voltage: 3.3V to 5V
- Output Type: Analog (0-VCC) and Digital (HIGH/LOW)
- Detection Area: Graduated sensing traces
- Response Time: <1 second
- Operating Temperature: -10°C to +85°C
- Dimensions: Approximately 62mm × 20mm × 8mm
Applications
- Water tank level monitoring
- Rain detection systems
- Flood warning systems
- Irrigation control automation
- Leak detection in appliances
YL-69/HL-69 Soil Moisture Sensors (4)
Capacitive and Resistive Soil Moisture Sensors
Key Features
- Soil moisture measurement through conductivity
- Analog output proportional to moisture content
- Digital output with adjustable sensitivity
- Probe design for soil insertion
- Weather-resistant construction
- Easy calibration for different soil types
Technical Specifications
- Operating Voltage: 3.3V to 5V
- Output Type: Analog (0-VCC) and Digital (HIGH/LOW)
- Probe Length: 60mm typical
- Sensing Depth: 0-60mm in soil
- Response Time: 1-2 seconds
- Operating Temperature: -40°C to +85°C
- Humidity Range: 0-100% RH
Sensor Types
- Resistive Type: Measures soil conductivity between probes
- Capacitive Type: Measures dielectric constant changes
- Both types provide similar functionality with different sensing methods
Technical Specifications Comparison
Water Level Sensors
| Parameter | Specification |
|---|---|
| Detection Method | Conductivity between traces |
| Sensitivity | Variable based on water coverage |
| Output Range | 0V (dry) to VCC (fully wet) |
| Threshold | Adjustable via potentiometer |
| Response Time | <1 second |
| Durability | Gold-plated for corrosion resistance |
Soil Moisture Sensors
| Parameter | Specification |
|---|---|
| Detection Method | Soil conductivity/capacitance |
| Moisture Range | 0% (dry) to 100% (saturated) |
| Output Range | 0V (wet) to VCC (dry) - inverted |
| Calibration | Adjustable sensitivity |
| Probe Material | Nickel-plated or stainless steel |
| Insertion Depth | Up to 60mm |
Applications
Agricultural Monitoring
- Automated irrigation systems
- Greenhouse monitoring for optimal plant growth
- Field crop moisture monitoring
- Hydroponic systems water level control
- Precision agriculture data collection
Home and Garden
- Smart plant watering systems
- Garden irrigation automation
- Houseplant monitoring for proper care
- Lawn sprinkler control systems
- Rain garden water management
Environmental Monitoring
- Soil research and analysis
- Weather station precipitation measurement
- Flood monitoring and early warning
- Water conservation systems
- Environmental data logging
Industrial Applications
- Process water level monitoring
- Leak detection in industrial systems
- Agricultural automation equipment
- Water treatment facility monitoring
- Storage tank level indication
Programming Examples
Water Level Sensor with Arduino
const int waterSensorPin = A0; // Analog pin for water sensor
const int digitalPin = 2; // Digital pin for threshold
const int ledPin = 13; // LED indicator
void setup() {
pinMode(digitalPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int analogValue = analogRead(waterSensorPin);
int digitalValue = digitalRead(digitalPin);
// Convert to percentage (0-100%)
int waterLevel = map(analogValue, 0, 1023, 0, 100);
Serial.print("Water Level: ");
Serial.print(waterLevel);
Serial.print("% (");
Serial.print(analogValue);
Serial.print(") - Digital: ");
Serial.println(digitalValue ? "WET" : "DRY");
// Control LED based on water detection
digitalWrite(ledPin, digitalValue);
delay(500);
}Soil Moisture Sensor with Irrigation Control
const int moistureSensorPin = A1; // Analog pin for soil moisture
const int pumpRelayPin = 7; // Relay control for water pump
const int dryThreshold = 300; // Threshold for dry soil (0-1023)
const int wetThreshold = 600; // Threshold for wet soil (0-1023)
bool pumpRunning = false;
void setup() {
pinMode(pumpRelayPin, OUTPUT);
digitalWrite(pumpRelayPin, LOW); // Pump off initially
Serial.begin(9600);
}
void loop() {
int moistureValue = analogRead(moistureSensorPin);
// Convert to moisture percentage (inverted - lower value = more moisture)
int moisturePercent = map(moistureValue, 1023, 0, 0, 100);
Serial.print("Soil Moisture: ");
Serial.print(moisturePercent);
Serial.print("% (Raw: ");
Serial.print(moistureValue);
Serial.print(")");
// Control irrigation based on moisture level
if (moistureValue > dryThreshold && !pumpRunning) {
// Soil is dry, start pump
digitalWrite(pumpRelayPin, HIGH);
pumpRunning = true;
Serial.println(" - PUMP ON (Soil Dry)");
} else if (moistureValue < wetThreshold && pumpRunning) {
// Soil is wet enough, stop pump
digitalWrite(pumpRelayPin, LOW);
pumpRunning = false;
Serial.println(" - PUMP OFF (Soil Wet)");
} else {
Serial.print(" - PUMP ");
Serial.println(pumpRunning ? "ON" : "OFF");
}
delay(1000);
}Multi-Sensor Monitoring System
const int numSensors = 4;
const int sensorPins[numSensors] = {A0, A1, A2, A3};
const char* sensorNames[numSensors] = {"Plant 1", "Plant 2", "Plant 3", "Water Tank"};
const int sensorTypes[numSensors] = {1, 1, 1, 0}; // 1=soil, 0=water
void setup() {
Serial.begin(9600);
Serial.println("Multi-Sensor Monitoring System");
Serial.println("==============================");
}
void loop() {
for (int i = 0; i < numSensors; i++) {
int rawValue = analogRead(sensorPins[i]);
int percentage;
if (sensorTypes[i] == 1) {
// Soil moisture sensor (inverted)
percentage = map(rawValue, 1023, 0, 0, 100);
Serial.print(sensorNames[i]);
Serial.print(" Moisture: ");
} else {
// Water level sensor
percentage = map(rawValue, 0, 1023, 0, 100);
Serial.print(sensorNames[i]);
Serial.print(" Level: ");
}
Serial.print(percentage);
Serial.print("% (");
Serial.print(rawValue);
Serial.println(")");
}
Serial.println("------------------------------");
delay(2000);
}Calibration and Setup
Water Level Sensor Calibration
- Dry calibration: Record reading with sensor completely dry
- Wet calibration: Record reading with sensor fully submerged
- Threshold adjustment: Set digital output threshold via potentiometer
- Environmental testing: Test in actual deployment conditions
- Corrosion check: Inspect traces for corrosion over time
Soil Moisture Sensor Calibration
- Dry soil calibration: Test in completely dry soil
- Saturated soil calibration: Test in water-saturated soil
- Soil type adjustment: Calibrate for specific soil composition
- Depth consideration: Account for probe insertion depth
- Temperature compensation: Consider temperature effects on readings
Installation Best Practices
- Proper insertion: Insert probes fully into soil
- Avoid air gaps: Ensure good soil contact around probes
- Consistent depth: Maintain same insertion depth for repeatability
- Multiple sensors: Use multiple sensors for area coverage
- Protection: Protect electronics from moisture and weather
Design Considerations
Power Management
- Low power operation: Use sleep modes for battery applications
- Supply voltage: Ensure stable power supply
- Current consumption: Minimize power for long-term deployment
- Solar charging: Consider solar power for remote installations
Environmental Protection
- Waterproofing: Protect electronics while allowing sensor exposure
- Corrosion resistance: Use appropriate materials for wet environments
- Temperature range: Design for expected operating conditions
- UV protection: Shield from direct sunlight if needed
Signal Processing
- Analog filtering: Implement noise filtering for stable readings
- Digital thresholds: Set appropriate trigger levels
- Hysteresis: Implement to prevent oscillation around thresholds
- Calibration storage: Store calibration values in EEPROM
Troubleshooting
Common Issues
- Erratic readings: Check for loose connections or corrosion
- No response: Verify power supply and wiring
- False triggers: Adjust sensitivity or add filtering
- Corrosion: Clean or replace corroded sensors
Maintenance
- Regular cleaning: Remove soil and debris from sensors
- Corrosion inspection: Check for trace degradation
- Calibration verification: Periodic recalibration
- Connection check: Ensure secure electrical connections
Advantages and Limitations
Advantages
- Simple interface: Easy analog and digital outputs
- Cost effective: Inexpensive for basic monitoring
- Immediate response: Fast detection of water/moisture changes
- Wide compatibility: Works with most microcontrollers
- Adjustable sensitivity: Customizable threshold settings
Limitations
- Corrosion susceptibility: Metal traces can corrode over time
- Soil type dependency: Readings vary with soil composition
- Limited precision: Basic sensors with moderate accuracy
- Maintenance required: Regular cleaning and calibration needed
- Environmental sensitivity: Affected by temperature and salinity
Storage Information
- Location: Cabinet 3, Bin 30
- Quantity: 9 sensors total (5 water level, 4 soil moisture)
- Condition: New, unused sensors
- Variety: Different types and manufacturers
- Applications: Irrigation, agriculture, environmental monitoring