from machine import I2C, Pin, UART
import utime
import ds3231_port
# I2C for RTC
i2c = I2C(0, scl=Pin(9), sda=Pin(8))
rtc = ds3231_port.DS3231(i2c)
# UART for RFID Reader or Serial input
uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))
# CSV File Setup
csv_filename = "data.csv"
with open(csv_filename, "w") as f:
f.write("S.No,Entry Time,Exit Time\n")
sno = 1
led = Pin(5, Pin.OUT)
password = "1234" # You can replace this with RFID UID later if needed
entry_time = None
while True:
# Check if data is available from UART (simulating RFID)
if uart.any():
data = uart.readline().decode().strip()
print("Received:", data)
# Get current time from RTC
year, month, day, hour, minute, second, weekday, _ = rtc.get_time()
current_time = "{:02d}/{:02d}/{:04d} {:02d}:{:02d}:{:02d}".format(
day, month, year, hour, minute, second)
# Password / RFID validation
if data == password:
if entry_time is None:
entry_time = current_time
else:
with open(csv_filename, "a") as f:
line = "{},{},{}\n".format(sno, entry_time, current_time)
f.write(line)
print(line.strip())
sno += 1
entry_time = None
led.value(1)
utime.sleep(2)
led.value(0)
else:
print("INVALID CARD OR PASSWORD")
utime.sleep(0.1)