You are on page 1of 50

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

SISTEMAS EMPOTRADOS Y DE TIEMPO REAL

GRADO EN INGENIERA INFORMTICA

Proyecto: Ordenador de a bordo (visualizacin de velocidad, distancia, temperatura...)

Nombre: Cupeiro Durn, Carlos Nombre: Lpez Gonzlez, Javier Nombre: Redondo Arroyo, Daniel

CURSO 2011-2012

ndice de contenidos

1.- Descripcin del proyecto............................................................................................................................. 1 1.1.- Distancia trasera respecto a un automvil .................................................................................. 1 1.2.- Velocidad del automvil ...................................................................................................................... 1 1.3.- Modificacin de los lmites de notificaciones ............................................................................. 3 1.4.- Imgenes de la pantalla tctil............................................................................................................ 4 2.- Revisin de proyectos similiares ............................................................................................................. 7 2.1.- Proyectos relacionados con la distancia....................................................................................... 7 2.2.- Proyectos relacionados con la velocidad ..................................................................................... 8 3.- Material necesario y presupuesto ........................................................................................................... 9 4.- Diagramas, conexiones e imgenes....................................................................................................... 11 4.1.- Pantalla tctil ......................................................................................................................................... 11 4.2.- Mdulo GPS............................................................................................................................................. 14 4.3.- Sensores de distancia ......................................................................................................................... 15 4.4.- Zumbador ................................................................................................................................................ 17 4.5.- Sensor de temperatura y humedad .............................................................................................. 18 5.- Elementos adicionales ................................................................................................................................ 21 6.- Implementacin del cdigo ...................................................................................................................... 25 7.- Resultado final del proyecto .................................................................................................................... 39 8.- Valoracin, dificultades y comentarios ............................................................................................... 42 9.- Hojas de caractersticas de los componentes ................................................................................... 44

ndice de ilustraciones

1.2.1.- Grfico explicativo de la visualizacin de la pantalla para la fase 2 ................................... 2 1.3.1.- Grfico explicativo de la visualizacin de la pantalla para la fase 3 ................................... 3 1.3.2.- Grfico explicativo de la seleccin del nmero de niveles en la fase 3 1/2 .................... 3 1.3.3.- Grfico explicativo de la seleccin del nmero de niveles en la fase 3 2/2 .................... 4 1.4.1.- Distancia que supera el primer nivel .............................................................................................. 4 1.4.2.- Distancia que supera el tercer nivel ................................................................................................ 5 1.4.3.- Seleccin del nivel de configuracin de distancia ..................................................................... 5 1.4.4.- Seleccin del nivel de configuracin de velocidad .................................................................... 6 1.4.5.- Establecimiento de un nivel de distancia o velocidad ............................................................. 6 3.1.- Imagen del material utilizado .............................................................................................................. 10 3.2.- Imagen de los dispositivos utilizados ............................................................................................... 10 4.1.- Imagen del Arduino Mega ..................................................................................................................... 11 4.1.1.- Figura de conexiones de la pantalla tctil ................................................................................... 12 4.1.2.- Imagen de la pantalla tctil ............................................................................................................... 12 4.1.3.- Imagen con las conexiones de la pantalla tctil 1/2 ............................................................... 13 4.1.4.- Imagen con las conexiones de la pantalla tctil 2/2 ............................................................... 13 4.2.1.- Figura de conexiones del mdulo GPS.......................................................................................... 14 4.2.2.- Imagen con las conexiones de la pantalla tctil 1/2 ............................................................... 14 4.2.3.- Imagen con las conexiones de la pantalla tctil 2/2 ............................................................... 15 4.3.1. Figura de las conexiones con los sensores de distancia (Fritzing) .................................... 15 4.3.2. Figura de las conexiones con los sensores de distancia ......................................................... 16

4.3.3. Imagen de las conexiones con los sensores de distancia ....................................................... 16 4.4.1. Figura de la conexin del zumbador (Fritzing) .......................................................................... 17 4.4.2. Figura de la conexin del zumbador ............................................................................................... 17 4.4.3. Imagen de la conexin del zumbador ............................................................................................. 18 4.5.1. Figura de la conexin del sensor de temperatura y humedad ............................................. 18 4.5.2. Figura de la conexin del sensor de temperatura y humedad (Fritzing) ........................ 19 4.5.3. Esquemtico de la conexin del sensor de temperatura y humedad ................................ 19 4.5.4. Imagen de la conexin del sensor de temperatura y humedad ........................................... 20 5.1.- Elementos adicionales ............................................................................................................................ 21 5.2.- Resistencias de 10 k ............................................................................................................................. 22 5.3.- Placa de conexiones ................................................................................................................................. 22 5.4.- Clemas de conexin y punteros .......................................................................................................... 23 5.5.- Cajas de chapa para cubrir los sensores de distancia ................................................................ 23 5.6.- Caja para introducir los componentes ............................................................................................. 24 7.1.- Colocacin de uno de los sensores de distancia en el parachoques trasero .................... 39 7.2.- Conexin de la pantalla tctil con las 12 resistencias ................................................................ 39 7.3.- Componentes en el interior de la caja de madera 1/2 .............................................................. 40 7.4.- Componentes en el interior de la caja de madera 2/2 .............................................................. 40 7.5.- Pruebas de distancia................................................................................................................................ 41 7.6.- Pruebas de velocidad .............................................................................................................................. 41

1.- DESCRIPCIN DEL PROYECTO

La realizacin del proyecto se va a dividir en tres tareas que irn aadiendo funcionalidad a dicho proyecto como conjunto, as como aumentando su complejidad y utilidad. 1.1.- DISTANCIA TRASERA RESPECTO A UN AUTOMVIL En primer lugar se recoger informacin mediante dos sensores de distancia por ultrasonidos, colocados en el parachoques trasero del automvil y en funcin de la distancia que aporte cada uno de ellos, se escoger la mnima de las dos magnitudes aportadas por ellos. Este dato refleja la distancia que existe entre dicho parachoques y el objeto ms cercano a l, normalmente utilizable en la maniobra de aparcamiento. Esta informacin ser mostrada en una pantalla tctil, cuyo primer objetivo ser nicamente ofrecer tanto esta distancia, como la temperatura y humedad, recogidas mediante un sensor que se utilizar para tal funcin. Adems, se realizar el diseo de un semforo, con tres luces: verde, naranja y roja, las cuales se utilizarn a modo de leds de colores. Para que dichas luces se enciendan, deben ir superndose tres niveles de distancia, uno para cada una de las luces. Estos niveles se han determinado numricamente en 30, 20 y 8 centmetros. Asimismo, habr redundancia de informacin, ya que mediante un zumbador se emitir un sonido informando tambin de este hecho. Dicho zumbador tan solo entrar en funcionamiento para el segundo y tercer nivel, emitiendo un pitido para el segundo nivel y dos para el tercero. Con el fin de conectar todos estos sensores, as como la pantalla tctil, se utilizar un Arduino Mega 2560, que consta de 54 entradas/salidas digitales, as como 16 entradas analgicas, a travs de las cuales se podrn conectar todos los dispositivos que se comentarn en el apartado 3. Y en cuanto a la alimentacin que se le suministrar a este Arduino Mega, se realizar a travs de la salida de 12-24 V que hay en todos los automviles, mediante un cable que conecta esta salida al Arduino. 1.2.- VELOCIDAD DEL AUTOMVIL En esta fase se aadir al Arduino Mega un mdulo GPS, a travs del cual se obtendrn tanto la velocidad del automvil, como la hora actual. Una vez que se recojan estos datos, se reestructurar el formato en el que se muestra la informacin a travs de la pantalla, comenzando a utilizar la posibilidad que ofrece de introducir parmetros a travs de ella, al ser tctil. Por lo tanto se va a poder elegir entre tres modos de funcionamiento, los cuales tienen en comn la informacin sobre la temperatura y la hora en un tamao de fuente menor a los datos caractersticos de cada uno de los modos, que sern explicados a continuacin:

1.- Modo distancia: se basa en el funcionamiento explicado para la primera tarea, en el apartado 1.1, indicando as la distancia del parachoques trasero con respecto al objeto ms prximo a l, tal y como se coment anteriormente. Adems se recuerda que al pasar cada uno de los lmites establecidos para los niveles, se comunicarn estos hechos de forma acstica y visual segn se explic previamente. 2.- Modo velocidad: el funcionamiento es anlogo al caso anterior, solo que esta vez el dato mostrado ser la velocidad del automvil recogida por el mdulo GPS. De nuevo vuelve a notificarse si se sobrepasan tres lmites de velocidad, los cuales se han establecido en 90, 100 y 110 kilmetros por hora. Por lo tanto al superar dichas velocidades de nuevo se encendern las luces correspondientes en la pantalla y tambin el zumbador funcionar del mismo modo que en el caso de la distancia. 3.- Modo automtico: este ser el modo que aparecer por defecto. En l se mostrar la velocidad del automvil, siempre y cuando sta sea superior a los 10 kilmetros por hora, mientras que se mostrar la distancia calculada a partir de los datos de los sensores colocados en el parachoques trasero en caso contrario. Se ha elegido dicha velocidad ya que para realizar la maniobra de aparcamiento no se suele superar ese dato (una persona normal suele andar a 5-6 km/h y no se suele ir mucho ms deprisa al aparcar). Adems puede ser interesante saber esta distancia en paradas, como pasos de cebra o semforos, ya que si es una parada con pendiente hacia arriba es conveniente saber la distancia al objeto que se tenga detrs. Se ha pensado en una estructuracin de la pantalla del siguiente modo:

Automtico Velocidad Distancia

14:41 30

102

km/h

22 %

1.2.1.- Grfico explicativo de la visualizacin de la pantalla para la fase 2 De tal forma que las tres cajas que se sitan en la parte superior de la pantalla, se utilizarn de modo que el usuario, al pulsar en una de ellas, cambie fcilmente entre los modos explicados anteriormente. A su vez, el modo activo estar resaltado de un color distinto a los otros dos para que el usuario sepa cul es el que est visualizando en todo momento.

1.3.- MODIFICACIN DE LOS LMITES DE NOTIFICACIONES Por ltimo, ya que se cuenta con una pantalla tctil, que permite la introduccin de datos, se le va a permitir al usuario que establezca los valores lmites en cuanto a la velocidad y a la distancia que desee. Se va a poder elegir cada uno de los tres lmites, tanto para la velocidad, como para la distancia, y de esta forma modificarlo. Una vez que se acceda mediante la pantalla tctil a la modificacin bien de los lmites de la velocidad, o bien de los lmites de la distancia, se le pedir al usuario que seale qu nivel de lmite desea establecer, como se ha comentado anteriormente. A continuacin se le mostrar por la pantalla un teclado numrico, con las opciones de borrar y aceptar lmite actual. Para ello se ha pensado aadir un par de opciones ms a la interfaz de usuario que se mostr para la segunda fase:

Automtico Velocidad Distancia

14:41

102
Conf. Velocidad

30 km/h 22 %

Conf. Distancia

1.3.1.- Grfico explicativo de la visualizacin de la pantalla para la fase 3 Por lo tanto se crean as otras dos cajas, que el usuario podr pulsar para cambiar los niveles de la velocidad y la distancia. Al pulsar una de ellas se cambiara todo el formato por el siguiente:

Qu nivel de velocidad desea configurar? 1 2 Volver


1.3.2.- Grfico explicativo de la seleccin del nmero de niveles en la fase 3 1/2 Es bastante intuitivo que hay que pulsar sobre la opcin que se desea escoger. La caja de debajo ser para volver directamente a la pantalla principal sin realizar ningn cambio.
3

Por ltimo, para establecer el valor de los niveles que se hayan escogido, la interfaz de usuario tendr el siguiente formato:

1 6 Borrar

2 7

3 8

4 9 Aceptar

5 0

1.3.3.- Grfico explicativo de la seleccin del nmero de niveles en la fase 3 2/2 Las opciones que permite realizar sern la de borrar, que elimina el ltimo dgito introducido, aceptar, que intentar establecer el lmite introducido, y evidentemente la pulsacin de cada dgito, lo ir cargando en la pantalla. En caso de error, debido a que la distancia o velocidad introducida no sean vlidas (ya sea por incompatibilidades con otros niveles o porque se salga del rango establecido), se le notificar dicho error al usuario.

1.4.- IMGENES DE LA PANTALLA TCTIL El resultado final de cada una de estas pantallas que se han ido explicando en los apartados anteriores es el siguiente:

1.4.1.- Distancia que supera el primer nivel


4

1.4.2.- Distancia que supera el tercer nivel

1.4.3.- Seleccin del nivel de configuracin de distancia


5

1.4.4.- Seleccin del nivel de configuracin de velocidad

1.4.5.- Establecimiento de un nivel de distancia o velocidad


6

2.- REVISIN DE PROYECTOS SIMILIARES


Dado que el proyecto agrupa fundamentalmente el anlisis de la distancia comentado en el apartado anterior, as como la velocidad del automvil, se van a realizar comparaciones con proyectos realizados para cada uno de estos aspectos.

2.1.- PROYECTOS RELACIONADOS CON LA DISTANCIA 1.- En primer lugar se ha encontrado un proyecto en la pgina web cookinghacks en el cual se ha realizado un sensor de distancia para un coche, en el que se envan los datos de forma inalmbrica, indicando la proximidad exclusivamente mediante cinco leds verdes y dos rojos: http://www.cooking-hacks.com/index.php/let-s-cook/community-hacks/parkingsensor Existen varias diferencias con este proyecto: - Se pondrn dos sensores de distancia, para cubrir la distancia en todo el parachoques trasero y no exclusivamente en su punto central. Adems estos dos sensores se colocarn en el interior del parachoques, para que no se rompan en caso de choque (como podra ocurrir en este proyecto de cooking-hacks) y adems as se evitar tambin que le pueda entrar agua en caso de lluvia. - La comunicacin entre el Arduino y los sensores se realizar mediante cables y no de forma inalmbrica. - La forma de mostrar la informacin estar mucho ms depurada mediante la pantalla, en lugar de exclusivamente con leds, contando tambin con un zumbador. - Y adems de la distancia se comunicarn otros datos relevantes como la velocidad, la hora, la temperatura y la humedad. Se han visto vdeos en el portal YouTube, en los que se muestran proyectos realizados con sensores de distancia. Hay algunos bastante simples, como el siguiente: 2.- https://www.youtube.com/watch?v=z6KUMyk15ng En l simplemente se muestra la distancia en centmetros respecto al nico sensor del que consta. Hay alguno ms elaborado como el siguiente: 3.- https://www.youtube.com/watch?v=ams-hrPQ90k&feature=related En el cual se informa sobre la distancia tanto con seis leds de colores verdes, amarillos y rojos, como mediante una pantalla de dos filas de caracteres. En la superior colocan informacin en funcin de la distancia, como: Ests lejos, Un poco ms, Le vas a dar y en la inferior se informa de la distancia en centmetros.
7

Esto tiene algo ms de parecido con nuestro proyecto, pero sigue habiendo varias diferencias: - De nuevo hay un nico sensor, mientras que se van a utilizar dos, como ya se coment anteriormente. - La pantalla en la que se mostrar la informacin tendr ms datos que la que aparece en dicho vdeo, adems de agruparlos de una mejor forma. - Los niveles en los que se le notificar al usuario tanto grficamente, como acsticamente, podrn ser modificados por el propio usuario, interactuando con la pantalla tctil.

2.2.- PROYECTOS RELACIONADOS CON LA VELOCIDAD Y en cuanto al GPS y a la velocidad, se han encontrado los siguientes vdeos de proyectos realizados con Arduino: 1.- https://www.youtube.com/watch?v=PbA_bOO2mMw Se muestra un proyecto realizado al conectar el Arduino al Bus Can del automvil, del que adquieren, entre otros datos, las revoluciones por minuto y la velocidad del mismo. En el caso del proyecto que se pretende realizar, la velocidad se tomar del mdulo GPS. 2.- https://www.youtube.com/watch?v=QNlG-Zp_zwM En este vdeo se muestra un cuadro sacado de un BMW E36, en el que se mueven las agujas de la velocidad y las revoluciones mediante un Arduino Mega. Pero de nuevo el proyecto que se va a realizar no sigue dicho formato. 3.- https://www.youtube.com/watch?v=TZWaF-xe6H0&feature=related Aqu se muestra el funcionamiento de un reloj al conectarlo a un mdulo GPS. Esta es una de las muchas funcionalidades de las que se va a dotar al proyecto que se realizar. 4.- https://www.youtube.com/watch?v=XX3L3sadiDM Y por ltimo aqu se muestra la velocidad recogida del mdulo GPS. De nuevo es uno de los datos que se mostrarn en el proyecto, recogindolo de la misma forma que en el vdeo mostrado, pero dotndole de ms aspectos.

3.- MATERIAL NECESARIO Y PRESUPUESTO

Producto
1 x Arduino Mega 2560 1 x GPS Module for Arduino v1037A 1 x Antena GPS interna

Precio
48.38 17.70 9.44

1 x Car Adapter Power Supply--7.5VDC 1A (Sale) 3.54 2 x Ultrasonic Ranging Module: HC-SR04 1 x 2.8'' TFT LCD Screen Module: ITDB02-2.8 1 x Humidity Temperature Sensor DHT11 1 x Buzzer (DC5V) 65 x Jumper Wires (F/M), cables Macho-Hembra 1 x Placa de pruebas 13 x Resistencia de 10 k Otros materiales no comprados: chapa, cinta aislante, velcro, plastilina, cables macho-macho... Total sin transporte 129.525 ... 19.80 $ => 14.85 22.00 $ => 16.5 2.80 $ => 2.10 0.50 $ => 0.375 6.49 8.85 1.30

Transporte cooking-hacks.com Transporte iteadstudio.com Total con transporte

8.26 4.00 $ => 3.00 140.785

La imagen correspondiente a todo este material utilizado es la siguiente:

3.1.- Imagen del material utilizado Y los dispositivos utilizados, que se detallarn en el apartado siguiente, son los siguientes:

3.2.- Imagen de los dispositivos utilizados


10

4.- DIAGRAMAS, CONEXIONES E IMGENES


Se van a mostrar varios diagramas para realizar la especificacin de cada uno de los componentes que se van a conectar al Arduino Mega, el cual consta de 54 conexiones digitales y 14 analgicas, tal y como se puede apreciar en la siguiente imagen:

4.1.- Imagen del Arduino Mega

4.1.- PANTALLA TCTIL La pantalla tctil consta de 40 pines, de los cuales se van a conectar: Los pines 21-28, que se corresponden a los buses de datos, DB0-DB7, a las salidas digitales 37-30. Los pines 7-15, que representan a los buses de datos, DB8-DB15, a las salidas digitales 22-29. Los pines 29-31 y 33-34, correspondientes a la parte tctil de la pantalla, se conectarn a las salidas digitales 21-19 y 18-17. El pin 4, que permite seleccionar datos o comandos, RS, se conectar con la salida digital 38. El pin 5, de la seal de habilitacin de escritura, con bajo por defecto, WR, se conectar con la salida digital 39. El pin 15, de seleccin de chip, tambin bajo por defecto, CS, se conectar con la salida digital 40. El pin 17, correspondiente al reset, REST, se conectar con la salida digital 41. Adems el pin 6, de la seal de habilitacin de lectura, con bajo por defecto, RD, se conectar a 3,3 V de corriente. Tanto el pin 2, de la toma de corriente, VCC, como el pin 19, correspondiente al contraste, LED-A, se conectarn a 5 V de corriente. Y finalmente el pin 1, correspondiente a la toma de tierra, GND, se conectar a tierra.
11

GND 5V 3,3 V
22 23 24 25 26 27 28 29 40 41 38 39

37 36 35 34 33 32 31 30 21 20 19 18 17

4.1.1.- Figura de conexiones de la pantalla tctil

4.1.2.- Imagen de la pantalla tctil


12

Adems pueden apreciarse todas estas conexiones en las dos siguientes imgenes del Arduino Mega utilizado para la realizacin de este proyecto. Para ello se ha utilizado un cable azul para la toma de tierra, los de alimentacin en rojo, para las salidas digitales 22-29 el color naranja, para las salidas digitales 30-41 el color amarillo y para las salidas digitales 17-21 el color verde:

4.1.3.- Imagen con las conexiones de la pantalla tctil 1/2

4.1.4.- Imagen con las conexiones de la pantalla tctil 2/2


13

4.2.- MDULO GPS La conexin del mdulo GPS lleva un total de 8 salidas, de las cuales se conectarn exclusivamente las dos correspondientes a RX y TX, a los pines digitales 8 y 9, tal y como se muestra en la siguiente figura. Tambin hay 2 conexiones ms en ella, conectadas mediante los cables negro y rojo, que sern para tierra y alimentacin.
9 8

GND

5V

4.2.1.- Figura de conexiones del mdulo GPS Adems, se pueden apreciar todas estas conexiones en las siguientes imgenes tomadas en las pruebas realizadas con el Arduino Mega. Para ello se ha vuelto a utilizar un cable rojo para la alimentacin, uno azul para la toma de tierra y los verdes para los pines digitales 8 y 9.

4.2.2.- Imagen con las conexiones de la pantalla tctil 1/2


14

4.2.3.- Imagen con las conexiones de la pantalla tctil 2/2 4.3.- SENSORES DE DISTANCIA Para la explicacin de la conexin de los sensores de distancia se ha realizado la figura 4.3.1. mediante dos elementos que representan estos sensores, aunque no son iguales a los que se utilizarn en realidad. Se han representado mediante los cables azules las conexiones a todos los pines digitales, conectadas a 50 (trigger del primero), 51 (echo del primero), 52 (trigger del segundo) y 53 (echo del segundo). Adems hay dos conexiones a tierra y dos a alimentacin, representadas con cables negros y rojos respectivamente en la siguiente figura realizada con Fritzing:

4.3.1. Figura de las conexiones con los sensores de distancia (Fritzing)

15

La imagen de las conexiones sobre los sensores de distancia reales es la siguiente:

50 - 51

52 - 53

5V GND

4.3.2. Figura de las conexiones con los sensores de distancia Y por ltimo se ha tomado una imagen correspondiente a la conexin de los sensores de distancia al Arduino Mega. En ella se han vuelto a hacer conexiones a tierra con cables azules y a alimentacin con cables rojos, mientras que las conexiones a los pines 50-53 se realizan mediante cables verdes:

4.3.3. Imagen de las conexiones con los sensores de distancia

16

4.4.- ZUMBADOR El zumbador llevar una simple conexin a tierra y otra al pin digital 5, tal y como se puede observar en la siguiente figura realizada con Fritzing:

4.4.1. Figura de la conexin del zumbador (Fritzing) Las conexiones tambin se indican en la siguiente figura sobre una imagen real del zumbador:
5 GND

4.4.2. Figura de la conexin del zumbador


17

Para acoplar este zumbador al Arduino Mega, se ha conectado simplemente su pata ms corta a tierra (con el cable azul), mientras que la otra se ha llevado al pin digital 5 (con el cable naranja), tal y como se puede apreciar en la siguiente imagen:

4.4.3. Imagen de la conexin del zumbador 4.5.- SENSOR DE TEMPERATURA Y HUMEDAD Por ltimo, para conectar el sensor de temperatura y humedad, se volver a conectar a tierra y a alimentacin, y adems, de las otras dos patitas que tiene, solo se conectar la ms cercana a la de alimentacin, tal y como se puede apreciar en la figura 4.5.1. La conexin negra se corresponde a la toma de tierra, la azul al pin digital 2, a modo de conexin analgica, y la roja a la alimentacin. Adems se debe conectar esta entrada analgica mediante una resistencia conectada a la alimentacin, tal y como se puede observar a continuacin:

GND

5 k
5V
2

4.5.1. Figura de la conexin del sensor de temperatura y humedad


18

Tambin se ha realizado su representacin mediante el programa Fritzing de la siguiente forma:

4.5.2. Figura de la conexin del sensor de temperatura y humedad (Fritzing)

El esquemtico relativo a este sensor de temperatura y humedad se puede apreciar tambin en su esquemtico correspondiente:

4.5.3. Esquemtico de la conexin del sensor de temperatura y humedad


19

Y por ltimo, su conexin real en la placa de conexiones se puede apreciar mediante la siguiente imagen:

4.5.4. Imagen de la conexin del sensor de temperatura y humedad

20

5.- ELEMENTOS ADICIONALES


Para ayudar en el acoplamiento de todos estos componentes analizados en el apartado 4, se han utilizado los elementos que se observan en la siguiente imagen, los cuales sern detallados a continuacin:

5.1.- Elementos adicionales

En primer lugar se han adquirido 12 resistencias ms de 10 k, para colocarlas en las siguientes conexiones de la pantalla tctil analizada en el apartado 4.1: conexiones DB8-DB15, a los pines 22-29 conexin RS, al pin 38 conexin WR, al pin 39 conexin CS, al pin 40 conexin REST, al pin 41

Estas resistencias son iguales que la utilizada para el sensor de temperatura y humedad, que se especific en el apartado 4.5. En la siguiente imagen se puede apreciar este tipo de resistencias:

21

5.2.- Resistencias de 10 k Para evitar soldar cables y realizar las conexiones ms fcilmente se ha utilizado la siguiente placa de conexiones:

5.3.- Placa de conexiones


22

Para realizar las conexiones con los sensores de distancia, se han utilizado clemas de conexin y punteros, que aparecen en la siguiente imagen:

5.4.- Clemas de conexin y punteros Se han utilizado cables de seis metros para hacer estas conexiones y las siguientes cajas de chapa para cubrir los sensores de distancia:

5.5.- Cajas de chapa para cubrir los sensores de distancia


23

Y por ltimo todos los componentes han sido integrados en el interior de una caja de cartn. Para ello se realiz un agujero para ver la pantalla, as como otros dos para poder meter los cables de los sensores de distancia, el/los cable/s de alimentacin y la antena del mdulo GPS. Esta caja va unida a la bandeja del coche mediante velcro y los componentes que se han situado en su interior van pegados con cinta aislante. La caja utilizada es la que aparece en la siguiente imagen:

5.6.- Caja para introducir los componentes Y para la elaboracin de todo este proyecto tambin se han utilizado otros elementos como: Radial: para cortar el parachoques y realizar los agujeros en los que se situarn las cajas de chapa con los sensores de distancia. Cinta aislante: para fijar cables y los componentes en el interior de la caja de cartn. Plastilina: para ajustar correctamente los sensores de distancia en las cajas metlicas, evitando as movimientos o incorrectas fijaciones. Destornilladores, tijeras, cter... para trabajar con los componentes.

24

6.- IMPLEMENTACIN DEL CDIGO

Con el fin de realizar la codificacin necesaria para el correcto funcionamiento de todos los dispositivos, se han utilizado las siguientes libreras: ITDB02_Touch: correspondiente a las funciones tctiles utilizadas para la pantalla tctil. Descargable en: http://www.henningkarlsen.com/electronics/library.php?id=35 LB_GPS: utilizada para el acceso a los datos del mdulo GPS. Descargable en: http://www.cooking-hacks.com/skin/frontend/default/cooking/ pdf/Libelium-LB_GPS-01a.zip Ultrasonic: permite la utilizacin de las funciones propias de los sensores de distancia por ultrasonidos. Descargable en: http://iteadstudio.com/store/images/produce/ Sensor/HCSR04/Ultrasonic.rar DHT: aporta los mtodos necesarios extraer la informacin del sensor de temperatura y humedad. Descargable en: https://github.com/adafruit/DHT-sensor-library UTFT: utilizada para mostrar toda la informacin por la pantalla tctil, tanto para hacer botones o colocar texto, como para editar el color o el tamao de todos estos elementos. Descargable en: http://henningkarlsen.com/electronics/library.php?id=52 Stdlib.h: utilizada para realizar operaciones concretas de C, como atoi.

Adems, se prob la librera correspondiente a Protothreads (accesible desde la direccin: https://www.sics.se/~adam/pt/pt-1.4-refman/a00022.html), pero no result de utilidad, ya que solamente simulan el comportamiento de los hilos, sin llegar a ejecutar los hilos al mismo tiempo, sino que dicha ejecucin sigue siendo secuencial. Por lo tanto la realizacin de dicho cdigo sin hilos incluye ciertos aspectos poco deseables, ya que mientras se est actualizando la informacin de la pantalla, o bien mientras est sonando el zumbador, no se puede hacer uso de la funcin tctil de la pantalla, aunque dicho tiempo no es elevado. Una vez analizadas todas las libreras utilizadas, a continuacin se expone la propia implementacin del cdigo realizado para este ordenador de a bordo, en el que se comienza declarando las libreras, a continuacin las constantes y variables utilizadas, para seguir con la inicializacin en el setup, diversas funciones usadas y finalmente el loop que permite realizar las iteraciones.
25

//Librerias #include <ITDB02_Touch.h> #include <LB_GPS.h> #include <Ultrasonic.h> #include <DHT.h> #include <UTFT.h> #include <stdlib.h> //Constantes #define PIN_TEMP 2 #define PIN_TRIGER_SENSOR_2 52 #define PIN_ECHO_SENSOR_2 53 #define PIN_TRIGER_SENSOR_1 50 #define PIN_ECHO_SENSOR_1 51 #define RS 38 #define WR 39 #define CS 40 #define RST 41 #define TCLK 21 #define TCS 20 #define TDIN 19 #define TDOUT 18 #define IRQ 17 #define BUZZER 5 //Fuentes del programa extern uint8_t BigFont[]; extern uint8_t SevenSegNumFont[]; //Variables de los componentes //Sensores de distancia Ultrasonic ultrasonic_2(PIN_TRIGER_SENSOR_2,PIN_ECHO_SENSOR_2); Ultrasonic ultrasonic_1(PIN_TRIGER_SENSOR_1,PIN_ECHO_SENSOR_1); //Sensor de temperatura y humedad DHT dht(PIN_TEMP, DHT11); //Pantalla y Tactil UTFT myLCD(ITDB28,RS,WR,CS,RST); ITDB02_Touch myTouch(TCLK,TCS,TDIN,TDOUT,IRQ); //Variables globales para el funcionamiento del programa long update_time; int x, y; char stCurrent[20]=""; int stCurrentLen=0; char stLast[20]=""; boolean mode_auto=true, mode_speed=false, mode_distance=false; float humidity, temperature; int velocity; char* time; int distance_1,distance_2; //Niveles por defecto de velocidad y distancia int level_v1=90,level_v2=100,level_v3=110; int level_d1=30,level_d2=20,level_d3=8; 26

//Ajuste de los pines de los componentes void setup() { //Ajuste de sensor de temperatura Serial.begin(9600); dht.begin(); //Ajuste de la pantalla myLCD.InitLCD(LANDSCAPE); myLCD.clrScr(); myTouch.InitTouch(LANDSCAPE); myTouch.setPrecision(PREC_MEDIUM); myLCD.setFont(BigFont); //Ajuste piezoelectrico pinMode(BUZZER,OUTPUT); GPS.init(); delay(100); } //Funcion usada por pantalla tres para actualizar el valor deseado void updateStr(int val) { if (stCurrentLen<20) { stCurrent[stCurrentLen]=val; stCurrent[stCurrentLen+1]='\0'; stCurrentLen++; myLCD.setColor(0, 255, 0); myLCD.print(stCurrent, LEFT, 224); } else { myLCD.setColor(255, 0, 0); myLCD.print("Fuera de rango", CENTER, 192); delay(500); myLCD.print(" ", CENTER, 192); delay(500); myLCD.print("Fuera de rango", CENTER, 192); delay(500); myLCD.print(" ", CENTER, 192); myLCD.setColor(0, 255, 0); } } //Dibuja un recuadro rojo cuando tocamos algun boton de la pantalla void waitForIt(int x1, int y1, int x2, int y2) { myLCD.setColor(255, 0, 0); myLCD.drawRoundRect (x1, y1, x2, y2); while (myTouch.dataAvailable()) myTouch.read(); myLCD.setColor(255, 255, 255); myLCD.drawRoundRect (x1, y1, x2, y2); }

27

//Botones de Auto, Velocidad y Distancia void options_buttons(){ if(mode_auto){ myLCD.setBackColor(255,0,0); myLCD.setColor(255, 0, 0); }else{ myLCD.setBackColor(0,0,255); myLCD.setColor(0, 0, 255); } myLCD.fillRoundRect (0, 0, 60, 30); myLCD.setColor(255, 255, 255); myLCD.drawRoundRect (0, 0, 60, 30); myLCD.print("Aut", 5, 8); if(mode_speed){ myLCD.setBackColor(255,0,0); myLCD.setColor(255, 0, 0); }else{ myLCD.setBackColor(0,0,255); myLCD.setColor(0, 0, 255); } myLCD.fillRoundRect (61, 0, 121, 30); myLCD.setColor(255, 255, 255); myLCD.drawRoundRect (61, 0, 121, 30); myLCD.print("Vel", 66, 8); if(mode_distance){ myLCD.setBackColor(255,0,0); myLCD.setColor(255, 0, 0); }else{ myLCD.setBackColor(0,0,255); myLCD.setColor(0, 0, 255); } myLCD.fillRoundRect (122, 0, 182, 30); myLCD.setColor(255, 255, 255); myLCD.drawRoundRect (122, 0, 182, 30); myLCD.print("Dst", 127, 8); } //Pantalla principal void screen_one(){ int pulso_correcto=0; myLCD.clrScr(); //Dibujamos botones de la pantalla inicial options_buttons(); //Botones de ajuste myLCD.setBackColor(0,0,255); myLCD.setColor(0, 0, 255); myLCD.fillRoundRect (183, 0, 319, 30); myLCD.setColor(255, 255, 255); myLCD.drawRoundRect (183, 0, 319, 30); myLCD.setColor(0,0,0); myLCD.fillCircle(210,15,10); myLCD.setColor(255,255,255); myLCD.drawCircle(210,15,10); 28

myLCD.setColor(0,0,0); myLCD.fillCircle(250,15,10); myLCD.setColor(255,255,255); myLCD.drawCircle(250,15,10); myLCD.setColor(0,0,0); myLCD.fillCircle(290,15,10); myLCD.setColor(255,255,255); myLCD.drawCircle(290,15,10); myLCD.setBackColor(0,0,255); myLCD.setColor(0, 0, 255); myLCD.fillRoundRect (0, 179, 91, 239); myLCD.setColor(255, 255, 255); myLCD.drawRoundRect (0, 179, 91, 239); myLCD.print("Conf.", 5, 191); myLCD.print("Dist", 5, 215); myLCD.setBackColor(0,0,255); myLCD.setColor(0, 0, 255); myLCD.fillRoundRect (92, 179, 183, 239); myLCD.setColor(255, 255, 255); myLCD.drawRoundRect (92, 179, 183, 239); myLCD.print("Conf.", 97, 191); myLCD.print("Veloc", 97, 215); while(pulso_correcto==0){ //Aqui se actualizan los valores (Cada 2 segundos) update_time=millis()/1000; if((update_time>0) && (update_time%2==0)){ update(); } //Si se presiona un punto de la pantalla se activa if (myTouch.dataAvailable()) { myTouch.read(); x=myTouch.getX(); y=myTouch.getY(); if ((y>=0) && (y<=30)) { if ((x>=0) && (x<=60)) { mode_auto=true; mode_speed=false; mode_distance=false; waitForIt(0, 0, 60, 30); //Cambiar color al Automatico options_buttons(); }else if ((x>=61) && (x<=121)){ mode_auto=false; mode_speed=true; mode_distance=false; waitForIt(61, 0, 121, 30); //Cambiar color a la Velocidad options_buttons(); }else if ((x>=122) && (x<=182)){ 29

mode_auto=false; mode_speed=false; mode_distance=true; waitForIt(122, 0, 182, 30); //Cambiar color a la distancia options_buttons(); } }else if((y>=179) && (y<=239)){ if((x>=0) && (x<=91)){ pulso_correcto=1; waitForIt(0,179,91,239); }else if((x>=92) && (x<=183)){ pulso_correcto=2; waitForIt(92,179,183,239); } } } } //Para modificar los niveles de Distancia if(pulso_correcto==1) screen_two(1); //Para modificar los niveles de velocidad else screen_two(2); } //Pantalla secundaria, configuracion de los niveles //Se elige el nivel y se cambia, dentro de los parametros void screen_two (int modo){ //Modo 1 distancia, 2 velocidad; int pulso_correcto=0; myLCD.clrScr(); myLCD.setColor(255,255,255); myLCD.setBackColor(0,0,0); if (modo==1){ myLCD.print("Que nivel",CENTER,0); myLCD.print("de distancia",CENTER,20); myLCD.print("desea configurar?",CENTER , 40); myLCD.print("**En centimetros",LEFT ,200); }else{ myLCD.print("Que nivel",CENTER,0); myLCD.print("de velocidad",CENTER,20); myLCD.print("desea configurar?",CENTER , 40); myLCD.print("**En km/hora",LEFT ,200); } myLCD.setBackColor(0, 0, 255); for (x=0; x<3; x++) { myLCD.setColor(0, 0, 255); myLCD.fillRoundRect (80+(x*60), 80, 130+(x*60), 130); myLCD.setColor(255, 255, 255); myLCD.drawRoundRect (80+(x*60), 80, 130+(x*60), 130); myLCD.printNumI(x+1, 97+(x*60), 97); } myLCD.setColor(0, 0, 255); myLCD.fillRoundRect (80, 140, 250, 180); myLCD.setColor(255, 255, 255); myLCD.drawRoundRect (80, 140, 250, 180); 30

myLCD.print("Volver", 118, 152); //Empieza la pantalla tactil while(pulso_correcto==0){ if (myTouch.dataAvailable()) { myTouch.read(); x=myTouch.getX(); y=myTouch.getY(); if ((y>=80) && (y<=130)) { if ((x>=80) && (x<=130)) { //Nivel 1 pulso_correcto=1; waitForIt(80, 80, 130, 130); }else if ((x>=140) && (x<=190)){ //Nivel 2 pulso_correcto=2; waitForIt(140, 80, 190, 130); }else if ((x>=200) && (x<=250)){ //Nivel 3 pulso_correcto=3; waitForIt(200, 80, 250, 130); } }else if((y>=140) && (y<=180)){ if((x>=80) && (x<=250)){ //Volver a la pantalla pulso_correcto=4; waitForIt(80, 140, 250, 180); } } } } if(pulso_correcto<4){ //Vamos a la pantalla con teclado screen_three(modo,pulso_correcto); }else{ //Vuelve a la pantalla principal screen_one(); } } //Mensajes de error para screen_three void error_message(char *error){ myLCD.setColor(255, 0, 0); myLCD.print(error, CENTER, 192); delay(500); myLCD.print(" ", CENTER, 192); delay(500); myLCD.print(error, CENTER, 192); delay(500); myLCD.print(" ", CENTER, 192); myLCD.setColor(0, 255, 0); } 31

//Pantalla para escribir valores, es un teclado tactil void screen_three(int modo, int nivel){ myLCD.clrScr(); //Modo 1 distancia, 2 velocidad; myLCD.setColor(0, 0, 255); myLCD.setBackColor(0, 0, 255); //Dibujamos los botones de los numeros for (x=0; x<5; x++) { myLCD.setColor(0, 0, 255); myLCD.fillRoundRect (10+(x*60), 10, 60+(x*60), 60); myLCD.setColor(255, 255, 255); myLCD.drawRoundRect (10+(x*60), 10, 60+(x*60), 60); myLCD.printNumI(x+1, 27+(x*60), 27); } //Dibujamos los botones centrales for (x=0; x<5; x++) { myLCD.setColor(0, 0, 255); myLCD.fillRoundRect (10+(x*60), 70, 60+(x*60), 120); myLCD.setColor(255, 255, 255); myLCD.drawRoundRect (10+(x*60), 70, 60+(x*60), 120); if (x<4) myLCD.printNumI(x+6, 27+(x*60), 87); } myLCD.print("0", 267, 87); //Dibujamos los botones de abajo myLCD.setColor(0, 0, 255); myLCD.fillRoundRect (10, 130, 150, 180); myLCD.setColor(255, 255, 255); myLCD.drawRoundRect (10, 130, 150, 180); myLCD.print("Clear", 40, 147); myLCD.setColor(0, 0, 255); myLCD.fillRoundRect (160, 130, 300, 180); myLCD.setColor(255, 255, 255); myLCD.drawRoundRect (160, 130, 300, 180); myLCD.print("Enter", 190, 147); myLCD.setBackColor (0, 0, 0); //Empieza la pantalla tactil while (true) { if (myTouch.dataAvailable()) { myTouch.read(); x=myTouch.getX(); y=myTouch.getY(); if ((y>=10) && (y<=60)) // Primera fila { if ((x>=10) && (x<=60)) // Boton: 1 { waitForIt(10, 10, 60, 60); updateStr('1'); } if ((x>=70) && (x<=120)) // Boton: 2 { 32

waitForIt(70, 10, 120, 60); updateStr('2'); } if ((x>=130) && (x<=180)) // Boton: 3 { waitForIt(130, 10, 180, 60); updateStr('3'); } if ((x>=190) && (x<=240)) // Boton: 4 { waitForIt(190, 10, 240, 60); updateStr('4'); } if ((x>=250) && (x<=300)) // Boton: 5 { waitForIt(250, 10, 300, 60); updateStr('5'); } } if ((y>=70) && (y<=120)) // Fila central { if ((x>=10) && (x<=60)) // Boton: 6 { waitForIt(10, 70, 60, 120); updateStr('6'); } if ((x>=70) && (x<=120)) // Boton: 7 { waitForIt(70, 70, 120, 120); updateStr('7'); } if ((x>=130) && (x<=180)) // Boton: 8 { waitForIt(130, 70, 180, 120); updateStr('8'); } if ((x>=190) && (x<=240)) // Boton: 9 { waitForIt(190, 70, 240, 120); updateStr('9'); } if ((x>=250) && (x<=300)) // Boton: 0 { waitForIt(250, 70, 300, 120); updateStr('0'); } } if ((y>=130) && (y<=180)) //Fila final { if ((x>=10) && (x<=150)) // Boton: Clear { waitForIt(10, 130, 150, 180); stCurrent[0]='\0'; stCurrentLen=0; 33

myLCD.setColor(0, 0, 0); myLCD.fillRect(0, 224, 319, 239); } if ((x>=160) && (x<=300)) // Boton: Enter { waitForIt(160, 130, 300, 180); if (stCurrentLen>0) { for (x=0; x<stCurrentLen+1; x++) { stLast[x]=stCurrent[x]; } stCurrent[0]='\0'; stCurrentLen=0; myLCD.setColor(0, 0, 0); myLCD.fillRect(0, 208, 319, 239); myLCD.setColor(0, 255, 0); myLCD.print(stLast, LEFT, 208); int answer= atoi(stLast); if (modo==1){//distancia if (nivel==1){ if (answer > level_d2 && answer < 200){ level_d1=answer; break; }else{ error_message("Distancia incorrecta"); } }else if (nivel==2){ if (answer > level_d3 && answer < level_d1){ level_d2=answer; break; }else{ error_message("Distancia incorrecta"); } }else if (nivel==3){ if (answer < level_d2 && answer > 2){ level_d3=answer; break; }else{ error_message("Distancia incorrecta"); } } }else if (modo==2){//velocidad if (nivel==1){ if (answer < level_v2 && answer > 50){ level_v1=answer; break; }else{ error_message("Velocidad incorrecta"); } }else if (nivel==2){ if (answer > level_v1 && answer < level_v3){ level_v2=answer; break; }else{ error_message("Velocidad incorrecta"); 34

} }else if (nivel==3){ if (answer > level_v2 && answer<250){ level_v3=answer; break; }else{ error_message("Velocidad incorrecta"); } } } } else { error_message("Texto vacio"); } } } } } screen_two(modo); } //Se encarga de actualizar la velocidad void print_velocity(int vel){ myLCD.print("Velocidad:", 10, 50); myLCD.print(" ",10,100); myLCD.print(" ",10,115); myLCD.print(" ",10,130); myLCD.print(" ",10,145); myLCD.setFont(SevenSegNumFont); myLCD.printNumI(vel,10,100); myLCD.setFont(BigFont); myLCD.print("Km/h", 110, 100); if(vel>=level_v1){ //Semaforo Verde myLCD.setColor(0,255,0); myLCD.fillCircle(210,15,10); }else{ myLCD.setColor(0,0,0); myLCD.fillCircle(210,15,10); } if(vel>=level_v2){ //Semaforo Ambar myLCD.setColor(255,127,0); myLCD.fillCircle(250,15,10); tone(BUZZER,500);//Aviso sonoro delay(500); noTone(BUZZER); }else{ myLCD.setColor(0,0,0); myLCD.fillCircle(250,15,10); } if(vel>=level_v3){ //Semaforo Rojo myLCD.setColor(255,0,0); myLCD.fillCircle(290,15,10); tone(BUZZER,500);//Aviso sonoro delay(500); noTone(BUZZER); 35

tone(BUZZER,500);//Aviso sonoro delay(500); noTone(BUZZER); }else{ myLCD.setColor(0,0,0); myLCD.fillCircle(290,15,10); } } //Se encarga de actualizar la distancia void print_distance(int dist){ myLCD.print("Distancia:", 10, 50); myLCD.print(" ",10,100); myLCD.print(" ",10,115); myLCD.print(" ",10,130); myLCD.print(" ",10,145); myLCD.setFont(SevenSegNumFont); myLCD.printNumI(dist,10,100); myLCD.setFont(BigFont); myLCD.print("CM ", 110, 100); if(dist<=level_d1){ //Semaforo Verde myLCD.setColor(0,255,0); myLCD.fillCircle(210,15,10); }else{ myLCD.setColor(0,0,0); myLCD.fillCircle(210,15,10); } if(dist<=level_d2){ //Semaforo Ambar myLCD.setColor(255,127,0); myLCD.fillCircle(250,15,10); tone(BUZZER,500);//Aviso sonoro delay(500); noTone(BUZZER); }else{ myLCD.setColor(0,0,0); myLCD.fillCircle(250,15,10); } if(dist<=level_d3){ //Semaforo Rojo myLCD.setColor(255,0,0); myLCD.fillCircle(290,15,10); tone(BUZZER,500);//Aviso sonoro delay(500); noTone(BUZZER); tone(BUZZER,500);//Aviso sonoro delay(500); noTone(BUZZER); }else{ myLCD.setColor(0,0,0); myLCD.fillCircle(290,15,10); } }

36

//Funcion para sacar la hora void print_Time(char *horatotal){ int index=0,count=0; char time[30],hora[5],minute[5]; while (*horatotal!=(char)0 && index==0){ if (index==0){ if (*horatotal!=(char)46) { time[count++] = *horatotal; } else { time[count] = (char)0; count=0 ; index++ ; } } horatotal++; } index=0; count=0; int contador=0; while(index<4){ if (index<=1){ hora[count++]=time[index]; }else{ minute[contador++]=time[index]; } index++; } hora[count]='\0'; minute[contador]='\0'; int hour=atoi(hora)+2; myLCD.print(" ",200,80); myLCD.printNumI(hour, 200, 80); myLCD.print(":", 230, 80); myLCD.print(minute, 245, 80); } //Funciones de Actualizacion de Datos void update(){ int distance; velocity = (int)GPS.getSpeed(); delay(100); GPS.getLocation(); distance_1=ultrasonic_1.Ranging(CM); distance_2=ultrasonic_2.Ranging(CM); humidity = dht.readHumidity(); temperature = dht.readTemperature(); myLCD.setColor(255,255,255); myLCD.setBackColor(0,0,0); if(distance_1>distance_2){ distance=distance_2; }else{ distance=distance_1; 37

} if (distance>300){ distance=300; } if (velocity>200){ velocity=200; }else if (velocity<0){ velocity=0; } //Imprimimos Humedad y Temperatura myLCD.setColor(255,255,255); myLCD.print("Hora:", 200, 50); print_Time(GPS.timeGPS); myLCD.print("Tempt:", 200, 110); myLCD.print(" ",200,140); myLCD.printNumF(temperature,1, 200, 140); myLCD.print("C", 270, 140); myLCD.print("Humed:", 200, 170); myLCD.print(" ",200,200); myLCD.printNumF(humidity,1, 200, 200); myLCD.print("%", 270, 200); if(mode_auto){ if(velocity<20){ print_distance(distance); }else{ print_velocity(velocity); } }else if(mode_speed){ print_velocity(velocity); }else if(mode_distance){ print_distance(distance); } } void loop() { screen_one(); }

38

7.- RESULTADO FINAL DEL PROYECTO


Los acabados finales de las pantallas aparecen en el apartado 1.4. A continuacin se exponen las imgenes del resultado obtenido con los dems elementos:

7.1.- Colocacin de uno de los sensores de distancia en el parachoques trasero

7.2.- Conexin de la pantalla tctil con las 12 resistencias


39

7.3.- Componentes en el interior de la caja de madera 1/2

7.4.- Componentes en el interior de la caja de madera 2/2


40

7.5.- Pruebas de distancia

7.6.- Pruebas de velocidad


41

8.- VALORACIN, DIFICULTADES Y COMENTARIOS


La valoracin general del proyecto es bastante positiva, ya que, aunque se han encontrado diversos obstculos en su realizacin, se han podido solventar y con ello finalizar su realizacin tal y como se tena previsto en un inicio. Sin embargo, ha llevado bastante tiempo su realizacin, ya que los componentes se pidieron en dos lugares distintos, con fechas de entrega distintas, aunque fue previsto con tiempo para comenzar su elaboracin en la fecha establecida. Una vez que tuvimos todos los componentes, comenzamos la prueba de cada uno de ellos por separado, encontrando en algunos de ellos bastantes ms dificultades que en otros: El zumbador ha sido el elemento ms sencillo de probar, ya que estbamos familiarizados con su uso. Los sensores de distancia tampoco nos llevaron mucho tiempo, ya que la librera que encontramos en un primer momento funcion correctamente. El sensor de humedad y temperatura nos llev ms tiempo del esperado, hasta que encontramos la librera y los tutoriales correctos, ya que de las cuatro patitas de las que consta, tan solo se utilizan tres. La pantalla tctil ha sido ms que difcil, compleja, ya que requiere la utilizacin de dos libreras: por un lado la de la propia pantalla para representar los distintos elementos en ella y por otro la relativa al aspecto tctil. Por lo tanto el funcionamiento qued claro desde un primer momento, pero su realizacin ha sido bastante laboriosa. El mdulo GPS ha sido el mayor problema. En primer lugar la librera que se aportaba en la pgina del producto no era correcta, con lo que nos cost bastante encontrar la apropiada. Adems su conexin tambin era poco intuitiva, ya que de las ocho patitas que tiene tan solo se conectan dos, a travs de las cuales se aportan todos los datos. Un gran problema ha sido la correcta lectura de la velocidad, ya que para que el mdulo GPS pueda ofrecer la velocidad debe estar conectado a varios satlites, lo cual puede tardar bastante tiempo, desde 5 o 10 minutos hasta 30 o 40 minutos. Tambin el correcto formato de la hora ha llevado bastante tiempo. Y el otro gran problema fue dotarle de alimentacin, ya que al conectar todos los componentes al mismo tiempo no haba energa suficiente bien para la pantalla tctil o bien para el mdulo GPS. Este problema se solucion una vez que se dot de alimentacin desde la conexin del mechero del coche, que aporta mayor voltaje al Arduino.
42

En cualquier caso la alimentacin apropiada para que todos los componentes funcionen correctamente es la que recibe al mismo tiempo tanto del cable con terminacin USB, como el que termina en la conexin del mechero en el coche. En el apartado anterior, correspondiente a la implementacin, se han comentado los problemas encontrados al intentar utilizar la librera correspondiente a Protothreads, al no funcionar de la manera esperada. Otro problema fue el que tuvimos al realizar la integracin de todos los componentes en una nueva placa de conexiones, con la cual no se obtena ningn resultado coherente. En este caso finalmente nos percatamos de que no se haba conectado una mitad de la fila con la otra mitad, por lo tanto ni la toma de tierra, ni la alimentacin estaban llegando a los componentes. Y por ltimo, el montaje de todos los componentes entre s y su inclusin en el coche tampoco ha sido sencilla, ya que se tuvieron que hacer dos agujeros para los sensores de distancia en el parachoques trasero, construir dos cajas de chapa para meterlos en ellas y llevar los cables desde dicho parachoques hasta el salpicadero, donde se ha colocado la caja con todos los dems componentes. Como conclusin, se cree haber realizado un trabajo bastante completo, en el que se han cumplido con los requisitos que se establecieron previamente a su realizacin y solventando todos aquellos inconvenientes que han ido surgiendo a lo largo de su elaboracin.

43

9.- HOJAS DE CARACTERSTICAS DE LOS COMPONENTES

1 Arduino Mega 2560:

http://www.cooking-hacks.com/index.php/shop/arduino/arduino-mega2560.html http://arduino.cc/en/Main/ArduinoBoardMega2560 1 GPS Module for Arduino v1037A:

http://www.cooking-hacks.com/index.php/gps-module-for-arduino-166.html http://www.cooking-hacks.com/index.php/documentation/tutorials/arduino-gps http://arduino.cc/blog/2009/04/21/library-for-libeliums-gps-module/ http://www.cooking-hacks.com/skin/frontend/default/cooking/pdf /GPS_Firmware_GSC3_3.5.0_V4.2.pdf http://home.mira.net/~gnb/gps/nmea.html 1 Antena GPS interna:

http://www.cooking-hacks.com/index.php/internal-gps-antenna.html 1 Car Adapter Power Supply--7.5VDC 1A (Sale):

http://www.cooking-hacks.com/index.php/shop/power-1/power-supply/caradapter-power-supply-7-5vdc-1a-sale.html 2 Ultrasonic Ranging Module: HC-SR04:

http://iteadstudio.com/store/index.php?main_page=product_info&cPath=4&pr oducts_id=52 http://iteadstudio.com/store/images/produce/Sensor/HCSR04/HC-SR04.pdf http://iteadstudio.com/application-note/arduino-library-for-ultrasonic-rangingmodule-hc-sr04/ 1 2.8'' TFT LCD Screen Module: ITDB02-2.8:

http://iteadstudio.com/store/index.php?main_page=product_info&cPath=57_58 &products_id=530 http://iteadstudio.com/store/images/produce/Display/TFT/TFTLCD_ITBD02_2. 8/ITDB02_2.8_sch.pdf http://iteadstudio.com/store/images/produce/Display/TFT/TFTLCD_ITBD02_2. 8/ITDB02_2.8_DS.pdf

44

http://iteadstudio.com/store/images/produce/Display/TFT/TFTLCD_ITBD02_2. 8/ILI9325DS_V0.29_2007-08-21-15-12-29-179.pdf http://iteadstudio.com/store/images/produce/Display/TFT/TFTLCD_ITDB02_2. 2/TSC2046_DS.pdf http://www.henningkarlsen.com/electronics/library.php?id=38 http://www.henningkarlsen.com/electronics/library.php?id=35 http://www.henningkarlsen.com/electronics/library.php?id=37 http://iteadstudio.com/application-note/show-images-and-different-fonts-onitdb02-series-lcd/ 1 Humidity Temperature Sensor DHT11:

http://iteadstudio.com/store/index.php?main_page=product_info&cPath=4&product s_id=242 http://iteadstudio.com/store/images/produce/Sensor/Humidity_temperature_senso r/DHT11.PDF http://www.ladyada.net/learn/sensors/dht.html

1 Buzzer (DC5V):

http://iteadstudio.com/store/index.php?main_page=product_info&cPath=10_14 &products_id=169

65 Jumper Wires (F/M), cables Macho-Hembra:

http://www.cooking-hacks.com/index.php/jumper-wires-f-m.html

45

You might also like