memoria proyecto.docx

87
CFP SENATI ANDAHUAYLAS SISTEMAS EMPOTRADOS Y DE TIEMPO REAL ELECTRICIDAD INDUSTRIAL Proyecto: Ordenador de a bordo (visualización de velocidad, distancia, temperatura...) Nombre: CAHUANA SECCE RAUL Nombre: YUTO LEGUIA GAYO

Upload: luisito-cayhualla-tincopa

Post on 11-Jul-2016

32 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Memoria Proyecto.docx

CFP SENATI ANDAHUAYLAS

SISTEMAS EMPOTRADOS Y DE TIEMPO REAL

ELECTRICIDAD INDUSTRIAL

Proyecto:

Ordenador de a bordo

(visualización de velocidad, distancia, temperatura...)

Nombre: CAHUANA SECCE RAUL

Nombre: YUTO LEGUIA GAYO

Page 2: Memoria Proyecto.docx

Índice de contenidos

1.- Descripción del proyecto................................................................................................................................1

1.1.- Distancia trasera respecto a un automóvil .................................................................................. 1

1.2.- Velocidad del automóvil ....................................................................................................................... 1

1.3.- Modificación de los límites de notificaciones .............................................................................. 3

1.4.- Imágenes de la pantalla táctil ............................................................................................................ 4

2.- Revisión 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 imágenes ....................................................................................................... 11

4.1.- Pantalla táctil ......................................................................................................................................... 11

4.2.- Módulo 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.- Implementación del código ...................................................................................................................... 25

7.- Resultado final del proyecto .................................................................................................................... 39

8.- Valoración, dificultades y comentarios ............................................................................................... 42

9.- Hojas de características de los componentes ................................................................................... 44

Page 3: Memoria Proyecto.docx

Índice de ilustraciones

1.2.1.- Gráfico explicativo de la visualización de la pantalla para la fase 2.....................................2

1.3.1.- Gráfico explicativo de la visualización de la pantalla para la fase 3.....................................3

1.3.2.- Gráfico explicativo de la selección del número de niveles en la fase 3 1/2.......................3

1.3.3.- Gráfico explicativo de la selección del número 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.- Selección del nivel de configuración de distancia........................................................................5

1.4.4.- Selección del nivel de configuración 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 táctil.....................................................................................12

4.1.2.- Imagen de la pantalla táctil.................................................................................................................12

4.1.3.- Imagen con las conexiones de la pantalla táctil 1/2.................................................................13

4.1.4.- Imagen con las conexiones de la pantalla táctil 2/2.................................................................13

4.2.1.- Figura de conexiones del módulo GPS............................................................................................14

4.2.2.- Imagen con las conexiones de la pantalla táctil 1/2.................................................................14

4.2.3.- Imagen con las conexiones de la pantalla táctil 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

Page 4: Memoria Proyecto.docx

4.3.3. Imagen de las conexiones con los sensores de distancia ....................................................... 16

4.4.1. Figura de la conexión del zumbador (Fritzing) .......................................................................... 17

4.4.2. Figura de la conexión del zumbador ............................................................................................... 17

4.4.3. Imagen de la conexión del zumbador ............................................................................................ 18

4.5.1. Figura de la conexión del sensor de temperatura y humedad ............................................ 18

4.5.2. Figura de la conexión del sensor de temperatura y humedad (Fritzing) ....................... 19

4.5.3. Esquemático de la conexión del sensor de temperatura y humedad ............................... 19

4.5.4. Imagen de la conexión 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 conexión 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.- Colocación de uno de los sensores de distancia en el parachoques trasero .................... 39

7.2.- Conexión de la pantalla táctil 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

Page 5: Memoria Proyecto.docx

1

1.- DESCRIPCIÓN DEL PROY ECTO

La realización del proyecto se va a dividir en tres tareas que irán añadiendo funcionalidad a dicho proyecto como conjunto, así como aumentando su complejidad y utilidad.

1.1.- DISTANCIA TRASERA RESPECTO A UN AUTOMÓVIL

En primer lugar se recogerá información mediante dos sensores de distancia por ultrasonidos, colocados en el parachoques trasero del automóvil y en función de la distancia que aporte cada uno de ellos, se escogerá la mínima de las dos magnitudes aportadas por ellos. Este dato refleja la distancia que existe entre dicho parachoques y el objeto más cercano a él, normalmente utilizable en la maniobra de aparcamiento.

Esta información será mostrada en una pantalla táctil, cuyo primer objetivo será únicamente ofrecer tanto esta distancia, como la temperatura y humedad, recogidas mediante un sensor que se utilizará para tal función.

Además, se realizará el diseño de un semáforo, con tres luces: verde, naranja y roja, las cuales se utilizarán a modo de leds de colores. Para que dichas luces se enciendan, deben ir superándose tres niveles de distancia, uno para cada una de las luces. Estos niveles se han determinado numéricamente en 30, 20 y 8 centímetros. Asimismo, habrá redundancia de información, ya que mediante un zumbador se emitirá un sonido informando también 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 táctil, se utilizará un Arduino Mega 2560, que consta de 54 entradas/salidas digitales, así como 16 entradas analógicas, a través de las cuales se podrán conectar todos los dispositivos que se comentarán en el apartado 3.

Y en cuanto a la alimentación que se le suministrará a este Arduino Mega, se realizará a través de la salida de 12-24 V que hay en todos los automóviles, mediante un cable que conecta esta salida al Arduino.

1.2.- VELOCIDAD DEL AUTOMÓ VIL

En esta fase se añadirá al Arduino Mega un módulo GPS, a través del cual se obtendrán tanto la velocidad del automóvil, como la hora actual.

Una vez que se recojan estos datos, se reestructurará el formato en el que se muestra la información a través de la pantalla, comenzando a utilizar la posibilidad que ofrece de introducir parámetros a través de ella, al ser táctil.

Por lo tanto se va a poder elegir entre tres modos de funcionamiento, los cuales tienen en común la información sobre la temperatura y la hora en un tamaño de fuente menor a los datos característicos de cada uno de los modos, que serán explicados a continuación:

Page 6: Memoria Proyecto.docx

Automático Velocidad Distancia102 km/h 22 %30 º

2

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 más próximo a él, tal y como se comentó anteriormente. Además se recuerda que al pasar cada uno de los límites establecidos para los niveles, se comunicarán estos hechos de forma acústica y visual según se explicó previamente.

2.- Modo velocidad: el funcionamiento es análogo al caso anterior, solo que esta vez el dato mostrado será la velocidad del automóvil recogida por el módulo GPS. De nuevo vuelve a notificarse si se sobrepasan tres límites de velocidad, los cuales se han establecido en 90, 100 y 110 kilómetros por hora. Por lo tanto al superar dichas velocidades de nuevo se encenderán las luces correspondientes en la pantalla y también el zumbador funcionará del mismo modo que en el caso de la distancia.

3.- Modo automático: este será el modo que aparecerá por defecto. En él se mostrará la velocidad del automóvil, siempre y cuando ésta sea superior a los 10 kilómetros 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 más deprisa al aparcar). Además puede ser interesante saber esta distancia en paradas, como pasos de cebra o semáforos, ya que si es una parada con pendiente hacia arriba es conveniente saber la distancia al objeto que se tenga detrás.

Se ha pensado en una estructuración de la pantalla del siguiente modo:

14:41

1.2.1.- Gráfico explicativo de la visualización de la pantalla para la fase 2

De tal forma que las tres ‘cajas’ que se sitúan en la parte superior de la pantalla, se utilizarán de modo que el usuario, al pulsar en una de ellas, cambie fácilmente 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 cuál es el que está visualizando en todo momento.

Page 7: Memoria Proyecto.docx

3

1.3.- MODIFICACIÓN DE LOS LÍMITES DE NOTIFICAC IONES

Por último, ya que se cuenta con una pantalla táctil, que permite la introducción de datos, se le va a permitir al usuario que establezca los valores límites en cuanto a la velocidad y a la distancia que desee.

Se va a poder elegir cada uno de los tres límites, tanto para la velocidad, como para la distancia, y de esta forma modificarlo.

Una vez que se acceda mediante la pantalla táctil a la modificación bien de los límites de la velocidad, o bien de los límites de la distancia, se le pedirá al usuario que señale qué nivel de límite desea establecer, como se ha comentado anteriormente. A continuación se le mostrará por la pantalla un teclado numérico, con las opciones de borrar y aceptar límite actual.

Para ello se ha pensado añadir un par de opciones más a la interfaz de usuario que se mostró para la segunda fase:

Automático Velocidad Distancia14:41

102 30 ºkm/h

22 %Conf. Velocidad Conf. Distancia

1.3.1.- Gráfico explicativo de la visualización 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 cambiaría todo el formato por el siguiente:

¿Qué nivel de velocidad desea configurar?

1 2 3

Volver

1.3.2.- Gráfico explicativo de la selección del número de niveles en la fase 3 1/2

Es bastante intuitivo que hay que pulsar sobre la opción que se desea escoger.

La caja de debajo será para volver directamente a la pantalla principal sin realizar ningún cambio.

Page 8: Memoria Proyecto.docx

4

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

1 2 3 4 5

6 7 8 9 0

Borrar Aceptar

1.3.3.- Gráfico explicativo de la selección del número de niveles en la fase 3 2/2

Las opciones que permite realizar serán la de borrar, que elimina el último dígito introducido, aceptar, que intentará establecer el límite introducido, y evidentemente la pulsación de cada dígito, lo irá cargando en la pantalla.

En caso de error, debido a que la distancia o velocidad introducida no sean válidas (ya sea por incompatibilidades con otros niveles o porque se salga del rango establecido), se le notificará dicho error al usuario.

1.4.- IMÁGENES DE LA PANTALLA TÁCTIL

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

Page 9: Memoria Proyecto.docx

5

1.4.2.- Distancia que supera el tercer nivel

1.4.3.- Selección del nivel de configuración de distancia

Page 10: Memoria Proyecto.docx

6

1.4.4.- Selección del nivel de configuración de velocidad

1.4.5.- Establecimiento de un nivel de distancia o velocidad

Page 11: Memoria Proyecto.docx

7

2.- REVISIÓN DE PROYECTO S SIMILIARES

Dado que el proyecto agrupa fundamentalmente el análisis de la distancia comentado en el apartado anterior, así como la velocidad del automóvil, 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 página web cooking- hacks en el cual se ha realizado un sensor de distancia para un coche, en el que se envían los datos de forma inalámbrica, indicando la proximidad exclusivamente mediante cinco leds verdes y dos rojos:

http://www.cooking-hacks.com/index.php/let-s-cook/community-hacks/parking-sensor Existen varias diferencias con este proyecto:

- Se pondrán dos sensores de distancia, para cubrir la distancia en todo elparachoques trasero y no exclusivamente en su punto central. Además estos dos sensores se colocarán en el interior del parachoques, para que no se rompan en caso de choque (como podría ocurrir en este proyecto de cooking-hacks) y además así se evitará también que le pueda entrar agua en caso de lluvia.

- La comunicación entre el Arduino y los sensores se realizará mediante cables y no de forma inalámbrica.

- La forma de mostrar la información estará mucho más depurada mediante la pantalla, en lugar de exclusivamente con leds, contando también con un zumbador.

- Y además de la distancia se comunicarán otros datos relevantes como la velocidad, la hora, la temperatura y la humedad.

Se han visto vídeos 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 centímetros respecto al único sensor del que consta.

Hay alguno más 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 información en función de la distancia, como: Estás lejos, Un poco más, Le vas a dar… y en la inferior se informa de la distancia en centímetros.

Page 12: Memoria Proyecto.docx

8

Esto tiene algo más 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 información tendrá más datos que la que aparece en dicho vídeo, además de agruparlos de una mejor forma.

- Los niveles en los que se le notificará al usuario tanto gráficamente, como acústicamente, podrán ser modificados por el propio usuario, interactuando con la pantalla táctil.

2.2.- PROYECTOS RELACIONADOS CON LA VELOCIDAD

Y en cuanto al GPS y a la velocidad, se han encontrado los siguientes vídeos 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 automóvil, 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 módulo GPS.

2.- https://www.youtube.com/watch?v=QNlG-Zp_zwM

En este vídeo 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 módulo 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 módulo GPS. De nuevo es uno de los datos que se mostrarán en el proyecto, recogiéndolo de la misma forma que en el vídeo mostrado, pero dotándole de más aspectos.

Page 13: Memoria Proyecto.docx

9

3.- MATERIAL NECESARIO Y PRESUPUESTO

Producto Precio

1 x Arduino Mega 2560 48.38 €

1 x GPS Module for Arduino v1037A 17.70 €

1 x Antena GPS interna 9.44 €

1 x Car Adapter Power Supply--7.5VDC 1A (Sale) 3.54 €

2 x Ultrasonic Ranging Module: HC-SR04 19.80 $ => 14.85 €

1 x 2.8'' TFT LCD Screen Module: ITDB02-2.8 22.00 $ => 16.5 €

1 x Humidity Temperature Sensor DHT11 2.80 $ => 2.10 €

1 x Buzzer (DC5V) 0.50 $ => 0.375 €

65 x Jumper Wires (F/M), cables Macho-Hembra 6.49 €

1 x Placa de pruebas 8.85 €

13 x Resistencia de 10 k 1.30 €

Otros materiales no comprados: chapa,

cinta aislante, velcro, plastilina,

cables macho-macho...

...

Total sin transporte 129.525 €

Transporte cooking-hacks.com 8.26 €

Transporte iteadstudio.com 4.00 $ => 3.00 €

Total con transporte 140.785 €

Page 14: Memoria Proyecto.docx

10

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

3.1.- Imagen del material utilizado

Y los dispositivos utilizados, que se detallarán en el apartado siguiente, son los siguientes:

3.2.- Imagen de los dispositivos utilizados

Page 15: Memoria Proyecto.docx

11

4.- DIAGRAMAS, CONEXIONES E IMÁGENES

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

4.1.- Imagen del Arduino Mega

4.1.- PANTALLA TÁCTIL

La pantalla táctil 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 táctil de la pantalla, se conectarán 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 señal de habilitación de escritura, con bajo por defecto, WR, se conectará con la salida digital 39.

El pin 15, de selección de chip, también 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.

Además el pin 6, de la señal de habilitación 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 conectarán a 5 V de corriente.

Y finalmente el pin 1, correspondiente a la toma de tierra, GND, se conectará a tierra.

Page 16: Memoria Proyecto.docx

37

36

35

34333231

212019

1817

12

GND

5 V38

3,3 V 39

2223242526272829

4041

4.1.1.- Figura de conexiones de la pantalla táctil

4.1.2.- Imagen de la pantalla táctil

Page 17: Memoria Proyecto.docx

13

Además pueden apreciarse todas estas conexiones en las dos siguientes imágenes del Arduino Mega utilizado para la realización de este proyecto. Para ello se ha utilizado un cable azul para la toma de tierra, los de alimentación 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 táctil 1/2

4.1.4.- Imagen con las conexiones de la pantalla táctil 2/2

Page 18: Memoria Proyecto.docx

14

4.2.- MÓDULO GPS

La conexión del módulo GPS lleva un total de 8 salidas, de las cuales se conectarán exclusivamente las dos correspondientes a RX y TX, a los pines digitales 8 y 9, tal y como se muestra en la siguiente figura. También hay 2 conexiones más en ella, conectadas mediante los cables negro y rojo, que serán para tierra y alimentación.

9 8

GND 5 V

4.2.1.- Figura de conexiones del módulo GPSAdemás, se pueden apreciar todas estas conexiones en las siguientes imágenes

tomadas en las pruebas realizadas con el Arduino Mega. Para ello se ha vuelto a utilizar un cable rojo para la alimentación, 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 táctil 1/2

Page 19: Memoria Proyecto.docx

15

4.2.3.- Imagen con las conexiones de la pantalla táctil 2/2

4.3.- SENSORES DE DISTANCIA

Para la explicación de la conexión 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 utilizarán 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). Además hay dos conexiones a tierra y dos a alimentación, 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)

Page 20: Memoria Proyecto.docx

52 - 53

16

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

50 - 51

5 VGND

4.3.2. Figura de las conexiones con los sensores de distancia

Y por último se ha tomado una imagen correspondiente a la conexión de los sensores de distancia al Arduino Mega. En ella se han vuelto a hacer conexiones a tierra con cables azules y a alimentación 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

Page 21: Memoria Proyecto.docx

5

17

4.4.- ZUMBADOR

El zumbador llevará una simple conexión 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 conexión del zumbador (Fritzing)Las conexiones también se indican en la siguiente figura sobre una imagen real

del zumbador:

GND

4.4.2. Figura de la conexión del zumbador

Page 22: Memoria Proyecto.docx

2

18

Para acoplar este zumbador al Arduino Mega, se ha conectado simplemente su pata más 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 conexión del zumbador

4.5.- SENSOR DE TEMPERATUR A Y HUMEDAD

Por último, para conectar el sensor de temperatura y humedad, se volverá a conectar a tierra y a alimentación, y además, de las otras dos patitas que tiene, solo se conectará la más cercana a la de alimentación, tal y como se puede apreciar en la figura4.5.1. La conexión negra se corresponde a la toma de tierra, la azul al pin digital 2, a modo de conexión analógica, y la roja a la alimentación. Además se debe conectar esta entrada analógica mediante una resistencia conectada a la alimentación, tal y como se puede observar a continuación:

5 kGND

5 V

4.5.1. Figura de la conexión del sensor de temperatura y humedad

Page 23: Memoria Proyecto.docx

19

También se ha realizado su representación mediante el programa Fritzing de la siguiente forma:

4.5.2. Figura de la conexión del sensor de temperatura y humedad (Fritzing)

El esquemático relativo a este sensor de temperatura y humedad se puede apreciar también en su esquemático correspondiente:

4.5.3. Esquemático de la conexión del sensor de temperatura y humedad

Page 24: Memoria Proyecto.docx

20

Y por último, su conexión real en la placa de conexiones se puede apreciar mediante la siguiente imagen:

4.5.4. Imagen de la conexión del sensor de temperatura y humedad

Page 25: Memoria Proyecto.docx

21

5.- ELEMENTOS ADICIONALE S

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 serán detallados a continuación:

5.1.- Elementos adicionales

En primer lugar se han adquirido 12 resistencias más de 10 k, para colocarlas en las siguientes conexiones de la pantalla táctil analizada en el apartado 4.1:

conexiones DB8-DB15, a los pines 22-29 conexión RS, al pin 38 conexión WR, al pin 39 conexión CS, al pin 40 conexión 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:

Page 26: Memoria Proyecto.docx

22

5.2.- Resistencias de 10 k

Para evitar soldar cables y realizar las conexiones más fácilmente se ha utilizado la siguiente placa de conexiones:

5.3.- Placa de conexiones

Page 27: Memoria Proyecto.docx

23

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

5.4.- Clemas de conexión 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

Page 28: Memoria Proyecto.docx

24

Y por último todos los componentes han sido integrados en el interior de una caja de cartón. 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 alimentación y la antena del módulo 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 elaboración de todo este proyecto también se han utilizado otros elementos como:

Radial: para cortar el parachoques y realizar los agujeros en los que se situarán las cajas de chapa con los sensores de distancia.

Cinta aislante: para fijar cables y los componentes en el interior de la caja de cartón.

Plastilina: para ajustar correctamente los sensores de distancia en las cajas metálicas, evitando así movimientos o incorrectas fijaciones.

Destornilladores, tijeras, cúter... para trabajar con los componentes.

Page 29: Memoria Proyecto.docx

25

6.- IMPLEMENTACIÓN DEL C ÓDIGO

Con el fin de realizar la codificación necesaria para el correcto funcionamiento de todos los dispositivos, se han utilizado las siguientes librerías:

ITDB02_Touch: correspondiente a las funciones táctiles utilizadas para la pantalla táctil.Descargable en:http://www.henningkarlsen.com/electronics/library.php?id=35

LB_GPS: utilizada para el acceso a los datos del módulo GPS. Descargable en:http://www.cooking-hacks.com/skin/frontend/default/cooking/pdf/Libelium-LB_GPS-01a.zip

Ultrasonic: permite la utilización 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 métodos necesarios extraer la información del sensor de temperatura y humedad.Descargable en:https://github.com/adafruit/DHT-sensor-library

UTFT: utilizada para mostrar toda la información por la pantalla táctil, tanto para hacer botones o colocar texto, como para editar el color o el tamaño 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.

Además, se probó la librería correspondiente a Protothreads (accesible desde la dirección: 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 ejecución sigue siendo secuencial.

Por lo tanto la realización de dicho código sin hilos incluye ciertos aspectos poco deseables, ya que mientras se está actualizando la información de la pantalla, o bien mientras está sonando el zumbador, no se puede hacer uso de la función táctil de la pantalla, aunque dicho tiempo no es elevado.

Una vez analizadas todas las librerías utilizadas, a continuación se expone la propia implementación del código realizado para este ordenador de a bordo, en el que se comienza declarando las librerías, a continuación las constantes y variables utilizadas, para seguir con la inicialización en el setup, diversas funciones usadas y finalmente el loop que permite realizar las iteraciones.

Page 30: Memoria Proyecto.docx

26

//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 programaextern uint8_t BigFont[];extern uint8_t SevenSegNumFont[];

//Variables de los componentes//Sensores de distanciaUltrasonic 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 humedadDHT dht(PIN_TEMP, DHT11);

//Pantalla y TactilUTFT myLCD(ITDB28,RS,WR,CS,RST);ITDB02_Touch myTouch(TCLK,TCS,TDIN,TDOUT,IRQ);

//Variables globales para el funcionamiento del programalong 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;

Page 31: Memoria Proyecto.docx

27

//Ajuste de los pines de los componentesvoid setup() {//Ajuste de sensor de temperaturaSerial.begin(9600); dht.begin();//Ajuste de la pantallamyLCD.InitLCD(LANDSCAPE);myLCD.clrScr(); myTouch.InitTouch(LANDSCAPE); myTouch.setPrecision(PREC_MEDIUM); myLCD.setFont(BigFont);//Ajuste piezoelectricopinMode(BUZZER,OUTPUT);GPS.init();delay(100);

}

//Funcion usada por pantalla tres para actualizar el valordeseadovoid 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 pantallavoid 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);

}

Page 32: Memoria Proyecto.docx

28

//Botones de Auto, Velocidad y Distanciavoid 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 principalvoid screen_one(){

int pulso_correcto=0; myLCD.clrScr();//Dibujamos botones de la pantalla inicialoptions_buttons();//Botones de ajustemyLCD.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);

Page 33: Memoria Proyecto.docx

29

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 activaif (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 Automaticooptions_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 Velocidadoptions_buttons();

}else if ((x>=122) && (x<=182)){

Page 34: Memoria Proyecto.docx

30

mode_auto=false; mode_speed=false; mode_distance=true; waitForIt(122, 0, 182, 30);//Cambiar color a la distanciaoptions_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 Distanciaif(pulso_correcto==1) screen_two(1);//Para modificar los niveles de velocidadelse screen_two(2);

}

//Pantalla secundaria, configuracion de los niveles//Se elige el nivel y se cambia, dentro de los parametrosvoid 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);

Page 35: Memoria Proyecto.docx

31

myLCD.print("Volver", 118, 152);

//Empieza la pantalla tactilwhile(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 1pulso_correcto=1; waitForIt(80, 80, 130, 130);

}else if ((x>=140) && (x<=190)){//Nivel 2pulso_correcto=2;waitForIt(140, 80, 190, 130);

}else if ((x>=200) && (x<=250)){//Nivel 3pulso_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 tecladoscreen_three(modo,pulso_correcto);

}else{//Vuelve a la pantalla principalscreen_one();

}}

//Mensajes de error para screen_threevoid 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);

}

Page 36: Memoria Proyecto.docx

32

//Pantalla para escribir valores, es un teclado tactilvoid 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 numerosfor (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 centralesfor (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 abajomyLCD.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 tactilwhile (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{

Page 37: Memoria Proyecto.docx

33

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;

Page 38: Memoria Proyecto.docx

34

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");

Page 39: Memoria Proyecto.docx

35

}}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 velocidadvoid 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 VerdemyLCD.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 RojomyLCD.setColor(255,0,0); myLCD.fillCircle(290,15,10); tone(BUZZER,500);//Aviso sonoro delay(500);noTone(BUZZER);

Page 40: Memoria Proyecto.docx

36

tone(BUZZER,500);//Aviso sonorodelay(500); noTone(BUZZER);

}else{myLCD.setColor(0,0,0); myLCD.fillCircle(290,15,10);

}}

//Se encarga de actualizar la distanciavoid 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 RojomyLCD.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);

}}

Page 41: Memoria Proyecto.docx

37

//Funcion para sacar la horavoid 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 Datosvoid 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;

Page 42: Memoria Proyecto.docx

38

}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();}

Page 43: Memoria Proyecto.docx

39

7.- RESULTADO FINAL DEL PROYECTO

Los acabados finales de las pantallas aparecen en el apartado 1.4. A continuación se exponen las imágenes del resultado obtenido con los demás elementos:

7.1.- Colocación de uno de los sensores de distancia en el parachoques trasero

7.2.- Conexión de la pantalla táctil con las 12 resistencias

Page 44: Memoria Proyecto.docx

40

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

Page 45: Memoria Proyecto.docx

41

7.5.- Pruebas de distancia

7.6.- Pruebas de velocidad

Page 46: Memoria Proyecto.docx

42

8.- VALORACIÓN, DIFICULT ADES Y COMENTARIOS

La valoración general del proyecto es bastante positiva, ya que, aunque se han encontrado diversos obstáculos en su realización, se han podido solventar y con ello finalizar su realización tal y como se tenía previsto en un inicio.

Sin embargo, ha llevado bastante tiempo su realización, ya que los componentes se pidieron en dos lugares distintos, con fechas de entrega distintas, aunque fue previsto con tiempo para comenzar su elaboración 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 más dificultades que en otros:

El zumbador ha sido el elemento más sencillo de probar, ya que estábamos familiarizados con su uso.

Los sensores de distancia tampoco nos llevaron mucho tiempo, ya que la librería que encontramos en un primer momento funcionó correctamente.

El sensor de humedad y temperatura nos llevó más tiempo del esperado, hasta que encontramos la librería y los tutoriales correctos, ya que de las cuatro patitas de las que consta, tan solo se utilizan tres.

La pantalla táctil ha sido más que difícil, compleja, ya que requiere la utilización de dos librerías: por un lado la de la propia pantalla para representar los distintos elementos en ella y por otro la relativa al aspecto táctil.Por lo tanto el funcionamiento quedó claro desde un primer momento, pero su realización ha sido bastante laboriosa.

El módulo GPS ha sido el mayor problema. En primer lugar la librería que se aportaba en la página del producto no era correcta, con lo que nos costó bastante encontrar la apropiada.Además su conexión también era poco intuitiva, ya que de las ocho patitas que tiene tan solo se conectan dos, a través de las cuales se aportan todos los datos.Un gran problema ha sido la correcta lectura de la velocidad, ya que para que el módulo GPS pueda ofrecer la velocidad debe estar conectado a varios satélites, lo cual puede tardar bastante tiempo, desde 5 o 10 minutos hasta 30 o 40 minutos. También el correcto formato de la hora ha llevado bastante tiempo.Y el otro gran problema fue dotarle de alimentación, ya que al conectar todos los componentes al mismo tiempo no había energía suficiente bien para la pantalla táctil o bien para el módulo GPS. Este problema se solucionó una vez que se dotó de alimentación desde la conexión del mechero del coche, que aporta mayor voltaje al Arduino.

Page 47: Memoria Proyecto.docx

43

En cualquier caso la alimentación apropiada para que todos los componentes funcionen correctamente es la que recibe al mismo tiempo tanto del cable con terminación USB, como el que termina en la conexión del mechero en el coche.

En el apartado anterior, correspondiente a la implementación, se han comentado los problemas encontrados al intentar utilizar la librería correspondiente a Protothreads, al no funcionar de la manera esperada.

Otro problema fue el que tuvimos al realizar la integración de todos los componentes en una nueva placa de conexiones, con la cual no se obtenía ningún resultado coherente. En este caso finalmente nos percatamos de que no se había conectado una mitad de la fila con la otra mitad, por lo tanto ni la toma de tierra, ni la alimentación estaban llegando a los componentes.

Y por último, el montaje de todos los componentes entre sí y su inclusión 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 demás componentes.

Como conclusión, se cree haber realizado un trabajo bastante completo, en el que se han cumplido con los requisitos que se establecieron previamente a su realización y solventando todos aquellos inconvenientes que han ido surgiendo a lo largo de su elaboración.

Page 48: Memoria Proyecto.docx

44

9.- HOJAS DE CARACTERÍST ICAS DE LOS COMPONEN TES

1 Arduino Mega 2560:

http://www.cooking-hacks.com/index.php/shop/arduino/arduino-mega- 2560.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/car- adapter-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-ranging-module-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

Page 49: Memoria Proyecto.docx

45

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-on-itdb02-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