A Smart Blind Gadget

Nanda Siddhardha
7 min readJun 23, 2024

--

Third Eye for the Blind Person: Building a Smart Blind Stick Using Arduino and Ultrasonic Sensor

In a world driven by technological advancements, the creation of assistive devices for individuals with disabilities has gained significant traction. One such innovation is the development of a “third eye” for blind individuals, which utilizes an Arduino microcontroller and an ultrasonic sensor. This bright blind stick aims to enhance mobility and independence for those with visual impairments. This device can significantly improve their navigation in various environments by detecting obstacles and alerting the user through vibration and sound. This article delves into the step-by-step process of building an intelligentblind stick, detailing the components, assembly, and programming required.

Components and Tools Needed

To build a third eye for the blind person using an Arduino and ultrasonic sensor, the following components and tools are essential:

Hardware Components:

  • Arduino Nano R3: The compact and versatile microcontroller for processing sensor data and controlling output devices.
  • Ultrasonic Sensor — HC-SR04: Utilized to detect obstacles by measuring distances using sound waves.
  • Digital Push Buttons (Yellow) x3: These buttons allow users to switch between modes (Alarm mode, Vibrator mode, and both).
  • 1k Ohm Resistor: Used for current limiting in various circuit parts.
  • General Purpose NPN Transistor: Amplifies the signal to control the buzzer and vibrator motor.
  • 1N4148 Diode: A fast-switching diode for protection and signal control.
  • Multilayer Ceramic Capacitor, one pF: Used for noise reduction and stability in the circuit.
  • Solar Cockroach Vibrating Disc Motor: Provides tactile feedback to the user by vibrating when an obstacle is detected.
  • Buzzer: Emits a sound to alert the user of nearby obstacles.
  • Slide Switch: Used to power the device on and off.
  • 9V Battery and Clip: Powers the entire circuit.
  • Veroboard (6cm x 8cm): A board for mounting and soldering components.
  • Hard Jumper Wires: These are used to makeelectrical connections between components.
  • Velcro Tape: To attach the device to a cane or stick.
  • 3.7V Lithium Battery Charger Board and Boost Converter: This is forrecharging and powering the device.

Software and Online Services:

  • Arduino IDE: The integrated development environment for writing and uploading the code to the Arduino Nano.

Step-by-Step Assembly

Setting Up the Arduino Nano

  1. Mounting the Arduino Nano: Secure the Arduino Nano onto the veroboard. Ensure it is firmly placed to avoid any movement during operation.
  2. Connecting the Ultrasonic Sensor: Attach the HC-SR04 ultrasonic sensor to the veroboard, connecting the VCC and GND pins to the corresponding pins on the Arduino. The Trig and Echo pins should be connected to digital pins 8 and 7.
  3. Wiring the Push Buttons: Connect the three digital push buttons to digital pins 2, 3, and 4 on the Arduino. These buttons will allow the user to switch between different modes.
  4. Adding the Buzzer and Vibrator Motor: Connect the buzzer to digital pin 5 and the vibrator motor to digital pin 6. Use the NPN transistor and diode to control these components, ensuring proper signal amplification and protection.
  5. Incorporating the Resistor and Capacitor: Place the 1k ohm resistor and the ceramic capacitor in the circuit for current limiting and noise reduction.

Programming the Arduino

  1. Installing the Arduino IDE: Download and install the Arduino IDE from the official Arduino website.
  2. Writing the Code: Open the Arduino IDE and write the code to control the ultrasonic sensor, buzzer, and vibrator motor. The code should allow the device to measure the distance to obstacles and trigger the appropriate alerts.
  3. Uploading the Code: Connect the Arduino Nano to your computer via USB and upload the code using the Arduino IDE. Ensure that the code is functioning correctly by testing each component individually.

Code

#define button1 2 //This button use for only Alarm mode
#define button2 3 // this button use for Alarm & Vibrator mode
#define button3 4 //This button use for only Vibrator mode
#define buzzer 5 // this pin use for Alarm
#define motor 6 // this pin use for Vibrator Motor
#define echopin 7 // echo pin
#define trigpin 8 // Trigger pin
int Alarm=1, Vibrator=1;
int cm; // Duration used to calculate distance
void setup(){ // put your setup code here, to run once
Serial.begin(9600);// initialize serial communication at 9600 bits per second:
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
pinMode(button3, INPUT_PULLUP);
pinMode(buzzer, OUTPUT); //declare buzzer as output
pinMode(motor, OUTPUT); //declare vibrator Motor as output
pinMode(trigpin, OUTPUT); // declare ultrasonic sensor Echo pin as input
pinMode(echopin, INPUT); // declare ultrasonic sensor Trigger pin as Output
delay(100);
}

void loop(){
if(digitalRead(button1)==0) Alarm=1, Vibrator=0; //only Alarm mode
if(digitalRead(button2)==0) Alarm=1, Vibrator=1; //Alarm & Vibrator mode
if(digitalRead(button3)==0) Alarm=0, Vibrator=1; //only Vibrator mode
// Write a pulse to the HC-SR04 Trigger Pin
digitalWrite(trigpin, LOW);
delayMicroseconds(2);
digitalWrite(trigpin, HIGH);
delayMicroseconds(10);
// Measure the response from the HC-SR04 Echo Pin
long ultra_time = pulseIn (echopin, HIGH);
// Determine distance from duration
// Use 343 metres per second as speed of sound
cm = ultra_time / 29 / 2;
Serial.print("cm:");Serial.println(cm);if(cm>=20 && cm<=100){
int d = map(cm, 20, 100, 20, 2000);
if(Alarm==1)digitalWrite(buzzer, HIGH); // Turn on Buzzer
if(Vibrator==1)digitalWrite(motor, HIGH); // Turn on Vibrator
delay(100);
digitalWrite(buzzer, LOW); // Turn off Buzzer
digitalWrite(motor, LOW); // Turn off Vibrator
delay(d);
}
if(cm<20){
if(Alarm==1)digitalWrite(buzzer, HIGH); // Turn on Buzzer
if(Vibrator==1)digitalWrite(motor, HIGH); // Turn on Vibrator
}
if(cm>100){
digitalWrite(buzzer, LOW); // Turn off Buzzer
digitalWrite(motor, LOW); // Turn off Vibrator
}
delay(10);
}

Testing and Calibration

  1. Initial Testing: Power on the device using the slide switch and test each mode by pressing the corresponding push buttons. Ensure that the buzzer and vibrator motor activate correctly based on the distance measured by the ultrasonic sensor.
  2. Calibrating the Sensor: Adjust the sensor’s range and sensitivity to ensure accurate obstacle detection. This may involve fine-tuning the code or repositioning the sensor on the veroboard.
  3. Final Assembly: Once testing and calibration are complete, secure all components in place using Velcro tape. Attach the device to a cane or stick, ensuring that it is comfortably positioned for the user.

Enhancing User Experience

Improving Alert Mechanisms

To ensure the device is as effective as possible, consider enhancing the alert mechanisms:

  • Vibration Intensity: Adjust the intensity of the vibrating motor to provide clearer feedback to the user.
  • Sound Levels: Ensure the buzzer emits a sound that is easily audible but not excessively loud.
  • Multiple Alerts: Implement different alert patterns (e.g., varying vibration pulses) to convey different levels of proximity to obstacles.

User Comfort and Usability

  • Ergonomic Design: Position the components in a way that minimizes weight and maximizes comfort.
  • Customizable Settings: Allow the user to adjust settings such as vibration intensity and sound volume.
  • Rechargeable Battery: Use a rechargeable battery to ensure the device is easy to maintain and environmentally friendly.

FAQs

How does the ultrasonic sensor detect obstacles?

The ultrasonic sensor emits sound waves and measures the time it takes for the waves to bounce back from an object, calculating the distance based on this time.

Can this device be used in different environments?

Yes, the device is designed to work both indoors and outdoors, although extreme weather conditions may affect its performance.

How long does the battery last on a full charge?

The battery life depends on usage, but typically it lasts several hours on a full charge. Regular recharging ensures consistent performance.

Is the device waterproof?

While some components may be water-resistant, the device as a whole is not waterproof. Care should be taken to avoid exposure to water.

Can the alert mechanisms be customized?

Yes, the intensity and volume of the alerts can be adjusted through the code or by modifying the hardware components.

Is it difficult to assemble the device?

Basic knowledge of electronics and programming is required, but the step-by-step guide provided here simplifies the assembly process.

Conclusion

Creating a third eye for a blind person using an Arduino and an ultrasonic sensor is a rewarding project that significantly enhances the mobility and independence of visually impaired individuals. By following the detailed steps outlined in this article, you can build a smart blind stick that provides real-time feedback on obstacles, ensuring safer navigation. This innovative device not only demonstrates the power of technology in assistive applications but also underscores the importance of accessibility and inclusivity in modern engineering.

Final product

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

connect with me at https://www.linkedin.com/in/nanda-siddhardha/

support me at https://www.buymeacoffee.com/nandasiddhardha

--

--