Introduction: Tinee9: DIY Drone Avoidance Sensor

About: Tinee9's goal is to help DIY makers, companies, and inventors to make their projects come to life, especially in small packages. One of the way we will achieve that is by providing instructables on various pro…

Tinee9 is back with another quick tutorial. This tutorial will talk about the HC-SR04 Ultrasonic sensor, how to use it with arduino, and how it could be used for Drone obstacle avoidance and landing.

Tutorial Difficulty: Beginner

Step 1: Drones and Environment Sensing

DJI Mavic Air has 6 visual sensor and 2 downward infrared sensor. The sensors' information combined, allow the Air to sufficiently detect and avoid obstacles in nearly every direction. There are 2 cameras in front, 2 on the bottom, and 2 in the rear of the drone. These cameras take in the information around, which then the computer on board stitches the pieces together and creates a 3D environment. This environment is then dissected in software to determine what is an obstacle and how far way it is. When the camera looking downward does not have enough information, the infrared sensor facing down ward sends out a infrared signal and then receives it in the other channel. This allows the drone to land because it gives the information of how far away the drone is from the ground.

Step 2: DIY Drone Avoidance Sensor

Since the DJI camera sensors are lot more complicated and probably cost more money, so we will use a different sensor. The sensor we will use today is the HC-SR04 Ultrasonic Sensor. This sensor sends out an sound wave that we can't hear but maybe dogs can and waits until the sound comes back to the receiving sensor on board. Once the receiving sensor on board receives the signal, the computer makes a quick calculation of how far away an object is. This calculation is based on the speed of sound and the time it took to get back.

In the picture on the left above, this is an example of how the sound wave leaves one sensor, hits the ruler that I am holding, and then bounces back to the receiving sensor.

So how would this work on a self made drone, well if we put enough of these on we would be able to determine objects above, behind, below, and in front of us at all times. And if the sensors had enough resolution and range we could possibly and more accurately hold a position in air more accurately than a GPS signal.

Step 3: Materials

Materials list is pretty simple:

1x Arduino Nano

4x Male to Male Jumpers

1x HC-SR04 Ultrasonic Sensor

1x Breadboard

1x USB to Mini USB cable

1x PC with Arduino IDE

You can collect all materials (except PC and USB cable) in the link here. Link

Step 4: Connection

1. Place the Arduino on the breadboard (This is saying you have headers on your Arduino already)

2. Place HC-SR04 Sensor facing out of the Breadboard like above

3. Connect a Jumper from Arduino D13 Pin to HC-SR04 Trigger Pin

4. Connect a Male to Male Jumper from Arduino D13 Pin to HC-SR04 Trigger Pin

5. Connect a Male to Male Jumper from Arduino D12 Pin to HC-SR04 Echo Pin

6. Connect a Male to Male Jumper from Arduino +5V Pin to HC-SR04 VCC Pin

7. Connect a Male to Male Jumper from Arduino GND Pin to HC-SR04 GND Pin

8. Connect USB to USB mini from Computer USB to Arduino Nano USB Mini

Step 5: Load Code and Test

Turn On your PC and load up your Arduino IDE. If you do not have Arduino IDE please visit and follow their instructions.

Paste the Code Below into your Arduino IDE and Program. Once you have programmed and place your hand or an object in front of the sensor, you should see the arduino monitor show the distance changing as the object moves closer or father away.

By learning how the code below work you can then manipulate it for your need for an RC car or drone that avoids objects or even an automatic doorbell that has no button.

#define trigPin 13

#define echoPin 12

#define led 11

#define led2 10

void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(led, OUTPUT); pinMode(led2, OUTPUT); }

void loop() { long duration, distance; digitalWrite(trigPin, LOW); // Added this line delayMicroseconds(2); // Added this line digitalWrite(trigPin, HIGH); // delayMicroseconds(1000); - Removed this line delayMicroseconds(10); // Added this line digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration/2) / 29.1; if (distance < 4) { // This is where the LED On/Off happens digitalWrite(led,HIGH); // When the Red condition is met, the Green LED should turn off digitalWrite(led2,LOW); } else { digitalWrite(led,LOW); digitalWrite(led2,HIGH); } if (distance >= 200 || distance <= 0){ Serial.println("Out of range"); } else { Serial.print(distance); Serial.println(" cm"); } delay(500); }

Below is a Link to someone performing an obstacle avoidance test for the DJI Mavic Air

Link is a place for people to learn about electronics and to be inspired to invent their own devices that can better the world.