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 眉角很多
第一個問題是 沒有 GPIO11 http://twincati.blogspot.tw/2016/11/esp8266-d1-mini.html
總算有接線圖 但變了
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能讀到就好 不想再搞了
收工
留言
張貼留言