estacionamiento inteligente (1)

19
UNIVERSIDAD NACIONAL PERO RUIZ GALLO FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA ESTACIONAMIENTO INTELIGENTE CON ARDUINO PRESENTADO POR: - ALTAMIRANO MEGO MIGUEL ÁNGEL. - CASTILLO ELERA CRISTIAN. - QUIROZ CAMPOVERDE JORGE ANIBAL. - REVILLA PÉREZ ELIO FRANCISCO.

Upload: jorge-quiroz

Post on 28-Dec-2015

522 views

Category:

Documents


2 download

TRANSCRIPT

UNIVERSIDAD NACIONAL PERO RUIZ GALLO

FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS

ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

ESTACIONAMIENTO INTELIGENTE CON ARDUINO

PRESENTADO POR:

- ALTAMIRANO MEGO MIGUEL ÁNGEL.

- CASTILLO ELERA CRISTIAN.

- QUIROZ CAMPOVERDE JORGE ANIBAL.

- REVILLA PÉREZ ELIO FRANCISCO.

ESTACIONAMIENTO INTELIGENTE

FORMULACION

El proyecto consiste en un sistema inteligente que controla el flujo de los carros en un estacionamiento, visualizando en una pantalla LCD la cantidad de lugares disponibles que existen en el estacionamiento

.

OBJETIVOS

OBJETIVOS GENERALES

Desarrollar la tecnología en todos los estacionamientos u otros servicios públicos

OBJETIVOS ESPECIFICOS

Disminuir gastos en el personal de servicio Estimular la tecnología en nuestro país Dando un mejor orden en dicha ciudad

JUSTIFICACIONES

Este proyecto lo realizamos con la finalidad de facilitar el orden , la economía, el tiempo tanto del ofertante como el demandante , manteniendo la mejor tecnología.

LIMITACIONES

La tecnología utilizada es básica pero muy buena , utilizando un ARDUINO MEGA u otros componentes electrónicos

Este proyecto se utilizara en estacionamientos en el centro o fuera de la ciudad

Tiempo de duración del proyecto es de larga vida, si los componentes se caducan se pueden cambiar y asi continuar con el servicio

Actualmente no se cuanto de dinero será disponible para finaciarlo he instalarlo, x ahora será un estudio de factibilidad

FUNDAMENTOS TEORICOS

Veremos la investigación de los componentes utilizados con dicho circuito utilizado

DRIVER L293D

L293D es un controlador de motor típico o Motor Driver IC que permite motor de corriente continua para conducir en cualquier dirección. L293D es un 16-pin IC que puede controlar un conjunto de dos motores de corriente continua a la vez en cualquier dirección.

Se basa en el concepto de puente H. H-puente es un circuito que permite que el voltaje que se recorra en cualquier dirección. Como usted sabe necesidad de tensión para cambiar su dirección para poder hacer girar el motor en sentido horario o anti horario, ahí puente H IC son ideales para la conducción de un motor de corriente continua.

ARDUINO CON LCD

El LCD tiene un interfaz paralelo, significando esto que el micro controlador tiene que manipular varios pines del interfaz a la vez para controlarlo. El interfaz consta de los siguientes pines:

Un pin de selección de registro (RS) que controla en qué parte de la memoria del LCD estás escribiendo datos. Puedes seleccionar bien el registro de datos, que mantiene lo que sale en la pantalla, o un registro de instrucción, que es donde el controlador del LCD busca las instrucciones para saber cual es lo siguiente que hay que hacer.

El pin de lectura/escritura (R/W)que selecciona el modo de lectura o el de escritura.

Un pin para habilitar (enable) que habilita los registros.

8 pines de datos (D00-D07). Los estados de estos pines (nivel alto o bajo) son los bits que estás escribiendo a un registro cuando escribes, o los valores de lectura cuando estás leyendo.

Hay también un pin de contraste del display (Vo), pines de alimentación (+5V y GND) y pines de retro-iluminación (Bklt+ y Bklt-), que te permiten alimentar el LCD, controlar el contraste del display, o encender y apagar la retro-iluminación, respectivamente.

El proceso de controlar el display involucra la colocación de los datos que componen la imagen de lo que quieres mostrar, en los registros de datos, y luego, colocar las instrucciones, en el registro de instrucciones. La librería LiquidCrystal te simplifica todo este proceso de forma que no necesitas saber las instrucciones de bajo nivel.

Los LCD-s compatibles con Hitachi pueden ser controlados de dos modos: 4 bits u 8 bits. El modo de 4 bits requiere siete pines de E/S de Arduino, mientras el modo de 8 bits requiere 11 pines. Para mostrar texto en la pantalla, puedes hacer la mayoría de las cosas en modo 4 bits, por lo que el ejemplo muestra como controlar un LCD de 2x16 en modo de 4 bits.

ARDUINO CON HCSR04

Si está en fuente de un módulo que van por ultrasonidos, el HC-SR04 es una buena elegir. Su rendimiento estable y de alta precisión que van lo convierten en un módulo muy popular en el mercado electrónico.

Especificaciones :

fuente de alimentación: 5V DCcorriente de reposo: <= 2 mAángulo eficaz: <= 15 °distancia que varía: 3 cm - 400 cmResolución: 0,3 cm

Existen 4 patillas de módulo: VCC, trig, Echo, GND. Así que es una interfaz muy fácil para el regulador de usarlo alcance.

ARDUINO CON LDR

las fotocélulas son sensores que le permiten detectar la luz. Son pequeñas, de bajo costo, bajo consumo de energía, fácil de usar y no se desgastan. Por esa razón, a menudo aparecen en los juguetes, los aparatos y electrodomésticos. Theys están a menudo se conocen como células de CdS (se hacen de cadmio-sulfuro de), resistencias dependientes de la luz (LDR) y fotorresistores.

Las fotocélulas son básicamente un resistor que cambia su valor resistivo (en ohmios Ω) en función de la cantidad de luz que brilla sobre la cara ondulada. Son de muy bajo costo, fácil de conseguir en muchos tamaños y especificaciones, pero son muy Incorrecto. Cada sensor fotocélula actuará de manera diferente que el otro, aunque sean del mismo lote. Las variaciones pueden ser muy grandes, el 50% o más! Por esta razón, no deberían ser utilizadas para tratar de determinar los niveles de luz precisas en lux o Intensidad lumínica. En su lugar, usted puede esperar que sólo es capaz de determinar los cambios de luz básicos

Para la mayoría de las aplicaciones de la luz-sentsitive como "¿es claro u oscuro out", "¿hay algo en frente del sensor (que sería bloquear la luz)", "¿hay algo interrumpe un haz de láser" (sensores de rotura de vigas), o "cuál de múltiples sensores tiene la mayoría de la luz golpeando", fotocélulas pueden ser una buena opción!

MOTOR BIPOLAR

Los denominados motores paso a paso (PaP), son un caso bastante particular dentro de los motores en general. La señal eléctrica de alimentación no es ni c.c. ni c.a. como en otros casos, sino un tren de pulsos que se suceden con una secuencia, previamente definida, a cada una de las bobinas que componen el estator. Cada vez que a alguna de estas bobinas se les aplica un pulso, el motor se desplaza un paso, y queda fijo en esa posición. Dependiendo de las características constructivas del motor este paso puede ser desde 90º hasta incluso 0,9º. Por lo tanto, si somos capaces de mover el motor en pequeños pasos, esto nos va a permitir controlar su posición, con mayor o menor precisión dependiendo del avance de cada paso. Además, variando la frecuencia con la que se aplican los pulsos, también

estaremos variando la velocidad con que se mueve el motor, lo que nos permite realizar un control de velocidad. Por último si invertimos la secuencia de los pulsos de alimentación aplicados a las bobinas, estaremos realizando una inversión en el sentido de giro del motor.

SECUENCIA DE UN MOTOR PAP BIPOLAR

PROGRAMACION

#include<LiquidCrystal.h>constint fotores01=0;constint LED=22;int foto01=0;constint TRIG = 11; constint ECHO =10;constint TRIG1 = 9; constint ECHO1 =7;int x=4;intvacio=4;

int motorPin1 = 26; // Pines del Motorint motorPin2 = 28;int motorPin3 = 30;int motorPin4 = 32;intdelayTime = 2000; // DelayTime determina la espera entre uno y otro pasoint delayTime1 = 35; // DelayTime1 determina la velocidad de giro entre uno y otro pasoint enable1=30;

int motorPinS1 = 36; // Pines del Motorint motorPinS2 = 40;int motorPinS3 = 44;int motorPinS4 = 48;intdelayTimeS = 2000; // DelayTime determina la espera entre uno y otro pasoint delayTimeS1 = 35; // DelayTime1 determina la velocidad de giro entre uno y otro pasoint enableS1=30;

LiquidCrystallcd(13, 12, 5, 4, 3, 2); //define pines del LCD

voidsetup() Serial.begin(9600);pinMode(motorPin1, OUTPUT); // Configuración de los Pines como salida digitalpinMode(motorPin2, OUTPUT);pinMode(motorPin3, OUTPUT);pinMode(motorPin4, OUTPUT);pinMode(enable1,OUTPUT);

pinMode(motorPinS1, OUTPUT); // Configuración de los Pines como salida digitalpinMode(motorPinS2, OUTPUT);pinMode(motorPinS3, OUTPUT);pinMode(motorPinS4, OUTPUT);pinMode(enableS1,OUTPUT);

pinMode(LED,OUTPUT);pinMode(TRIG,OUTPUT);pinMode(ECHO,INPUT);pinMode(TRIG1,OUTPUT);pinMode(ECHO1,INPUT);lcd.begin(16, 2); // define el lcd de cuantos es lcd.print("ESTACIONAMIENTO"); // mensaje en el lcd

voidloop() lcd.setCursor(2, 1);lcd.print("ESPAC VACIO");lcd.setCursor(0, 1);lcd.print(vacio);

foto01= analogRead(fotores01)/4;if(foto01<248) digitalWrite(LED,LOW);

if(foto01>250)digitalWrite(LED,HIGH);

longduracion,distancia;digitalWrite(TRIG,LOW);delayMicroseconds(2);digitalWrite(TRIG,HIGH);delayMicroseconds(10);digitalWrite(TRIG,LOW);duracion=pulseIn(ECHO,HIGH);distancia=(duracion/2)/29;

long duracion1,distancia1;digitalWrite(TRIG1,LOW);delayMicroseconds(2);digitalWrite(TRIG1,HIGH);delayMicroseconds(10);digitalWrite(TRIG1,LOW); duracion1=pulseIn(ECHO1,HIGH); distancia1=(duracion1/2)/29;

if(distancia<=6) x=x-1;vacio=x;delay(500);digitalWrite(enable1, HIGH);for(int i=0;i<6;i++) digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin4, LOW); delay(delayTime1);

digitalWrite(motorPin1, HIGH);digitalWrite(motorPin2, LOW);digitalWrite(motorPin3, LOW);digitalWrite(motorPin4, HIGH);delay(delayTime1);

digitalWrite(motorPin1, LOW);digitalWrite(motorPin2, HIGH);digitalWrite(motorPin3, LOW);

digitalWrite(motorPin4, HIGH);delay(delayTime1);

digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, HIGH); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin4, LOW); delay(delayTime1);

delay(delayTime);

for(int i=0;i<6;i++) digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, HIGH); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin4, LOW); delay(delayTime1);

digitalWrite(motorPin1, LOW);digitalWrite(motorPin2, HIGH);digitalWrite(motorPin3, LOW);digitalWrite(motorPin4, HIGH);delay(delayTime1);

digitalWrite(motorPin1, HIGH);digitalWrite(motorPin2, LOW);digitalWrite(motorPin3, LOW);digitalWrite(motorPin4, HIGH);delay(delayTime1);

digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin4, LOW); delay(delayTime1);

delay(3000);

if(distancia1<=4) x=x+1;

vacio=x;delay(500);

digitalWrite(enableS1, HIGH);

for(int i=0;i<3;i++) digitalWrite(motorPinS1, HIGH); digitalWrite(motorPinS2, LOW); digitalWrite(motorPinS3, HIGH); digitalWrite(motorPinS4, LOW); delay(delayTimeS1);

digitalWrite(motorPinS1, HIGH);digitalWrite(motorPinS2, LOW);digitalWrite(motorPinS3, LOW);digitalWrite(motorPinS4, HIGH);delay(delayTimeS1);

digitalWrite(motorPinS1, LOW);digitalWrite(motorPinS2, HIGH);digitalWrite(motorPinS3, LOW);digitalWrite(motorPinS4, HIGH);delay(delayTimeS1);

digitalWrite(motorPinS1, LOW); digitalWrite(motorPinS2, HIGH); digitalWrite(motorPinS3, HIGH); digitalWrite(motorPinS4, LOW); delay(delayTimeS1); delay(3000);

for(int i=0;i<3;i++) digitalWrite(motorPinS1, LOW); digitalWrite(motorPinS2, HIGH); digitalWrite(motorPinS3, HIGH); digitalWrite(motorPinS4, LOW); delay(delayTimeS1);

digitalWrite(motorPinS1, LOW);digitalWrite(motorPinS2, HIGH);digitalWrite(motorPinS3, LOW);digitalWrite(motorPinS4, HIGH);delay(delayTimeS1);

digitalWrite(motorPinS1, HIGH);digitalWrite(motorPinS2, LOW);digitalWrite(motorPinS3, LOW);digitalWrite(motorPinS4, HIGH);delay(delayTimeS1);

digitalWrite(motorPinS1, HIGH); digitalWrite(motorPinS2, LOW); digitalWrite(motorPinS3, HIGH); digitalWrite(motorPinS4, LOW); delay(delayTimeS1);

delay(delayTimeS);

if(distancia>=500 || distancia <=0) Serial.println("FUERA DE ALCANCE"); else Serial.print(distancia);Serial.println("cm-ENTRADA"); delay(1000);

if(distancia1>=500 || distancia1 <=0) Serial.println("FUERA DE ALCANCE"); else Serial.print(distancia1);Serial.println("cm-SALIDA"); delay(1000);

ANTECEDENTES

Este proyecto ya asido planteado por otros, habían utilizado como sensores solo foto celdas, nosotros teniendo un perspectiva más eficaz y no haya ningún problema hemos trabajado con sensores HCSR04.

PRESUPUESTO

El estacionamiento es muy inteligente y también económico, el costo ha sido sin considerar el arduino mega

(2) Motor paso a paso bipolares. -----------------------------6.00 (1) Pantalla LCD.---------------------------------------------------14.00 (2) Sensores ultrasónicos HCSR04.---------------------------20.00 (1) LDR.--------------------------------------------------------------- 0.5 (10) Resistencias de 330 Ω.------------------------------------- 1.00 (6) Diodos led.------------------------------------------------------1.00 (1) regulador 7805------------------------------------------------0.5 (2) L293b------------------------------------------------------------8.00 cables para protoboard------------------------------------------1.00 Pintura negra.------------------------------------------------------2.00 Una base de cartón prensado.---------------------------------2.00

Aproximadamente es costo es un total de 56 soles

CONCLUSIONES

Para perfeccionar este proyecto, necesitara tener 2 más sensores ya si ubicarlos respectivamente con su programación

Ha sido un arduo trabajo, nosotros como estudiantes nos sentimos muy emocionados en realizar este proyecto, trabajamos una semana aproximadamente 5 horas diarias, pero valió la pena.

Una opción de mejorar y perfeccionarlo este proyecto es conectarlo a un GPS, por medio de internet , para así facilitar a los clientes el servicio brindado

BIBLIOGRAFIA

http://mirrors.arcadecontrols.com/ladyyada.net/learn/sensors/cds.htmlhttp://arduino.cc/es/Tutorial/LiquidCrystalhttp://www.youtube.com/watch?v=DkzMpiDymRchttp://dfists.ua.es/~jpomares/arduino/page_01.htm