# Modules
from machine import Pin, PWM, time_pulse_us, I2C, SPI
from time import sleep_us, sleep_ms,sleep
import sys
from mfrc522 import MFRC522
correct_id = "0x11334400" # CARD
correct = ["1", "2", "3", "5"] # PIN CODE
card_id = ""
# RFID
if(sys.platform=="esp32"):
led = Pin(2, Pin.OUT)
SPI_sck = 18 # default SCK of SPI(1)
SPI_mosi = 23 # default MOSI of SPI(1)
SPI_miso = 19 # not use
SPI_res = 4
SPI_dc = 2
SPI_cs = 5
SPI_blk = 22
# 初始化 SPI
rfid = MFRC522(spi_id=2, sck=18, miso=19, mosi=23, cs=5, rst=4)
I2C_SDA =21 # GPIO21(I2C SDA)
I2C_SCL =22 # GPIO22(I2C SCL)
# Initialize I2C on GP16 (SDA) and GP17 (SCL)
i2c = I2C(0, scl=Pin(I2C_SCL), sda=Pin(I2C_SDA), freq=400000) #initializing the I2C method for ESP32
elif(sys.platform=="rp2"):
led = Pin("LED", Pin.OUT)
SPI_sck = 6 # default SCK of SPI(0)
SPI_mosi = 7 # default MOSI of SPI(0)
SPI_miso = 4 # not use
SPI_res = 2
SPI_cs = 5
# 初始化 SPI
rfid = MFRC522(spi_id=0, sck=SPI_sck, miso=SPI_miso, mosi=SPI_mosi, cs=SPI_cs, rst=SPI_res)
I2C_SDA =16 # GPIO16(I2C SDA)
I2C_SCL =17 # GPIO17(I2C SCL)
i2c = I2C(0, scl=Pin(I2C_SCL), sda=Pin(I2C_SDA), freq=400000)
# Functions
def card_config():
# This function lets us configure the card
global key, guess, correct, card_id, status
card_id = ""
rfid.init()
(stat, tag_type) = rfid.request(rfid.REQIDL) # Requesting an ID from the RFID
if stat == rfid.OK:
print("Scan your card")
(stat, raw_id) = rfid.SelectTagSN()
if stat == rfid.OK:
card_id = f"0x{raw_id[0]:02X}{raw_id[1]:02X}{raw_id[2]:02X}{raw_id[3]:02X}"
# Checking if the id that came from the rfid matches with the stored one
if card_id == correct_id:
print("Correct Card")
sleep(1)
print("PIN code: ")
status = True
else:
print("DANGER >:(")
print(card_id)
card_id = ""
status = False
if __name__ == "__main__":
print("Start scan card")
while True:
card_config()
sleep_ms(200)