Reloj digital de seguridad

Proyecto realizado por el grupo 22 : Ángel Cólliga García para la asignatura de Diseño de Sistemas Empotrados.

Objetivo:

El objetivo de este proyecto era crear un reloj capaz de ser usado como despertador con la capacidad de sonar cuando llegase la hora de despertarse y con unos botones para poder modificar la hora.

Al final de momento solo cumple la función de dar la fecha y la hora pero en actualizaciones posteriores hare que cumpla con los objetivos establecidos.

Materiales y presupuesto:

Esquema de conexiones:

Uso:

Lo primero que debemos hacer sera tener en mano la llave autenticadora y enchufar el reloj a la corriente.

Una vez iniciado el reloj deberemos acercar la llave por el lector y ya nos aparecerá la hora y la fecha actual.

Problemas y soluciones:

A la hora de conectar la pantalla y el módulo RFID se ha tenido que cambiar la configuración de pines de la pantalla, el 7 y el 6 concretamente, que iban en el 12 y13, porque el módulo RFID al usar la interfaz SPI necesita los pines 12 y 13 para funcionar.

Para el módulo RFID se ha usado la librería <MFRC522.H> en vez de la librería <Easy MFRC522> porque esta última daba problemas a la hora de leer la llave.

Código:

#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal.h>
#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN         9          // reset pin para rfc522
#define SS_PIN          10         // ss pin para rfc522

MFRC522 mfrc522(SS_PIN, RST_PIN);   // declaracion de objeto rfid

RTC_DS1307 RTC;   // declaracion de objeto RTC

const int rs = 7, en = 6, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);  // declaracion de objeto pantalla lcd

int reloj_on_off = 0; // flag para controlar encendido de reloj

void setup() {
  //inicializacion y configuracion
  Serial.begin(57600);
  delay(100);

  lcd.begin(16, 2);
  Wire.begin();

  SPI.begin();
  mfrc522.PCD_Init();
  mfrc522.PCD_DumpVersionToSerial();

  RTC.begin();
  delay(300);
  if (!RTC.isrunning()) {
    Serial.println("RTC apagado");
    Serial.println("Configurando fecha hora");
    //configuracion de fecha y hora
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
  Serial.println("RTC encendido");   //RTC funciona
}

void loop() {

  lcd.setCursor(0, 0);

  // control de encendido
  while (reloj_on_off == 0) {
    lcd.print(" reloj apagado ");
    delay(10);
    lcd.clear();
    if (mfrc522.PICC_IsNewCardPresent()) {
      reloj_on_off = 1;
      lcd.clear();
      lcd.print(" reloj encendido ");
      delay(2000);
      lcd.clear();
    }
  }

  DateTime now = RTC.now();
  // imprimir hora
  lcd.setCursor(0, 0);
  lcd.print("    ");
  if (now.hour() < 10) {
    lcd.print('0');
  }

  lcd.print(now.hour(), DEC);
  lcd.print(":");

  if (now.minute() < 10) {
    lcd.print('0');
  }
  lcd.print(now.minute(), DEC);
  lcd.print(":");

  if (now.second() < 10) {
    lcd.print('0');
  }
  lcd.print(now.second(), DEC);

  // imprimir fecha
  lcd.setCursor(0, 1);
  lcd.print("   ");
  if (now.day() < 10) {
    lcd.print('0');
  }
  lcd.print(now.day(), DEC);
  lcd.print("/");
  if (now.month() < 10) {
    lcd.print('0');
  }
  lcd.print(now.month(), DEC);
  lcd.print("/");
  lcd.print(now.year(), DEC);
}

Memoria:

Video del proyecto:

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 *