Radar with sound output for blind people

Hi , I am an eye surgeon and don’t really know anything about computers or electronics. My son would like to make a small radar device with a sound output proportional to distance so that blind people can "hear " the output. Ideally, would like some sort of servo motor that rotates the sound beam/IR beam and then outputs the result of the radar sweep as a sound wave , rather than a single tone.

I saw this ultrasonic range finder and video. http://www.sparkfun.com/products/639

but rather than having the output visually as in the video , I need an audio connection.
His aim to to train visually impaired to recognize the shape of the sound output and hence their surroundings.

Would love to hear your ideas and since either one of us knows how to proceed, we will need some detailed instructions.

thanks

rdeans: Hi , I am an eye surgeon and don't really know anything about computers or electronics. My son would like to make a small radar device with a sound output proportional to distance so that blind people can "hear " the output. Ideally, would like some sort of servo motor that rotates the sound beam/IR beam and then outputs the result of the radar sweep as a sound wave , rather than a single tone.

I saw this ultrasonic range finder and video. http://www.sparkfun.com/products/639

but rather than having the output visually as in the video , I need an audio connection. His aim to to train visually impaired to recognize the shape of the sound output and hence their surroundings.

Would love to hear your ideas and since either one of us knows how to proceed, we will need some detailed instructions.

thanks

First off, I can't give you a step-by-step, mainly because I haven't played with these ultrasonic sensors, but I can tell you what tutorials you could use to proceed. Note that this isn't a beginner's project.

First off, you need to learn how to control a servo programmatically; given that you want to "sweep" the sensor using the servo, the sweep tutorial seems best:

http://arduino.cc/en/Tutorial/Sweep

Now - if you notice, that tutorial shows how to set the position of the servo to a given "degree" position; so in the "brute force" manner (more on what I mean by this later), your loop will be something like this (pseudo-code):

servo-angle = 0
direction = 1

loop
  set servo to servo-angle
  ping ultrasonic sensor and get reading (distance)
  output tone based on distance
  increase servo-angle by direction
  if servo-angle = 180 then direction = -direction
  if servo-angle = 0 then direction = -direction
end loop

I hope that is clear enough to understand what is going on.

Ok - so, you have your servo sweeping (which is most of the lines in the pseudo-code above, actually!); you need to read your ultrasonic sensor. I don't have any example for that particular sensor you mention, but here are a couple of more examples for two different sensors, again from the playground:

http://arduino.cc/en/Tutorial/Ping http://arduino.cc/en/Tutorial/SFRRangerReader

The first is the Parallax Ping ultrasonic sensor (a fairly common ultrasonic sensor - it was one of the first of the "new breed" hobbyist distance sensors); it is fairly simple to control as you can see from the code (basically pulse it, wait for the pulse back, measure the time difference to get distance - you won't really need the conversion code, but you might need some kind of scaling for the sound part using the map() function perhaps).

The second example is more complex, and is for the Devantech SRF10 or SRF08, which use an I2C bus for communications; the same thing as above is happening, except the electronics on-board the sensor does the actual ping-and-receive-the-calculate step; you're basically sending a command to the device over the bus saying "hey, give me a distance reading now" - and it does, and returns the data. Again, you'll probably have to do some conversion on it to get something compatible for the sound output.

Which leads us to that step - which is fairly simple. See this example:

http://arduino.cc/en/Tutorial/Tone

Here, the code basically plays a tone via a digital output line (using a square wave - which is kinda harsh sounding). You'd likely have to build an amplifier to hook up headphones (maybe something based on the LM386 - or an equivalent module of sorts). You might also want to put an LC filter or something on there to "smooth" the waveform into something approaching a sine wave (more pleasant to hear).

Another option - rather than using tone(), you could use PWM (on two separate pins), and output a fixed frequency at a volume level somewhere between 0-255 for each output, mapped to the angle of the servo (that is, if the servo was at 100 degrees, you would map one output to 100, and the other to 80) - then feed each to each ear; the varying volume levels (perhaps) could give a directional indication of where the objects were (?)...

Now - recall above how I said this is a "brute force" method? That's because you are essentially polling everything, and running things as fast as possible in a loop - which actually is fairly slow (not that this system will ever be quick, mind you). If you wanted to take things to the next level, you would use interrupts. Basically, on receipt of the ping return, that would trigger an interrupt, which would update the servo position (in the instance where no return occurred, you'd have to have some kind of watchdog to tell it to advance anyhow after so many milliseconds). Doing it this way, you would run the sweep at the speed of ping-returns, instead of a fixed polling method with the built-in delays. Your worst case speed scenario would be when nothing was in range, as set by the minimum value on the watchdog. This kind of method is actually fairly advanced and complex - but it's something to keep in mind if you want to take the project to the "next level".

...and the level after that? Well, you'd have to likely go optical; I've got a few ideas there on how this could be done somewhat inexpensively - but are too complex to detail here (and likely would need something more than an Arduino to process the data). Give it some thought, though, and you might be able to come up with a similar solution as well!

Good luck, and I hope this at least inspires you and your son...

:)

Excuse me asking what might be an impertinent question

Why use a servo, or whatever, to rotate your “beam” to provide an all-round “vision” when even a sighted person has yet to evolve that capability. Sighted people can only see in the direction their eyes are pointing.

By simply placing forward looking sensor units on a head mounted assembly (such as a spectacle frame) merely turning the head will provide a view of the environment. The head is in effect your servo which the brain directs to “look” in the direction of interest.

I do believe that such a “sighting” device has already been developed in the UK, trials of which have been demonstrated on television. This device has the ability to provide a signal to a tongue stimulator which creates an “image” of the view the client is looking at. From memory this covers quite a large distance range.

Lots of good guidance at http://www.seeingwithsound.com/sensub.htm

jackrae: Excuse me asking what might be an impertinent question

Why use a servo, or whatever, to rotate your "beam" to provide an all-round "vision" when even a sighted person has yet to evolve that capability. Sighted people can only see in the direction their eyes are pointing.

By simply placing forward looking sensor units on a head mounted assembly (such as a spectacle frame) merely turning the head will provide a view of the environment. The head is in effect your servo which the brain directs to "look" in the direction of interest.

I do believe that such a "sighting" device has already been developed in the UK, trials of which have been demonstrated on television. This device has the ability to provide a signal to a tongue stimulator which creates an "image" of the view the client is looking at. From memory this covers quite a large distance range.

Lots of good guidance at http://www.seeingwithsound.com/sensub.htm

Good point, and maybe that should be the starting place for the OP; get the ultrasonic sensor and the tone generation working first - then maybe later move to incorporating the servo? I don't see this project as being something his son is wanting to be a "new invention", but more as a motivation toward a first "real" project (I could be wrong). Besides, making it "scanning" could incorporate more of a "peripheral" view instead of needing to move the head constantly; who knows, maybe the kid will invent something "new" or come up with an improvement to help blind people - nothing wrong with that!

:)

I agree, mounted on the head to give you "line of sight" so to speak. I would also pulse the tone. As the object becomes closer then the tone will pulse faster, further away then maybe a single tone every three seconds or so. The tone of objects within arms reach could pulse the fastest.

Later you can try adding IR or another sonic to determine size and shape...a person...a building or perhaps a step from a curb.

Interesting...

Here is a similar project using a Pro, maybe start there and he can modify as he wishes.

http://grathio.com/2011/08/meet-the-tacit-project-its-sonar-for-the-blind/

Appreciate all the comments. Since this is a starter idea , will leave the servo motor till later. However, the idea behind the rotating scan is to give a 2 dimensional feedback rather than a tone. His idea is that people can be trained to recognize the distance and contour of their surroundings via the pitch and tone of the sound wave output .

Will just keep it simple for now as this will be his first try.

I think the line of sight comments are valid but our ability to navigate depends on a visual field of almost 180 degrees. I have patients with a disease called "Retinitis Pigmentosa" who lose peripheral vision. Their central acuity is 20/20 but their visual field is limited to 10 degrees or so. They have a very hard time navigating and behave almost like blind people. So ultimately, we will have to go with some sort of scanning device.

Any more thoughts on keeping this super simple so he can get it going ? Will look at a simple line of sight project with tone generation to show distance.

Thanks for your input. I am amazed at all the helpful comments.

I remember seeing a video of a blind man who had taught himself to use echo location well enough to navigate quite well - he could even ride a bike along a woodland path, which seemed quite extraordinary to me.

I think that if you were going to tackle this problem, the secret would be to make use of the brains existing ability to process sounds to produce a three-dimensional image. I understand that ears have different frequency sensitivity characteristics to sounds coming from different directions so you might find that, with practice, people can learn to process a broad spectrum sound and differentiate between different frequency components associated with different directions. I suppose that being able to simply turn your head and hear the sound change as the orientation changes, would reinforce this.

I'm quite certain that you are not the only person trying to tackle this problem and I suggest you try to find who else is working on it.

In the USA, the Veterens Administration may be a good source of research material.

The glove idea is nice but cumbersome. Sound will offer a lot more variety to carry subtle information. I did like the 4 ping devices as input which we could use to generate a simple contour map to generate a sound map. Will start with just a simple tone and one ping device but need help with connecting 4ping and the sound output thanks

How do yo imagine that the device will be carried? If it is something quiste stable, you might use a servo to scan different directions. If not, you’ll need several ping sensors.
Using multiple Ping sensors shouldn’t be a problem, just repeat the ping process using a different digital pin from arduino.
You might get in trouble with the height of what is detected, I’ll suggest yo do some test with a sensor first to see the width of the emitted beam and the vertical cone of detection.

Hi,

I would like to do a science fair project involving sound and an arduino uno, to train blind people to recognize/“see” their surroundings. I think you spoke to my dad about this…

I would like to hook up 4 ping sensors to an arduino uno, and collect distance readings from the sensors in sequence, (1-4). Using the 4 consecutive measurements, I would like to have the arduino create a “sound map”, and output the sound as a continuous music sound via a piezo speaker.

Perhaps take 4 measurements over 1 second and then output the note as a wave over 1second.

I would then repeat the cycle every 5-10 seconds or so.

Do you have any suggestions on how do do this?

Thanks

:slight_smile:

Rdeans:
Tell us how far did you get, and what problems you have. Don’t be shy, we are here to share.