Room Navigator

From ESE205 Wiki
Revision as of 12:42, 30 April 2018 by Nealbansal (talk | contribs) (Gantt Chart)
Jump to: navigation, search


The goal of this project is to provide a way to aid the blind and blind-deaf in navigating through a room. Our goal is to create a device and a sensor that will help lead the blind and blind-deaf to devices or objectives, such as a door or help them find their phone. There will be some device that helps triangulate the position of the person in the room and uses that to measure the distance away from the objective. Also, there will be a way for a blind or blind-deaf person to understand which direction they need to move to reach the objective.


Team Members

Alexander Armour
Neal Bansal
Elizabeth Gikas
Nate Schmetter (TA)
Jim Feher (instructor)

Link to weekly log


  • Figure out how to use motors with Arduino
  • Figure out how to use infrared receivers with Arduino
  • Figure out how to use infrared LEDs with Arduino and have them blink at a certain frequency. If we use 2 sets of LEDs, have them blink at different frequencies.
  • Develop a method using the infrared receiver signal strength to accurately calculate the position of the person in the room. This will require some experimentation, measuring the infrared signal strength at carefully measured out distances
  • Provide helpful output to lead the blind or blind-deaf person to the door


Finding a way to accurately calculate position in a room (FM radio, IR)

  • Do we use bluetooth, FM radio arduino module, ultrasonic sensors, or infrared sensors?
  • These methods will tell us how strong the signal is. How do we compute distance in a room from the signal strength?

We plan to use LEDs with IR receivers that will be able to tell distance. They will then communicate with vibration motors that will, based on the distance, vibrate at with increased frequency as the distance is decreased.
Using Infrared Method

  • How do we find distance given the signal strength reading from the IR receiver?
  • How do we make sure they are being led in the right direction?

This challenge will be difficult as calibrating for distance will be a very time consuming task. But we will take the time to measure the distance as exact as possible. The idea is that the vibration will start when they are facing the right direction, which will be determined by the communication between the LEDs and IR receivers.
Providing output to the user that is easy to follow

  • Is changing intensity of vibration enough to lead them in the right direction?
  • If we put motors on different sides on a case to correspond to different directions, will this be discernible? Will the user easily be able to tell which way to go?

Learning new coding skills

  • Coding the Arduino, using IR receiver, and motors


  • Blind people would rely heavily on this device. How do we ensure it cannot be hacked into and tampered with?

User Friendly

  • How will we make the controller something easy for the user to carry?

Finding an IR Sensor that works

  • Probably the most difficult part of this project has been finding an IR receiver that can give us good readings at a good distance. We tried a few IR Receivers (as indicated in our budget section) and ultimately came to the IR Transceiver, something used by PI Car. We believe it offers a certain directionality that the other methods were not able to while also offering a good enough distance of at most 20ft.

Other Resources

Arduino Tutorials

Fusion 360 Tutorials


IR Communication

Vibration Motors

Current iBeacons

Other Similar Projects


Budget Toward the Project

Total: $50.05

Other Parts that we Used for Testing

  • 10 Infrared receiver for Arduino, $1.95 each, $19.50 total Link
  • 330 ohm resistors $2.85 Link
  • Pololu IR Beacon Transceiver $27.95 each Link

Total: $134.15

Gantt Chart Updatedchart.png

Everyone was involved in all parts of the project with a specific focus. Neal focused on testing the sensors and LEDs. Elizabeth focused on coding Arduino. Alex focused on 3D design.

Design and Solutions

There are two parts to our system. The first is the IR LEDs that are mounted on a door or where we want to lead the user. The second is the device the user holds with IR receiver diodes and vibration motors.

Infrared LED System
There is a grid of 24 infrared LEDs soldered together in parallel. An Arduino is needed to control the mosfet. The mosfet is used as a switch to turn on and off the infrared LEDs at 13 microseconds. In other words, the mosfet is used to blink the infrared LEDs at 13 microseconds. By blinking the infrared LEDs at a certain frequency instead of continuously having them powered on, the sensors in the handheld device give a more accurate reading. A problem with the infrared LEDs is that each one requires no more than 1.5volts. Because of this restriction, the infrared LEDs are powered by a power supply instead of the Arduino. The power supply ensures the infrared LEDs receive a constant voltage of 1.5 volts.
Here is the code for the blinking IR LEDs: File:Code for IR LEDs.pdf
Here is the grid of Infrared LEDs we soldered:
Here is the circuit diagram for the IR LEDs and the mosfet
Screen Shot 2018-04-15 at 2.41.42 PM.png

Hand-held Device Case: The sensors will be on the top of the case. The handle of the vibration motors is hollow so the vibration motors could fit inside. Here is the 3D printed case (without the electronics attached):
Here is how the Arduino and better pack fit inside the case:
In our final design, we found it was easier to discern which motor was vibrating if the motors were on the outside of the case. We also used rubber around the motors to try to prevent one motor from vibrating all sides of the case. Here is the case with the motors and sensors:
Circuit: The motors are connected to PWM pins on the Arduino so the intensity of vibration can be controlled. Each sensor is connected to an analog pin. The Arduino is powered by a 9volt battery pack. Here is the circuit diagram for the sensors and motors in the case
CaseCircuit.jpg Code:

  • Read each sensor on the analog pins to get a reading 0 to 1023. Determine whether the front, left, or right receiver sensed the most IR light. Do this 50 times and keep track of the number of times each sensor received the most IR light. After 50 readings, determine which sensor received the most IR light out of those 50 readings. Then turn on the corresponding vibration motor.
  • The receivers are read 50 times to ensure accuracy of the device and filter the results so the user is always pointed in the right direction.
  • It is highly unlikely that two vibration motors would be turned on at the same time, though it is possible if one returned the highest value 25 times out of 50 and a second receiver returned the highest value the other 25 times out of 50.

Here is the code for the sensors and motors: File:Code for Sensors and Motors.pdf


Our two main challenges were getting our infrared LEDs to work and finding an accurate sensor.
The infrared LEDs are hard to test because infrared light is not visible to the naked eye. We had to set up an IR photodiode to detect if the IR LED was on. The infrared LEDs were not turning on because each individual LED does not need more than 1.5 volts. We did calculations to figure out the correct resistor values to use with an individual LED and tested with many resistor values. Nothing seemed to be working. To solve this problem, we ended up using a power supply so we could control the voltage supplied to the infrared LEDs.
Our second big challenge was finding an accurate infrared light sensor from which we could determine distance. First, we ordered infrared receiver diodes (Link). The problem with these is that they only gave a digital reading not analog. In other words, they only detected whether there was IR light or not, they did not give any sort of reading indicating strength or intensity. Next, we tried an IR photodiode that gave an analog reading (a number between 0 and 1023 that indicated the intensity). After much testing, it was evident that the readings were not consistent enough to be reading an accurate distance from the analog reading we were getting. This is why we did not accomplish our original goal of determining distance with our device. We adjusted our goals to be determining direction. To do this, we tried using IR beacon transceivers (Link). (Another group had used these in a past project so we were hopeful they would work.) We took the time to solder these together, remodeled our case to fit these sensors, and did extensive testing. After much trial and error and help from our TA, we were still not able to get these sensors to work. Our eventual solution to determining direction was using the infrared emitter and receiver diodes (Link), one facing front, one facing ro the right, one to the left, to determine direction (explained more in design and solutions).

Effectiveness of Device
Range: When testing the device in the lab with minimal ambient infrared light, the device had a range up to 15 feet. In Lopata gallery, there was much more ambient IR light so the device only worked up to about 5 feet. If this were used in someone's home, it would probably have a range closer to 15 feet as a house probably has a similar level if ambient IR as the lab.
Motors: A user had to hold the device in a certain way to be able to discern which motor was vibrating. It was slightly more difficult than it should have been to tell what motor was on.
Accuracy: The device consistently points the user in the right direction.

Future Improvements

  • Find a way to measure distance and effectively communicate it to the user
  • Creating longer distance IR- The main problem with IR is that it hasn't been experimented with across long distances. Trying to find an IR transmitter that would have the large range of a room (around 20-30 feet) was very difficult. The device could be improved to have a larger range. One way to do this is concentrate the IR LEDs. Currently, they are emitting IR light from all directions. Our range could be improved if we had some way of directing the light into the range of the room. Here are some prototypes for ways to direct infrared light from individual IR LEDs or from one large IR light:

Screen Shot 2018-04-19 at 3.17.39 PM.png Screen Shot 2018-04-19 at 3.18.35 PM.png

  • Perhaps trying another avenue instead of infrared light. For instance, ultrasonic or bluetooth.
  • Case: changing the case so the vibration motors are inside the case and have insulation material that absorbs vibration around the motors so the direction is more discernible. Also, having holes in the box for the sensors so all of the wiring is inside and the device is more compact.
  • Smaller, user-friendly case: Having to carry around our current design could be annoying. We saw some projects that had a small chip that fits in their pocket but it was usually wildly inaccurate. If the device could be something that fit in your pocket and maintain accuracy, it would be more effective and useful.
  • Avoiding Objects- if the device could also help the user navigate around objects and other people in the room, it would be more applicable.
  • Creating a security system to ensure the device cannot be tampered with