Nombre y Apellidos 2ºTSTI
Justificación:
3.1 Objetivo
El objetivo del proyecto es la detección de objetos a la distancia que deseemos. Se trata de poder
detectar obstáculos a cualquier distancia, para ello utilizaremos un sensor de ultrasonidos, al
sensor de ultrasonidos le hemos añadido una señal acústica (buzzer) y una señal luminosa por
medio de leds, de tal manera que cuanto más cerca está el objeto, más rápido sonara el buzzer y
más rápido parpaderan los leds, cuando el objeto se acerque al sensor de ultrasonidos, según la
distancia a la que se encuentre dicho objeto, se encenderán un número determinado de leds, he
escogido 3 leds de color rojo, 3 de color amarillo y 3 de color verde. Los leds verdes indican que el
objeto está lejos del sensor, los leds amarillos nos indican que el objeto esta próximo al sensor y
los leds rojos nos indican que el objeto está muy cerca del sensor. Además de la señal acústica y la
señal luminosa, he incorporado una pantalla lcd en la cual se puede ver la distancia a la cual se
encuentra dicho objeto.
3.2
Posibles aplicaciones
A continuación explicare las posibles aplicaciones de este sensor, aunque muchas de estas
aplicaciones ya están implantadas o están en vías de desarrollo.
3.2.1
Aplicación: En los parkings de las ciudades, ya están disponibles sensores que nos indican
si una plaza de aparcamiento esta libre o esta ocupada.
3.2.2
Aplicación: Un bastón “inteligente” para personas ciegas, un microcontrolador en este
caso podría ser nuestro sensor, regula la distancia de detección según las necesidades del
usuario: se programa previamente el dispositivo para que se adapte a cada invidente, según
sus características físicas, como la altura y la anchura de los hombros, o la velocidad de sus
pasos.
3.2.3
Aplicación : Al igual que en los parkings Siemens están instalando sensores para
detectar plazas libres de aparcamiento, de tal manera que el sensor mide el espacio
disponible estos de sensores vigilan desde las farolas una superficie de hasta 30 metros,
lo que equivale a unas cinco u ocho plazas de aparcamiento, y envía información al
4
Solución técnica
4.1 Programa arduino
//Librerías que vamos a utilizar en este proyecto #include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd( 0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE );
//Aquí definimos los leds y el pin donde va a ir conectado cada uno de los diferentes leds int led1 = 12;
int led2 = 11; int led3 = 10; int led4 = 13; int led5 = 8; int led6 = 7; int led7 = 6; int led8 = 5; int led9 = 4; int buzzer = A0;
//Variables sensor de ultrasonidos long distancia;
long tiempo;
int pinecho = 2; // echo es el que recibe el pulso int pintrig = 3; // trig es el que emite el pulso
void setup() { lcd.begin(16,2); lcd.setCursor(0,0);
pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); pinMode(led5, OUTPUT); pinMode(led6, OUTPUT); pinMode(led7, OUTPUT); pinMode(led8, OUTPUT); pinMode(led9, OUTPUT); pinMode(buzzer, OUTPUT); pinMode(pinecho, INPUT); pinMode(pintrig, OUTPUT); }
void loop() {
//Proceso de medida del sensor de ultrasonidos para estabilizar el sensor digitalWrite(pintrig, LOW);
delay(10);
digitalWrite(pintrig, HIGH);
delay(10); // generamos un pulso ultrasonico durante 10 milisegundos digitalWrite(pintrig, LOW);
tiempo = pulseIn(pinecho, HIGH); /* almacenamos en la variable tiempo el tiempo que el pin echo ha estado recibiendo un pulso "HIGH"*/
distancia = ((tiempo/2) / 29);
/* El pin echo almacena el tiempo que tarda la onda del pulso de ida y vuelta, por ello la dividimos entre 2. Luego la dividimos entre 29 para cambiar de unidad la velocidad del sonido */
//Aqui ponemos todos los leds a LOW para que empiecen apagados digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); digitalWrite(led6, LOW); digitalWrite(led7, LOW); digitalWrite(led8, LOW); digitalWrite(led9, LOW); analogWrite(buzzer, 0);
//Aquí iniciamos el lcd para que se encienda y muestre la información, en el indicamos en la posición en la que queremos que empiece a mostrar el texto
lcd.on();
lcd.setCursor(0,1); lcd.print("Distancia:");
/* A continuación en cada una de las condiciones especificaremos lo que se ha de mostrar por el lcd según la distancia a la que se encuentre el obstáculo*/
if(distancia > 300) { lcd.print("---"); } else {
if(distancia < 100 && distancia > 0) { lcd.print("0"); }
if(distancia < 10 && distancia > 0) { lcd.print("0"); }
if(distancia > 0) { lcd.print(distancia); lcd.print(" cm"); } }
/* A continuacion en cada una de las condiciones especificaremos los leds que se encenderan y el tono del buzzer segun la distancia a la que se encuentre el obstaculo*/
digitalWrite(led1, HIGH); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); digitalWrite(led6, LOW); digitalWrite(led7, LOW); digitalWrite(led8, LOW); digitalWrite(led9, LOW); analogWrite(buzzer, 0); }
if(distancia < 91 && distancia > 80) { digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); digitalWrite(led6, LOW); digitalWrite(led7, LOW); digitalWrite(led8, LOW); digitalWrite(led9, LOW); analogWrite(buzzer, 0); }
analogWrite(buzzer, 0); }
if(distancia < 71 && distancia > 60) { digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); digitalWrite(led3, HIGH); digitalWrite(led4, HIGH); digitalWrite(led5, LOW); digitalWrite(led6, LOW); digitalWrite(led7, LOW); digitalWrite(led8, LOW); digitalWrite(led9, LOW); analogWrite(buzzer, 0); }
if(distancia < 61 && distancia > 50) { digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); digitalWrite(led3, HIGH); digitalWrite(led4, HIGH); digitalWrite(led5, HIGH); digitalWrite(led6, LOW); digitalWrite(led7, LOW); digitalWrite(led8, LOW); digitalWrite(led9, LOW); analogWrite(buzzer, 0); }
digitalWrite(led8, LOW); digitalWrite(led9, LOW); analogWrite(buzzer, 0); }
if(distancia < 41 && distancia > 30) { digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); digitalWrite(led3, HIGH); digitalWrite(led4, HIGH); digitalWrite(led5, HIGH); digitalWrite(led6, HIGH); digitalWrite(led7, HIGH); digitalWrite(led8, LOW); digitalWrite(led9, LOW); analogWrite(buzzer, 1024); delay(400); analogWrite(buzzer, 0); delay(400); }
if(distancia < 21 && distancia > 10) { digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); digitalWrite(led3, HIGH); digitalWrite(led4, HIGH); digitalWrite(led5, HIGH); digitalWrite(led6, HIGH); digitalWrite(led7, HIGH); digitalWrite(led8, HIGH); digitalWrite(led9, HIGH); analogWrite(buzzer, 1024); delay(100); analogWrite(buzzer, 0); delay(100); }
digitalWrite(led7, LOW); digitalWrite(led8, LOW); digitalWrite(led9, LOW); delay(50);
analogWrite(buzzer, 1024); } if(distancia > 101) {
digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); digitalWrite(led6, LOW); digitalWrite(led7, LOW); digitalWrite(led8, LOW); digitalWrite(led9, LOW); analogWrite(buzzer, 0); }
delay(400); }
4.2.1 Montaje
Primero conectaremos en la placa protoboard los leds con sus respectivas resistencias de 220ohm.
Ahora conectaremos el zumbador o buzzer, es te conecta el negativo a masa, y el positivo al pin analógico 0 de arduino.
4.2.2En este proyecto entre, la búsqueda de información de como funciona el sensor de
ultrasonidos,hacer pruebas con los programas del sensor de ultrasonidos y el desarrollo del código del programa y el montaje del circuito he empleado 15-20 horas.
5. Material y documentación usada
Para nuestro proyecto hemos utilizado los siguientes elementos:
Arduino uno
Sensor de ultrasonidos HC-SR04:
Características
Alimentación: 5V
Angulo de sensado: 15°
Rango de distancia: 2 a 500 cm
Numero de pines: 4 (VCC, TRIG, ECHO, GND)
LedsAltavoz o buzzer