Walking Stick For the Visually Impaired
My project is a Smart Walking Stick for the Visually Impaired. It helps the visually people cross streets, navigate potential obstacles, and helps them go about their day! It has a ultrasonic sensor that detects objects and plays a higher sound the closer the object is. I also have a water sensor attached to detect puddles. However, none of this could be possible without me joining Bluestamp. I joined Bluestamp to bridge the gap between my software engineering background and the tangible world of hardware. Working with an Arduino, connecting wires, experimenting with resistors, and integrating various sensors was a thrilling new challenge that pushed me to expand my engineering skill set.
Engineer | School | Area of Interest | Grade |
---|---|---|---|
Saanvi P. | The Bishop’s School | Engineering | Incoming Freshman |
Final Milestone
Since my previous milestone, I actually put all my wires and sensors together in a usable product that people can use. I placed the Arduino, breadboard, speaker, and vibrating module in the box; the ultrasonic and water sensors were outside of the box. Now, this cane can be used by a user. This wouldn’t have been possible through everything I learned at BSE. I learned how to use an Arduino, attach different wires into the breadboard, how different sensors work, and how to code using the Arduino language. This was a hands-on approach I had never experienced while engineering. In the future, I hope to take all the knowledge I learned at BSE to improve my current project by adding more sensors and creating new projects.
Second Milestone
I have worked on many things for this milestone. I added a sound that changes based on how far the object is. For example, if an object is detected less than 14cm away a different sound will play than a object detected 27cm away. Another thing I added for this milestone was my water sensor to help detect puddles. It will print on the serial moniter on the computer of how deep the water is. For my next steps I plan to add actual serial moniter (not just my computer) and attach it to my walking stick. If I have enough time, I will try to add a temparature sensor. One challenge that I faced was using my water sensor. The readings were the exact opposite of what I wanted them to be. When it was out of the water, the readings were supposed to be low and high inside the water. However, it was the exact opposite for me. I solved this by changing the code to fit this. When the sensor read a low number, I coded it so that the serial moniter would print that something was in the water.
First Milestone
I have completed my first milestone! I have finished the wiring of the different components such as the arduino, ultrasonic sensor, and the vibrating motor. This code continuously measures the distance using an ultrasonic sensor. If an object is detected within a certain range, the code activates the motor and sounds the buzzer as an alarm. The delay between measurements prevents overwhelming the sensor and allows for smoother operation. Next, I plan to find a way to store all of this wiring into a box, so that it can be attached to the walking cane. I also plan to add a speech when an object is a certain distance away, not just a loud buzzing noise.
Schematics
Code
#define trigPin 11
#define echoPin 12
#define motor 7
#define buzzer 3
#define switchPin 5
const int read = A1; //Sensor AO pin to Arduino pin A0
int value;
long duration, cm;
#include"pitches.h"
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(motor, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(switchPin, OUTPUT);
pinMode(read,INPUT);
}
void loop() {
// Calculate distance
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
cm = microsecondsToCentimeters(duration);
if(cm <= 14 )
{
tone(switchPin, 784);
digitalWrite(switchPin, HIGH);
delay(1000);
Serial.println("in condition 1");
digitalWrite(motor,HIGH); // When the the distance below 100cm
digitalWrite(buzzer,HIGH);
}
else if(cm <= 24)
{
tone(switchPin, 698);
delay(1000);
Serial.println("in condition 2");
digitalWrite(motor,HIGH); // When the the distance below 100cm
digitalWrite(buzzer,HIGH);
}
else if(cm <= 34 )
{
tone(switchPin, 659);
delay(1000);
Serial.println("in condition 3");
digitalWrite(motor,HIGH); // When the the distance below 100cm
digitalWrite(buzzer,HIGH);
}
else if(cm <= 44)
{
tone(switchPin, 587);
delay(1000);
Serial.println("in condition 4");
digitalWrite(motor,HIGH); // When the the distance below 100cm
digitalWrite(buzzer,HIGH);
}
else if(cm <= 55 )
{
tone(switchPin, 523);
delay(1000);
Serial.println("in condition 5");
digitalWrite(motor,HIGH); // When the the distance below 100cm
digitalWrite(buzzer,HIGH);
}
else if(cm <= 65 )
{
tone(switchPin, 494);
delay(1000);
Serial.println("in condition 6");
digitalWrite(motor,HIGH); // When the the distance below 100cm
digitalWrite(buzzer,HIGH);
}
else
{
noTone(switchPin);
digitalWrite(switchPin, LOW);
}
delay(100);
value = analogRead(read);
Serial.println(value);
if (value >=540){
Serial.println("Water level: 0mm - Empty!");
}
else if (value>220 && value<=260){
Serial.println("Water level: 0mm to 5mm");
}
else if (value>185 && value<=220){
Serial.println("Water level: 5mm to 10mm");
}
else if (value>177 && value<=185){
Serial.println("Water level: 10mm to 15mm");
}
else if (value>172 && value<=176){
Serial.println("Water level: 15mm to 20mm");
}
else if (value>168 && value<=171){
Serial.println("Water level: 20mm to 25mm");
}
}
long microsecondsToCentimeters(long microseconds) {
return microseconds / 29 / 2;
}
Bill of Materials
Part | Note | Price | Link |
---|---|---|---|
ELEGOO UNO Project Super Starter Kit | Wiring,Arduino | $44.99 | Link |
8-Count 9 Volt Alkaline Performance All-Purpose Batteries | Power | $12.36 | Link |
Walking Cane | Base for project | $10.99 | Link |
Vibrating Motor Module | To alert user | $8.69 | Link |
Wire Screw Terminal Block Connector | Connecting thin wires | $11.99 | Link |
Rain Drops Sensor | Sensing Puddles | $6.49 | Link |
Temparature Sensor | Detecting between sidewalk and road | $14.99 | Link |
Speaker | Amplifying sound | $6.99 | Link |
Color Recognition Sensor | Detecting Trash | $13.99 | Link |
Box | To hold all of my components | $8.99 | Link |
Serial Monitor | To display puddle depth | $9.99 | Link |