ESP8266 + RFID MFRC522

今天測了一天 邊測邊寫的心得 就這樣遺失了.....
懶得重頭打 一些詳細步驟就不寫了 直接下重點

1.要用這塊 要先加入 MFRC522.H 到 A-IDE 匯入程式庫

 參考:

Mifare RFID-RC522模組實驗(一):讀取Mifare RFID卡的UID識別碼

接線部分:RST 跟 SDA 可在程式設定
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance
SPI.begin();           // Init SPI bus
mfrc522.PCD_Init();    // Init MFRC522
這樣就啟動了 
比較麻煩的是  以下這3條 參考上頭連結 是用 UNO 的板子
MISO  -- GPIO12
MOSI -- GPIO11
SCK    -- GPIO13
接對了 跑他的程式 能收到東西 就表示一切正常

2  MFRC522 是不支援  ESP8266 眉角很多
總算有接線圖 但變了
                    UNO     (ESP)
MISO  -- GPIO12   -- D6 (GPIO12) 
MOSI -- GPIO11     --D7(GPIO13) 
SCK    -- GPIO13    --D5(GPIO14)
對不起來 但是 參考他的程式 可運作  程式裡找不到可改接腳的地方 所以不懂為何正常?卡號也沒有變
RST 線 我本是插在 D1(GPIO5)  Mini ,UNO也是
跑第一參考網站的程式  ESP 卻沒動作
A-IDE 每次用 ESP Mini 編譯會出現 MFRC522警告.....
(Arduino for VS 是根本就不讓你 MFRC522 用在ESP身上 目前找不到方法解決)
(已解決 參考下一篇)

但神奇的事發生 
第一次 ESP 上傳就發生滑鼠亂飄(我是用有線) 還以為我被駭客搞了
原來是干擾 拔掉 ESP Mini 就正常

UNO 的卡 用 UNO 跟 ESP  的程式run 都ok
但ESP的卡 用 UNO 就讀不到 ....比對一下2支
UNO 程式比較正統
ESP 就 偵測卡片 偵測到 就讀卡 END 少很多步驟
應該是某個步驟卡死 ESP  沒查下去了....奇怪的事太多
能讀就萬幸.....

接下來 ESP 開始發瘋了 上傳啟動後
 在
SPI.begin();           // Init SPI bus
mfrc522.PCD_Init();    // Init MFRC522
這步驟 就出現 Soft WDT reset  跳一堆碼 重新啟動....
最後是將 RST 那本來接到  D1(GPIO5)  
換到 A0 就正常了........
更神奇的事發生了 我用的是D1 Mini 卡
A0跟RST 很近 眼睛不好 插到 D1 Mini 卡的  RST了
但是........正常 再插回 A0 也沒問題
那 RST 是跟 RST 對接嗎 還是沒接沒差?
帶著疑問 bloggr 開始錯亂了...出現3篇一樣我在寫的文章
有已發布 又有草稿 的 重開後 我將草稿殺了 沒想到 ...發布裡頭也不見了....
所以一天KEY的詳細資料都不見了....
反正重點是如果要用 ESP8266+MFRC522開發
不能用  Arduino for VS 
線要插對? 
讀卡就用最簡單的
 void loop() { 
  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    delay(50);    return;
  }
  Serial.print(F("new cards:"));
  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial()) {
    delay(50);    return;
  }
    byte *id = mfrc522.uid.uidByte;   // 取得卡片的UID
    byte idSize = mfrc522.uid.size;   // 取得UID的長度
  // Show some details of the PICC (that is: the tag/card)
  Serial.print(F("Card UID:"));
  dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);

}
void dump_byte_array(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], HEX);
  }
這樣就好 
.....神奇事情太多 ESP能讀到就好 不想再搞了
收工



















留言

熱門文章