PROYECTODE UN RADAR
ULTRASONICO
UNIVERSIDAD
NACIONAL PEDRO
RUIZ GALLO
ESCUELA
PROFESIONAL
INGENIERIA DE
SISTEMAS
CURSO: ROBOTICA
PROYECTO INGENIERO: BERNARDO
DE UN RADAR NUÑEZ MONTENEGRO
ULTRASONICO
CON ARDUINO Y INTEGRANTES:
ZEÑA VALDERA JOSE DAVID
PROCESSING CASIANO
YOSHIMAR
VARGAS
1
PROYECTODE UN RADAR
ULTRASONICO
PROYECTO DE UN RADAR ULTRASONICO CON ARDUINO Y PROCESSING
MATERIALES
1. Arduino UNO o clon
2. Servo motor pequeño (TowerPro SG-92R Micro Servo)
3. Cables jumper
4. Sensor Ultrasónico (HCSR04)
5. Palitos de chupete
6. Silicona
DESCRIPCION DE MATERIALES
Arduino UNO
Arduino Uno es una placa electrónica basada en el microcontrolador ATmega328.
Cuenta con 14 entradas/salidas digitales, de las cuales 6 se pueden utilizar como
salidas PWM (Modulación por ancho de pulsos) y otras 6 son entradas analógicas.
Además, incluye un resonador cerámico de 16 MHz, un conector USB, un
conector de alimentación, una cabecera ICSP y un botón de reseteado. La placa
incluye todo lo necesario para que el microcontrolador haga su trabajo, basta
conectarla a un ordenador con un cable USB o a la corriente eléctrica a través de
un transformador.
Características técnicas de Arduino Uno
- Microcontrolador: ATmega328
- Voltage: 5V
- Voltage entrada (recomendado): 7-12V
2
PROYECTODE UN RADAR
ULTRASONICO
- Voltage entrada (limites): 6-20V
- Digital I/O Pins: 14 (de los cuales 6 son salida PWM)
- Entradas Analogicas: 6
- DC Current per I/O Pin: 40 mA
- DC Current parar 3.3V Pin: 50 mA
- Flash Memory: 32 KB (ATmega328) de los cuales 0.5 KB son utilizados para el
arranque
- SRAM: 2 KB (ATmega328)
- EEPROM: 1 KB (ATmega328)
- Clock Speed: 16 MHz
Servo motor pequeño (TowerPro SG-92R Micro Servo)
El servo SG90 Tower Pro un servo miniatura de gran calidad y diminutas
dimensiones, además es bastante económico. Funciona con la mayoría de tarjetas
3
PROYECTODE UN RADAR
ULTRASONICO
electrónicas de control con microcontroladores y además con la mayoría de los
sistemas de radio control comerciales. Funciona especialmente bien en aeronaves
de aeromodelismo dadas sus características de torque, tamaño y peso.
El servo SG90 tiene un conector universal tipo “S” que encaja perfectamente en la
mayoría de los receptores de radio control incluyendo los Futaba, JR, GWS,
Cirrus, Hitec y otros. Los cables en el conector están distribuidos de la siguiente
forma: Rojo =Alimentación (+), Cafe = Alimentación (–) o tierra, Naranja= Señal
PWM.
Este tipo de servo es ideal para las primeras experiencias de aprendizaje y
prácticas con servos, ya que sus requerimientos de energía son bastante bajos y
se permite alimentarlo con la misma fuente de alimentación que el circuito de
control. Por ejemplo, si se conecta a una tarjeta arduino, se puede alimentar
durante las pruebas desde el puerto USB del PC sin mayor problema.
Características técnicas
Micro Servo Tower-pro
Velocidad: 0.10 sec/60° @ 4.8V
Torque: 1.8 Kg-cm @ 4.8V
Voltaje de funcionamiento: 3.0-7.2V
Temperatura de funcionamiento: -30 ℃ ~ 60 ℃
Ángulo de rotación: 180°
Ancho de pulso: 500-2400 µs
Longitud de cable de conector: 24.5cm
4
PROYECTODE UN RADAR
ULTRASONICO
Sensor de ultrasonido
Con este laboratorio se pretende detectar , localizar e identificar objetos a
distancia. Su funcionamiento se efectúa emitiendo un impulso , que se refleja en el
objetivo y se recibe en la misma posición del emisor. Se pretende visualizar el
radar en una interfaz en Processing empleando un sensor ultrasonico HC- SR04.
El sensor se basa simplemente en medir el tiempo entre el envío y la recepción de
un pulso sonoro. Sabemos que la velocidad del sonido es 343 m/s en condiciones
de temperatura 20 ºC, 50% de humedad, presión atmosférica a nivel del mar.
Transformando unidades resulta
Es decir, el sonido tarda 29,2 microsegundos en recorrer un centímetro. Por tanto,
podemos obtener la distancia a partir del tiempo entre la emisión y recepción del
pulso mediante la siguiente ecuación.
El motivo de divir por dos el tiempo (además de la velociad del sonido en las
unidades apropiadas, que hemos calculado antes) es porque hemos medido el
tiempo que tarda el pulso en ir y volver, por lo que la distancia recorrida por el
pulso es el doble de la que queremos medir.
FUNCIONAMIENTO
Un radar utiliza una señal que rebota en la superficie de cuerpos sólidos y regresa,
para determinar la distancia de objetos. EL radar hace un recorrido de 180 o 360
grados para detectar que existe alrededor, e incluso para determinar la velocidad
de cuerpos que se muevan hacia el radar.
5
PROYECTODE UN RADAR
ULTRASONICO
En este instructable construimos un radar sencillo utilizando un sensor ultrasónico,
un servo y Processing para graficar la información. Además aprendemos a
conectar Arduino y processing a través de puerto serial. Entonces, por el lado de
Arduino aprendemos:
Usar un servo:
Rotar el servo de forma contínua hacia la izquierda y derecha
Utilizar un sensor de distancia ultrasónico
Mandar información por puerto serial
Del lado de Processing:
Recibir infromación por puerto serial
Separar datos recibidos
Usar sistemas de referencia en Processing.
6
PROYECTODE UN RADAR
ULTRASONICO
PROBLEMÁTICA
Hoy en día en nuestra realidad peruana hay muchos problemas que aquejan a
nuestro país pero uno de ello es lo más primordial es la delincuencia en sentido
general porque de ello se deriva el robo cibernético, el espionaje etc. En esta era
de la información está el problema del robo intelectual que afecta a todas las
personas y naciones del mundo es por ello que como estudiante de ingeniería
que estamos en proceso de aprendizaje en el curso de robótica hemos hecho el
proyecto de un radar ultrasónico con arduino y processing para detectar objetos a
cierta distancia y Angulo y así corroborar con nuestro granito de arena a los
problemas que nos aquejan en la actualidad.
SOLUCION
Este proyecto de simulación a llevar a implementar con materiales más
sofisticados puede dar muchas soluciones a problemas de seguridad en una
casa, en guerras para detectar a los enemigos, en el vuelo de aviones del
sobrepaso del límite del territorio de otro país etc.
7
PROYECTODE UN RADAR
ULTRASONICO
CIRCUITO ELECTRONICO
8
PROYECTODE UN RADAR
ULTRASONICO
CABLEADO
CODIGO FUENTE
// Includes the Servo library
#include <Servo.h>.
int red=7;
int green=8;
const int trigPin = 10;
// Definemos Tirg and Echo pines del Ultrasonic Sensor
const int echoPin = 11;
9
PROYECTODE UN RADAR
ULTRASONICO
// Variables para la duracion y distancia
long duracion;
int distancia ;
Servo myServo; //creamos un servo objeto para controlar el servo motor
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
pinMode(red, OUTPUT); // ping output led
pinMode(green, OUTPUT);
digitalWrite(red, LOW); // off
digitalWrite(green, LOW);
[Link](9600);
[Link](12); // Defines on which pin is the servo motor attached
}void loop() { // rotates the servo motor from 15 to 165 degrees
for(int i=15;i<=165;i++){
[Link](i);
delay(30);
10
PROYECTODE UN RADAR
ULTRASONICO
distance = calculateDistance();// Calls a function for calculating the distance
measured by the Ultrasonic sensor for each degree
if(distance <=15){
digitalWrite(red, HIGH);
digitalWrite(green, LOW);
}else{
digitalWrite(red, LOW);
digitalWrite(green, HIGH);
}[Link](i); // Sends the current degree into the Serial Port
[Link](","); // Sends addition character right next to the previous value needed
later in
the Processing IDE for indexing
[Link](distance); // Sends the distance value into the Serial Port
[Link]("."); // Sends addition character right next to the previous value needed
later in the Processing IDE for indexing
} // Repeats the previous lines from 165 to 15 degrees
for(int i=165;i>15;i--){
[Link](i);
delay(30);
11
PROYECTODE UN RADAR
ULTRASONICO
distance = calculateDistance();
[Link](i);
[Link](",");
[Link](distance);
[Link](".");
if(distance <=15){
digitalWrite(red, HIGH);
digitalWrite(green, LOW);
}else{digitalWrite(red, LOW);
digitalWrite(green, HIGH);
} }}// Function for calculating the distance measured by the Ultrasonic sensor
int calculateDistance(){
digitalWrite(trigPin, LOW);
delayMicroseconds(2);// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);duration = pulseIn(echoPin, HIGH); // Reads the
echoPin, returns the sound wave travel time in microseconds
12
PROYECTODE UN RADAR
ULTRASONICO
distance= duration*0.034/2;
return distance;
CODIGO FUENTE DE PROCCESSING
import [Link].*; // imports library for serial communication
import [Link]; // imports library for reading the data from the
serial port
import [Link];
Serial myPort; // defines Object Serial
// defubes variables
String angle="";
String distance="";
String data="";
String noObject;
float pixsDistance;
int iAngle, iDistance;
int index1=0;
int index2=0;
13
PROYECTODE UN RADAR
ULTRASONICO
PFont orcFont;
void setup() {
size (1200, 700); // ***CHANGE THIS TO YOUR SCREEN RESOLUTION***
smooth();
myPort = new Serial(this,"COM5", 9600); // starts the serial communication
[Link]('.'); // reads the data from the serial port up to the character '.'.
So actually it reads this: angle,distance.
}void draw() {
fill(98,245,31);
// simulating motion blur and slow fade of the moving line
noStroke();
fill(0,4);
rect(0, 0, width, height-height*0.065);
fill(98,245,31); // green color
// calls the functions for drawing the radar
drawRadar();
drawLine();
drawObject();
14
PROYECTODE UN RADAR
ULTRASONICO
drawText();
void serialEvent (Serial myPort) { // starts reading data from the Serial Port
// reads the data from the Serial Port up to the character '.' and puts it into the
String variable "data". data = [Link]('.');
data = [Link](0,[Link]()-1);
index1 = [Link](","); // find the character ',' and puts it into the variable
"index1" angle= [Link](0, index1); // read the data from position "0" to
position of the variable index1 or thats the value of the angle the Arduino Board
sent into the Serial Port
distance= [Link](index1+1, [Link]()); // read the data from position
"index1" to the end of the data pr thats the value of the distance
// converts the String variables into Integer
iAngle = int(angle);
iDistance = int(distance);
}void drawRadar() {
pushMatrix();
translate(width/2,height-height*0.074); // moves the starting coordinats to new
location noFill();
strokeWeight(2);
15
PROYECTODE UN RADAR
ULTRASONICO
stroke(98,245,31);
// draws the arc lines
arc(0,0,(width-width*0.0625),(width-width*0.0625),PI,TWO_PI);
arc(0,0,(width-width*0.27),(width-width*0.27),PI,TWO_PI);
arc(0,0,(width-width*0.479),(width-width*0.479),PI,TWO_PI);
arc(0,0,(width-width*0.687),(width-width*0.687),PI,TWO_PI);
// draws the angle lines
line(-width/2,0,width/2,0);
line(0,0,(-width/2)*cos(radians(30)),(-width/2)*sin(radians(30)));
line(0,0,(-width/2)*cos(radians(60)),(-width/2)*sin(radians(60)));
line(0,0,(-width/2)*cos(radians(90)),(-width/2)*sin(radians(90)));
line(0,0,(-width/2)*cos(radians(120)),(-width/2)*sin(radians(120)));
line(0,0,(-width/2)*cos(radians(150)),(-width/2)*sin(radians(150)));
line((-width/2)*cos(radians(30)),0,width/2,0);
popMatrix();
void drawObject() {
pushMatrix();
16
PROYECTODE UN RADAR
ULTRASONICO
translate(width/2,height-height*0.074); // moves the starting coordinats to new
location strokeWeight(9);
stroke(255,10,10); // red color
pixsDistance = iDistance*((height-height*0.1666)*0.025); // covers the distance
from the sensor from cm to pixels
// limiting the range to 40 cms
if(iDistance<40){
// draws the object according to the angle and the distance
line(pixsDistance*cos(radians(iAngle)),-pixsDistance*sin(radians(iAngle)),(width-
width*0.505)*cos(radians(iAngle)),-(width-width*0.505)*sin(radians(iAngle)));
popMatrix();
}void drawLine() {
pushMatrix();
strokeWeight(9);
stroke(30,250,60);
translate(width/2,height-height*0.074); // moves the starting coordinats to new
location line(0,0,(height-height*0.12)*cos(radians(iAngle)),-(height-
height*0.12)*sin(radians(iAngle))); // draws the line according to the angle
popMatrix();
17
PROYECTODE UN RADAR
ULTRASONICO
}void drawText() { // draws the texts on the screen
pushMatrix();
if(iDistance>40) {
noObject = "Out of Range";
}else {
noObject = "In Range";
fill(0,0,0);
noStroke();
rect(0, height-height*0.0648, width, height);
fill(98,245,31);
textSize(25);
text("10cm",width-width*0.3854,height-height*0.0833);
text("20cm",width-width*0.281,height-height*0.0833);
text("30cm",width-width*0.177,height-height*0.0833);
text("40cm",width-width*0.0729,height-height*0.0833);
textSize(40);
text(" VIRAL SCIENCE ", width-width*0.875, height-height*0.0277);
18
PROYECTODE UN RADAR
ULTRASONICO
text("Angle: " + iAngle +" °", width-width*0.48, height-height*0.0277);
text("Distance: ", width-width*0.26, height-height*0.0277);
if(iDistance<40) {
text(" " + iDistance +" cm", width-width*0.225, height-height*0.0277);
textSize(25);
fill(98,245,60);
translate((width-width*0.4994)+width/2*cos(radians(30)),(height-height*0.0907)-
width/2*sin(radians(30)));
rotate(-radians(-60));
text("30°",0,0);
resetMatrix();
translate((width-width*0.503)+width/2*cos(radians(60)),(height-height*0.0888)
width/2*sin(radians(60)));
rotate(-radians(-30));
text("60°",0,0);
resetMatrix();
translate((width-width*0.507)+width/2*cos(radians(90)),(height-height*0.0833)-
width/2*sin(radians(90)));
19
PROYECTODE UN RADAR
ULTRASONICO
rotate(radians(0));
text("90°",0,0);
resetMatrix();
translate(width-width*0.513+width/2*cos(radians(120)),(height-height*0.07129)
width/2*sin(radians(120)));
rotate(radians(-30));
text("120°",0,0);
resetMatrix();
translate((width-width*0.5104)+width/2*cos(radians(150)),(height-height*0.0574)-
width/2*sin(radians(150)));
rotate(radians(-60));
text("150°",0,0);
popMatrix();
20