Sistema de anti-mojado de vehículo
El proyecto es una maqueta a escala reducida de lo que supone un sistema de protección para vehículos, de manera que se despliegue una cubierta cuando la meteorología se vuelva adversa.
El funcionamiento del proyecto consiste básicamente en el uso de una cubierta. Para que se ponga en uso debe ocurrir uno de los dos sucesos que comentaremos a continuación:
En primer lugar que el sistema detecte que comienza a llover, a través de un sensor de agua que estará constantemente comprobando los valores que registra, y cuando esos valores se disparen, el mecanismo automáticamente cerrará la cubierta protegiendo el vehículo. Otra opción es no esperar a que el sensor detecte el agua y decidir por nuestra cuenta que queremos que la cubierta se ponga antes de que el sensor lo haga cuando se moje. Esto se hará usando la tarjeta o llavero que utilizaremos para volver a retirar la capota como veremos mas adelante.
Mientras la cubierta se esta desplegando el sistema encenderá una luz a modo de advertencia, además de emitir un sonido durante el proceso.
Cuando el proceso acabe el sistema se quedará esperando a que una llave o tarjeta «contact less» que a través de un sistema RFID sea detectada , de manera que una vez que la tarjeta sea identificada el sistema retirara la cubierta , y de manera similar a como se puso, se emitirá un sonido y una luz a modo de advertencia mientras se retira la cubierta protectora.
PROBLEMAS ENCONTRADOS DURANTE EL PROCESO Y SOLUCIONES
Idea Inicial
Cuando se nos ocurrió diseñar un sistema contra situaciones meteorológicas, pensábamos en una forma de poner el coche en marcha y dirigirlo a una zona cubierta. El sistema funcionaría gracias a múltiples dispositivos: Motores para mover el vehículo, que ha falta de una placa que los controlara , se moverían gracias a una combinación de transistores y conexiones a pin PWM. Un sensor de ultrasonidos unido a un servomotor que giraba a 3 ángulos diferentes, para detectar obstáculos en diferentes posiciones y la distancia a los mismos. Sensores de infrarrojos por debajo, para detectar una línea que debía seguir hasta la zona cubierta. Un sensor RFID esperando en la zona cubierta para leer la tarjeta situada en el suelo del vehículo. Y el sensor de agua que activara el funcionamiento de todos los componentes mencionados anteriormente.
Lamentablemente, debido a las restricciones de movimiento entre comunidades autónomas impuestas por la pandemia del COVID-19 y a la fuerte nevada que había cubierto las carreteras con nieve, no pudimos poner en conjunto los componentes necesarios (aún con el código ya preparado y listo para poner a prueba). A pesar de ello, intentamos modificar tanto el software como el hardware del proyecto e intentamos hacerlo con los materiales que disponíamos, pero no funcionó.
Idea Final
Por esto, pensamos que si no podíamos hacer que funcionase como queríamos con los materiales de que disponíamos, podíamos hacer un proyecto que implementase la misma funcionalidad pero de otra manera. Pasado un tiempo, se nos ocurrió un plan B, que es el proyecto que hemos presentado antes. Como se explicaba antes, la capa puede ponerse mediante un sensor de agua o con un sensor RFID al pasar la tarjeta cerca. Para tapar o destapar la lona, utilizamos un servomotor. Los únicos componentes que no «reutilizamos» son un led y un zumbador, que son estímulos sensoriales que añadimos al final. Por ello y como ya nos habíamos estudiado el funcionamiento de los componentes imprescindible, no tardamos mucho en hacer el código desde cero.
CÓDIGO
#include <Servo.h> #include <SPI.h> #include <MFRC522.h> //ESTA FUNCIÓN NOS VA A SERVIR PARA DETECTAR EL AGUA. boolean EsperandoAgua(); //PONER CAPOTA void PonerCapota(); //QUITAR CAPOTA void QuitarCapota(); //COMPRUEBA SI HAY TARJETAS PARA LEER. boolean HayTarjeta(); //LECTOR DE TARJETA #define RST_PIN 9 #define SS_PIN 10 MFRC522 mfrc522(SS_PIN, RST_PIN); //INSTANCIAMOS LA TARJETA MFRC522 //CREAMOS UN OBJETO DE LA CLASE "Servo". Servo servo; //PINES const int pinAgua = A0; //PIN SENSOR DE AGUA. const int pinServo = 7; //PIN SERVOMOTOR const int zumbador = 3; //PIN ZUMBADOR const int led = 2; //PIN LED //VARIABLES boolean agua = false; //BOOLEANO QUE CAMBIA CUANDO SE DETECTA AGUA. int sensorAgua; //ENTERO QUE ALMACENA EL VALOR DEVUELTO POR EL SENSOR DE AGUA. int movimientoServo = 0; //ENTERO QUE ALMACENA EL ÁNGULO DE ROTACIÓN DEL SERVOMOTOR. boolean capotaPuesta = false; //BOOLEANO QUE CAMBIA EN FUNCIÓN DEL ESTADO DE LA CAPOTA. //SE INICIALIZAN LOS COMPONETES void setup() { Serial.begin(9600); pinMode(pinAgua, INPUT); pinMode(zumbador, OUTPUT); pinMode(led, OUTPUT); servo.attach(pinServo); servo.write(0); SPI.begin(); mfrc522.PCD_Init(); delay(4); mfrc522.PCD_DumpVersionToSerial(); } void loop() { if (!agua && EsperandoAgua()) { PonerCapota(); agua = true; } if (capotaPuesta) { if (HayTarjeta()) { QuitarCapota(); } } else { if (HayTarjeta()) { PonerCapota(); } } } //ESTA FUNCIÓN NOS VA A SERVIR PARA DETECTAR EL AGUA. boolean EsperandoAgua() { sensorAgua = analogRead(pinAgua); if (sensorAgua >= 200) { Serial.println("DETECTADO AGUA"); return true; } else { return false; } } //PONER CAPOTA void PonerCapota() { digitalWrite(led, HIGH); for (int i = 0; movimientoServo < 180; i++) { if (i % 10 == 0) { tone(zumbador, 432); } Serial.println("ABRIENDO CAPOTA"); movimientoServo++; servo.write(movimientoServo); delay(50); if (i % 10 == 5) { noTone(zumbador); } } digitalWrite(led, LOW); capotaPuesta = true; } //QUITAR CAPOTA void QuitarCapota() { digitalWrite(led, HIGH); for (int i = 0; movimientoServo > 0; i++) { if (i % 10 == 0) { tone(zumbador, 800); } Serial.println("CERRANDO CAPOTA"); movimientoServo--; servo.write(movimientoServo); delay(50); if (i % 10 == 5) { noTone(zumbador); } } capotaPuesta = false; digitalWrite(led, LOW); } //COMPRUEBA SI HAY TARJETAS PARA LEER. boolean HayTarjeta() { if ( mfrc522.PICC_IsNewCardPresent()) { Serial.println("----Tarjeta presentada----"); analogWrite(zumbador, 20); //Suena delay(500); analogWrite(zumbador, 0); // No Suena return true; } return false; }
MATERIALES Y PRESUPUESTO
Para realizar este proyecto hemos utilizado los siguientes materiales, a los que además, para aportar más información se le ha añadido el coste de estos y así elaborar un presupuesto aproximado de la maqueta.
MATERIAL | COSTE | UNIDEADES EMPLEADAS | COSTE FINAL PRODUCTO |
Tela impermeable | 3€/m | 40cm | 1,2€ |
Alambre galvanizado plastificado | 12€/30m | 1,5m | 0,6€ |
Servomotor | 1,95€/u | 1 | 1,95€ |
Módulo de detector de agua | 2€/u | 1 | 2€ |
Módulo RFID con tarjeta IC S50 | 7€/2u | 1 | 3,5€ |
Zumbador pasivo | 7€/10u | 1 | 1,42€ |
Led | 6€/100u | 1 | 0,06€ |
Portapilas | 4,54€/2u | 1 | 2,27€ |
Pilas AAA | 7,99€/20u | 6 | 2,4€ |
Cables conector | 6,99€/120u | 17 | 0,99€ |
Proboard | 10,99€/3u | 1 | 3,66€ |
Placa Arduino | 10€/u | 1 | 10€ |
Cartón | – * | – | – |
TOTAL | 30,05€ |