Documento Proyecto Parqueo.pdf

  • Uploaded by: David Reyes
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Documento Proyecto Parqueo.pdf as PDF for free.

More details

  • Words: 2,363
  • Pages: 33
UNIVERSIDAD DON BOSCO SAN SALVADOR, EL SALVADOR

Grupo: Grupo #4

Materia: Aplicaciones Electrónicas Básicas

Tema: Trabajo

Elaborado por:  David Alexander Reyes De la O - RD182670  Ricardo Antonio Regalado González – RG161933

Maestro/a: Ing. Herbert Cardona

Domingo 28 de octubre de 2018

Diagrama Eléctrico de conexiones de sistema de parqueo nivel 1

Esquemático

Esquemático de etapa de potencia

PCB de etapa de potencia

Programas:  Prueba US #include #include <Wire.h>

// Definicion de los pines para echo y trigger #define TRIGGER_PIN 7 #define ECHO_PIN

6

#define MAX_DISTANCE 200 // Se crea objeto para la clase new ping NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); int distance; int Led = 13; int maxdist = 40; int mindist = 0; int Disponibles = 1; int Ocupados = 0;

void setup() { Serial.begin(9600); }

void loop() { // Se obtiene la medicion de tiempo de viaje entre el sonido y guarda variabe uS int uS = sonar.ping_median(); // Calculá la distancia con base en una constante distance = uS / US_ROUNDTRIP_CM; if (distance > mindist and distance < maxdist)

{ digitalWrite(Led, HIGH); Disponibles = 0; Ocupados = 1; Serial.print ("Disponibles = "); Serial.print (Disponibles); Serial.println(); } else { digitalWrite(Led, LOW); Disponibles = 1; Ocupados = 0; Serial.print (" Ocupados = "); Serial.print (Ocupados); Serial.println(); } delay(2000); }

 Prueba 2US #include #include <Wire.h>

#define SONAR_NUM 2

// Number of sensors.

#define MAX_DISTANCE 200 // Maximum distance (in cm) to ping.

NewPing sonar[SONAR_NUM] = { // Sensor object array.

NewPing(5, 4, MAX_DISTANCE), // Each sensor's trigger pin, echo pin, and max distance to ping. NewPing(7, 6, MAX_DISTANCE), };

int distance1; int distance2; int Led = 13; int maxdist = 40; int mindist = 0; int Disponibles = 1; int Disponibles1 = 1; int Ocupados1 = 1; int Ocupados = 1; int Total = 0; int Total1 = 0;

void setup() { Serial.begin(9600); }

void loop() {

// Calculá la distancia con base en una constante distance1 = sonar[0].ping_cm(); distance2 = sonar[1].ping_cm();

if (distance1 > mindist and distance1 < maxdist) {

digitalWrite(Led, HIGH); Disponibles = 0; Ocupados = 1; } else { digitalWrite(Led, LOW); Disponibles = 1; Ocupados = 0; }

if (distance2 > mindist and distance2 < maxdist) { digitalWrite(Led, HIGH); Disponibles1 = 0; Ocupados1 = 1; } else { digitalWrite(Led, LOW); Disponibles1 = 1; Ocupados1 = 0; }

Total = Disponibles + Disponibles1; Serial.print ("Disponibles = "); Serial.print (Total); Serial.println();

Total1 = Ocupados + Ocupados1; Serial.print ("Ocupados = "); Serial.print (Total1); Serial.println();

delay(2000); }

 Prueba RTC #include <Wire.h> #include #include LiquidCrystal_I2C lcd(0x27,16,2);

RTC_DS1307 rtc;

String daysOfTheWeek[7] = { "Dom", "Lun", "Mar", "Mie", "Jue", "Vier", "Sab" }; String monthsNames[12] = { "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre" };

void setup() { lcd.backlight(); lcd.init(); Serial.begin(9600); delay(1000);

if (!rtc.begin()) { Serial.println(F("Couldn't find RTC"));

while (1); } else // Fijar fecha y hora de compilacion rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); }

void printDate(DateTime date) { lcd.clear(); Serial.print("Fecha: "); Serial.print(date.year(), DEC); Serial.print('/'); lcd.print("Fecha: "); lcd.print(date.year(), DEC); lcd.print('/'); Serial.print(date.month(), DEC); Serial.print('/'); lcd.print(date.month(), DEC); lcd.print('/'); Serial.print(date.day(), DEC); Serial.print(" ("); lcd.print(date.day(), DEC); lcd.print(" ("); Serial.print(daysOfTheWeek[date.dayOfTheWeek()]); Serial.print(") "); lcd.print(daysOfTheWeek[date.dayOfTheWeek()]); lcd.print(") ");

Serial.print("Hora: "); Serial.print(date.hour(), DEC); Serial.print(':'); lcd.setCursor(0,1); lcd.print("Hora: "); lcd.print(date.hour(), DEC); lcd.print(':'); Serial.print(date.minute(), DEC); Serial.print(':'); lcd.print(date.minute(), DEC); lcd.print(':'); Serial.print(date.second(), DEC); Serial.println(); lcd.print(date.second(), DEC); }

void loop() { // Obtenemos la fecha actual y lo mostramos por el puerto Serial DateTime now = rtc.now(); printDate(now); delay(1000); }

 Prueba Datalogger US #include <SPI.h> #include #include <SD.h> #include <Wire.h>

const int chipSelect = 53; // sd // Definicion de los pines para echo y trigger #define TRIGGER_PIN 7 #define ECHO_PIN

6

#define MAX_DISTANCE 200 // Se crea objeto para la clase new ping NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); int distance; int Led = 13; int maxdist = 40; int mindist = 0; int Disponibles = 1; int Ocupados = 0;

void setup() { //Comunicacion Serial.begin(9600); while (!Serial) { ; } Serial.print("Iniciando SD..."); //Inicializamos la sd pinMode(53, OUTPUT); // verifica si hay SD if (!SD.begin(chipSelect)) { Serial.println("Falla en tarjeta, o no insertada");

return; } Serial.println("SD inicializada"); Serial.println("Creando archivo..."); }

void loop() { //Hacemos una cadena para la union de datos String dataString = "";

// Abre al archivo // Cierra si es que hay uno abierto File dataFile = SD.open("datalog.txt", FILE_WRITE); //nombre de archivo int sensor = Disponibles; //Declara para almacenar int sensor2 = Ocupados; //Declara para almacenar dataString += (" ") ; dataString += String (" Disponibles ") + String(sensor); //escribir dataString += String (" Ocupados ") + String(sensor2) + String (" ") ; //escribir

// Se obtiene la medicion de tiempo de viaje entre el sonido y guarda variabe uS int uS = sonar.ping_median(); // Calculá la distancia con base en una constante distance = uS / US_ROUNDTRIP_CM; if (distance > mindist and distance < maxdist) { digitalWrite(Led, HIGH); Disponibles = 0;

Ocupados = 1; } else { digitalWrite(Led, LOW); Disponibles = 1; Ocupados = 0; } delay(1000);

// Si el archivo esta disponible escribe if (dataFile) { Serial.println(" Dato almacenado: "); dataFile.println(dataString); dataFile.close(); // Imprime lo registrado Serial.println(dataString); } // Si no esta almacenado el archivo else { Serial.println("Error abriendo datalog.txt"); } }

 Prueba Datalogger RTC #include <SPI.h> #include <SD.h> #include <Wire.h>

#include "RTClib.h"

File logFile;

RTC_DS1307 rtc;

void setup() { Serial.begin(9600); Serial.print(F("Iniciando SD ...")); if (!SD.begin(53)) { Serial.println(F("Error al iniciar")); return; } Serial.println(F("Iniciado correctamente"));

if (!rtc.begin()) { Serial.println(F("Couldn't find RTC")); while (1); } else{ // Fijar fecha y hora de compilacion rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); } }

void logValue(DateTime date)

{ logFile.print(date.year(), DEC); logFile.print('/'); logFile.print(date.month(), DEC); logFile.print('/'); logFile.print(date.day(), DEC); logFile.print(" "); logFile.print(date.hour(), DEC); logFile.print(':'); logFile.print(date.minute(), DEC); logFile.print(':'); logFile.print(date.second(), DEC); logFile.print(" "); logFile.println(); }

void loop() { // Abrir archivo y escribir valor logFile = SD.open("datalog.txt", FILE_WRITE);

if (logFile) { DateTime now = rtc.now(); logValue(now); logFile.close();

}

else { Serial.println(F("Error al abrir el archivo")); } delay(10000); }

 Prueba Datalogger 2US y RTC #include <SPI.h> #include #include <SD.h> #include #include <Wire.h>

const int chipSelect = 53; // sd // Definicion de los pines para echo y trigger #define SONAR_NUM 2

// Number of sensors.

#define MAX_DISTANCE 200 // Maximum distance (in cm) to ping.

NewPing sonar[SONAR_NUM] = { // Sensor object array. NewPing(5, 4, MAX_DISTANCE), // Each sensor's trigger pin, echo pin, and max distance to ping. NewPing(7, 6, MAX_DISTANCE), };

int distance1; int distance2; int Led = 13; int maxdist = 40;

int mindist = 0; int Disponibles = 1; int Disponibles1 = 1; int Ocupados1 = 1; int Ocupados = 1; int Total = 0; int Total1 = 0; int cambio = 0; int cambio1 = 0; int cambio2 = 0;

File dataFile;

RTC_DS1307 rtc;

//Almacenamiento de sd de datos US y RTC // Si el archivo esta disponible escribe void gSD() { //Hacemos una cadena para la union de datos String dataString = ""; // Abre al archivo // Cierra si es que hay uno abierto dataFile = SD.open("datalog.txt", FILE_WRITE); //nombre de archivo int sensor = Total; //Declara para almacenar int sensor2 = Total1; //Declara para almacenar dataString += (" ") ; dataString += String (" Disponibles ") + String(sensor); //escribir

dataString += String (" Ocupados ") + String(sensor2) + String (" ") ; //escribir

if (dataFile) { DateTime now = rtc.now(); logValue(now); Serial.println(" Dato almacenado: "); dataFile.println("Parqueos: "); dataFile.println(dataString); dataFile.close(); // Imprime lo registrado Serial.println("Parqueos: "); Serial.println(dataString); } // Si no esta almacenado el archivo else { Serial.println("Error abriendo datalog.txt"); } delay(1000); }

void setup() { //Comunicacion Serial.begin(9600); while (!Serial) { ; } Serial.print("Iniciando SD...");

//Inicializamos la sd pinMode(53, OUTPUT); // verifica si hay SD if (!SD.begin(chipSelect)) { Serial.println("Falla en tarjeta, o no insertada"); return; } Serial.println("SD inicializada"); Serial.println("Creando archivo...");

if (!rtc.begin()) { Serial.println(F("Couldn't find RTC")); while (1); } else{ // Fijar fecha y hora de compilacion rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); } }

void logValue(DateTime date){ Serial.print("Fecha: "); Serial.print(date.year(), DEC); Serial.print('/'); Serial.print(date.month(), DEC); Serial.print('/'); Serial.print(date.day(), DEC); Serial.print(" ");

Serial.print("Hora: "); Serial.print(date.hour(), DEC); Serial.print(':'); Serial.print(date.minute(), DEC); Serial.print(':'); Serial.print(date.second(), DEC); Serial.println(); dataFile.println(" "); dataFile.print("Fecha: "); dataFile.print(date.year(), DEC); dataFile.print('/'); dataFile.print(date.month(), DEC); dataFile.print('/'); dataFile.print(date.day(), DEC); dataFile.print(" "); dataFile.print("Hora: "); dataFile.print(date.hour(), DEC); dataFile.print(':'); dataFile.print(date.minute(), DEC); dataFile.print(':'); dataFile.print(date.second(), DEC); dataFile.print(" "); dataFile.println(); }

void loop() { //Inicia la parte del sensor US

// Calculá la distancia con base en una constante distance1 = sonar[0].ping_cm(); distance2 = sonar[1].ping_cm();

//SENSOR US1 if (distance1 > mindist and distance1 < maxdist) { Disponibles = 0; Ocupados = 1; } else { Disponibles = 1; Ocupados = 0; }

//INICIO US2 if (distance2 > mindist and distance2 < maxdist) { Disponibles1 = 0; Ocupados1 = 1; } else { Disponibles1 = 1; Ocupados1 = 0; }

Total = Disponibles + Disponibles1; Serial.print("Disponibles: "); Serial.println(Total); Total1 = Ocupados + Ocupados1; Serial.print("Ocupados: "); Serial.println(Total1); delay(2000); //FINALIZA PARTE SENSOR US

if (Total == 0 and Total1 == 2 and cambio == 0) { gSD(); cambio = cambio + 1; cambio1 = 0; cambio2 = 0; } else if (Total == 2 and Total1 == 0 and cambio1 == 0) { gSD(); cambio = 0; cambio1 = cambio1 + 1; cambio2 = 0; } else if (Total == 1 and Total1 == 1 and cambio2 == 0) { gSD(); cambio = 0; cambio1 = 0;

cambio2 = cambio2 + 1; } }

 Programa Base: #include <SPI.h> #include #include <Wire.h> #include <SD.h> #include #include LiquidCrystal_I2C lcd(0x27,16,2);

//Constante de ping donde se almacenara los datos en la SD const int chipSelect = 53; // sd

//Definición número de sensores #define SONAR_NUM 2

// Number of sensors.

#define MAX_DISTANCE 200 // Maximum distance (in cm) to ping.

// Definicion de los pines para echo y trigger NewPing sonar[SONAR_NUM] = { // Sensor object array. NewPing(5, 4, MAX_DISTANCE), // Each sensor's trigger pin, echo pin, and max distance to ping. NewPing(7, 6, MAX_DISTANCE), };

int distance1; int distance2;

int Led1 = 9; int Led2 = 10; int Led3 = 11; int Led4 = 12; int maxdist = 40; int mindist = 0; int Disponibles = 1; int Disponibles1 = 1; int Ocupados1 = 1; int Ocupados = 1; int Total = 0; int Total1 = 0; int cambio = 0; int cambio1 = 0; int cambio2 = 0;

File dataFile;

RTC_DS1307 rtc;

String daysOfTheWeek[7] = { "Dom", "Lun", "Mar", "Mie", "Jue", "Vier", "Sab" }; String monthsNames[12] = { "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre" };

//Almacenamiento de SD de datos US y RTC // Si el archivo esta disponible escribe void gSD() { //Hacemos una cadena para la union de datos

String dataString = ""; // Abre al archivo // Cierra si es que hay uno abierto dataFile = SD.open("datalog.txt", FILE_WRITE); //nombre de archivo int sensor = Total; //Declara para almacenar int sensor2 = Total1; //Declara para almacenar dataString += (" ") ; dataString += String (" Disponibles ") + String(sensor); //escribir dataString += String (" Ocupados ") + String(sensor2) + String (" ") ; //escribir

if (dataFile) { DateTime now = rtc.now(); logValue(now); Serial.println(" Dato almacenado: "); dataFile.println("Parqueos: "); dataFile.println(dataString); dataFile.close(); // Imprime lo registrado Serial.println("Parqueos: "); Serial.println(dataString); } // Si no esta almacenado el archivo else { Serial.println("Error abriendo datalog.txt"); } delay(1000); }

void setup() { lcd.backlight(); lcd.init(); Serial.begin(9600); pinMode (Led1, 9); pinMode (Led2, 10); pinMode (Led3, 11); pinMode (Led4, 12); delay(1000);

while (!Serial) { ; } Serial.print("Iniciando SD..."); //Inicializamos la sd pinMode(53, OUTPUT); // verifica si hay SD if (!SD.begin(chipSelect)) { Serial.println("Falla en tarjeta, o no insertada"); return; } Serial.println("SD inicializada"); Serial.println("Creando archivo...");

if (!rtc.begin()) { Serial.println(F("Couldn't find RTC")); while (1); }

else{ // Fijar fecha y hora de compilacion rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); } }

void logValue(DateTime date){ dataFile.println(" "); dataFile.print("Fecha: "); dataFile.print(date.year(), DEC); dataFile.print('/'); dataFile.print(date.month(), DEC); dataFile.print('/'); dataFile.print(date.day(), DEC); dataFile.print(" "); dataFile.print("Hora: "); dataFile.print(date.hour(), DEC); dataFile.print(':'); dataFile.print(date.minute(), DEC); dataFile.print(':'); dataFile.print(date.second(), DEC); dataFile.print(" "); dataFile.println(); }

void printDate(DateTime date) { lcd.clear();

Serial.print(date.year(), DEC); Serial.print('/'); lcd.print(date.year(), DEC); lcd.print('/'); Serial.print(date.month(), DEC); Serial.print('/'); lcd.print(date.month(), DEC); lcd.print('/'); Serial.print(date.day(), DEC); Serial.print(" ("); lcd.print(date.day(), DEC); lcd.print(" ("); Serial.print(daysOfTheWeek[date.dayOfTheWeek()]); Serial.print(") "); lcd.print(daysOfTheWeek[date.dayOfTheWeek()]); lcd.print(") "); Serial.print(date.hour(), DEC); Serial.print(':'); lcd.setCursor(0,1); lcd.print(date.hour(), DEC); lcd.print(':'); Serial.print(date.minute(), DEC); Serial.print(':'); lcd.print(date.minute(), DEC); lcd.print(':'); Serial.print(date.second(), DEC); Serial.println(); lcd.print(date.second(), DEC);

delay(3000); }

void loop() { // Obtenemos la fecha actual y lo mostramos por el puerto Serial DateTime now = rtc.now(); printDate(now); // Se espera 1 seg. entre mediciones delay(1000);

// Calculá la distancia con base en una constante distance1 = sonar[0].ping_cm(); distance2 = sonar[1].ping_cm();

if (distance1 > mindist and distance1 < maxdist) { digitalWrite(Led1, HIGH); digitalWrite(Led2, LOW); digitalWrite(Led3, HIGH); digitalWrite(Led4, LOW); Disponibles = 0; Ocupados = 1; } else { digitalWrite(Led2, HIGH); digitalWrite(Led1, LOW); digitalWrite(Led4, HIGH);

digitalWrite(Led3, LOW); Disponibles = 1; Ocupados = 0; }

if (distance2 > mindist and distance2 < maxdist) { digitalWrite(Led1, HIGH); digitalWrite(Led2, LOW); digitalWrite(Led3, HIGH); digitalWrite(Led4, LOW); Disponibles1 = 0; Ocupados1 = 1; } else { digitalWrite(Led1, LOW); digitalWrite(Led2, HIGH); digitalWrite(Led4, HIGH); digitalWrite(Led3, LOW); Disponibles1 = 1; Ocupados1 = 0; } Total = Disponibles + Disponibles1; Serial.print ("Disponibles = "); Serial.print (Total); Serial.println(); Total1 = Ocupados + Ocupados1;

Serial.print ("Ocupados = "); Serial.print (Total1); Serial.println();

if (Total == 0 and Total1 == 2 and cambio == 0) { gSD(); cambio = cambio + 1; cambio1 = 0; cambio2 = 0; } else if (Total == 2 and Total1 == 0 and cambio1 == 0) { gSD(); cambio = 0; cambio1 = cambio1 + 1; cambio2 = 0; } else if (Total == 1 and Total1 == 1 and cambio2 == 0) { gSD(); cambio = 0; cambio1 = 0; cambio2 = cambio2 + 1; }

lcd.clear(); lcd.print ("Disponibles = ");

lcd.print (Total); lcd.setCursor(0,1); lcd.print ("Ocupados = "); lcd.print (Total1); delay(3000); }

 Tabla de registros:

 Por Hacer

Haciendo

Terminado

Comprar elementos

X

X

Probar elementos

X

X

Prueba LCD con módulo I2C

X

X

Prueba Sensor Ultrasónico

X

X

Prueba con 2 Sensores Ultrasónico

X

X

Programación con LCD con I2C junto al Ultrasónico

X

X

Prueba con RTC

X

X

Programación con LCD I2C, Sensor Ultrasónico y RTC

X

X

Prueba Datalogger

X

X

Programación con LCD I2C, Sensor Ultrasónico y RTC con Datalogger (Almacenamiento de fecha)

X

X

Programación con LCD I2C, Sensor Ultrasónico y RTC con Datalogger (Almacenamiento datos del sensor)

X

X

Programación con LCD I2C, Sensor Ultrasónico y RTC con Datalogger (Almacenamiento de ambos datos)

X

X

Programación con LCD I2C, 2 Sensores Ultrasónicos y RTC con Datalogger (Almacenamiento de ambos datos)

X

X

Case para dispositivos de parqueo

X

X

Programación Completa

X

X

Related Documents

Documento
May 2020 29
Documento
November 2019 45
Documento.
October 2019 41

More Documents from ""