Arduino Ultrasonic Mobile Sonar





Introduction: Arduino Ultrasonic Mobile Sonar

Have you ever wondered how to explore the inside of pyramid? The deep dark area of ocean? A cave that has just been discovered? These places are considered unsafe for men to enter, therefore an unmanned machine is required to do such exploration, such as robots, drones, etc. usually equipped with cameras, Infrared cameras, etc. to view and map the unknown area live, but these requires certain light intensity, and the data acquired is relatively large. Therefore, sonar system is considered a general alternative.

Now, we can build one remote controlled sonar radar vehicle by using an ultrasonic sensor. This method is inexpensive, relatively easy to get the components and easy to build, and the more important, it helps us understand better the basic system of advanced aerial scanning and mapping instruments.

Step 1: Basic Theory

A. Sonar

The HC-SR04 ultrasonic sensor used in this project is capable of scanning from 2cm up to 400cm. We attach the sensor on a servo motor in order to build a functioning sonar that turns. We set the servo to turn for 0.1 second and stop for another 0.1 second, simultaneously until it reaches 180 degrees, and repeat by returning to initial position, and using Arduino we will obtain the sensor's reading at the moment everytime the servo stops. Combining the data, we sketch a graph of distance readings for 400 cm radius in 180 degrees range.

B. Accelerometer

MPU-6050 accelerometer sensor is used to measure the amount of accelerations about the x, y and z axis. From the change of measurements with a rate of change of 0.3 seconds we obtain displacements around these axis, which can be combined with sonar data to pinpoint the position of every scan. The data can be viewed from the serial monitor in Arduino IDE.

C. RC 2WD Car

The module uses 2 DC motors which is controlled by L298N motor driver. Basically the movement is controlled by the rotating speed (between high and low) of each motors and its direction. In the code, controls of movement (forward, backward, left, right) are converted into commands to control the speed and direction of each motor, then transmitted through the motor driver which controls the motors. HC-06 Bluetooth module is used to provide wireless connection between Arduino and any Android based devices. After the module is connected with transmitting and receiving pin, it is connected with the device. User can install any Bluetooth control app and set up 5 basic buttons and assign simple commands of (l,r,f,b and s) to the button once connection is established. (the default pairing code is 0000) Then the circuit of control is done.

D. Connection with PC and Data Result

The data obtained needs to be transmitted back to the PC in order to be read by Arduino and MATLAB to be processed. The suitable method would be setting up a wireless connection using a wifi module such as ESP8266. The module sets up a wireless network, and the PC is required to connect to it and read through the wireless connection port to read the data. In this case, we still use USB data cable to connect to PC for prototype.

Step 2: Parts and Components

Step 3: Assembling & Wiring

1. Attach the ultrasonic sensor on the mini breadboard, and attach the mini breadboard onto the servo's wing. The servo should be attached at the front of the car kit.

2. Assembling the car kit by following the instructions included.

3. The rest of the parts' position can be freely arranged depending on the wiring layout.

4. Wiring:

A. Power:

Except for L298N motor driver, the rest of the parts only require 5V power input that can be obtained from Arduino's 5V output port, while the GND pins to Arduino's GND port, therefore the power and GND can be aligned at the breadboard. For the Arduino, the power is obtained from the USB cable, either attached to PC or powerbank.

B. HC-SR04 Ultrasonic Sensor

Trigger Pin - 7

Echo Pin - 4

C. SG-90 Servo

Control Pin - 13

D. HC-06 Bluetooth Module

Rx Pin - 12

Tx Pin - 11

*Bluetooth Commands:

Front - 'f'

Back - 'b'

Left - 'l'

Right - 'r'

Stop any movement - 's'

E. MPU-6050 Accelerometer

SCL Pin - Analog 5

SDA Pin - Analog 4

INT Pin - 2

F. L298N Motor Driver

Vcc - 9V battery & Arduino 5V output

GND - Any GND & 9V battery

+5 - Arduino VIN input

INA - 5

INB - 6

INC - 9

IND - 10

OUTA - Right DC Motor -

OUTB - Right DC Motor +

OUTC - Left DC Motor -

OUTD - Left DC Motor +

ENA - Driver 5V (Circuit Breaker)

ENB - Driver 5V (Circuit Breaker)

Step 4: Arduino Code

Credits to the creators of original codes included in the file, and Satyavrat

Step 5: MATLAB Code

Please change the COM port according to the port you are using.

The code will obtain the data transmitted from Arduino through the port. Once it is run, it collects the data frequently following the amount of sweeps the sonar perform. The running MATLAB code needs to be stopped in order to obtain data in the form of graphic plots of an arc. The distance from center point to the graph is the distance measured by the sonar.

Step 6: Result

Step 7: Conclusion

For precision usage, this project is far from perfect therefore unsuitable for professional measuring tasks. But this is a good DIY project for explorers to get into the knowledge of sonar, and Arduino projects.



  • Epilog Challenge 9

    Epilog Challenge 9
  • Sew Warm Contest 2018

    Sew Warm Contest 2018
  • Gluten Free Challenge

    Gluten Free Challenge

We have a be nice policy.
Please be positive and constructive.




Thanks for sharing :)