Overview
The cane samples conditions near the ground and responds through touch.
The sensing and control hardware is mounted directly to the cane. An Arduino reads three sensors, calculates an ice score, and raises a physical indicator when that score crosses the detection threshold. The indicator remains raised briefly so a short detection is still noticeable.
Detection loop
Three readings feed one decision.
-
01
Temperature / TMP36
A drop from the calibrated temperature earns 35 points per degree, capped at 70 points.
-
02
Clear channel / TCS34725
A clear-channel drop of at least 150 from baseline adds 30 points.
-
03
Infrared
A triggered infrared input adds another 10 points.
Threshold score
score >= 50
Ice detected
Servo feedback
45 degrees Held for 1.5 secondsRuntime diagnostics
Each sensor's contribution is visible in the serial output.
The firmware prints the current readings, their baselines, each calculated drop, and the final score. This made it possible to trace a detection back to the inputs that caused it.
New baseline -> Temp: 21.50 C, C: 820.0
System started
TempC: 21.20 | BaselineTemp: 21.50 | TempDrop: 0.30 | TempScore: 10 | C: 790 | BaselineC: 820.0 | CDrop: 30.0 | IR: 1 | Score: 10 | no ice
TempC: 20.00 | BaselineTemp: 21.50 | TempDrop: 1.50 | TempScore: 52 | C: 650 | BaselineC: 820.0 | CDrop: 170.0 | IR: 0 | Score: 92 | ICE DETECTED
Skipped recalibration because conditions may indicate ice
Baseline recalibration
At startup, the firmware averages ten temperature and clear-channel samples to establish its baselines. It checks those baselines again every 30 seconds, but recalibrates only when the temperature drop is below 1 degree Celsius and the clear-channel drop is below 80. If the current readings could indicate ice, the recalibration is skipped instead of treating the hazard as the new normal.
Outcome
Third place at EngHacks.
Our four-person team designed, assembled, and programmed the working prototype within the 12-hour event.