Introduction: DIY 360 Degree SODAR Device

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.

Collaborator:

Electrical circuit designer/builder extraordinaire: intensePancake

Step 1: Get Materials

Non-electrical materials:

1) PVC couplings - 2", 3", and 4" diameter
2) PVC Bushing - 1"X3/4"
3) Household Goop adhesive (water-proof)
4) Gorilla glue adhesive
5) Elmer's glue adhesive
6) 12" x 12" commercial vinyl tile
7) 6" diameter cylindrical styrofoam
8) Balsa wood: 1/2"x1/2"x36", and 3/8"x3/8"x36"
9) Fun tack
10) Coupler (we used a pen body)
11) Extra cardboard (from packaging, etc)
12) Clear tape
13) White vinegar
14) NaCl
15) 3/4" Dowel

Electrical materials:

1) Arduino Uno board
2) Parallax PING))) Ultrasonic Distance Sensor
3) Stepper motor
4) SN754410 H-Bridge motor driver
5) LM7805 5V voltage regulator
6) 100μF electrolytic capacitor (1)
7) 100nF capacitor (1)
8) Perforated board (1)
9) 9V batteries (2)
10) 9V battery connectors (2)
11) alligator clips (2)
12) connection wire
13) soldering iron and solder
14) solderless breadboard

PVC sidenote: We bought 4 PVC pieces thinking we would need 3 spaces for liquid electrical conductors (ground, power, signal), but we found that our vinegar-salt solution couldn't transfer 5V to the sensor, so we only ended up using two sections and put a 9V on the spinning platform.

Step 2: Cutting and Drilling

Picture of Cutting and Drilling

We are writing these instructions the same way we made the SODAR but this is a reminder that we only ended up needing 3 PVC pieces.

PVC editing:

Using a miter box, saw the PVC so that all 4 PVC pieces are the same height. In our scenario, that would be approximately 1 & 3/8" in. Afterwards, level the PVC bases with coarse grain sand paper so that it would be flush against the tile.

Tile editing:

Cut a 6" x 6" piece off to use as a base for the PVC. From the center of the piece, mark the outer edges of the 4 PVC pieces with a compass. Then drill a central hole atleast 5/16" and three holes for the wires at 1/16" (one hole per section).

Step 3: Gluing: PVC to Base & Balsa to Styrofoam

Picture of Gluing: PVC to Base & Balsa to Styrofoam

Secure the PVC

With the goop, glue wires with stripped ends into the 1/16" holes that were drilled into the tile. Glue these so that about an inch of exposed copper is above the tile and at least a foot of sheathed wire protrude below. Afterwards, apply an even, thick layer of Household Goop on the bottom of the PVC pieces and secure them to the 6" x 6" tile. Use the outlines drawn in the previous step for proper placement. Make sure that each wire is only in its own section (to prevent shorts in the circuit) and that there are no gaps in the glue that liquids could pass through (and short the circuit). Let the goop dry as described in the instructions. 

Secure the styrofoam

Find the center of the styrofoam with a ruler and poke a hole through the middle with a pin. This pin will act as a guide for centering the coupler. In our scenario, we dug through our pens searching for a pen body that fit somewhat snugly to the stepper motor shaft. Once the coupler is centered on the styrofoam, secure 4 6" pieces of 3/8" x 3/8" balsa wood around the coupler with Gorilla Glue. Do not glue the coupler into the center yet. The balsa wood design is shown in the picture.

Note: You may want to clamp the balsa wood down or put something flat and heavy on top of it to prevent the Gorilla Glue from expanding in such a way that the balsa wood is not level. Also, since you will be putting the coupler into the center of this later, be careful not to use too much Gorilla Glue or risk filling the center piece when it expands.

Warning: There are a good amount of strong adhesives out there that will eat through styrofoam (think napalm-like reaction). We first tried adhesion with the household goop and, needless to say, we had to go buy a new 6" styrofoam piece.

Step 4: Test for Water-Tight Seal

Picture of Test for Water-Tight Seal

Fill the sections with water, looking for any leaks. If you want to, you can fill all three and then put a drop of food coloring in each looking for cross bleeding. In our scenario, we did this step after Step 5, but a leak would be much less damaging if found before that step so we recommend doing the test at this point.

Step 5: Add Lower Platform

Picture of Add Lower Platform

With the upper platform flipped so the tile is on top, place the stepper motor shaft into the center hole. Cut eight 3" long 3/4" diameter dowel pieces as spacers between the upper and lower platforms. Using Goop, glue four of the pieces so that the motor is stabilized. Glue the other four farther away from the center so that the weight is more evenly displaced. Glue a second 6" x 6" piece of the tile to the bottom of this and let it dry. It is best to have the motor securely flat against the bottom tile.  However, if you don't want glue on the motor (like us), and lift it, you run the risk of having to put small spacers to level is after everything dries (like us). The picture shows the piece after this step with the uncut coupler (a pen with fun tack).

Note: An alternative to this step would be to not have the innermost PVC piece (since only three are needed), and instead have the motor up, level with the PVC on the initial tile base.

Step 6: Binding Bottom to Top

Picture of Binding Bottom to Top

Cut the coupler:

Measure the length of coupler (pen) that you want to use, including a gap between the PVC and balsa wood. In our project, the gap was 1/2". 

Binding the pieces:

Add Gorilla Glue to the center of the styrofoam, between the 4 balsa wood pieces. Place the styrofoam upside down so the balsa wood is facing up and put spacers between the balsa wood and PVC (we used 3" x 1/2" x 1/2" balsa wood pieces). After securing the coupler to the stepper motor shaft, place it on top of the styrofoam. The weight of this piece will prevent the expansion of the Gorilla Glue from tilting the styrofoam relative to the coupler.

Step 7: Downloading Code

Picture of Downloading Code

Arduino, Processing, and Our Code

To control the SODAR device, the Arduino must be correctly programmed, and the computer must communicate with it through the serial port. We have written Arduino code and Processing code to do just that, and it's all available at our GitHub repository.

Stepper library

In order to get the required angular functionality from the stepper motor, we have made some custom additions to the Arduino stepper library. The updated library supports all of the same functions as the default stepper library. It is included in the libraries/Stepper directory in our repository. Just find the libraries/Stepper directory that Arduino uses and replace it with the new one.

NewPing library

For smooth operation, we also implemented interrupt-based PING sensor code using the NewPing library, available for download here. Download this and place it in the libraries directory of your Arduino sketchbook.

Note: The Arduino code must be uploaded to the board before running the Processing UI because the UI takes control of the serial port.

Step 8: Controlling the Stepper Motor

Picture of Controlling the Stepper Motor

An Arduino Uno was used to control the stepper motor. Follow the schematic to connect the Arduino to the motor driver, and the driver to the stepper. The motor can be driven by a 9 volt battery, and our current measurements show us that battery life is about 1.5 hours of continuous use.

The "GND" and "PING))) Signal" wires are the same wires that were glued through holes in the tile in Step 3. These are for communication between the Arduino and the PING sensor. For an easy connection, put alligator clips on these wires, and use them to finish the connection. Now, one end of these wires should be in the vinegar-salt solution chamber, and the other end should have an alligator clip on it.

After building this circuit, you should be able to control the motor with the Arduino Stepper library.

Step 9: Connecting the PING))) Sensor

Picture of Connecting the PING))) Sensor

Building the circuit

Follow the schematic to build the PING Sensor power supply circuit. Solder it together on a perforated board for stability. This circuit will go on top of the rotating platform, and will supply a constant 5 volts to the sensor. The capacitors are there to stabilize the input and output and minimize electrical noise.

The two wires that lead into the circuit, "GND" and "PING))) Signal", must be long enough to make it through the styrofoam and into the salt-vinegar solution below. For us, they needed to be about 7 inches long. When in doubt, though, it's always better to cut them long and adjust them later.

Mounting the board

Once this circuit is completed, place it on top of the styrofoam platform. You may need to angle the sensor upward so that it doesn't only see the platform. We secured the circuit board to the styrofoam with extra pieces of wire that we stuck into the styrofoam. These weren't electrically connected to anything. We also made a 9V battery holder from a piece of cardboard and clear tape, and glued it to the styrofoam with normal Elmer's glue to keep it there.

Step 10: Final Construction

Picture of Final Construction

Vinegar-salt solution

Add salt into about one cup of white vinegar, stirring constantly, until the solution is saturated (no more salt will dissolve). This liquid can conduct electricity. Pour it into the PVC chambers to an acceptable height. There needs to be enough to touch both wires in each chamber as it spins. There should be no leakage, especially after testing in Step 4.

We noticed that when a current was running, many bubbles formed at the wire in the vinegar-salt solution due to hydrolysis reactions.

Note: When pouring the solution into the chambers, the rotating platform should probably not be attached.

Reattaching the platform

If your coupler is a pen (like ours) or a similarly shaped object, there is likely a gap between the inner walls of the coupler and the motor shaft. To alleviate this problem, we used fun tack to secure the coupler. To do this, put some fun tack into the bottom end of the coupler before placing it back on the motor shaft. Slowly push the coupler onto the motor shaft, possibly holding it with needle-nose pliers, until there is about a 1/2" gap between the PVC and the balsa wood.

Connecting through the vinegar-salt solution

In Step 9, we made the signal wire and ground wire coming out of the PING sensor circuit long. Guide those wires through the styrofoam into their respective chambers so the exposed ends are in the vinegar-salt solution. The integrity of this connection must be maintained throughout rotation of the platform, so make sure enough wire is touching the solution.

Step 11: Final Product

Picture of Final Product

Four Little Things

1) Connect the Arduino to your computer through a USB cable.
2) Program the board with the Arduino code from our GitHub repository.
3) Connect both 9V batteries to the battery holders.
4) Start the Processing code.

You are now running a portable SODAR device capable of detecting objects up to 300cm away in any direction. Congratulations!

Comments

p3rikitu (author)2017-10-16

Hi dear, i am doing a school work based on your project. The main differences between my project and yours is that my stepper motor will step 360 degrees to one direction and 360 degrees to the other in order to avoid all the construction that you build. I think i've managed to solve this issue but there's another problem. The sensor i'm using is a HC-SR04 which has a trigger and echo line. I'm a begginer in programming and I don't really know how I could change my program in order to make it work. Could you tell me which are the main parts i should modify in the arduino code related with the HC-SR04 and also I would like to know if something should be changed in the processing code. As I said i just modified the motor and the sensor and my last request is that i just would like to know if there would appear any more problems. By the way, it doesn't currently work, when i play the processing code, it goes crazy.

burstolava (author)p3rikitu2017-10-18

For a 4-pin setup, you need to indicate the correct pin numbers in "sodar.ino" lines #5 and #6 (#define TRIGGER_PIN ____). This will depend on how you connected the wiring to the Arduino.

I just downloaded Processing3 and ran the "UI" code, it seems fine to me on my Mac. What do you mean by "it goes crazy?"

Nothing needs to be changed in the processing code.

The code is written to continually rotate in one direction. If you want to go back and forth, you'll have to change the part of the "sodar.ino" file at line 58. Putting in a negative value here will cause the stepper to go the opposite direction.

p3rikitu (author)burstolava2017-10-25

Hello again and thank you for your response. The fact of knowing that I don't have to change the processing code is such a relief.

First of all, as it's a different sensor from yours does the NewPing library still work?

When you said that I have to put a negative value in line 58 to make it rotate to the opposite direction:

if(!stopMotor) {

motor.step(-1);

It will only turn to the opposite direction. However, how can I make it change direction constantly with this method? We have to consider that after every step it has to send data, so to respect this condition i had thought of this code:

void loop() {

for(int STEPSCounter=0;STEPSCounter<=800;STEPSCounter++){

if (STEPSCounter<=400){

motor.step(1);}

else if(STEPSCounter>400){

motor.step(-1);}

}

}

And inside every if I would also add the void loop code you have in your program. However I'm not certainly sure whether it would work. Could you clarify what you said about what you would change to make it rotate properly?

When I play the processing code and said it went crazy I meant that the green part stays at the right, it doesn't move and ocasionally jumps into random angles and then jumps back to the right. In addition, some spots also appear randomly.

Thank you in advance :)

burstolava (author)p3rikitu2017-10-25

You could google it to verify, but I'm pretty sure NewPing will work on your motor.

The "loop" function iterates constantly, so you don't need an internal for loop. Maybe use global variables to do something like...

int iterateAngle = 0;

boolean forward = true;

void loop() {

//all the normal code in the loop function

if(forward){

motor.step(1);

}else{

motor.step(-1);

}

iterateAngle += 1;

if (iterateAngle = 200) {

forward = !forward;

iterateAngle = 0;

}

}

I do not know what the issue would be with your Processing code, but it would likely be with the serial communication. Whatever the Arduino sends to the Processing code (angle and distance), the Processing code displays it. One suggestion I have is that line #55 of UI.pde guesses that the Arduino is connected at 'Serial.list()[0]', if you have a bunch of things connected to USB ports on your computer, this might not be true and it would be pulling data from some other instrument attached to your computer.

p3rikitu (author)burstolava2017-11-07

Due to the program you suggested i finally managed to program the motor correctly. In addition, i tried the processing code in another computer and the green part started rotating properly.However, no dots appeared. The wiring regarding the sensor is also correct theoretically, maybe the 4-pin sensor i have might no be compatible and i should replace it for a 3-pin sensor.

Could you please explain very briefly what the different parts(UI,console,dots,serial,nTree) of the processing code do?Moreover, could you explain aswell how the black text window which shows up when you play the processing code works?'Cause i've seen there are some commands like start,stop,history,pps,rpm, etc but some of them i dont know how they work.

Thank you again.

p3rikitu (author)p3rikitu2017-11-08

Hi again, just wanna clarify that the program actually works correctly. The 4-pin sensor didn't need such a complicated schematic wiring, just connecting the 5 volts from the arduino to the sensor, and it worked well. So the big problem is solved :)

However if it's possible try to explain me what i asked in the previous comment.

Thank you :)

burstolava (author)p3rikitu2017-11-09

Okay, the UI.pde file deals with setting up the interface and then draw() is a command, like in Arduino main code, which loops continuously. This is responsible for changing the interface while the program is running. console.pde organizes functions and data structures that deal with the console, which is the black text window. When you press any key, the "keyPressed()" command is called in console.pde. Specifically, if you hit "enter", the program calls processCmd(), and attempts to figure out what your command was, and do it. console.pde contains the code that tells the Arduino commands. serial.pde listens for anything the Arduino might send, such as your [distance, angle] signal combinations. serial.pde will add new dots to the total number of dots and when the UI.pde calls draw() again, it will see a new dot and display it on the screen.

dots.pde is just a data structure to organize the dots that appear and disappear over time, as your sensor detects things. nTree is a data structure for an n-ary tree. We put this in so if you type "sp" and then hit the Tab button, the console will complete it to "speed" automatically.

'start', 'stop', and 'clear' are pretty obvious commands. 'speed' and 'rpm' do the same thing, tell you the current speed and if you do something like "speed(x)", it's supposed to change the speed to that rpm. 'move()' is supposed to let you specify the exact angle you want the sensor to be looking at, and the motor will reposition itself to that angle. 'history' is an internal variable for the console, not very useful. As a caveat, because you're not making the project as I've posted it, I can't guarantee these commands are all working as intended, but I've explained what they are supposed to do.

Hope this helps make sense of the code.

hmdsmit (author)2017-07-10

hi dear friemd ( again )
( long time because i forgot my password )
tganks for your great project
i am trying to make it
but i have problem :

i have HY-SRF05 UL module
it working by to wire ( trigger and echo line )
this is HY-SRF05 Library :

/* Tested with HY-SRF05, HC-SR04 Assuming a room temp of 20 degrees centigrade The circuit: * VVC connection of the sensor attached to +5V * GND connection of the sensor attached to ground * TRIG connection of the sensor attached to digital pin 12 * ECHO connection of the sensor attached to digital pin 13
*/

const int TRIG_PIN = 12;
const int ECHO_PIN = 13;
void setup()
{
// initialize serial communication:

Serial.begin(9600);   pinMode(TRIG_PIN,OUTPUT); pinMode(ECHO_PIN,INPUT); }

void loop() {
long duration, distanceCm, distanceIn;

// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); duration = pulseIn(ECHO_PIN,HIGH);

// convert the time into a distance
distanceCm = duration / 29.1 / 2 ;
distanceIn = duration / 74 / 2;

if (distanceCm <= 0){ Serial.println("Out of range");
}
else {
Serial.print(distanceIn); Serial.print("in, "); Serial.print(distanceCm); Serial.print("cm"); Serial.println();
}
delay(1000);
}



and how can i mix sodar.ino and serial .ino together and program to arduino board ?
can you edit sodar file via HY-SRF05 and mix it by serial too and put it here ?
thanks

burstolava (author)hmdsmit2017-07-11

If you download the GitHub repository and then just open both files in the Arduino IDE before you click the "play" button, it should work. We did not have to fuse the files for the program to run correctly (see https://www.arduino.cc/en/Hacking/BuildProcess).

At the top of the sodar.ino file, you will see that we designate the pin values and other constants for the project. You can replace those values to match your setup (e.g. #define TRIGGER_PIN 7 --> #define TRIGGER_PIN 12). I can't modify this myself for you because I do not know how your circuit is designed.

hmdsmit (author)burstolava2017-07-13

hi again
and thanks for your answer.
yes i download it first
but i am not expert in arduino programming
in your project used ping ul sensor, my project desine is exactly like yours but in my country , i cant find ping sensor and i used HY-SRF 05
it hase two pin for rx and tx ( TRIGGER as tx and ECHO as rx )
first is trigger pin that must be High for 10 microseconds and then it must turn it Low and wait for Echo puls on Echo pin
Can u change program for me by using D7 arduino pin as ECHO line And another Dig. pin for TRIGGER
And then mix sodar and serial .ino
thanks for your responsibility

hmdsmit (author)2017-07-10

there is 1K Ohm in your electrical material but i can't see it in any circuit
where is it ?

burstolava (author)hmdsmit2017-07-11

It appears as though we did not use it in the final circuit design. Sorry for the confusion.

hmdsmit (author)2017-04-06

hi
l am not expert in arduino
which program should compile and program on arduino board , can i copy and paste all of them in work space and then i click on program icon to compile and program on it ?
the window that is our scope (UI) it work automatically when we have data on serial port ?
thanks for your sharing

burstolava (author)hmdsmit2017-04-11

For programming the arduino you will need to compile both *.ino files into a single sketch, as they are both required.

And yes, the UI will work automatically if the Arduino code is already running.

Wallace09 (author)2017-01-07

Arduino:1.8.0 (Windows 10), Kart:"Arduino/Genuino Uno"

sodar:62: error: 'angle' has not been declared

void writeData(float cm, angle)

^

D:\Belgeler\Arduino\sodar\sodar.ino: In function 'void loop()':

sodar:49: error: too few arguments to function 'void writeData(float, int)'

writeData(cm);

^

D:\Belgeler\Arduino\sodar\sodar.ino:62:6: note: declared here

void writeData(float cm, angle)

^

sodar:54: error: too few arguments to function 'void writeData(float, int)'

writeData(cm);

^

D:\Belgeler\Arduino\sodar\sodar.ino:62:6: note: declared here

void writeData(float cm, angle)

^

D:\Belgeler\Arduino\sodar\sodar.ino: At global scope:

sodar:62: error: 'angle' has not been declared

void writeData(float cm, angle)

^

D:\Belgeler\Arduino\sodar\sodar.ino: In function 'void writeData(float, int)':

sodar:72: error: redeclaration of 'byte buffer [4]'

byte buffer[bufSize];

^

D:\Belgeler\Arduino\sodar\sodar.ino:64:8: note: 'byte buffer [4]' previously declared here

byte buffer[bufSize];

^

sodar:74: error: 'angle' was not declared in this scope

floatToBuffer(buffer, angle);

^

D:\Belgeler\Arduino\sodar\sodar.ino: In function 'void longToBuffer(byte*, long int)':

D:\Belgeler\Arduino\sodar\sodar.ino:120:30: warning: right shift count >= width of type

buffer[2] = (byte) data >> 16;

^

D:\Belgeler\Arduino\sodar\sodar.ino:121:30: warning: right shift count >= width of type

buffer[3] = (byte) data >> 24;

^

D:\Belgeler\Arduino\sodar\serial.ino: In function 'void execute(byte)':

serial:45: error: 'class Stepper' has no member named 'setAngle'

motor.setAngle(angle);

^

exit status 1

'angle' has not been declared

This report would have more information with

"Show verbose output during compilation"

option enabled in File -> Preferences.

how can i fix this errors

burstolava (author)Wallace092017-01-07

This is probably happening because the compiler is trying to use the default Stepper library instead of our edited 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.

Also, this has been asked before in the comments, so I would like to make this more obvious in the Instructable itself. Would making Step 7 more descriptive have been helpful or should I add a comment to the Arduino code to remind others to use the Stepper library we edited?

Wallace09 (author)burstolava2017-01-09

Hello again
I used your stepper library. But all errors again. I use arduino 1.8.0 and processing 3.2.3 on Windows 10.1

burstolava (author)Wallace092017-01-09

Alright, your error seems to originate from line 49 and line 54 in sodar.ino where it is saying that it is only getting one argument (cm) when it should be getting two arguments (cm, angle). In both cases the variable angle is being set by motor.getAngle(). My guess is that motor.getAngle() is returning void instead of the current motor angle, possibly because the Arduino and stepper are not communicating correctly. Can you check this? Maybe by putting Serial.print(motor.getAngle()) at line 48?

Wallace09 (author)burstolava2017-01-11

Hello again
I'm solved this problem.

void writeData(float cm)
{
byte buffer[bufSize];

// fill the buffer with the distance reading
floatToBuffer(buffer, cm);
Serial.write(buffer, bufSize);
//Serial.print(cm);
//Serial.print(" cm @ ");
}
void writeData(float angle){
// fill the buffer with the angle
floatToBuffer(buffer, angle);
Serial.write(buffer, bufSize);
//Serial.print(angle);
//Serial.println(" degrees");
}

Thank you for support

burstolava (author)Wallace092017-01-11

Sorry to say, but this won't work. A compiler will overwrite a function when another function has the same name. So only the second function will exist. The variable "buffer" is not initialized in the second function, which would break the program. And even if you fix this, you are only sending the angle to the Processing code, so your data won't visualize correctly.

Did you do what I asked in the last comment? If in your Arduino IDE terminal there isn't a number being output, then the motor.getAngle() function is not working for some reason. If a number is being output, then the only other thing I saw in your error was that line 62 was written as "void writeData(float cm, angle)" instead of "void writeData(float cm, float angle)". On GitHub it is written the correct way, but could this be your issue?

cuoidenchet (author)2017-01-07

when i download files from your Github site, I see 2 arduino code file(.ino file). They are serial anh sodar. So, What file I have to program the board? thank you.

burstolava (author)cuoidenchet2017-01-07

You'll need to open both files in a single sketch. They are both required.

azbuilderdude (author)2017-01-03

I haven't made this yet, I see you have a radar kinda thing in the picture of your computer screen, I can't see it in the GitHub files. Is that part of the project and is there somewhere I can download it?

burstolava (author)azbuilderdude2017-01-04

You'll need a visualization program called Processing to open the radar UI for this project. In the GitHub files, the code for this is under the folder "UI."

See Step 7 for links to Processing. You should be able to run our code and at least see the UI, even if you don't have the rest of the project done yet.

UrsT (author)2016-05-09

Hello burstolava

Thank you for your reply of May 5, 2016.2: 27 PM
Now the monitor-console is working properly

Thank you for your efforts

greetings from Switzerland
UrsT

UrsT (author)2016-04-12

I have copied
your DIY 360 ° -Radar with small changes. I have a adafruit-slip ring used and
a 1: 1 gear driven.



With the software of github.com all is well.



However, I do not succeed, by Tab key the various nodes (speed / rpm, pps,
history, move, clear, stop, start, exit, help) display.

What am I doing wrong?

I might need additional software?

My email-adress:
urstrueb@bluewin.ch

greetings from Switzerland

burstolava (author)UrsT2016-04-27

Hello! If I'm reading this correctly, you are having issues with the Tab completion in the Processing code? Is the program not completing the tab correctly or the command is not executing correctly? The only software you should need would be from Processing and Arduino to run the code. We've only tested on Linux and Windows though.

UrsT (author)burstolava2016-04-28

Hello burstolava

I have Processing 2.2.1 (Processing revision 0227) installed.

When I run the file "UI.pde" appears a second window with the "radar screen" and which continuous moving green sector. Objects in the area of the sensor are correctly identified and displayed

Now if I press the PC key "Tab", nothing happens. The black box to the right of the "radar screen" remains empty.

greetings from Switzerland


burstolava (author)UrsT2016-05-05

Hey, so I've downloaded both Processing 2.2.1 and Processing 3.0.2, and the UI seems to work okay on my windows machine. I wrote the tab completion just to make the "console" feel more like a console. But it doesn't have every feature of a console because I wrote this from scratch. If you haven't typed anything, hitting tab will not "complete" because it doesn't know what you are trying to say. But if you type "sp" and then hit the tab key, it should tab complete to "speed."

yoav-medan (author)2016-04-02

Hi

What level of distance measurement accuracy may one expect from this setup?

Thank you

burstolava (author)yoav-medan2016-04-06

Hi, the accuracy of this device will be entirely dependent upon the PING sensor specifications. The furthest distance measurable by this sensor is ~3 meters, but the PING sensor manual would be a better reference for the sensor accuracy and such.

yoav-medan (author)burstolava2016-04-07

Thank you

I am interested in a range of 10cm-50cm.

What precision should I expect?

Alternatively, a link to the sensor manual is appreciated

burstolava (author)2016-04-06

There is a set of comments on this page that parameshwarnp asked me regarding these errors. My responses to his questions and step 7 should be useful in getting your program entirely functional.

kparrott11 (author)burstolava2016-04-07

Apologies for the comment. I figured it out. I actually had to modify the sodar code to work with HC-SR04. Next time I'll stop, take a deep breath and relax my mind before opening my big mouth lol. I guess I was just frustrated after the hours of studying.

Thank you so much for your response!

IanB38 (author)2015-09-09

Hello! May i know how many watts the resistors and the capacitors should be? The electrical shop wont give them because they have many kinds that have different wattage. Also, what would be the brand of the stepper motor?

This is for our research, btw.

(We did proper citation, just so you know)

burstolava (author)IanB382015-09-14

Hello,

From what we remember, the resistors were probably 1/4 watt, but all the components we used were pretty ordinary.

As for the stepper motor, we used Sparkfun part number ROB-09238.

aniket_ (author)2015-09-04

please let me know if used Xbee series instead of REC circuit then it will be a wireless as you said in future work suggestions ? and another question is if i used 2 motors then will it be possible to rotate it 360 degrees please reply because i am working on it as my final year project

Thank you

burstolava (author)aniket_2015-09-07

If you're using Xbee shields instead of the REC, that sounds like the alternative approach which we touched on in the introduction, but not necessarily the 'future work.' The future work we were suggesting would involve wireless connection between the SODAR device and the computer with the interactive console, so you could put the SODAR device in one room/area and observe what it is sensing from another room/area.

As for your other question, I'm not sure if I understand what you're asking, but our device is already capable of rotating continuously (all 360 degrees with one stepper motor).

aniket_ (author)2015-09-04

BrendaC7 (author)2015-07-25

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

John135 (author)2015-04-22

Hi..

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)John1352015-04-24

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.

mohammad.s.tarifi (author)2015-03-28

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

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!

abderrahmane.camarade (author)2015-01-21

good job burstolava ;)

azwarc (author)2015-01-03

what code arduino???

Dill pickles (author)2014-11-26

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 ?

palestinian-warrior (author)2014-03-03

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!

inam.u.haq.92 (author)burstolava2014-10-09

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.

excellence_happy@yahoo.com

https://www.facebook.com/inam.u.haq.92

About This Instructable

143,328views

927favorites

More by burstolava:DIY 360 Degree SODAR Device
Add instructable to: