SmartGate
Autores:
Daniel Andrés Barbera Dimoftache
Pablo Campanero Arévalo
Izan Cruz Ruiz
Weronika Sekunda Marzec
Introducción
Hemos planteado la idea de una barrera que se levanta o baja dependiendo de la velocidad de un coche ya que nos parecía un proyecto que se puede adaptar a la vida real para mejorar la seguridad vial en entornos de vital importancia como por ejemplo zonas escolares, barrios residenciales y otras zonas recreativas.
Objetivos
El objetivo de esta práctica es el de intentar adaptar una situación real en un entorno controlado. En nuestro caso se basa en medir la velocidad de un coche y si este sobrepasa una velocidad máxima definida se activa el servomotor haciendo que se levante una barrera, además se enciende un led rojo y se informa por una pantalla led sobre la velocidad medida por los sensores infrarrojos y que el coche debe disminuir la velocidad.
Por otra parte, si el coche va a una velocidad inferior a la velocidad máxima, se activa el led verde y se informa por pantalla de la velocidad del mismo y de que prosiga su camino.
Implementación y pasos dados
Primeramente, planteamos la idea en papel, de forma excesivamente simple, a medida que íbamos avanzando íbamos añadiendo materiales a nuestro esquema. Cuando el proyecto iba teniendo forma decidimos pasarnos a Tinkercad para hacer la idea más tangible.
Montamos el proyecto (en Tinkercad) con unos pocos cables y el servomotor para ver cómo funcionaba, luego decidimos añadir los sensores, lo hicimos de poco a poco, y no entendíamos muy bien cómo funcionaban en tinkercad, luego añadimos la pantalla, con lo que más problemas tuvimos, sobretodo porque en cuanto a código no lo planteamos bien desde un principio, hasta que vimos que ya devolvía algo por pantalla al añadirle el potenciómetro (que no habíamos tenido en cuenta).
En cuanto añadimos los leds y vimos que se activaban decidimos pasarnos al circuito en protoboard.
Naturalmente los valores recibidos en Tinkercad eran una cosa, pero lo desafiante fue analizar la protoboard y si todo funcionaba correctamente. Al principio parecía que los sensores no funcionaban, además la pantalla no imprimía valores por lo que no sabíamos si el problema era de los componentes, del código o tal vez de la distribución de los cables por si al pasarlos de Tinkercad a físico habíamos cometido algún error.
Afortunadamente habíamos comprado varios sensores por lo que al ir probando vimos que varios no funcionaban correctamente. Haciendo prueba y error dimos con un par de sensores que funcionaban adecuadamente. Sin embargo, la pantalla seguía sin imprimir valores.
Tras un buen rato de reflexión decidimos cambiar la distribución del potenciómetro. Y con ello la pantalla ya imprimía valores.
Tras el montaje en la placa protoboard decidimos pasarnos al montaje del proyecto con un diseño más cercano a la idea de la barrera y el coche.
El circuito quedó tal que así:
Hemos decidido mostrar el circuito de Tinkercad ya que es más entendible y el que se ve mejor.
Acordamos usar una tabla de madera y crear una especie de badén que gira, y por un lado es una superficie plana y por otro un badén, aunque rápidamente desechamos esta idea ya que un badén nos parecía más costoso (si fuera un proyecto pensado para una situación real) y pensamos que una barrera era más apropiada para nuestra idea.
Además, en un principio queríamos usar un coche de juguete para probar la velocidad, pero al usarlo de forma manual nos quitaba control sobre el mismo (control en la velocidad, aceleración, etc).
Por lo que decidimos usar un circuito de Scalextric con un coche controlado por nosotros para aumentar o reducir la velocidad del coche acorde a las necesidades de los distintos casos de uso.
Respecto a la maqueta con el circuito de coches, quedó tal que así:
Coste de los materiales
- 3 Pilas de 9V: 9 euros.
- Led Rojo y Led Verde: Venía con el material proporcionado por la universidad.
- 5 sensores Infrarrojos KY032: 11 euros.
- Potenciómetro: Venía con el material proporcionado por la universidad.
- Resistencias 1K y 220 Ω: Venía con el material proporcionado por la universidad.
- Pantalla LCD 1602: Venía con el material proporcionado por la universidad.
- Servomotor: Venía con el material proporcionado por la universidad.
- Placa Arduino 1: Venía con el material proporcionado por la universidad.
- 50 cables: 5,40 euros.
- Otros componentes (Scalextric, Cartón, Celo, etc.): Material propio sin costes adicionales.
El costo total de la practica asciende aproximadamente a unos 25€
Problemas y soluciones
- Problema con los sensores: El principal problema que hemos tenido con los sensores ha sido respecto a la calidad de los mismos, ya que la gran parte de estos no funcionaba correctamente y por ende no éramos capaces de recibir valor alguno causando la duda de si el problema estaba en el montaje del circuito o en la calidad de otros materiales (pantalla, potenciómetro…)
- Angulo de los sensores (35º): Una vez encontramos un par de sensores que funcionaban de forma óptima nos encontramos ante otro problema y es que los sensores solo funcionaban apoyados en un ángulo correcto por lo que en muchas ocasiones al tocar lo más mínimo el circuito, este dejaba de funcionar.
- Contraste de la pantalla y el potenciómetro: Respecto a la pantalla, esta ha sido la que más quebraderos de cabeza nos ha dado y es que en ciertas ocasiones devolvía los valores correctamente, y en otras devolvía valores incongruentes. Finalmente los solucionamos reseteando el Arduino.
- Colocar la barrera en la posición correcta: Respecto a la barrera, el principal problema que hemos tenido es que en un principio el coche iba a una velocidad muy elevada, hasta el punto en el que temíamos que al chocar con la barrera pudiéramos poner en peligro el servomotor. Por ello decidimos reforzar la barrera con cartón para amortiguar mejor los golpes, y reducir el voltaje que recibía el Scalextric para que el coche no alcanzase velocidades excesivas.
- Longitud y Cantidad de los Cables: Otro problema que hemos visto es la falta de cables, y la falta de longitud de los proporcionados por la universidad. Por lo que tuvimos que comprar más cables y pedir algunos cables macho-hembra a compañeros.
Código
En resumen, el código controla la velocidad de los vehículos en un cruce de carretera y activa una barrera según se cumplan o no las condiciones de velocidad establecidas. Además, muestra información relevante en una pantalla LCD y utiliza un zumbador para alertar a los conductores cuando exceden la velocidad permitida.
Se importan las librerías necesarias: Servo (Servomotor) y LiquidCrystal (pantalla LCD).
Se definen las constantes y variables utilizadas en el programa, como pines de entrada y salida, valores de velocidad máxima y distancia de los sensores.
En la función de configuración setup(), se inicializan los componentes y se establece la comunicación serial y el objeto LCD. En el bucle principal loop(), se realizan las siguientes acciones:
Después se verifica si el primer sensor de la carretera ha detectado un vehículo. Si es así, se registra el tiempo inicial y se espera un breve intervalo de tiempo.
Se verifica si el segundo sensor ha detectado el mismo vehículo. En caso afirmativo, se registra el tiempo final y se calcula la diferencia de tiempo entre ambos sensores.
Esta se calcula en kilómetros por hora dividiendo la distancia entre los sensores por la diferencia de tiempo. Se actualiza el tiempo del último sensor.
Se imprimen los valores de tiempo, diferencia de tiempo y velocidad en el monitor serie.
Si la velocidad redondeada supera la velocidad máxima establecida, se muestra un mensaje en la pantalla LCD indicando que se debe moderar la velocidad. Se enciende el LED rojo y se baja la barrera del cruce. Además, se activa el zumbador durante un segundo.
En caso contrario, si la velocidad es inferior a la velocidad máxima, se muestra un mensaje en la pantalla LCD indicando que se puede continuar circulando. Se enciende el LED verde y se levanta la barrera del cruce.
Si ha pasado un tiempo determinado sin que se detecte un vehículo, se reinicia el valor de la velocidad para que la barrera se mantenga levantada.
Reparto de tareas
El reparto de las tareas es el siguiente:
La realización del código: Daniel Andrés Barbera Dimoftache e Izan Cruz Ruiz.
La Realización del circuito: Weronika Sekunda Marzec, Pablo Campanero Arévalo.
La Realización del PowerPoint y memoria: En conjunto.
Conclusión
Ha sido una experiencia bastante enriquecedora no solo en lo que a programar con Arduino se refiere sino también en la manipulación de los materiales. A pesar de que nos hemos encontrado con bastantes problemas, el solucionarlos y ver el proyecto funcionar ha resultado verdaderamente satisfactorio. El proceso de resolución de problemas nos ha permitido aprender y crecer en nuestras habilidades técnicas y de trabajo en equipo. Y aunque nos hubiera gustado añadir más cosas a nuestro proyecto, como un botón para controlar que la barrera no se baje en circunstancias especiales (simulando un caso real como el de una ambulancia deba pasar por cuestiones mayores a una velocidad superior a la establecida por nosotros), en general, estamos muy contentos con el resultado final y estamos emocionados de aplicar lo que hemos aprendido en futuros proyectos.
Bibliografía