# 在 ESP32 上以 MicroPython 使用 RFID-RC522 模組 ###### tags: `MicroPython` `ESP32` `RFID-RC522` 使用 ESP8266 撰寫 MicroPython 使用 RFID-RC522 模組時, 通常會載入 [mfrc522 程式庫](https://github.com/wendlers/micropython-mfrc522), 不過如果將這個程式庫直接用在 ESP32 上的 MicroPython, 會得到如下的錯誤: ```python RuntimeError: Unsupported platform ``` 這是因為這個程式庫內會排除他不認得的開發板, 如果要用在 ESP32 上, 就必須修改原始程式庫中 [mfrc522.py](https://github.com/wendlers/micropython-mfrc522/blob/master/mfrc522.py) 的第 32 行, 讓它可以認得 ESP32: ```python=32 elif board == 'esp8266' or board == 'esp32': ``` 其餘程式都不需要修改, 將此檔案上傳到 ESP32 後, 就可以撰寫 MicroPython 程式使用 RFID-RC522 模組了, 例如: ```python= from machine import Pin import mfrc522, time rfid = mfrc522.MFRC522( 18, # SCLK 23, # MOSI 19, # MISO 21, # RST 15 # SDA (CS) ) led = Pin(2, Pin.OUT) while True: led.value(0) # 搜尋卡片之前先關閉 LED stat, tag_type = rfid.request(rfid.REQIDL) # 搜尋 RFID 卡片 if stat == rfid.OK: # 找到卡片 stat, raw_uid = rfid.anticoll() # 讀取 RFID 卡號 if stat == rfid.OK: led.value(1) # 讀到卡號後點亮 LED # 將卡號由 2 進位格式轉換為 16 進位的字串 id = "%02X%02X%02X%02X" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3]) print("偵測到卡號:", id) time.sleep(0.5) # 暫停一下, 避免 LED 太快熄滅看不到 ```