Sensor Suit for the
Visually Impaired
2013
People today that are visually impaired at birth or by misfortune have few options for methods of getting around in their every-day lives. This project will create an instrument that will provide the user with the physical sense of a close object that could otherwise be seen. While taking advantage of all other human senses, the user will have a fast and effective way to safely navigate through the world without sight. This unit will transmit a signal, using an ultrasonic sensor to detect the location of a nearby object. If the object is determined to be close enough to the user, he or she will be notified with feedback from a DC motor that will primarily appeal to sense of touch.
Project
Proposal
● Team Members ●
Matthew Denaro, Mark Plante, Alexander McQuade
Faculty Advisor: Wayne Smith PhD.
Current Date: May 6, 2013
Relevant Courses: ECE617, ECE618, ECE633, ECE634, ECE657, ECE714, ECE757
Proposed Completion Date
University of New Hampshire
1
Contents
General Problem Definition .......................................................................................................................... 2
Specific Design Objectives ............................................................................................................................ 2
Parts .............................................................................................................................................................. 2
Block Diagram of Setup ................................................................................................................................. 3
Implementation and Testing Plan ................................................................................................................. 3
Actual Project Implementation ..................................................................................................................... 4
Range of Coverage and Motor Voltage ......................................................................................................... 5
Comparisons to Other Solutions on the Market ........................................................................................... 6
Ways the Project Could Have Been Improved ............................................... Error! Bookmark not defined.
Discussion and Conclusion ............................................................................................................................ 6
Projected Schedule ....................................................................................................................................... 7
Labor Distribution ......................................................................................................................................... 8
Budget Estimate ............................................................................................................................................ 8
Actual Budget ................................................................................................................................................ 8
Appendix A: Arduino Code ............................................................................................................................ 9
References: ................................................................................................................................................. 11
University of New Hampshire
2
General Problem Definition There are approximately 1.3 million people in the United States who are visually impaired. Some of the options on the market today are canes and seeing-eye dogs. Both of these current options come with some limitations. For example, seeing-eye dogs cost roughly forty-two thousand dollars over the course of their life and are limited by their lifespan. Seeing-eye dogs also are generally larger breeds of dogs such as golden-retrievers and can cause difficulty in navigating small stores. Canes are limited because the user can only detect an object within reach of the cane. If the user is in a hurry, it is difficult to navigate with having only an understanding of what is directly in front of the user.
People who are blind should not have to struggle with this limited range of options. This product provides an alternative that is cost effective, and easy to use. The user will be aided with a hands free device that will detect distance. The user will be capable of changing the distance to their specific needs regarding the situation they are currently in. If the user is trying to quickly navigate a busy city street, it would be desirable to detect objects which are only close to the user rather than walking in a rural area where a user would want the unit to be sensitive to objects further away.
Specific Design Objectives
Using an ultrasonic distance sensor, retrieve a value for the distance using an FPGA. Established the value for the variable distance as a variable dc voltage for the motors. Have multiple sensor and motor packages attached to one Arduino so that a user can
comfortably and effectively make use of the sensory design. Find an easy way to wire it up so that it is easy to put on and take off. Develop packaging that contains the pinger and motor for user operation. Create configurations of the pinger and motor packages that allow the user to place these
packages in various locations on the body and apply to clothing with minimal visibility.
Parts
Arduino programmable logic board Parallax PING))) ultrasonic distance sensors Mini pancake vibrating motors (Ebay and allelectronics.com) Li-Ion 18650 Battery: 7.4V 4.4Ah (Batteryspace.com)
University of New Hampshire
3
Block Diagram of Setup
Implementation and Testing Plan
The basic configuration of one sensory unit will be the first task. This will involve the communication of the logic board with the sensor and the motor. A dc power supply can be used to mimic the Lithium-ion battery pack, which will later be implemented for portability. This configuration will ensure that these parts are compatible and that they will operate properly when configured in the entire package. The output voltage on the PING))) sensor and a DC power source will be monitored with multimeters to test the motors.
The code for the Arduino will be developed once the parts are proven to work. The code will receive the output reading from the sensor effectively sensing distance through an ultrasonic signal. This reading will be interpreted by the software and converted to a variable output voltage sent to the motor. Once the code is finalized it will be tested with the sensor and motor. Once these components communicate properly, the switch and resistor that will allow for low or high sensitivity settings can be placed into the setup. This will be done by recording distance readings with respect to voltage like stated above.
After all components are configured properly, the design can be designed as a portable unit. The Arduino Mini, a smaller version of the logic board, can be loaded and used. A battery pack can be added to take the place of the dc power supply.
The sensor and motor will be packaged together for consumers. Keeping this sensory unit separate from other components will allow for more possibilities in the placement of the unit in order to suit the user’s needs. This will provide greater coverage around the person as a whole. Less invasive ways of applying this design for consumers will be tested. Application on various types of clothing will be explored.
University of New Hampshire
4
Actual Project Implementation
The project started with the construction of one of the sensory units. Code was written for the
Arduino to power the motor with a voltage that changed based on the distance sensed by the pinger.
Since the battery had not arrived yet the Arduino was powered by a USB plugged into the programing
laptop. Motors also had not arrived at this point but we had LEDs. LEDs could dim or brighten as the
voltage level being sent to it changed so we could see that the code that was designed worked. This
setup was tested and it was noted that the pinger could sense out to around 150 inches but it was very
intermittent after 90 inches. The next version of code was written and it limited the setup to only sense
out to 90 inches since that was the reliable range of the pinger.
Multiple pingers and LEDs were setup to try to get all four setups built so they could be tested.
Each sensory unit was positioned 90 degrees from each other so they would stand for the cardinal
directions, north, south, east, and west. When the system was assembled only one of the four units
would work at any given time. If the working one was unplugged then another would work, but they
would never work in parallel. After a little research we found a library that when installed allowed
multiple pingers to be used at once. With this new library all four pingers could work at once. The code
that was written for the variable voltage output with distance was still slowing down the processing of
the code since it was several If statements one after another for each motor. The next version of the
code this was fixed so that the variable voltage was given in a for loop. This made it so each motor had
only that one for loop instead of a nine stage if statement. The delay that was seen before was now
gone so that the system could start being constructed to be consumer friendly.
When starting to make the system consumer friendly, the motors and battery arrived. These
were tested in the system and worked for the time being. Some distance testing was done at this stage
and during that time one of the motors had broken. Some of the motors hadn’t been soldered properly
and the ribbon cables had broke. More were ordered and tested, after which we started thinking of how
we could wear this system. We wanted to have the system on a belt since it was closest to the middle of
a human’s body. The belt would need a pouch or pocket to hold all of the components. A fanny pack
seemed to be the best bet for what was needed. The Ardunio would need a protective case if it was in
the fanny pack so that it did not break when bouncing around in the pouch.
As we were designing the pack and laying out where all the components would go it was noticed
that having a sensory unit every 90 degrees would not be possible because the wearer’s arms would
hang down on the east and west units. From this the final outline was constructed where the sensors
were put on the front right and left from the north motor. This increased coverage for objects coming at
the wearer but also took away the coverage from any object coming at their sides. The belt was
constructed this way by sewing the wires, pingers, and motors on after soldering on the lead wires to
them. The lead wires where then guided along the belt and into the pouch where theArduino would be.
Once the whole belt was assembled this way we noticed that two more of the motors had stopped
working.
University of New Hampshire
5
We ordered more motors and when they arrived we installed them into the system. We made
sure to use rubber shrink wrap to secure any connections we made throughout the construction. When
it was all fixed the belt was brought into an empty room and it was tested to find the angle of coverage
and distance that the pingers could see. We then donned the belt and tried navigating rooms in
Kingsbury. We noticed that the pinger could sense objects at the ground level but only when far away so
a user would have to get used to feeling around for steps when something was sensed and would then
disappear as the wearer got closer.
Range of Coverage and Motor Voltage
The field of view of a single sensor was approximately 70 inches from the sensor. At this
distance, the voltage across the motor was approximately 1.25 volts. As distance from the sensor
decreased, the voltage increased until a maximum voltage was reached at about 2.75 volts. Three
sensors were place in the front of the user to provide dense spatial information. Another sensory unit
was also included directly behind the user.
University of New Hampshire
6
Comparisons to Other Solutions on the Market
This product was designed as a competitive solution to what is currently available on the
market. Canes and seeing eye dogs are among the most popular form of aid. More technically advanced
solutions include brain-controlled interfaces and audio mapped vision systems (vOICE). From this
research, a viable solution was found with many beneficial advantages over competitive solutions.
This design is based off of functionality, cost, and ease of use. The user has multiple feedback
sensors that allow for feedback around the entire body unlike a cane. Hands free operation is an
advantage that allows for the user to have a comfortable and balanced sensation. This will also allow the
user to make use of a second solution, such as a Seeing Eye dog or a cane, until they are comfortable
with the operation of the sensory belt. Setup of the belt is easy and only requires the user to be fitted.
Most significantly, it is exceptionally cost efficient.
Possible Project Improvements
One major purpose behind this project was to provide a cheap and affordable hands-off solution
to provide spatial information to a visually impaired user. As a result, the low budget of the project was
a major limiting factor to the design of the project. The design could be vastly improved using higher-
grade sensors that had a larger range in both distance, and width. If enough sensors were used a full 360
degree field of view could be provided to the user. It would also be beneficial to incorporate more
motors in order to provide the user with feedback at other locations other than what is directly in front
of the sensors field of vision.
The ergonomics behind the sensor belt is something that could be reexamined and improved in
a later revision of this project. After testing that occurred late into the design process it was observed
that the waist was not the best location to place the sensors. This is because the sensors are restricted
to detecting objects at waist level. Later revisions of this project might include building smaller sensors
into glasses in an effort to provide more dynamic detection. If the sensors were placed in glasses as
opposed to waist height the user would be capable of sensing what they would, otherwise, be looking
at. This also allows for the user to sense objects at different heights as opposed to the belt approach
where the sensor can only detect objects within its range at waist height. In order to incorporate this
improvement, however, more time, and a larger budget would be required. For this improvement to
occur, a much smaller sensor would need to be used. An infrared sensor would be a further suggestion
to this problem.
Discussion and Conclusion
University of New Hampshire
7
The two major constraints of this project were economics, and ergonomics. As discussed in
improvements, placing the sensors on the waist only provided spatial information at waist level. This
sensor location was also required to provide blind spots where the hands rested to prevent the hands
from blocking the sensors. A further constraint in the ergonomics behind this design was the fixed belt
size. Without some type of attachment, it would be impossible to adjust the size of the belt due to the
wires needed to connect the back sensor and back motor to the arduino microcontroller.
The economics behind this unit was another major limiting factor. This unit needs to be a cheap
and cost effective solution to make it marketable. On one hand, many of the market alternatives are
either invasive like vOICE, or expensive like seeing-eye dogs. On the other hand, a walking stick is very
cheap and easy to use. In order for the technical capability of the project to increase, the budget also
needs to increase.
Furthermore, the lessons learned from this project provide some insight to any further
development that may take place. While the project delivered met most of the design requirements
established in the proposal, the project could be immensely improved to incorporate a better user
interface, and with a larger budget. As discussed, however, a much larger budget would result in an
unmarketable product.
Projected Schedule
University of New Hampshire
8
Labor Distribution
Task Person
Responsible
Find Motors to Use Matt Find Batteries to Use Matt Find FPGA to Use AJ Find Distance Sensor AJ Make Timeline Mark Type Proposal AJ, Mark, Matt Contact Those of Interest Matt Order Parts AJ, Mark, Matt Write Code AJ Small Scale Testing AJ, Mark, Matt Make Consumer Friendly AJ, Mark, Matt
Budget Estimate Part Quantity Price Total Price
Arduino UNO Board 1 $ 21.95 $ 21.95
Arduino Mini 1 $ 19.95 $ 19.95
Arduino Mini USB Adapter 1 $ 20.99 $ 20.99
Parallax PING))) 4 $ 29.99 $ 119.96
Mini Pancake Motor 4 $ 1.00 $ 4.00
Lithium Ion Battery Pack 1 $ 34.95 $ 34.95
Lithium Batteries Charger 1 $ 22.95 $ 22.95
Total Cost $ 244.75
Actual Budget Part Distributor Quantity Price Total Price
Arduino UNO Board Arduino 1 $ 21.95 $ 21.95
Parallax PING))) Parallax 4 $ 29.99 $ 119.96
Mini Pancake Motor Allelectronics.com 7 $ 1.00 $ 7.00
Li-Ion 18650 Battery: 7.4V 4.4Ah Batteryspace.com 1 $ 34.95 $ 34.95
Lithium Batteries Charger Batteryspace.com 1 $ 22.95 $ 22.95
Mini Pancake Motors Ebay.com 4 $4.20 $16.80
Fanny Pack Ebay.com 1 $7.65 $7.65
Arduino Case Amazon.com 1 $12.99 $12.99
Shipping and Handling $35.00 $35.00
Total Cost $ 320.19
University of New Hampshire
9
Appendix A: Arduino Code
/* Multiple Ping))) Sensors and Motors
Code written by AJ McQuade
2/17/2013 */
#include <NewPing.h>
const int pingPinN = 2;
const int motorN = 9; //Line added by AJ
const int pingPinE = 3; //Line added by AJ
const int motorE = 6; //Line added by AJ
const int pingPinS = 4; //Line added by AJ
const int motorS = 11; //Line added by AJ
const int pingPinW = 5; //Line added by AJ
const int motorW = 10; //Line added by AJ
int vibrateN = 0; //Line added by AJ (sets the strength of the motor)
int vibrateS = 0; //Line added by AJ (sets the strength of the motor)
int vibrateE = 0; //Line added by AJ (sets the strength of the motor)
int vibrateW = 0; //Line added by AJ (sets the strength of the motor)
int viblevels = 9; //Line added by AJ. Sets the number of levels of the
motor vibrating strength
int Max_Distance = 500; //Max Distance to scan in cm
#define PingPinN 2
#define PingPinE 3
#define PingPinS 4
#define PingPinW 5
#define Max_Distance 500
NewPing sonarN(PingPinN, PingPinN, Max_Distance); //Initiate North Sensor
NewPing sonarE(PingPinE, PingPinE, Max_Distance); //Initiate East Sensor
NewPing sonarS(PingPinS, PingPinS, Max_Distance); //Initiate South Sensor
NewPing sonarW(PingPinW, PingPinW, Max_Distance); //Initiate West Sensor
void setup() {
Serial.begin(115200);
}
void loop() {
delay(50);
unsigned int inchesN = sonarN.ping_in();
delay(50);
unsigned int inchesE = sonarE.ping_in();
delay(50);
unsigned int inchesS = sonarS.ping_in();
delay(50);
unsigned int inchesW = sonarW.ping_in();
Serial.print(inchesN);
Serial.print(" in N, ");
Serial.print(inchesS);
Serial.print(" in S, ");
Serial.print(inchesE);
Serial.print(" in E, ");
University of New Hampshire
10
Serial.print(inchesW);
Serial.print(" in W");
Serial.println();
analogWrite(motorN, vibrateN);
analogWrite(motorE, vibrateE);
analogWrite(motorS, vibrateS);
analogWrite(motorW, vibrateW);
vibrateN = 0;
vibrateE = 0;
vibrateS = 0;
vibrateW = 0;
if (inchesN < 90 ) {
vibrateN = vibrateN + viblevels * -(inchesN/10 + 9);
}
if (inchesS < 90 ) {
vibrateS = vibrateS + viblevels * -(inchesS/10 + 9);
}
if (inchesE < 90 ) {
vibrateE = vibrateE + viblevels * -(inchesE/10 + 9);
}
if (inchesW < 90 ) {
vibrateW = vibrateW + viblevels * -(inchesW/10 + 9);
}
}
Appendix B: Pictures of Components
University of New Hampshire
11
References:
American Foundation for the Blind.
<http://www.afb.org/section.aspx?SectionID=15
Guide Dogs of America.
<http://www.guidedogsofamerica.org/1/mission/
New Hampshire Association for the Blind
<http://www.sightcenter.org/
NewPing Library for Arduino
<http://playground.arduino.cc/Code/NewPing