Picture of DIY 360 Degree SODAR Device
First off, why did we decide to call this thing SODAR? SOnic Detection and Ranging, or SODAR, is a lot like SONAR and RADAR. However, we don't feel comfortable calling it SONAR because we have no desire to use it for navigation and we aren't under water. Also, it's definitely not RADAR as we are using ultrasonic pulses, not radio waves to find objects. 

With the technicalities out of the way, here are the project's objectives:
 1) To create a freely rotatable SODAR system that can continuously detect objects
 2) To create a UI that displays objects similarly to radar
 3) To make it as portable as possible

To accomplish objective #1, we need a way to prevent wires from tangling while the motor spins. There are two ways that we thought would be relatively easily implementable. The first method would be to use two Arduinos and transceivers for a wireless transmission of data from the spinning platform to the computer for display. The other method would be to use something similar to a rotating electrical connection (REC), where the electrical connection would be maintained using a conductive liquid at the intersection. 

While it seems to go against objective #3, we decided to go with the rotating electrical connection idea. This is mostly because we didn't know if it'd work and wanted to try something new. On top of this, commercial slip rings are upwards of 20 dollars (price found by ellisgl) and we wanted to see how hard it would be to make a reliable REC. In our project, we are using a vinegar-salt solution as an electrical conductive liquid because it is functional and inexpensive.

Future Work Suggestion:

Use wireless transceivers so the project can be placed in one area and send data to the laptop in another area.


Electrical circuit designer/builder extraordinaire: intensePancake
1-40 of 50Next »
BrendaC71 month ago

can someone compile all the code into one file because I cannot do so effecively and link it to github etc.

John1354 months ago


Is there anyway to use HC-SR04 sensor instead of ping? I can't seem to find it in my country and importing it costs around 65$

burstolava (author)  John1354 months ago

There would be some changes to the project you would have to make because the HC-SR04 looks to be a 4 pin sensor instead of 3 pin. But the NewPing library supports the HC-SR04, so you should be able to use it.

hello, am making now the sodar system as my final project and its almost finish with using a serial communication the uart to send and receive the data wireless. i want to ask u about the two pins that going into pvc, are they the echo and trigger or the 5V and gnd ?

thank you and ur help is really appreciated

burstolava (author)  mohammad.s.tarifi5 months ago

The circuit diagrams in steps 8 and 9 should be helpful for your question. Specifically, the PING signal and ground signal are the two pins that project into the PVC apparatus. Instead of a 5V wire into the PVC, we put a battery on the top of the styrofoam and connected it to the PING sensor. Hopefully this helps!

good job burstolava ;)

azwarc7 months ago

what code arduino???

Dill pickles9 months ago
Will your sodar system operate upside down ? Also , if I do use wireless transceivers how far away can the system be from the laptop before it stops producing information on the laptop's screen ?

well done

this is definitely going to my future DIY projects list.

i will make it and post it when im done and probably going to do both the REC and and try it with wireless communication

Awesome! Good luck and please post back here when you're up and running...or if you have any questions!

hi how are you i need your help i want to do your radar as my project can u please me all the details regarding to it plz plz plz i shalll be very thankfull to yo here is my yahoo email address and as well as my yahoo profile id plz help me.



hi how are you i need your help i want to do your radar as my project can u please me all the details regarding to it plz plz plz i shalll be very thankfull to yo here is my yahoo email address and as well as my yahoo profile id plz help me.



k_byte1 year ago
hey..this is indeed an awesome project.. I am currently working on something similar for my project but I am making use of an ATMEL microcontroller. Any advice as to my project? also making use of a stepper motor for its rotation. although there isn't an connection with a computer. Just a LCD display to show the number of objects detected. Do u mind also sharing your email address so I can contact you more often and tell you more about my project.
burstolava (author)  k_byte1 year ago

Sounds like a good idea. We used an Arduino, which has an Atmel microcontroller. You'll need to find a way to program your microcontroller and be sure to use the correct pin-out for that specific microcontroller. As for your LCD, you can use the Arduino LCD library as a reference. Although you won't be using an Arduino, the LCD code will be very similar. Most of our Arduino code for the sensor and motor control is directly applicable but the Processing code obviously won't work for your application.

k_byte burstolava12 months ago
thanks a lot..
jmance11 year ago

Could you help me with this:

I assemble it all and upload sodar.ino u Arduino, and open UI in Processing. As soon as I upload sodar.ino the stepper motor starts spinning. When I press Run in Processing it shows error: "Error opening serial port COM6: Port busy"

This is weird because my Arduino connected to COM11...

Any ideas? Thank you!

burstolava (author)  jmance11 year ago

Also, if you would prefer the motor to not automatically start spinning when the code is uploaded to the Arduino, you can initialize the stopMotor boolean to true in the sodar.ino file.

burstolava (author)  jmance11 year ago

Hey! So it sounds like your error might be due to this line. There are two ways that we could think would easily fix this:

1) Disconnect all USB connections and connect the Arduino first.

2) Change the referenced index of the Serial.list() (eg Serial.list()[1] or Serial.list()[2] ...) until you locate the correct index.

Jan_Henrik1 year ago


Have you figured out a way to make it wireless yet?

burstolava (author)  youngdavid9331 year ago

We haven't been working on making this project wireless. We saw that as a potential next step for those who were interested and wanted to build upon the project. Two of the possible ways to go about this would be using a bluetooth shield or radio transceivers for the communication between the sensor and the terminal.

tomega31 year ago

Hi, Great instructable. I will try to get it running. The processing code is excellent.

I found a website that shows using a stepper motor and an adafruit slip ring connected via gears. I will try to build it.

see http://curantilrobot.wordpress.com/2013/08/04/rang...

If anyone can help with the cutting out of the mounting frame pieces I would really appreciate the help.

can i use this sensor in this project ???
burstolava (author)  parameshwarnp1 year ago

The NewPing library doesn't document whether or not it supports that sensor specifically. A major concern with it is that it has a minimum input pulse width of 10 microseconds, while it's only 5 microseconds for our ping sensor. From looking at the NewPing source code, it seems like it'll work for sensors with an input pulse width less than 18 milliseconds, but because it's not specifically mentioned, there is a chance it may not work.

That being said, it's probably worth a shot to try out our code as written. It looks like it'll work, but we can't be completely sure. If you're set on using that sensor and it doesn't work, you could always rewrite that part of the code specifically for your sensor. You'd probably learn something from doing that.

can i use L293D instead of SN754410 ???
burstolava (author)  parameshwarnp1 year ago
As long as it is a Quadruple Half-H Motor Driver, it will work for this project. However, you should compare the datasheets of the L293D and SN754410 to see if there are any differences in how the connections have to be set up. If there are, the circuit you have to build won't be exactly the one we built, but it should work.
its showing error in the code:
'NewPing' does not name a type
plz help
burstolava (author)  parameshwarnp1 year ago
This is probably occurring because the compiler can't find the NewPing library. After downloading it, make sure to extract the contents into the general Arduino sketchbook directory. When we installed the Arduino environment, a "libraries" folder was created inside the sketchbook directory. This is where you would want to put the NewPing library.
thanks , it worked . but i'm getting another error :
'class Stepper' hs no member named 'getAngle'
what should i do ??
burstolava (author)  parameshwarnp1 year ago
This is probably happening because the compiler is trying to use the default Stepper library instead of our editted one. We altered the Stepper library to support some basic angle functions that we wanted to use in this project. As stated in Step 7, you should replace the libraries/Stepper directory with the Stepper folder from our repository. This libraries/Stepper directory should be in the Arduino program files (where the executable is for the actual Arduino program). As a side note, we did not alter any of the default functions in the library, so you do not have to worry about our version messing up your other projects that involve the Stepper library. If this does not work, please let me know.
its working , 0 errors . thankyou
amartin531 year ago
is there a way to extend the range, say to 20 m?
burstolava (author)  amartin531 year ago
Since the PING sensor's maximum range is 3m, you'd have to either find another ultrasonic distance sensor with that range or buy ultrasonic transducers with that range and build a circuit that uses them. Also, you'd have to change the Arduino code to interface with your new sensor. Finally, you may want to consider slowing down the rotation speed to get more accurate measurements. But yea, 20m is definitely more useful than 3m.
Raphango2 years ago
Great project man! Congratulations!
rluquett2 years ago
nice project! yoi should upload a video shoing it working though
I would love something like this for riding in a velo @ night so I can tell just how far behind me a car is before they even get there.
zomfibame2 years ago
I love the home made REC "slip ring substitution". Too cool.
Absolutely amazing instructable, I was wondering if this could be used on a small LCD screen display rather than a laptop. Would anyone know how to accomplish this?
burstolava (author)  notnowmyheadhurts2 years ago
We aren't that familiar with programming small LCD screens, but if you're planning to use something like a tft screen from arduino, you could use their tft library. You'd have to rewrite the visualization code that we wrote in processing. But the arduino tft library has many similar functions to what we used in processing. One plus is that you wouldn't need to use serial communication like we did. Sounds like a great addition, though. Good luck!
daliad1002 years ago
Nice project, You could try using an audio jack and socket as your connector as you aren't sending much power through it and the sensor kicks out either 5V or 0V so a bit of noise shouldn't matter.
1-40 of 50Next »