PARQUEADERO

by nelsonblandon101 in Circuits > Arduino

391 Views, 1 Favorites, 0 Comments

PARQUEADERO

WhatsApp Image 2020-12-10 at 9.56.13 PM.jpeg

INTRODUCCION

El proyecto consiste en simular un modelo de barrera de parqueadero en el cual se controla el acceso a un garaje con un sistema de reconocimiento por medio de tarjetas para RFID, al ser detectado como miembro del parqueadero se levantara la barrera y se le dará acceso de los vehículos.

ELEMENTOS UTILIZADOS:

materialesss.png
PANTALLASSSo.png

-Arduino uno

- protoboard

-1 pantalla LCD con modulo I2C

-1 servomotor

-RFID y tarjetas

-cables macho-macho y macho-hembra

- 2 interruptores finales de carrera

- resistencias 10 k

Conexiones

foto 1.jpg
foto2.jpg
rfid.jpg
lcd.jpg
conex.jpg

En este paso se hicieron las conexiones de todos los componentes con el Arduino y el protoboard. Inicialmente se conectó el Arduino al protoboard, luego de esto se se hizo la conexión del servomotor al protoboard y se comprobó de que funcionara.

Seguido de esto se conectó la pantalla y el RFID e igualmente se comprobó de que estos componentes funcionan correctamente.

Por último se conectaron los finales de carrera por medio de resistencias de 10K.

Código

En este paso se anexa el código que se utilizó para darle funcionamiento a todos los componentes del parqueadero.

#incluir
#incluir #incluir // DESCARGAR LIBRERÍA: https: //github.com/ELECTROALL/Codigos-arduino/blob/master/LiquidCrystal_I2C.zip LiquidCrystal_I2C lcd (0x27,20,4); // #incluir // incluye la biblioteca de servos

#define s1 2 #define s2 4 Servo myservo1;

int Vs1; int Vs2;

int Total = 5; int Espacio = 0;

int flag1 = 0; int flag2 = 1; int est1 = 0; int est2 = 0; int valida = valida; int invalida = invalida; const int RST_PIN = 9; // Pin 9 para el reset del RC522 const int SS_PIN = 10; // Pin 10 para el SS (SDA) del RC522 MFRC522 mfrc522 (SS_PIN, RST_PIN); // Crear instancia del MFRC522 byte validKey1 [4] = {0x50, 0xA8, 0x9B, 0x1D}; // Ejemplo de clave valida byte validKey2 [4] = {0xB3, 0xD5, 0xD0, 0x1E}; // Ejemplo de clave valida // Función para comparar dos vectores bool isEqualArray (byte * arrayA, byte * arrayB, int length) {for (int index = 0; index <length; index ++) {if (arrayA [index]! = arrayB [índice]) devuelve falso; } devuelve verdadero; }

configuración vacía () {lcd.init (); LCD luz de fondo(); pinMode (s1, INPUT_PULLUP); pinMode (s2, INPUT_PULLUP); Serial.begin (9600); // Iniciar serial SPI.begin (); // Iniciar SPI mfrc522.PCD_Init (); // Iniciar MFRC522 myservo1.attach (3); myservo1.write (100);

mensaje1 (); } bucle vacío () {Vs1 = digitalRead (s1); Vs2 = digitalRead (s2); mensaje2 (); /// ponerle condicional if (Vs1 == 0) {delay (100); flag1 = 1; // est1 = 1; // est2 = 1; // bandera2 = 0; myservo1.write (90); } /// consultar anti rebote // Detectar tarjeta if (mfrc522.PICC_IsNewCardPresent () && Space <= 5 && flag2 == 1) {// Seleccionamos una tarjeta if (mfrc522.PICC_ReadCardSerial ()) {// Compare ID con las claves válidas if ((isEqualArray (mfrc522.uid.uidByte, validKey1, 4)) || (isEqualArray (mfrc522.uid.uidByte, validKey2, 4))) {Serial.println ("Tarjeta valida"); valida; mensaje4 (); myservo1.write (-90); est1 = 1;} else {Serial.println ("Tarjeta invalida"); invalida; mensaje3 ();} // Finalizar la lectura actual mfrc522.PICC_HaltA (); }} retraso (250); if (Vs2 == 0) {retraso (200); flag2 = 1; // est1 = 1; // est2 = 1; // bandera1 = 0; retraso (2000); myservo1.write (90);}

if (Vs2 == 0 && Espacio <5 && Espacio> = 0 && est1 == 1) {// est1 = 1; lcd.setCursor (0,3); lcd.print ("entra"); Espacio ++; Total--; est1 = 0; } if (Vs1 == 0 && Total> = 0 && Total <5 && est1 == 1) {// est2 = 1; lcd.setCursor (0,3); lcd.print ("venta"); Espacio--; Total ++; est1 = 0; } Serial.print (Total); Serial.print (";"); Serial.println (espacio); }

mensaje1 vacío () {lcd.setCursor (0,1); lcd.print ("BIENVENIDOS"); lcd. comienzo (A4, A5); lcd.setCursor (0,1); lcd.print ("SISTEMA"); lcd.setCursor (0,2); lcd.print ("DE PARQUEO"); retraso (2000); lcd.clear (); } void mensaje2 () {lcd.setCursor (0,1); lcd.print ("DISPONIBLE:"); lcd.print (total); lcd.setCursor (0,2); lcd.print ("OCUPADOS:"); lcd.print (Espacio); } void mensaje3 () {lcd.setCursor (0,0); lcd.print ("TARJETA INVALIDA"); retraso (2000); lcd.clear (); } void mensaje4 () {lcd.setCursor (0,0); lcd.print ("TARJETA VALIDA"); retraso (2000); lcd.clear (); }

Montaje

montaje 2.jpg
montaje 1.jpg

Luego de hacer todas las conexiones y de comprobar que el código realizara las funciones requeridas para cada condición del parqueadero, se procede a realizar el montaje de la estructura.

Resultado Final

Se anexa un video del resultado final del proyecto, donde se puede observar el funcionamiento de todo el sistema del parqueadero.