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.

MATERIALCOSTEUNIDEADES EMPLEADASCOSTE FINAL PRODUCTO
Tela impermeable3€/m40cm1,2€
Alambre galvanizado plastificado12€/30m1,5m0,6€
Servomotor1,95€/u11,95€
Módulo de detector de agua2€/u12€
Módulo RFID con tarjeta IC S507€/2u13,5€
Zumbador pasivo7€/10u11,42€
Led6€/100u10,06€
Portapilas4,54€/2u12,27€
Pilas AAA7,99€/20u62,4€
Cables conector6,99€/120u170,99€
Proboard10,99€/3u13,66€
Placa Arduino10€/u110€
Cartón– *
TOTAL30,05€
*No se ha calculado el precio porque el material usado ha sido reciclado.

ESQUEMA DE CONEXIONES

VÍDEO DEL FUNCIONAMIENTO

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *