Problem:
In rock climbing, when ascending a natural rock face, rock climbers use a technique called lead climbing. This is different from toprope climbing, where the rope is already tethered to the top of the route. Here, the lead climber brings the rope up the rock surface with them.
(Source)
More details about lead climbing can be found here.
Due to the physical position of the belayer, it is incredibly tiring for them to continuously keep a lookout on the climber. Sometimes, this is even impossible if there are outcrops of rock that occludes the belayer’s line of sight.
There are some tools today such as belay glasses that try to relieve the neck strain of belayers, but it is still a tiring job and it’s incredibly easy to make a mistake, when you take your eyes off of the climber or look down for a break.
In fact, it is so tedious and strenuous that lots of pro climbers get into accidents and falls often while lead climbing. How can we provide visual feedback to help reduce incidence of accidents and injury?
Solution:
Creating a system of visual feedback where there’s an indicator signaling how high or low the tension is in the rope. Compared to regular toprope, there is little physical feedback on the belayer on how taut the lead climber’s rope actually is. By introducing more indicators on the belay device, the belayer will be more aware of the rope tension as this feedback will be visible within their line of sight, and on the belay device.
(Source)
Part 1: Preventing falling
(Source)
One of the greatest causes of accidents is slow or absent braking when the lead climber falls. At all times, except when letting in more rope, the belayer should apply friction to the right side of the belay device to act as an emergency brake. In this visual feedback system, if there is insufficient tension applied, a red light will start blinking. Once it is pulled taut enough to withstand a fall from the lead climber, it will stop blinking.
Part 2: Slack awareness
One of the other most important factors in lead climbing is providing the lead climber with the appropriate amount of slack. If it’s too little, they can’t stretch or move far enough to progress. If it’s too much, they run the risk of a highly injurious fall if they do end up slipping. By introducing a color indicator of the range of rope tension, we enable belayers to better monitor this more closely and make adjustments more quickly. As the tension moves low to high, the range is indicated on the row of lights.
Side view, for better view of colors in visual feedback:
Front view demo of the whole system:
Schematic:
Code:
#define belayLeft 1 //left pot #define belayRight 0 //right pot //to store tension on upward and downard tension on belay device int upwardPull = 0; int downwardPull = 0; //LED pins in a row, left int Blue1 = 3; int Blue2 = 4; int Green1 = 5; int Green2 = 6; int Yellow1 = 7; int Yellow2 = 8; //Blinking LED, right int R1 = 9; void setup() { Serial.begin(9600); pinMode(Blue1, OUTPUT); pinMode(Blue2, OUTPUT); pinMode(Green1, OUTPUT); pinMode(Green2, OUTPUT); pinMode(Yellow1, OUTPUT); pinMode(Yellow2, OUTPUT); pinMode(R1, OUTPUT); // put your setup code here, to run once: } void loop() { // read tension on both sides of belay device upwardPull = analogRead(belayLeft); downwardPull = analogRead(belayRight); //show range of tension in upwards belay if (upwardPull <= 50){ digitalWrite(Blue1, HIGH); digitalWrite(Blue2, LOW); digitalWrite(Green1, LOW); digitalWrite(Green2, LOW); digitalWrite(Yellow1, LOW); digitalWrite(Yellow2, LOW); } else if (upwardPull > 50 && upwardPull <= 100){ digitalWrite(Blue1, HIGH); digitalWrite(Blue2, HIGH); digitalWrite(Green1, LOW); digitalWrite(Green2, LOW); digitalWrite(Yellow1, LOW); digitalWrite(Yellow2, LOW); } else if (upwardPull > 100 && upwardPull <= 150){ digitalWrite(Blue1, HIGH); digitalWrite(Blue2, HIGH); digitalWrite(Green1, HIGH); digitalWrite(Green2, LOW); digitalWrite(Yellow1, LOW); digitalWrite(Yellow2, LOW); } else if (upwardPull > 150 && upwardPull <= 200){ digitalWrite(Blue1, HIGH); digitalWrite(Blue2, HIGH); digitalWrite(Green1, HIGH); digitalWrite(Green2, HIGH); digitalWrite(Yellow1, LOW); digitalWrite(Yellow2, LOW); } else if (upwardPull > 200 && upwardPull <= 220){ digitalWrite(Blue1, HIGH); digitalWrite(Blue2, HIGH); digitalWrite(Green1, HIGH); digitalWrite(Green2, HIGH); digitalWrite(Yellow1, HIGH); digitalWrite(Yellow2, LOW); } else if (upwardPull > 220){ digitalWrite(Blue1, HIGH); digitalWrite(Blue2, HIGH); digitalWrite(Green1, HIGH); digitalWrite(Green2, HIGH); digitalWrite(Yellow1, HIGH); digitalWrite(Yellow2, HIGH); } //Red LED blinks if safety is not 'on' if (downwardPull < 100){ digitalWrite(R1, HIGH); delay(100); digitalWrite(R1, LOW); delay(100); }else{ digitalWrite(R1, LOW); } // debugging // Serial.print(" left side of belay device "); Serial.println(upwardPull); // Serial.print(" right side of belay device"); // Serial.println(downwardPull); }