Raspberry Ping - Personal Sonar
A downloadable project
— downloadable code and parts list coming soon! —
What is it? And why?
This project originally started out as the physical counterpart of my "BlindVR" video game concept. In the BlindVR concept, a blinded player navigates a virtual space by listening to audio feedback of the environment to determine what is going on around oneself. The player would be aided in this by the use of a personal sonar that helps determine distances by converting distances into audible tones. My vision for this base concept was for people to experience blindness, as well as to bring first person video games to blind people.
Work on this project was well underway, when someone joked that it'd be cool to make such a device in real life. But one would need some sort of rangefinder.
Well, it just so happened that I brought my newly obtained Raspberry Pi and GrovePi+ IO kit, which HAS a rangefinder! Considering the knowledge and expertise of the people at the event, this also was an excellent time and place to start experimenting with the Raspberry Pi. So, about 1/3 through the jam, with most of the technical core of the BlindVR project taken care of, we decided that Eloi would continue working on the BlindVR game, and I would try and build a physical version of the personal sonar device. If time was at our side, we would later try and merge the physical device into the game.
(spoiler: time was not on our side...)
So, how exactly does this device work?
The current version uses an ultrasonic rangefinder to measure the distance between the device and whatever you point it at. It does this by sending out a wave of ultrasound and then timing when exactly the echo of this sound wave returns, after bouncing off of an object (just like bats do!). I then used the collected data to produce an audible tone: the greater the distance, the lower the tone, and the smaller the distance, the higher the tone.
The device is completely wireless and portable, thanks to a power bank designed to recharge smartphones on the go.
And did it actually work?
Yes! But... The ultrasonic rangefinder component isn't very accurate, especially when trying to detect smaller objects. A laser rangefinder would be an excellent replacement, but that is, to my knowledge, not available in Grove IO form.
The buzzer is also very basic and tiny and so the tonal changes are not that clear. I also tried to make the beeping occur at shorter intervals as an object gets closer, but I couldn't get a loop in the Python code to run faster than about once every half second. Splitting the single while-loop into separate input and output coroutines may solve this problem.
Leave a comment
Log in with your itch.io account to leave a comment.