Introduction: How to Make an Arduino Walking Stick for the Blind

This project is a little different from my others. I saw a blind man walking on the street using a white cane. He used it to scan his surroundings for objects or obstacles. I realized how outdated this invention was and decided to make some improvements on my own part.

Instead of having to tap onto objects with the white cane, I decided to make a cane where the handle would vibrate whenever you got within close proximity of an object. This way, the blind man/woman would be able to stroll around much more easily because he/she wouldn't have any direct encounters with objects.

The video above shows what the walking stick does. The handle of the walking stick vibrates as you approach an object. In this case, our obstacle is a wall. The audio quality isn't too good, so you can't really hear the motors vibrating. However, the motors are vibrating and you can definitely feel them vibrating on your hand as you approach an object.

To complete this project you will need these materials:

- Ski Pole (this will be our cane)

- Arduino Uno

- 3 Adafruit Vibrating Mini Motors

- HR-SR 04 Ultrasonic Sensor

- Breadboard

- Jumper wires for Arduino

Step 1: The Circuitry

HC-SR04 Ultrasonic Sensor:

- VCC Pin to Arduino 5V

- GND Pin to Arduino GND

- Echo pin to Arduino Pin 10

- Trig pin to Arduino Pin 11

Vibrating Buzzer 1:

- One cable should go to GND

- The remaining cable should go to Pin 3

Vibrating Buzzer 2:
- One cable should go to GND

- The remaining cable should go to Pin 4

Vibrating Buzzer 3:
- One cable should go to GND

- The remaining cable should go to Pin 5

Step 2: The Code

#define echoPin 10 // Echo Pin

#define trigPin 11 // Trigger Pin

#define BuzzerPin 3 //buzzer goes to pin 3

#define BuzzerPinTwo 4 //buzzer2 goes to pin 4

#define BuzzerPinThree 5 //buzzer3 goes to pin 5

int maximumRange = 50; // Maximum range needed

int proximalRange = 5; // Proximal range needed

int minimumRange = 0; // Minimum range needed

long duration, distance; // Duration used to calculate distance

void setup() {

Serial.begin (9600);

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

pinMode(BuzzerPin, OUTPUT);

pinMode(BuzzerPinTwo, OUTPUT);

pinMode(BuzzerPinThree, OUTPUT); }

void loop() {

digitalWrite(trigPin, LOW); delayMicroseconds(2);

digitalWrite(trigPin, HIGH); delayMicroseconds(10);

digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH);

distance = duration/58.2;

if (distance >= minimumRange and distance <= proximalRange){

Serial.println("there is something here");

digitalWrite(BuzzerPin,HIGH);

digitalWrite(BuzzerPinTwo,HIGH);

digitalWrite(BuzzerPinThree,HIGH); }

if (distance > maximumRange){

Serial.println("object is too far away");

digitalWrite(BuzzerPin,LOW);

digitalWrite(BuzzerPinTwo,LOW);

digitalWrite(BuzzerPinThree,LOW);

} }

Step 3: Putting It All Together

This final step varies from person to person. Once you have the circuitry completed, and you've downloaded the code onto the Arduino, then you're ready to attach everything to the ski pole. Since everyone's ski pole is different, I can't give you an exact tutorial as to how you should attach all your electronics onto it. I used a 3d printed box which I attached onto the ski pole to hold all of my electronics. I then used cardboard and some nails to attach the ultrasonic sensor. You can use the images above for help if you're a little stuck on this part of the project.

Step 4: Power Source

The final step is to simply connect a power source to your Arduino. I used a rechargeable battery and simply connected it to my Arduino.