2016.08.07
第一篇已經提過這個東西的材料、功能,先複習一下成品,如下圖
這篇要介紹的是 Radio frequency identification (RFID) ,如下圖:
先介紹一些基本知識,近場通訊(英語:Near Field Communication,NFC),又稱近距離無線通訊,是一種短距離的高頻無線通訊技術,允許電子裝置之間進行非接觸式點對點資料傳輸,在十公分(3.9英吋)內交換資料。
NFC與RFID之特性:數據的讀寫機能、容易小型化和多樣化的形狀、可重複使用、穿透性、數據的記憶容量大。
另外值得一提的是,高速公路,遠通所架設的計費系統,也是使用RFID,但是他的功率較強,還有在高速行駛中也可以馬上讀取資料的技術,就是它們的商業機密了
NFC為非接觸式傳輸,利用電波和電磁共生的原理,進行資料讀取。Passive Tag可永久免用電池電力,靠著天線端(Reader)來通信。
接下來就討論硬體部分,我自己手邊的就有兩種版本,使用上的程式碼並沒有差別,但是腳位有差,兩者順序不相同
藍色RFID
|
紅色RFID
|
同樣的 IRQ 都是不接,藍色的SDA = 紅色的 (NSS)腳位,其餘相同。
這部分,是在arduino.cc,上面提供的library,再做修改的,可以更簡單讀到資料,當然少了很多功能,如覆蓋卡片資料等等。
完整版library :官網連結 MF-RC522
簡易版library :我就不方便做提供了,我授課時會使用到,為保護上課同學的權益。
#include <SPI.h> #include <RFID.h> #define SS_PIN 10 #define RST_PIN 9 #define bee 7 RFID rfid(SS_PIN,RST_PIN); boolean state = true; int serNum[5]; void setup(){ Serial.begin(9600); SPI.begin(); rfid.init(); } void loop(){ if(rfid.isCard()){ if(rfid.readCardSerial()){ Serial.print(rfid.serNum[0],DEC); Serial.print(" "); Serial.print(rfid.serNum[1],DEC); Serial.print(" "); Serial.print(rfid.serNum[2],DEC); Serial.print(" "); Serial.print(rfid.serNum[3],DEC); Serial.print(" "); Serial.print(rfid.serNum[4],DEC); Serial.println(" "); } } }
----------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------