Coche Avanzado CGB 3.0
Sistemas Empotrados y de Tiempo Real
PRÁCTICA
Coche Avanzado CBG 3.0
Coche Avanzado CBG 3.0
Grupo
7
7
Carlos Molero Cuenca
Darwin Byron Alverca Soto
Jorge Sánchez Sánchez
29-04-2019
1-Introducción
Nuestro proyecto consiste en un coche controlado desde una
aplicación para dispositivos móviles, que se conecta al coche vía bluetooth y que,
además, tiene otras funcionalidades añadidas como la detección de obstáculos y
la localización GPS. Todo esto lo realizamos utilizando Arduino.
aplicación para dispositivos móviles, que se conecta al coche vía bluetooth y que,
además, tiene otras funcionalidades añadidas como la detección de obstáculos y
la localización GPS. Todo esto lo realizamos utilizando Arduino.
2-Componentes
3-Montaje
Para la realización de esta práctica hemos utilizado 2
placas Arduino por limitaciones técnicas, no teníamos suficientes pines para
todas las conexiones. Podríamos haber optado por una versión de la placa
Arduino más avanzada y con más conexiones, pero tuvimos a nuestra disposición
otro Arduino Uno y decidimos utilizarlo para ahorrar tiempo.
placas Arduino por limitaciones técnicas, no teníamos suficientes pines para
todas las conexiones. Podríamos haber optado por una versión de la placa
Arduino más avanzada y con más conexiones, pero tuvimos a nuestra disposición
otro Arduino Uno y decidimos utilizarlo para ahorrar tiempo.
En la primera placa Arduino se encuentra conectada la parte
más importante de nuestro proyecto. Se conectan los motores a 4 pines
analógicos de la placa, para poder aplicar una velocidad variable. También
tenemos conectada a la placa nuestro Puente H que controla a los motores y
también el módulo Bluetooth que manda la información necesaria para que los
motores se muevan en la dirección deseada. En la imagen siguiente se especifica
el esquema eléctrico de los componentes de los que hemos hablado.
más importante de nuestro proyecto. Se conectan los motores a 4 pines
analógicos de la placa, para poder aplicar una velocidad variable. También
tenemos conectada a la placa nuestro Puente H que controla a los motores y
también el módulo Bluetooth que manda la información necesaria para que los
motores se muevan en la dirección deseada. En la imagen siguiente se especifica
el esquema eléctrico de los componentes de los que hemos hablado.
En la otra placa de Arduino es donde se encuentra conectado
el módulo GPS que nos proporciona la localización de nuestro coche y la tarjeta
SD, donde se guardan todos los valores que proporciona el GPS para poder leer
dicha información en un ordenador y posteriormente generar un archivo
compatible con Google Earth para su visualización.
el módulo GPS que nos proporciona la localización de nuestro coche y la tarjeta
SD, donde se guardan todos los valores que proporciona el GPS para poder leer
dicha información en un ordenador y posteriormente generar un archivo
compatible con Google Earth para su visualización.
4-Codigo
Programa principal
Parte1-Inicialización de variables y setup.
Parte 2-Loop.
Parte 3- Métodos para movimientos sencillos del coche.
Parte 4-Métodos para movimientos en diagonal del coche.
Parte 5-Método para calcular mediante el sensor de
proximidad el obstáculo mas cercano.
proximidad el obstáculo mas cercano.
Programa para la
tarjeta SD y el GPS
tarjeta SD y el GPS
Parte 1-Inicialización de variables y setup.
Parte 2-Loop.
Parte 3-Método para inicializar la tarjeta SD.
Parte 4-Método para inicializar el fichero de la tarjeta SD
donde se van a escribir los datos.
donde se van a escribir los datos.
Parte 5-Método para escribir en el fichero la información
deseada.
deseada.
Parte 6-Método donde se especifica el nombre del fichero
donde queremos escribir, la información a escribir y donde se manda cerrar el
fichero una vez realizado lo anterior.
donde queremos escribir, la información a escribir y donde se manda cerrar el
fichero una vez realizado lo anterior.
Parte 7-Método para cerrar el fichero.
8-Método para escribir una cabecera en el fichero
deseado.
deseado.
5-Videos demostrativos
6-Problemas encontrados y soluciones
El principal problema que nos ha surgido a lo largo de la
práctica ha sido provocado por el GPS ya que durante bastante tiempo no
conseguimos que el GPS se conectase a ningún satélite. Esto nos llevó a comprar
otro GPS de mayor calidad para ver si el problema era el GPS. Con este GPS el
problema continuó. Al final acabamos encontrando la solución y era que, el GPS
para conectarse a algún satélite por primera vez, necesitaba estar al aire
libre y mantenerlo con alimentación por un tiempo mínimo de 20 minutos, de tal
forma que la señal recibida fuese estable y lo pudiésemos configurar. Una vez
solucionado esto, encontramos otro problema que tenía que ver con el formato en
el que se recibían los datos del GPS, para solucionarlo usamos la librería
TinyGPS que mostraba los datos mucho mas claros.
práctica ha sido provocado por el GPS ya que durante bastante tiempo no
conseguimos que el GPS se conectase a ningún satélite. Esto nos llevó a comprar
otro GPS de mayor calidad para ver si el problema era el GPS. Con este GPS el
problema continuó. Al final acabamos encontrando la solución y era que, el GPS
para conectarse a algún satélite por primera vez, necesitaba estar al aire
libre y mantenerlo con alimentación por un tiempo mínimo de 20 minutos, de tal
forma que la señal recibida fuese estable y lo pudiésemos configurar. Una vez
solucionado esto, encontramos otro problema que tenía que ver con el formato en
el que se recibían los datos del GPS, para solucionarlo usamos la librería
TinyGPS que mostraba los datos mucho mas claros.
Otro problema que encontramos tuvo que ver con la potencia
de los motores. Al principio usábamos señales digitales para todos los
movimientos del coche lo que provocaba que el coche hiciera giros bruscos tanto
a la izquierda como a la derecha. Además, esto nos dificultaba poder colocar
las ruedas rectas al coche una vez que se ha girado en alguna dirección. Para
solucionar este problema lo que hicimos fue, que para el motor delantero que
coordina el movimiento a izquierda y derecha, en vez de usar señales digitales,
usáramos señales analógicas. Esto provocó que el coche no hiciera tantos giros
bruscos y que se pudieran poner las ruedas rectas con facilidad consiguiendo
así controlar el coche de forma más sencilla. Del mismo modo, la velocidad que
imprimen las ruedas motrices de nuestro coche también es variable y a disposición
de lo que necesite la persona que lo controle.
de los motores. Al principio usábamos señales digitales para todos los
movimientos del coche lo que provocaba que el coche hiciera giros bruscos tanto
a la izquierda como a la derecha. Además, esto nos dificultaba poder colocar
las ruedas rectas al coche una vez que se ha girado en alguna dirección. Para
solucionar este problema lo que hicimos fue, que para el motor delantero que
coordina el movimiento a izquierda y derecha, en vez de usar señales digitales,
usáramos señales analógicas. Esto provocó que el coche no hiciera tantos giros
bruscos y que se pudieran poner las ruedas rectas con facilidad consiguiendo
así controlar el coche de forma más sencilla. Del mismo modo, la velocidad que
imprimen las ruedas motrices de nuestro coche también es variable y a disposición
de lo que necesite la persona que lo controle.
Uno de los últimos problemas surgidos tuvo que ver con los
retardos producidos cada vez que el sensor de proximidad detectaba un objeto,
ya que hasta que se resolvía la interrupción, el resto de señales que iban
entrando esperaban en cola y tardaban en procesarse. Para solucionarlo tuvimos
que bajar el delay que teníamos en nuestro programa, además para disminuir el
delay en todos los casos creamos métodos en vez de tener el código en el loop y
utilizamos multitarea. Con respecto al sensor otro problema que nos surgió fue
adecuar la relación Velocidad/Distancia entre el motor y el sensor para que al
coche le diera tiempo a frenar una vez detectado el obstáculo.
retardos producidos cada vez que el sensor de proximidad detectaba un objeto,
ya que hasta que se resolvía la interrupción, el resto de señales que iban
entrando esperaban en cola y tardaban en procesarse. Para solucionarlo tuvimos
que bajar el delay que teníamos en nuestro programa, además para disminuir el
delay en todos los casos creamos métodos en vez de tener el código en el loop y
utilizamos multitarea. Con respecto al sensor otro problema que nos surgió fue
adecuar la relación Velocidad/Distancia entre el motor y el sensor para que al
coche le diera tiempo a frenar una vez detectado el obstáculo.
7-Posibles futuras mejoras
Una mejora posible es incorporar mas sensores de proximidad
para que el coche detecte objetos en todas las direcciones y no solo cuando
tenga algo en frente.
para que el coche detecte objetos en todas las direcciones y no solo cuando
tenga algo en frente.
Otra mejora que se nos ocurre es la de incorporar una cámara
al coche que permita monitorizar el recorrido del vehículo en tiempo real.
al coche que permita monitorizar el recorrido del vehículo en tiempo real.
Por último, otra mejora que se nos ocurrió fue la de
establecer una ruta guiada mediante el GPS.
establecer una ruta guiada mediante el GPS.