El Cheapo Phased-Array Sonar

Sonar is a great sensor to add to any small-scale robot project. And for a couple bucks, the ubiquitous HC-SR04 modules make it easy to do. If you’ve ever used these simple sonar units, though, you’ve doubtless noticed that you get back one piece of information only — the range to the closest object that the speaker is pointing at. It doesn’t have to be that way. [Graham Chow] built a simple phased-array using two SR04 modules, and it looks like he’s getting decent results.

PB211200The hack starts out by pulling off the microcontroller and driving the board directly, a hack inspired by [Emil]’s work on reverse engineering the SR04s. Once [Graham] can control the sonar pings and read the results back, the fun begins.

[Graham] uses TI’s Cortex M4F LaunchPad eval kit to generate a ping and receive the reflections. With normal sonar, the time between the ping being sent and its reception is determined by the range to the target. In a phased array, in this case just the two modules, the difference in the times it takes for the ping to return to each module is used to determine the angle to the target.


If you’re DSP-savvy, [Graham] is using a phase-shifted square wave signal so that the correlations of the sent and returned signals have better peaks. This also helps the peaks in correlation across the two SR04s in the array. We think it’s pretty awesome that [Graham] is resolving a couple of degrees in angular separation when he moved his wine bottle. With a couple more SR04 units, [Graham] could start to get height information back as well.

For not much scratch, [Graham] has himself an experimental setup that lets him play with some pretty heavy signal processing. We’re impressed, and can’t wait to see what’s next. Special thanks to [Graham] for posting up the code.

And thanks [João] for the tip!

Bootstrapping Motion Input with Cheap Components

Motion control is a Holy Grail of input technology. Who doesn’t want an interface that they can control with simple and natural movements? But making this feel intuitive to the user, and making it work robustly are huge hills to climb. Leap Motion has done an excellent job creating just such a sensor, but what about bootstrapping your own? It’s a fun hack, and it will give you much greater appreciation for the currently available hardware.

Let’s get one thing straight: This device isn’t going to perform like a Leap controller. Sure the idea is the same. Wave your hands and control your PC. However, the Leap is a pretty sophisticated device and we are going to use a SONAR (or is it really SODAR?) device that costs a couple of bucks. On the plus side, it is very customizable, requires absolutely no software on the computer side, and is a good example of using SONAR and sending keyboard commands from an Arduino Leonardo to a PC. Along the way, I had to deal with the low quality of the sensor data and figure out how to extend the Arduino to send keys it doesn’t know about by default.

The Plan

The plan is to take an inexpensive SONAR module (the HC-SR04) and an Arduino Leonardo and use it to perform some simple tasks by mimicking keyboard input from the user. The Leonardo is a key element because it is one of the Arduinos that can impersonate a USB keyboard (or mouse) easily. The Due, Zero, and Micro can also do the trick using the Arduino library.

I wanted to determine how many gestures I could really determine from the HC-SR04 and then do different things depending on the gesture. My first attempt was just to have the Arduino detect a few fingers or a hand over the sensor and adjust the volume based on moving your hand up or down. What I didn’t know is that the default Arduino library doesn’t send multimedia keys! More on that later.

Continue reading “Bootstrapping Motion Input with Cheap Components”

Hackaday Prize Semifinalist: Superhero Powers

The inspiration for [K.C. Lee]’s project for The Hackaday Prize didn’t come from seeing a grave injustice or inhuman suffering. He was watching Daredevil on Netflix. A show about a blind guy who fights crime in his spare time. People don’t have superhuman senses, and radioactive material falling off a truck in New York City leads to Ninja Turtles, not superheros. Still, a crude form of echolocation is well within the reach of the a capable hacker and would be very useful for those who are legally blind.

[K.C.]’s idea for human echolocation is a small wearable with ultrasonic sensors, 6DOF IMUs, and audio and haptic feedback. With a bit of math and a lot of practice, it’s possible to walk down a hallway, avoid obstacles, and find your way around without sight.

Human echolocation is a real thing, and it’s great to see a device that makes this minor human superpower a little more accessible. [K.C.] says there are 40 million people world wide that could use a device like this, and for an idea that was inspired by a superhero on TV, it’s one of the more interesting inspirations for an entry to The Hackaday Prize.


The 2015 Hackaday Prize is sponsored by:

Sonar Built from Piezo and Microphone

[Jason] has continued to plug along with his sonar build and recently showed up a monostatic active sonar using a piezo element and microphone. Regular readers will remember [Jason’s] experiments from a Fail of the Week post which focused on his water-proofing woes from a much earlier prototype.

We find this offering far more engaging. He has ditched the ultrasonic module seen in those experiments. The new rig drives the piezo element using a 27V source. After each ping is sent out, the microphone input is immediately captured to detect the return of the audible sound. [Jason] mentions that the TI Launchpad he’s using for the project is fast enough for these experiments but he may switch to a Teensy 3.1 in order to double the RAM and thereby increase the sample size he is able to record.

Of course this is intended for underwater ROVs so his next iteration will involve a DIY hydrophone. We can’t wait to see that one as the process of converting this test rig into one that works underwater evades us. If you have some tips on that topic please let us know in the comments.

Continue reading “Sonar Built from Piezo and Microphone”

Amateur Builds Super Deep Super Cheap Ocean Vehicle

During the summers [Doug] has been building a 75 foot sailing junk to be launched from America’s most inland port. When Oklahoma’s winter hits he heads indoors to work on an ROV that will prowl 3,000 feet below the surface. Originally building a piloted submarine, he grew bored and decided to use the sailboat as a carrier for his fleet of remote submersibles instead.

A consummate amateur, [Doug] is the first to admit how little he knows about anything and how much he enjoys the open source spirit: collaboration, cooperation and learning from others. Determination and hard work fills in everything in between.

Hackaday covered the beginnings of his ROV last winter. In the year since it has progressed from some sketches and a 10″ steel pipe turned into a pressure testing rig to a nearly-complete, 10 foot long,  custom-lathed 4″ aluminum torpedo laying on his shop table. In a bow-to-stern walk-through [Doug] shows how he is building science equipment for less than a penny on the dollar by using largely off-the-shelf imaginatively-repurposed parts or things he could fabricate himself with only a lathe and a 3d printer.

Continue after the break for a breakdown of the tech used.

Continue reading “Amateur Builds Super Deep Super Cheap Ocean Vehicle”

Fail of the Week: Sonar Submersibility Sealing

For the last decade or so, [Jason] has wanted to build an underwater robot. Can you blame him? More recently, he’s been researching sonar sensing and experimenting with the relatively inexpensive HC-SR04 module. Since he had good luck getting it to work with a PC sound card and a Stellaris Launchpad, he figured it was time to try using it underwater.

Hydrophone research led him to the idea of submerging the sensor in mineral water oil to both seal it and couple it with the water. Unfortunately, the HC-SR04 only sends one pulse and waits for echo. Through the air, it reliably and repeatedly returned a small value. Once inside a pill bottle filled with mineral oil, though, it does something pretty strange: it fluctuates between sending back a very small value and an enormous value. This behavior has him stumped, so he’s going to go back to the Launchpad unless you can help him figure out what’s going on. Should he use a different method to seal it?

2013-09-05-Hackaday-Fail-tips-tileFail of the Week is a Hackaday column which runs every Thursday. Help keep the fun rolling by writing about your past failures and sending us a link to the story — or sending in links to fail write ups you find in your Internet travels.

Sonar With Python and Conference Call Hardware


[Jason] just tipped us off about his recent experiment, in which he creates a sonar system using standard audio equipment and a custom Python program. In case some of our readers don’t already know it, Sonar is a technique that uses sound propagation to detect objects on or under the surface of the water. It is commonly used in submarines and boats for navigation. [Jason]’s project uses active sonar, which consists in sending short audio bursts (chirps) and listening for echoes. The longer it takes for the echo to return, the further the object is. Though his proof of concept is not used underwater, that may change if he continues the project.

The audio editing software Audacity was used to make a fast frequency changing chirp, along with PyAudio libraries for the main Python program. Exact time of arrival is detected by correlating the microphone output with the transmitted signal. Given that [Jason] uses audible frequencies, we think that the final result shown in the video embedded below is quite nice.
Continue reading “Sonar With Python and Conference Call Hardware”