Situación de aprendizaje 10: Sistema de aparcamiento para coches
Programación con Arduino y posterior prototipado de un sistema de aparcamiento para coches que incluya un avisador acústico que advierta al conductor del peligro de colisión por cercanía.
COMPONENTES |
Arduino Uno |
Zumbador |
|
Sensor Ultrasonidos |
Trabajo de indagación: Gracias a los sensores de ultrasonidos, podemos averiguar la distancia que hay a un objeto. Estos emiten un ultrasonido, reciben el rebote y miden el tiempo que ha transcurrido desde la emisión hasta la recepción permitiéndonos calcular la distancia con la formula velocidad=espacio*tiempo. Utilizando un ultrasonido en la parte trasera de un vehículo, podemos emitir un sonido cuando detectemos una distancia prudencial al objeto y evitar de este modo chocar con él.
Diseño 2D
Es conveniente utilizar alguna herramienta para diseñar nuestro circuito antes de proceder al montaje. De este modo evitaremos cometer errores con el cableado. Existen muchas herramientas online para este propósito y algunas de ellas como Tinkercad incluso permiten su simulación, pero tienen mayor limitación en las librerías de componentes, por lo que en este caso utilizaremos EasyEDA.
Puedes encontrar un tutorial para crear tus diseños con EasyEDA pinchando aquí.
Incorporamos el Arduino, buzzer y sensor ultrasónico a nuestro proyecto resultando del siguiente modo:
Para abordar la programación de este proyecto, en primer lugar inicializaremos el puerto serie que nos servirá para ver en pantalla las medidas del sensor, y crearemos 3 funciones "lejos", "cerca" y "muy_cerca". De este modo será tan sencillo como llamar a cada una de ellas en el bucle principal en función de los rangos de distancia que determinemos para cada uno de estos supuestos.
Programación - Inicialización del puerto serie y asignación de pines
El siguiente paso, una vez hemos diseñado nuestro circuito es programarlo. Para ello abrimos el editor web de ArduinoBlocks y nos conectamos con nuestro usuario. Partiendo de un proyecto en blanco eligiendo como placa Arduino Uno, lo primero que haremos será sacar en pantalla nuestros componentes.
En primer lugar arrastraremos al área de trabajo el Zumbador que lo encontramos dentro del bloque de "actuadores".
y haremos lo mismo con el sensor ultrasónico.
. Ahora debemos asignarle a cada uno de ellos los Pines que hemos planteado en nuestro esquema electrónico. Para el zumbador tendremos que asignarle el Pin2, el Pin3 y Pin4 respectivamente para los pines Trig y Echo del sensor de ultrasonidos.
El puerto serie del Arduino sirve para poder comunicarse con el ordenador y de este modo, además de poder grabar en su procesador nuestros programas, nos sirve para visualizar en pantalla los valores de entradas y salidas que configuremos.
En el caso que nos afecta, dentro del bucle principal, crearemos una variable que contendrá en cada momento el valor del sensor de distancia, que se verá modificada en función de la distancia a la que se encuentre un objeto de este. Aprovecharemos que este valor se actualiza en esta variable para mostrar su valor por pantalla gracias a la comunicación del puerto serie.
Para inicializar el puerto serie, lo haremos directamente sobre el bloque de Inicializar, de ArduinoBlocks del siguiente modo:
Para crear funciones, debemos abrir el menú de funciones y arrastra el bloque al área de trabajo:
Programación de las funciones
En el planteamiento de nuestra solución, decidimos implementar 3 rangos de actuación determinados por la distancia a la que se encuentra el objeto. Cuando el objeto esta en la zona "lejos" el zumbador emitirá un tono grave y con una pausa de un segundo, si se encuentra en la zona "cerca", aumentará la frecuencia del tono y disminuirá la pausa a medio segundo y por último, si el objeto se encuentra "muy cerca", el zumbador deberá emitir tonos sin apenas pausa (50 milisegundos) y un tono lo suficientemente agudo como para advertir del peligro.
Por ello configuramos 3 funciones que llamaremos desde el programa principal en función de que se cumplan dichas condiciones y que quedarán del siguiente modo:
Antes de incluir las funciones en nuestro programa principal, vamos a configurar la lógica de actuación del sensor. Para ello, como indicábamos anteriormente, definimos una variable que contenga el valor de las medidas del sensor y la mostramos por el puerto serial para ver su valor.
Para crear variables, seleccionamos en el menú lateral "Variables" y seleccionamos el bloque "Crear variable". Estas pueden ser numéricas, de texto o lógicas (verdadera/falsa).
En estos momentos podemos subir el programa a nuestro Arduino y conectar el puerto serial para ver los resultados del siguiente modo:
En estos momentos podemos observar como alejando y acercando un objeto al sensor, los valores de medida cambian. Estos sensores no son muy precisos y es aconsejable determinar cual es la máxima y la mínima distancias en las que es capaz de medir correctamente, para determinar los rangos de actuación.
En el desarrollo de esta practica, con los valores obtenidos se definieron los siguientes rangos:
muy_cerca--> entre 0 y 10 centímetros
cerca--> de 11 a 30 centímetros
lejos--> de 31 a 60 centímetros
Por último solo nos falta programar las condiciones para cada rango y llamar a cada función según proceda.
Para crear las condiciones, utilizamos los bloques que encontramos en Lógica.
Si el valor del sensor (distancia) es mayor que cero y además es menor o igual que 10, debe activarse la función "muy_cerca":
Si distancia es mayor que 10 y menor o igual que 30 entonces debe activarse la función "cerca".
Si distancia es mayor que 30 y menor o igual que 60 entonces deberá advertirnos de la existencia de un objeto lejano.
y finalmente nuestro programa completo quedaría del siguiente modo: