I used some old OCR project with PIC24EP512GP806 to build the first prototype. All necessary resources are here - two 10-bit ADCs for sampling, two PWM registers and 52K data memory for sampled sequence. Here it is:
I used two HC_SR04 ultrasonic range finders (two euros each:), removed MCU, modified DC offset from 2.5 to 1.65V (added one more resistor in parallel with R15 on the picture, which is R16 on the schematics) for analog output signal picked from pin 7 of 324 opamp, and replaced the connector, as I needed one more pin for output signal. Driver is still 3232 (U3), driven from my MCU. I planned to use four T/R pairs, for low objects detection, but I gave up. Even with two channels, the audio signal is too confusing.
Here is the schematics of the older version of HC_SR04, I don't have the new one (there is the new version on the photo). My modifications are in red colour.
And here is my PCB. I rearranged it a little, replaced board-to-board with cable connectors, removed some components and added LDO and two diodes for analog voltage limiting.
I wrote the firmware in assembler, with following parameters (all of them are easily adjustable and will be the subject of additional experiments):
Ultrabeep signal: 40 KHz, total of 1 ms (40 pulses)
Sample rate: 875 KHz, which is 1.14 us
Sampling period: 22.725 ms (20000 left and 20000 right channel samples)
DAC (PWM) rate: 15.5 KHz, total of 1.28 s
Sound slowing factor: 56.3
Audio frequency: 711 Hz (which is 40KHZ lowered by 1/56.3 factor)
Measured total current consumption (MCU and two HC_SR04s) @ 5V is 107 mA.
Then I performed some experiments. Generally it works as expected, but I was disappointed not with the unit, but with me. I can hear sound reflexes (there a lot of them in my room), detect walls and some other flat areas, but it is hard for me to "see" anything more specific. I tried it outside also, I could hear some trees and parked cars, but only in two or three meters range.
There must be some dynamic and MCUcontrolled AGC, and high power transmitter. The amplitude difference in signals reflected from near and far objects is too high.
It was amazing how easy it is to detect stairs - there is the fast tap-tap-tap-tap signal, you can even count them. But it is quite annoying to listen to one frequency for more than half an hour. I must add some filters to get the acceptable sound.
Is it really useful for blind person? I am not sure, at least at this stage. I don't know any visually impaired person, but I shall try to find somebody who wants to join this experiment. I hope that he will not expect too much, I would not like to dissapoint him.
For the next step, I am planning some fine digital signal processing. Signal shaping, filters, AGC, high quality ultrasound transmitters and receivers, more powerfull drivers, low noise preamps, magnetometer, blah, blah...