Arducar: Ordenador de a bordo para coches antiguos
Grupo 9 (Móstoles):
Daniel Duque Maroto
Jesús Miranda Blanco
Daniel Villaverde Martín
1. Introduccion y fundamentos
De la necesidad de renovar y aumentar las funcionalidades de coches sin ordenador de a bordo nace Arducar.
Arducar es un sistema que permite añadir a los coches antiguos un ordenador de a bordo con velocímetro digital y sensor de aparcamiento.
Dividido en dos módulos, el trasero (colocado en el maletero), el cual obtiene datos sobre la velocidad gracias a un GPS y sobre la distancia del parachoques trasero a objetos cercanos gracias a unos sensores de ultrasonidos, y el delantero (colocado en el salpicadero), el cual recibe los datos del módulo trasero y los representa a través de la pantalla LCD y la matriz de LEDs. Ambos módulos se comunican de forma inalámbrica.
2. Tecnologías
- GitHub: Hemos utilizado GitHub para poder trabajar todo el equipo sin encontrarnos en el mismo lugar y llevar un control de versiones.
- Trello: Hemos utilizado Trello para gestionar las tareas y modificaciones que quedaban por hacer.
- Arduino IDE: Para programar los sketchs
3. Hardware y estructura
- 2 placas Arduino UNO.
- Pantalla LCD1602 con teclado: Los datos de la velocidad y la distancia detectada por los sensores de aparcamiento se mostrarán aquí.
- 2 shield Xbee: Se encargarán de el intercambio de datos entre ambos módulos de forma inalámbrica.
- Matriz de LEDs 8×8: Mostrarán de forma gráfica la distancia detectada por los sensores de aparcamiento.
- LDR: se encargará de detectar la luz ambiente para apagar o encender el la luz del LCD.
- Módulo GPS GY-GPS6MV2: detectará la velocidad del vehículo desde el módulo trasero.
- 3 módulos ultrasonido HC-SR04: detectarán la cercanía del parachoques trasero con los objetos cercanos.
- 2 Protoboard: para hacer pruebas antes de montar la estructura definitiva y para conectar varios componentes a la los pines 5V y GND de la placa arduino.
- Cables y pines macho/hembra.
- Un par de cajas viejas: para montar la estructura del módulo delantero.
- Cargador USB/mechero: para enchufar el módulo delantero al coche.
- Batería recargable USB: para alimentar el módulo trasero.
- Herramientas: alicates, soldador de estaño, estaño, cinta de doble cara, cinta aislante, etc. para montar la estructura definitiva, soldar los cables y componentes necesarios y fijar los módulos al coche.
4. Precios
Componente |
Precio (€) |
Cantidad |
Necesario (€) |
Comprado (€) |
Pantalla LCD1602 con teclado |
3.1 |
1 |
3.1 |
3.1 |
Matriz de LEDs 8×8 |
2 |
1 |
2 |
2 |
Arduino UNO |
14 |
2 |
28 |
0 (1 del kit otorgado por la universidad y otra propia nuestro) |
Shield XBEE |
23.6 |
2 |
47.2 |
0 (Prestados por Javier Cano) |
LDR |
0.2 |
1 |
0.2 | 0 (Incluído en el kit) |
Módulo GPS GY-GPS6MV2 |
11 |
1 |
11 |
11 |
Módulo ultrasonido HC-SR04 |
1.25 |
3 |
3.75 |
3.75 |
Protoboard |
1 |
1 |
2 | 0 (Incluído en el kit) |
Cable de hilo |
0.3/m | 16m | 4.8 | 4.8 |
Pines Macho/Hembra |
0.02 | 200 | 4 | 4 |
Cargador USB/mechero |
2 | 1 | 2 | 0 (Propio) |
Bateria recargable USB |
8 | 1 | 8 | 0 (Propia) |
Cajas viejas |
0 |
2 |
0 |
0 |
Total |
116.05 | 28.65 |
5. Software
Código del módulo delantero: Dropbox
Código del módulo trasero: Dropbox
- Librerías:
- LiquidCrystal: utilizado para crear la entidad del LCD y dibujar en la pantalla (clear, setCursor, print…).
- LedControl: utilizado para crear la entidad de la matriz de LEDs y encender y apagar los LEDs (clearDisplay, setColumn…).
- Ultrasonic: utilizado para crear la entidad de los ultrasonidos y medir la distancia que detectan (Ranging).
- SoftwareSerial: utilizado en conjunto con TinyGPS para leer los datos del GPS.
- TinyGPS: utilizado para crear la entidad del GPS y obtener información como la velocidad (encode, f_speed_mph…).
- Módulo trasero: el módulo trasero inicializa los ultrasonidos y el GPS y utilizando las librerías correspondientes envía datos de distancia captados por los ultrasonidos y de velocidad captados por el GPS.
- Módulo delantero: el funcionamiento del módulo delantero es algo más complicado. El módulo delantero funciona por modos (inicio, mostrando valor de velocidad y mostrando valor de distancia al parachoques trasero). En cada bucle el módulo delantero realizará la lectura de todos los datos disponibles en el serial en ese momento y almacenará los datos de velocidad y distancias obtenidos, dependiendo de la velocidad el modo cambiará a aparcamiento (si la velocidad es menor de 15km/h) o a velocímetro (si la velocidad es 15km/h o más)
El envío de datos se realiza a través de los módulos XBEE que a nivel de código funcionan como una comunicación con el serial, por lo que el envío se realizará a través de cadenas de caracteres pero la lectura será caracter a caracter. Teniendo en cuenta esto los datos se envían con un caracter clasificador que informará de a qué corresponde el dato numérico enviado a continuación (‘v’ en caso de un dato de velocidad, ‘z’ en caso de un dato de distancia correspondiente al sensor izquierdo, ‘x’ si el dato corresponde al central y ‘c’ si el dato corresponde al derecho) y un caracter de fin de dato (‘f») que informa de cuando finaliza el dato numérico.
El funcionamiento de Arducar es bien sencillo. Al encenderse nos mostrará por pantalla un mensaje recordándonos que debemos tener cuidado en carretera.
Si Arducar detecta que es posible que vayamos a aparcar nuestro coche (velocidad <15 km/h) mostrará por pantalla la distancia detectada por cada uno de los sensores y por la matriz de LEDs una representación gráfica de la misma, siendo la columna de luces correspondiente a cada sensor mayor en caso de que detecte una distancia pequeña o menor en caso de que la distancia sea grande.
Si Arducar detecta que vamos a una velocidad alta (velocidad>=15km/h) nos mostrará la velocidad por pantalla junto con el tipo de carretera por la que debemos ir a esa velocidad (hasta 50km/h=»Población», hasta 90km/h=»Comarcal/Nacional/Local» y hasta 120km/h=»Autovía/Autopista»). En caso de que superemos los 120km/h los LED parpadearán para avisarnos de que hemos excedido la velocidad máxima.
- GPS: en un principio conectamos por error el pin TX del GPS con el pin que habíamos definido en la arduino como TX y el RX con el RX cuando van intercambiados (TX-RX y RX-TX)
- Matriz de LEDs: en ocasiones, al mostrar ciertos valores por la pantalla LCD, la matriz de LEDs no funciona correctamente, creemos que es por ir conectada a los pines que salen de la LCD e interferir con la misma.
- Ultrasonidos: tuvimos problemas con los ultrasonidos, ya que funcionaban poco muy de vez en cuando. Tras soldarlos conseguimos disminuir considerablemente (casi a valores imperceptibles) el tiempo que no funcionaban.
- XBEE: los módulos XBEE funcionan por defecto a 9600 baudios, con esa tasa de transferencia hay ocasiones (muy pocas) en las que los datos no se transmiten completamente.
Debido a la falta de un presupuesto mayor ciertos componentes no tenían la calidad que esperábamos, los ultrasonidos, por ejemplo.
Creemos que hemos conseguido un resultado bastante bueno y que es un proyecto que perfectamente podría llevarse a cabo e implantarse en un coche de forma definitiva.