Wet finger skin shoes
Texture rises when safety matters most
Credit to ChatGPT and Egor Koynov
We are biomimicing human skin on the fingers
What are we biomimicing?
Create wrinkles
Improving grip wet objects by channeling water away.
Human hands wrinkle when wet due to an autonomic nervous system response that constricts blood vessels beneath the skin, causing the tissue to shrink and form ridges
How does it work?
We are implying this to make the shoes surface mor grippy.
Problem
People are slipping on the smooth surface when it is wet.
Or Elderly could slip particulary
Solution
Create a surface that is smooth when dry and has bumps for improved friction when wet. Helps the elderly
Conceptual Precedent
Technical Precedent
Sketch
1st prototype
2nd prototype
Next Steps
Start writing code for the Aurdione connect to moisture sencor.
Consider a better way to create a grip with shoes when the surface is wet.
Additional Idea
Mid Review Feedback
Change from switching the ground to a shoe
then a different switch
ChatGpt feedback
Chat GPT usage
Post Mid Review Iteration 1
Post Mid Review initial iterations
#include <Stepper.h>
const int stepsPerRevolution = 2048;
// IN1, IN3, IN2, IN4
Stepper myStepper(stepsPerRevolution, 8, 11, 10, 12);
void setup() {
Serial.begin(9600);
Serial.println("Stepper motor test starting...");
myStepper.setSpeed(10); // RPM
}
void loop() {
Serial.println("Turning clockwise");
myStepper.step(2048);
delay(1000);
Serial.println("Turning counterclockwise");
myStepper.step(-2048);
delay(1000);
}
Code evolution
#include <Stepper.h>
const int stepsPerRevolution = 2048;
Stepper myStepper(stepsPerRevolution, 8, 11, 10, 12);
const int waterSensorPin = 2; // digital water sensor pin
void setup() {
Serial.begin(9600);
Serial.println("Stepper motor water demo starting...");
pinMode(waterSensorPin, INPUT);
myStepper.setSpeed(10); // RPM
}
void loop() {
int sensorState = digitalRead(waterSensorPin);
if (sensorState == HIGH) { // wet
Serial.println("Sensor wet! Motor spinning for 5 seconds...");
unsigned long startTime = millis();
while (millis() - startTime < 5000) { // spin for 5 seconds
myStepper.step(1); // one step at a time for smooth motion
}
Serial.println("Motor stopped.");
}
else { // dry
Serial.println("Sensor dry. Motor stopped.");
delay(500); // small delay to avoid flooding the serial monitor
}
}
#include <Stepper.h>
const int stepsPerRevolution = 2048;Stepper myStepper(stepsPerRevolution, 8, 11, 10, 12);
const int waterSensorPin = A1; // analog water sensor pinconst int threshold = 300;
void setup() { Serial.begin(9600); Serial.println("Stepper motor water direction demo starting...");
myStepper.setSpeed(10); // RPM}
void loop() { int sensorValue = analogRead(waterSensorPin);
Serial.print("Water sensor value: "); Serial.println(sensorValue);
unsigned long startTime = millis();
if (sensorValue > threshold) { Serial.println("Wet detected → Clockwise for 5 seconds");
while (millis() - startTime < 5000) { myStepper.step(1); // clockwise } } else { Serial.println("Dry detected → Counterclockwise for 5 seconds");
while (millis() - startTime < 5000) { myStepper.step(-1); // counterclockwise } }
Serial.println("Motor stopped.\n"); delay(1000); // pause before next reading}
#include <Stepper.h>
const int stepsPerRevolution = 2048;
Stepper myStepper(stepsPerRevolution, 8, 11, 10, 12);
const int waterSensorPin = A1;
const int threshold = 300;
bool lastWetState = false; // remembers previous state
void setup() {
Serial.begin(9600);
Serial.println("Stepper motor water direction demo starting...");
myStepper.setSpeed(10); // RPM
}
void loop() {
int sensorValue = analogRead(waterSensorPin);
bool isWet = sensorValue > threshold;
Serial.print("Water sensor value: ");
Serial.println(sensorValue);
// ✅ Detect state change
if (isWet != lastWetState) {
unsigned long startTime = millis();
if (isWet) {
Serial.println("Wet detected → Clockwise for 5 seconds");
while (millis() - startTime < 5000) {
myStepper.step(1); // clockwise
}
} else {
Serial.println("Dry detected → Counterclockwise for 5 seconds");
while (millis() - startTime < 5000) {
myStepper.step(-1); // counterclockwise
}
}
Serial.println("Motor stopped.\n");
// ✅ Update last state AFTER motor action
lastWetState = isWet;
}
delay(200); // small delay to reduce sensor noise
}
Final wiring and code
Battery port
Nano Arduino
Water sensor
Stepper motor
Tinker unit 3d print
with very little help from Mr Bansiter
Shoe Add-on
Sole cover with bumps
Rim of shoe lining
Shin cover
Video of shoe
Video of arduino/motor
A picture in the booth of final project
Final Project
Thank you
To Mr. Danziger, Mr. Lew, Mr. Banister and Ms. Maiurano for helping us with our project