Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Carrera de ……………
Ultrasonic Motion Sensor with radar interface in Processing for object detection
with Arduino
Esmeraldas – Ecuador
www.pucese.edu.ec
futuros accidentes. Un sensor ultrasónico de inicio de la introducción para la detección de
movimiento es un dispositivo electrónico objetos que se encuentran en el ambiente. En una
compuesto de varias unidades receptoras y de las investigaciones se muestra que se puede
emisoras de señales capaces de captar variaciones implementar para la realidad virtual, porque en
en el espacio a través de una onda ultrasónica que las simulaciones, las personas para observar lo
recorre el área y vuelve al detector rebotando en que tienen en su entorno, en otras palabras, el
cada objeto que se encuentra en el ambiente; si el mapeo de su espacio.
dispositivo detecta un nuevo objeto se activa [1].
También estos sistemas de mapeos usando los
Existen muchos campos en los cuales utilizar los sensores ultrasónicos, no solo sirven para los
sensores ultrasónicos de movimiento y también seres humanos, también se aplica en la creación
otros muchos que se tienen que experimentar, de sistemas avanzados para robots, la exploración
por eso en este proyecto se da un enfoque un de zonas desconocidas y/o peligrosas para
tanto general sobre la utilización y aplicación de acceder [3]. Los sensores ultrasónicos más
estos dispositivos en los diferentes ámbitos de comunes al momento de usarse son el HC-SR04,
trabajo y entretenimiento. Resaltando varias de para proyectos de bajo presupuesto, combinado
las aplicaciones fundamentales de estos sensores con un Arduino y un protoboard, se crea un fácil
se pueden mencionar algunas como: sensor, si queremos darle un movimiento más
real, podemos usar un servomotor.
Control del nivel de llenado en silos de
grava Un servomotor es un tipo especial de motor que
Detección de altura del brazo en permite controlar la posición del eje en un
maquinarias agrícolas movimiento dado, fue diseñado para moverse una
Protección antichoque en plataformas de determinada cantidad de grados y luego
trabajo aéreo mantenerse fijo en una posición. Existen varios
Detección de orificios en arboles tipos de servomotores para todo tipo de usos, en
Control de vehículos recogedores de robótica, se implementa, en el interior de las
basura impresoras, también están los servomotores de
tipo industrial, esos se usan ya para proyectos
empresariales. En este caso se usará un
Estas son solo algunas de muchas aplicaciones
servomotor de modelismo.
que tienen este tipo de sensores que permiten
facilitar en gran medida el trabajo que deben
El uso que se les da es común en la construcción
realizar las personas en dichos campos de trabajo.
de robots porque permiten un movimiento
De tal forma que la automatización que se quiere
controlado y por entregar un mayor par de torsión
lograr actualmente y hace años no está tan lejos
(torque) que otro motor como el DC. Puede ser
cuando se plantean ideas con este tipo de
configurado por medio de la plataforma Arduino,
dispositivos. Claro está que no todo es perfecto y
para calibrar la cantidad de grados que deseamos
es que hay que ser conscientes de que se tiene
que gire y medir la velocidad de giro del mismo.
que informar sobre estos artefactos para evitar
Como en este proyecto buscamos que nuestro
posibles inconvenientes a la hora de aplicarlos
sensor tenga movimiento suave, no tan brusco
principalmente en hogares donde la seguridad de
para que tenga una lectura de objetos más precisa
las personas es muy baja en comparación a las
al momento de observarlo en la interfaz gráfica
empresas con un equipo especializado para
del radar. La demanda de mediciones de baja
prevenir accidentes y trabajar de manera segura y
frecuencia y baja presión promueve la mejora
organizada[2].
continua del dispositivo de calibración de presión
dinámica [4]. Un aparato de calibración basado en
Lo bueno de los radares ultrasónicos, es que,
servomotor puede llegar a tener problemas,
tienen muchas utilidades en cualquier campo de
depende de cómo enlacemos el sensor
nuestra imaginación, es cuestión, de saber de qué
ultrasónico, puede perder estabilidad para la
manera lo vamos a implementar, como se dijo al
detección de objetos a su alrededor, podemos
PAGE 2
Sede Esmeraldas
Carrera de ……………
enlazar con silicona o un pequeño pedazo de mayoría de estas aplicaciones requieren que el
madera, lo primordial es que se encuentre en una sistema de detección sea no invasivo y no
superficie plana para mayor equilibrio. En este perturbe el entorno de trabajo normal, los
caso, se calibro como prueba a 90° para mayor dispositivos o los seres vivos en el área de
exactitud y con baja velocidad de movimiento. detección. Esto implica la elección de vectores
discretos para el transporte de información, con
Para la programación del Arduino, el servomotor y alta inmunidad a todos los demás factores, a
el radar, se usará dos programas, uno para el menos que el estado de movimiento [5]. Por
movimiento del servomotor y otro para la interfaz ejemplo, el sistema de piloto de asistencia de
de detección de objetos. Uno de estos programas estacionamiento (PAP) desarrollado por Volvo
se llama “Processing”. Es un lenguaje de puede llevar a los conductores a encontrar
programación algo desconocido para el espacios de estacionamiento al combinarse con la
aprendizaje de las ciencias de la computación, tecnología de sensores de imagen inteligentes,
puede que se quede en segundo plano al lado de detectar obstáculos cercanos, planificar rutas de
Python o Scratch. Processing es un dialecto de dirección múltiple y controlar la dirección auxiliar
Java que se diseñó para el desarrollo del arte eléctrica, [6]. Enfocado más en carros eléctricos
gráfico, para las animaciones y aplicaciones de de última generación, como los Tesla, que tienen
todo tipo, como es basado en Java, quiere decir variedad de sensores de movimiento. Para poder
que es multiplataforma, tiene la ventaja de que no fundamentar la investigación, tomamos varias
necesita mucha configuración para comenzar a referencias de artículos que están relacionados
usarlo, a diferencia de Arduino u otras específicamente con la base teórica del proyecto,
plataformas. Gracias a la escalabilidad, podemos uno de ellos es “Object Detection Using Ultrasonic
combinarlo con aplicaciones de Java en dos Sensor”, este articulo ayudo a tener una idea más
sentidos. Para nuestro proyecto es usado, para la clara para poder tener un soporte con el trabajar
demostración del sensor ultrasónico, ahí se refleja en el planteamiento del proyecto. Tomando como
el objeto que está pasando por el sensor, se guía las ideas de este artículo se pudieron
dibuja unas franjas rojas en el radar, depende del establecer nuestras propias ideas sin alejarnos del
alcance del radar se va a detectar en la interfaz de marco teórico de las referencias. En el artículo
Processing. anteriormente mencionado se expresan ideas
como que “los sensores ayudan a detectar los
Además, se usó la plataforma Arduino, que es objetos debido a ondas de rebote que dan
conocido por la gran variedad inmensa de información de donde se encuentran”. Además,
proyectos ahí creadas, es algo más compleja en proporcionan el dato de la distancia a la cual se
configuraciones que Processing, esta se usó encuentra el objeto. Por tanto, con la ayuda de la
principalmente para el movimiento del herramienta “Processing” se pudo visualizar esa
servomotor, regulando la velocidad y los grados distancia y forma de los objetos que el sensor
del mismo. Al combinarse estos 2 programas detectaba conforme rotar en 180 grados [7].
podemos el funcionamiento en tiempo real, si
tenemos conceptos básicos de programación, Para poder comprender un poco más sobre como
podemos modificarlo a nuestro gusto, darle establecer la distancia a la que se encuentran los
“delay” al movimiento del servomotor, etc. Por cuerpos nos vimos en la necesidad de
último, La detección de movimiento de objetos o fundamentar las ideas en un artículo que se titula
seres vivos podría ser interesante en muchos “Distance Measuring by Ultrasonic Sensor” este
dominios, como dispositivos de seguridad, articulo proyecta ideas específicas sobre cómo
radares, posicionamiento de robots industriales, lidiar con la distancia a la hora de implementar un
niveles de líquido en tanques, profundidad de sensor ultrasónico en Arduino y así tener más
bancos de nieve y sistemas de guía automática. La información en pantalla, que en consecuencia se
Esmeraldas – Ecuador
www.pucese.edu.ec
tendrá mayor precisión con los cálculos. Una de internas. La imagen de pulso-eco de LU es similar
las ideas más importantes del artículo es que para al ultrasonido tradicional. Sin embargo, en lugar
medir la distancia de los objetos respecto al de utilizar transductores piezoeléctricos para
sensor ultrasónico, se tienen que tomar en generar y recibir un pulso de sonda acústica corto,
consideración algunos factores importantes para utiliza un pulso de láser corto típicamente [10].
la correcta medición de la distancia, como
ejemplo está el material del objeto, de manera Una de las aplicaciones que podemos dar a los
que para lograrlo se realiza un código general para sensores ultrasónicos son para la seguridad vial de
los materiales más comunes y así calcular lo la ciudad, debido a la cantidad de infracciones o
deseado. Una vez analizado las ideas planteadas accidentes que ocurren en Esmeraldas, no se
en el artículo se obtuvo un escenario más claro pone en práctica una solución por parte de las
sobre como juntar todos los recursos para llevar a autoridades, la preocupación de seguridad más
cabo el proyecto y poder presentar los resultados importante es la velocidad excesiva que resulta en
[8]. accidentes, lesiones, muerte, así como daños en
público propiedad. Por lo tanto, la imposición de
Los conjuntos de sensores enfocados pueden la velocidad automática es esencial e importante
utilizarse en imágenes foto acústicas y láser en el arsenal del municipio para prevenir y
ultrasónicas para aumentar la sensibilidad y la combatir la velocidad excesiva. El sistema de
resolución espacial en una región espacial control de velocidad que utilizado en el proyecto
limitada. El enfoque de un arreglo lineal en la “Implementation of a Speed Control System Using
dirección de elevación permite formar el plano de Arduino” nos da otra manera de uso de este
la imagen para imágenes de sección transversal sensor, puede prevenir la muerte de personas si
2D. El enfoque adicional de un arreglo lineal en son colocados en lugares estratégicos, y así que el
dirección lateral puede mejorar la resolución sistema de multas funcione de la mejor forma y la
lateral, sacrificando el tamaño de la región de ciudadanía tome conciencia al momento de
sensibilidad. Generalmente, la forma resultante manejar, porque ponen en riesgo sus vidas, las de
del arreglo será toroidal. Además, cuanto mayor sus familiares, incluso de los peatones [11].
sea el ancho de la región espacial con alta
sensibilidad, menor será la resolución espacial en Además, podemos combinar la tecnología de
la dirección correspondiente. Las matrices Arduino con Android, ya que, al combinar el
enfocadas son de particular interés en las sondas sensor que se implementa en un robot junto con
de imagenología PA de mano debido a la mejor una cámara de vigilancia, a través de un enlace de
resolución lateral, la reducción de los artefactos Wifi, que esto se facilita con el uso de APIs
de imagenología y la capacidad de visualizar (Interfaces de programación de aplicaciones), el
superficies inclinadas. Además, sólo se debe costo puede variar, dependiendo del uso y el
iluminar la región de sensibilidad, para que el rango en que el robot va a realizar su trabajo, es
sistema de suministro de luz pueda ser así que en el proyecto “An Android Mobile Robot
optimizado [9]. for Monitoring and Surveillance” se propone esta
idea y reflejan variedad de resultados al colocar
La PA combinada y la imagenología de ultrasonido diferentes objetos para probar la agilidad con la
de pulso-eco tradicional pueden proporcionar que evita obstáculos, se reflejan resultados
información funcional y morfológica sobre el decentes, logra una comunicación a una distancia
tejido. En las imágenes de PA, la radiación láser es de 50m de distancia del teléfono [12].
absorbida en el propio objeto y los pulsos
acústicos generados se utilizan para reconstruir la
distribución y la fuerza de los absorbentes ópticos.
En el ultrasonido tradicional de pulso eco de
inmersión, se utiliza un pulso corto de sonda
acústica para insonificar el objeto y el campo
acústico retro disperso se utiliza para reconstruir
el límite externo y las homogeneidades acústicas
PAGE 2
Sede Esmeraldas
Carrera de ……………
Métodos y materiales
Este proyecto fue propuesto, debido a que la
ciudad en la mayoría de los lugares de la ciudad
de Esmeraldas, en sistemas de seguridad,
estacionamientos, no cuentan con sensores
ultrasónicos para saber que objetos están cerca
del rango del mismo. Por eso es que se necesitan
estos sensores para aumentar la seguridad de los
establecimientos de la ciudad, para así evitar
robos y automatizar los espacios de
estacionamiento, estos sensores son muy
versátiles, se usa en muchas partes. Figura 1. Esquema de conexión
Por medio de la observación, en el grupo se
dedujo que es un problema el que no se use estos
instrumentos, si tenemos en cuenta las ventajas
que tienen, nuestra ciudad tendría más seguridad
y más automatizada, siempre y cuando se tome
una iniciativa para su implementación.
Esmeraldas – Ecuador
www.pucese.edu.ec
else {
myPort = new
Serial(this,"COM5", 9600); noObject = "In Range";
}
Además, este comando indica la distancia medida
con los microsegundos de giro del servomotor,
esta parte va en la IDE de Arduino:
distance= duration*0.034/2;
Luego en programa de Arduino en su versión
1.8.5, se programó la velocidad y los grados del
servomotor, se estableció la rotación del
servomotor de 15 a 165° grados, con un “delay”
de 10 microsegundos. Aparte se usó, el IDE
Processing para el desarrollo de la interfaz de Figura 3. Interfaz del radar
radar donde se establece la distancia del radar de
un máximo de 40 cm, para la detección los Resultados:
objetos cercanos. Con el siguiente comando se
establece cuando un objeto esta fuera o dentro Los resultados fueron los esperados al inicio de las
del rango: pruebas, ya que no hubo problemas al momento
de conectar los componentes al Arduino y al
if(iDistance>40) { protoboard. Los únicos 2 problemas presentados
fueron, con los puertos de conexión en la laptop,
noObject = "Out of Range"; y el servomotor que no encendía,
afortunadamente fueron resueltos de manera
} inmediata, con ayuda del docente.
PAGE 2
Sede Esmeraldas
Carrera de ……………
Esmeraldas – Ecuador
www.pucese.edu.ec
Proc. 2016 Int. Conf. Expo. Electr. pressures simultaneously
Power Eng. EPE 2016, no. Epe, pp. with high sensitivity and
551–554, 2016. linearity,” 2020.
[6] T. F. Wu, P. S. Tsai, N. T. Hu, and J.
Y. Chen, “Research and
[11] B. K. Engiz and R. Bashir,
implementation of auto parking “Implementation of a speed
system based on ultrasonic control system using
sensors,” Proc. IEEE Int. Conf. arduino,” Proc. - 2019 6th
Adv. Mater. Sci. Eng. Innov. Sci. Int. Conf. Electr. Electron.
Eng. IEEE-ICAMSE 2016, pp. 643– Eng. ICEEE 2019, pp. 294–
645, 2017. 297, 2019.
[7] G. Arun Francis, M. Arulselvan, P.
Elangkumaran, S. Keerthivarman,
[12] J. Azeta et al., “An android
and J. Vijaya Kumar, “Object based mobile robot for
detection using ultrasonic monitoring and surveillance,”
sensor,” Int. J. Innov. Technol. Procedia Manuf., vol. 35, pp.
Explor. Eng., vol. 8, no. 6, pp. 1129–1134, 2019.
207–209, 2019.
[8] L. Koval, J. Vaňuš, and P. Bilík,
“Distance Measuring by
Ultrasonic Sensor,” IFAC- Anexos:
PapersOnLine, vol. 49, no. 25, pp.
153–158, 2016.
[9] A. Bychkov, V. Simonova, V.
Zarubin, I. Kudinov, E.
Cherepetskaya, and A. Karabutov,
“Toroidally focused sensor array
for real-time laser-ultrasonic
imaging: The first experimental
study,” Photoacoustics, vol. 17, p.
100160, 2020.
[10] X. Zhang, L. Yu, Q. Guo, D. Li, and
H. Zhang, “Resonance frequency
analysis of a dual- frequency
capacitive micromechanical
ultrasonic transducer for
detecting high and low
PAGE 2
Sede Esmeraldas
Carrera de ……………
Código de Arduino
#include <Servo.h>.
long duration;
int distance;
void setup() {
pinMode(trigPin, OUTPUT); //
Sets the trigPin as an Output
pinMode(echoPin, INPUT); //
Sets the echoPin as an Input
Serial.begin(9600);
myServo.attach(12); // Defines
on which pin is the servo motor
attached
Esmeraldas – Ecuador
www.pucese.edu.ec
}
void loop() {
for(int i=15;i<=165;i++){
myServo.write(i);
delay(30);
distance =
calculateDistance();// Calls a
function for calculating the
distance measured by the
Ultrasonic sensor for each
degree
Serial.print(","); // Sends
addition character right next to
the previous value needed later
in the Processing IDE for
indexing
Serial.print(distance); //
Sends the distance value into
the Serial Port
Serial.print("."); // Sends
addition character right next to
the previous value needed later
in the Processing IDE for
indexing
}
for(int i=165;i>15;i--){
myServo.write(i);
PAGE 2
Sede Esmeraldas
Carrera de ……………
delay(30);
distance =
calculateDistance();
Serial.print(i);
Serial.print(",");
Serial.print(distance);
Serial.print(".");
}
int calculateDistance(){
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin,
HIGH); // Reads the echoPin,
returns the sound wave travel
time in microseconds
distance= duration*0.034/2;
return distance;}
Esmeraldas – Ecuador
www.pucese.edu.ec
Codigo de Processing
import processing.serial.*; //
imports library for serial
communication
import
java.awt.event.KeyEvent; //
imports library for reading the
data from the serial port
import java.io.IOException;
// defubes variables
String angle="";
String distance="";
String data="";
String noObject;
float pixsDistance;
int index1=0;
int index2=0;
PFont orcFont;
void setup() {
smooth();
myPort = new
Serial(this,"COM5", 9600); //
starts the serial communication
PAGE 2
Sede Esmeraldas
Carrera de ……………
myPort.bufferUntil('.'); //
reads the data from the serial
port up to the character '.'. So
actually it reads this:
angle,distance.
void draw() {
fill(98,245,31);
noStroke();
fill(0,4);
fill(98,245,31); // green
color
drawRadar();
drawLine();
drawObject();
drawText();
Esmeraldas – Ecuador
www.pucese.edu.ec
Serial Port up to the character
'.' and puts it into the String
variable "data".
data =
myPort.readStringUntil('.');
data =
data.substring(0,data.length()-
1);
index1 = data.indexOf(","); //
find the character ',' and puts
it into the variable "index1"
angle= data.substring(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=
data.substring(index1+1,
data.length()); // read the data
from position "index1" to the
end of the data pr thats the
value of the distance
iAngle = int(angle);
iDistance = int(distance);
void drawRadar() {
pushMatrix();
translate(width/2,height-
height*0.074); // moves the
starting coordinats to new
location
PAGE 2
Sede Esmeraldas
Carrera de ……………
noFill();
strokeWeight(2);
stroke(98,245,31);
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);
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,widt
Esmeraldas – Ecuador
www.pucese.edu.ec
h/2,0);
popMatrix();
void drawObject() {
pushMatrix();
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
if(iDistance<40){
line(pixsDistance*cos(radians(
iAngle)),-
pixsDistance*sin(radians(iAngle)
),(width-
width*0.505)*cos(radians(iAngle)
),-(width-
width*0.505)*sin(radians(iAngle)
));
}
popMatrix();
PAGE 2
Sede Esmeraldas
Carrera de ……………
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();
pushMatrix();
if(iDistance>40) {
}
else {
}
fill(0,0,0);
noStroke();
Esmeraldas – Ecuador
www.pucese.edu.ec
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("Espacio de César",
width-width*0.875, height-
height*0.0277);
text("Dist:", width-
width*0.26, height-
height*0.0277);
if(iDistance<40) {
}
textSize(25);
fill(98,245,60);
PAGE 2
Sede Esmeraldas
Carrera de ……………
translate((width-
width*0.4994)+width/2*cos(radian
s(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)));
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(radian
Esmeraldas – Ecuador
www.pucese.edu.ec
s(150)),(height-height*0.0574)-
width/2*sin(radians(150)));
rotate(radians(-60));
text("150°",0,0);
popMatrix();
PAGE 2