Welcome to Hackster!
Hackster is a community dedicated to learning hardware, from beginner to pro. Join us, it's free!
Shaukatali HusseinSahil AbdulalimSaid Kassim
Published © GPL3+

Smart Mobility Stick

Assistive guide stick allowing people with visual impairments to manoeuvre around on a daily basis

BeginnerFull instructions provided3 hours414
Smart Mobility Stick

Things used in this project

Hardware components

Seeed Studio seed mini vibrating motor
×1
Grove - Ultrasonic Ranger
Seeed Studio Grove - Ultrasonic Ranger
×1
Arduino Nano R3
Arduino Nano R3
×1
Buzzer
Buzzer
×1
Jumper wires (generic)
Jumper wires (generic)
×1
9V battery (generic)
9V battery (generic)
×1
Grove Base Shield V2.0 for Arduino
Seeed Studio Grove Base Shield V2.0 for Arduino
×1

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Tape, Clear
Tape, Clear
wooden stick
Hot glue gun (generic)
Hot glue gun (generic)

Story

Read more

Schematics

Wiring Schematic

If you are using the generic HC-SR04 ultrasonic sensor, use this code

Code

Code 1

Arduino
Using Generic Ultrasonic Sensor
int trigpin=12;
int echopin=11;

long distance, duration;

int buzzer =3;
int motor =2;

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
pinMode(buzzer,OUTPUT);
pinMode(motor,OUTPUT);
pinMode(trigpin,OUTPUT);
pinMode(echopin,INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
digitalWrite(trigpin,LOW);
delayMicroseconds(10);
digitalWrite(trigpin,HIGH);
delayMicroseconds(12);
digitalWrite(trigpin,LOW);
delayMicroseconds(10);

duration=pulseIn(echopin,HIGH);
distance=((duration/2)*0.034);
Serial.print("Distance is ");
Serial.println(distance);
delay(100);

if (distance<=20 && distance>=15)
{
  digitalWrite(buzzer,HIGH);
  digitalWrite(motor,HIGH);
  delay(500);
  digitalWrite(buzzer,LOW);
  digitalWrite(motor,LOW);
  delay(500);
  
}
else if(distance<15 && distance >=8)
{
  digitalWrite(buzzer,HIGH);
  digitalWrite(motor,HIGH);
  delay(80);
  digitalWrite(buzzer,LOW);
  digitalWrite(motor,LOW);
  delay(80);
}
else if (distance<8 && distance>=0)
{
  digitalWrite(buzzer,HIGH);
  digitalWrite(motor,HIGH);
  delay(30);
  digitalWrite(buzzer,LOW);
  digitalWrite(motor,LOW);
  delay(30);
}
else
{
  digitalWrite(buzzer,LOW);
  digitalWrite(motor,LOW);
}
    
}

Code 2

Arduino
Incase you are using the Grove Ultrasonic Sensor, the code is slightly different but shorter too
#include "Ultrasonic.h"
 
Ultrasonic ultrasonic(7);
int buzzer =3;
int motor =2;
void setup()
{
Serial.begin(9600);
pinMode(buzzer,OUTPUT);
pinMode(motor,OUTPUT);
}
void loop()
{
    long RangeInCentimeters;
 
    RangeInCentimeters = ultrasonic.MeasureInCentimeters(); // two measurements should keep an interval
    Serial.print(RangeInCentimeters);//0~400cm
    Serial.println(" cm");
    delay(100);
if (RangeInCentimeters<=20 && RangeInCentimeters>=15)
{
  digitalWrite(buzzer,HIGH);
  digitalWrite(motor,HIGH);
  delay(500);
  digitalWrite(buzzer,LOW);
  digitalWrite(motor,LOW);
  delay(500);
  
}
else if(RangeInCentimeters<15 && RangeInCentimeters >=8)
{
  digitalWrite(buzzer,HIGH);
  digitalWrite(motor,HIGH);
  delay(80);
  digitalWrite(buzzer,LOW);
  digitalWrite(motor,LOW);
  delay(80);
}
else if (RangeInCentimeters<8 && RangeInCentimeters>=0)
{
  digitalWrite(buzzer,HIGH);
  digitalWrite(motor,HIGH);
  delay(30);
  digitalWrite(buzzer,LOW);
  digitalWrite(motor,LOW);
  delay(30);
}
else
{
  digitalWrite(buzzer,LOW);
  digitalWrite(motor,LOW);
}
    
}

Credits

Shaukatali Hussein
7 projects • 10 followers
Contact
Sahil Abdulalim
5 projects • 8 followers
Tech enthusiast...not much to say😂
Contact
Said Kassim
1 project • 4 followers
I really love robotics
Contact

Comments

Please log in or sign up to comment.