Calibrate sensors before final enclosure assembly for best results
-
Setup:
- Connect multimeter to light sensor output (A0)
- Use smartphone light meter app as reference
-
Procedure:
Condition Expected Voltage Calibration Value Complete dark 0V → 0% darkValue = analogRead(A0)100,000 lux 3.3V → 100% brightValue = analogRead(A0) -
Update Code:
// In sensors.cpp float sunlight = map(analogRead(LIGHT_SENSOR_PIN), darkValue, brightValue, 0, 100);
-
Leave sensor completely dry for 24 hours
Dry baseline: # Serial monitor command > CAL_RAIN DRY > Value saved: 582
-
Submerge sensor in distilled water
Wet baseline: > CAL_RAIN WET > Value saved: 183
| Rainfall | Expected Reading | Adjustment |
|---|---|---|
| 1mm | 15-20% | Increase sensitivity if <15% |
| 5mm | 60-70% | Decrease if >80% |
// In takeMeasurements()
int rainRaw = analogRead(RAIN_SENSOR_PIN);
data.rainfall = constrain(map(rainRaw, dryValue, wetValue, 0, 100), 0, 100);-
Ice Bath Test:
- Submerge sensor in 0°C ice slurry
- Record temperature offset:
tempOffset = measuredTemp - 0.0; -
Body Test:
- Hold sensor in hand (should read 32-36°C)
- Adjust if deviation >0.5°C
- Measure current draw with multimeter
- Adjust sleep cycles in
power_manager.h:// Current: 0.45mA (good) // Target battery life: 6 months uint8_t cycles = minutes * 7.5; // 8s/cycle
- Balance between data frequency and battery life