Saanya's portfolio for her summer robotics project on the Third Eye for the Blind.

Project maintained by saanyab Hosted on GitHub Pages — Theme by mattgraham

Third Eye For The Blind

I have developed a device with the potential to assist individuals who are visually impaired. This wearable technology enables blind individuals to navigate more easily by detecting obstacles in close proximity using ultrasonic waves. The device notifies the user through escalating buzzer sounds and vibrations from a motor, intensifying as the user approaches the detected object, while also having a sensor to identify whether the object in front is a person or not.

Engineer School Area of Interest Grade
Saanya B. James Logan High School Bio Engineering Incoming Sophomore

Headstone Image

Final Milestone

Milestone Image 3 I have ultimately accomplished my final milestone by inserting the device onto the hat and soldered the wires and the arduino onto the perfboard to make it wearable and moveable. This was the final development of my project and I am now finished with the project. With this new functionality, the device is now transportable and is a functional, hands-free device that can assist the visually impaired. The process of soldering turned out to be surprisingly difficult and I spent at least 3 hours working on soldering all the wires and making sure they were all located in the right place. Despite this, I pushed through and finished up the final touches to the project. To improve the overall organization of the project, I taped the wires that connect to the same port together to help organize everything and keep it neat. This action led to a cleaner and more effective arrangement. Moving forward, I hope to receive a proper people sensor and I can continue to build on this project after finishing this program. Overall, this program was a really great introduction to mechanical and bio engineering and I hope that moving forward, I will be able to expand on this project I have built and continue to develop devices to help more people.

Second Milestone

Milestone Image 2 I successfully achieved my second milestone by adding another vibrating motor that runs two different programs based on whether someone is facing the person or not. This development was necessary because the original person sensor I received turned out to be faulty. However, I adapted to this issue and found a solution that still allows me to demonstrate what I intended to do. With this new functionality, they can now gain a comprehensive understanding of the objects in their path. The process of wiring the additional vibrating motor proved to be unexpectedly challenging, requiring considerable troubleshooting efforts to ensure precise connections. However, I persevered and overcame the obstacles I faced during my initial milestone, which included a malfunctioning LED and numerous code errors. By resolving these issues, I have achieved a fully functional system. To improve the overall organization of the project, I have implemented a color-coded wiring system that makes it easier to understand and maintain. This step has resulted in a neater and more efficient setup. Looking ahead, my objective is to transfer the project onto a perfboard and solder the components to reach its final completion. This step will ensure a more permanent and robust construction, bringing the project closer to its ultimate goal of assisting visually impaired individuals in navigating their surroundings effectively.

First Milestone

Milestone Image 1

My first milestone was attained by successfully setting up and connecting the ultrasonic sensor and Arduino Micro to the breadboard. This setup allowed me to test the functionality of the LED, vibrating motor, and buzzer, as well as determine the necessary wiring connections. By utilizing jumper cables, I established a connection between the Arduino and the ultrasonic sensor. I included a switch that toggles between the buzzer and vibrating motor aspects of the programmed projection. Subsequently, I developed a code that displays the distance of an object in centimeters on the serial monitor using the ultrasonic sensor. As the object approaches the sensor, the distance reading decreases, while it increases as the object moves farther away. This functionality relies on the sensor emitting sound waves that travel towards the object, then bounce back to the sensor, which in turn receives an echo. By analyzing the time it takes for the pulse to return, the sensor can accurately calculate the distance between itself and the object. I was waiting on a few parts to get delivered so the wiring was originally a bit rushed, but I am now confident it will work.


Schematics Sketch by Author Through Tinkercad

Bill of Materials

Part Note Price Link
Arduino Micro Main Program Board $10.95 Link
Buzzer Used to Switch Detection from Light to Sound $6.88 Link
Cable Kit Connects Person Sensor to Arduino $9.99 Link
Female Headers Used to Connect Arduino and Sensor to Breadboard $5.99 Link
Hot Glue Gun & Hot Glue Sticks Used to Attach Things Together $27.49 Link
Jumper Wires Used to Connect Components on the Breadboard $9.99 Link
Male Headers Used to Connect Arduino and Sensor to Breadboard $10.99 Link
Power Bank Used to Provide Power to Arduino $17.99 Link
Perfboard Project Assembled on Top of it $9.99 Link
Person Sensor Senses Whether the Object is A Person or Not $9.95 Link
Ultrasonic Sensor Main Sensor for Detection $6.99 Link
Solderless Breadboard Used to Build Project On $9.99 Link
Slide Switch Used to Toggle Between Haptic Sensor and Buzzer $5.39 Link
Soldering Iron Used to Solder Everything to the Breadboard $16.99 Link
Vibrating Motor Used to Give Physical Alert of Objects $17.99 Link
5mm Red LED Used for Output of Program $5.99 Link


    const int pingTrigPin = 23; // Trigger connected to PIN 3
    const int pingEchoPin = 22; // Echo connected to PIN 2
    const int buz = 4;
    const int motor = 5; //second vibration motor connected to PIN 5
    const int32_t SAMPLE_DELAY_MS = 200; // Represents the delay between sensor readings
    const int switch1 = 2;
    const int switch2 = 3;

    void setup() {
      pinMode(pingTrigPin, OUTPUT);
      pinMode(pingEchoPin, INPUT);
      pinMode(buz, OUTPUT);
      pinMode(switch1, INPUT_PULLUP);
      pinMode(switch2, INPUT_PULLUP);
      pinMode(motor, OUTPUT);

    void loop() {
      long duration, cm;

      digitalWrite(pingTrigPin, LOW);
      digitalWrite(pingTrigPin, HIGH);
      digitalWrite(pingTrigPin, LOW); 

      duration = pulseIn(pingEchoPin, HIGH);
      cm = microsecondsToCentimeters(duration);
      if(cm<=50 && cm>0) {
        int d= map(cm, 1, 100, 20, 2000);
        digitalWrite(buz, HIGH);
        digitalWrite(buz, LOW);

      if (digitalRead(switch1) == 0) {   //if person found, then special vibration pattern with second motor
        digitalWrite(motor, HIGH);
        digitalWrite(motor, LOW);
        digitalWrite(motor, HIGH);
        digitalWrite(motor, LOW);
        digitalWrite(motor, HIGH);
        digitalWrite(motor, LOW);
      } else if (digitalRead(switch2) == 0) {
          digitalWrite(motor, HIGH);
          digitalWrite(motor, LOW);
          delay(500); }
          else {
            digitalWrite(motor, LOW);

    long microsecondsToCentimeters(long microseconds) {
      return microseconds / 29 / 2;

Other Resources/Examples