餐前小菜
我買的 Arduino 是入門套件 + RFID學習套件,某寶包郵130+,買來也將近1個月了。
有的店鋪需要確認收貨后去向客服索取配套資料的鏈接。其實網上的資料都大致一樣,有的賣家只是修改了文件的名字,有的甚至修改了代碼卻沒有保留最初的源代碼,真是可惡。資料不能公開分享就算了,還把源碼給改了。
今天我還是試了4位數碼管的實驗,發現給的資料和代碼跟發的數碼管不是一個型號,以至於顯示一堆亂碼。賣家發的數碼管是 3461BS(0.36英寸 4位LED數碼管 共陽極)。不得不自己到網上找的原理圖並修改代碼。下邊分享給大家:
四位共陽極數碼管,位控制端(1-4)給高電平使能相應的位,筆段控制端(A-G、DP)給低電平可點亮。
記得要加限流電阻哦!
數碼管的原理圖我還是看的懂的。我所異者,是做一天和尚敲一天鍾,不思進取,敷衍了事,不願追求把工作做到極致的態度。
實驗由來
2015年12月04日(周五) 上午 博士的智能卡實驗——RFID識別實驗,基於51單片機;
我們的實驗用的讀寫器是 RFID-RC522 模塊,剛好和我買的 Arduino RFID 套件里的是同一款;
實驗時候並沒有完成,因為在燒寫程序的時候一直燒不進去,好吧,下午在辦公室的時候我們博士說有一塊單片機是有問題的, TMD有那么巧嗎
中午開始我就開始閱讀 Arduino 套件配套的 RFID 實驗資料,打算把這個實驗做完,只是我把上位機換成 Arduino 而已。
實驗目的
1.了解 RFID 的基本概念和射頻卡的工作原理;
2.熟悉 Arduino 和 RC522RFID 模塊的使用;
3.測試 RC522 模塊對卡的識別。
實驗材料
1.計算機一台;
2.Arduino 一塊;
3.USB-串口線一根;
4.RFID-RC522 模塊一個;
5.標准S50空白卡一張;
6.S50異形卡一個(鑰匙扣形狀);
7.直排、彎排插針各一條;
8.杜邦線一排。
買來的射頻 IC卡感應模塊就像下面這樣,包郵也就14塊左右:
買來的時候排插並沒有焊上,所以必須自己焊,雖然我沒有焊接的工具,不過借着這次實驗我還是焊上了。下面是我第二次焊接的成果:
Miafre 1 s50 感應式IC卡
◇ 芯 片: Philips Mifare 1 S50
◇ 存儲容量: 8Kbit ,16個分區,每分區兩組密碼
◇ 工作頻率: 13.56MHZ
◇ 通訊速度: 106Kboud
◇ 讀寫距離: 2.5—10CM
◇ 讀寫時間: 1-2MS
◇ 工作溫度: -20℃-85℃
◇ 擦寫次數: >100000次
◇ 數據保存: >10年
◇ 規 格: 0.87×85.5×54/ 非標卡
◇ 封裝材料: PVC、PET、0.13銅錢
◇ 封裝工藝: 超聲波自動植線/自動碰焊
◇ 制作標准: ISO 14443, ISO 10536
◇ 應用范圍: 企業/校園一卡通、公交儲值卡、高速公路收費、停車場、小區管理等
實驗原理
(一)RFID系統組成
RFID 技術利用無線射頻方式在閱讀器和射頻卡之間進行非接觸雙向數據傳輸,以達到目標識別和數據交換的目的。最基本的 RFID 系統由三部分組成:
1. 標簽(Tag,即射頻卡):由耦合元件及芯片組成,標簽含有內置天線,用於和射頻天線間進行通信。
2. 閱讀器:讀取(在讀寫卡中還可以寫入)標簽信息的設備。
3. 天線:在標簽和讀取器間傳遞射頻信號。
(二)工作原理
MCU通過對讀卡器芯片內寄存器的讀寫來控制讀卡器芯片,讀卡器芯片收到MCU發來的命令后,按照非接觸式射頻卡協議格式,通過天線及其匹配電路向附近發出一組固定頻率的調制信號(13.56 MHz)進行尋卡,若此范圍內有卡片存在,卡片內部的LC諧振電路(諧振頻率與讀卡器發送的電磁波頻率相同)在電磁波的激勵下,產生共振,在卡片內部電壓泵的作用下不斷為其另一端的電容充電,獲得能量,當該電容電壓達到2 V時,即可作為電源為卡片的其他電路提供工作電壓。 當有卡片處在讀卡器的有效工作范圍內時,MCU向卡片發出尋卡命令,卡片將回復卡片類型,建立卡片與讀卡器的第一步聯系,若同時有多張卡片在天線的工作范圍內,讀卡器通過啟動防沖撞機制,根據卡片序列號來選定一張卡片,被選中的卡片再與讀卡器進行密碼校驗,確保讀卡器對卡片有操作權限以及卡片的合法性,而未被選中的則仍然處在閑置狀態,等待下一次尋卡命令。密碼驗證通過之后,就可以對卡片進行讀寫等應用操作。
(三)RC522模塊
模塊的射頻讀寫芯片應該是飛利浦的 MF RC522,在上一篇文章我應該已經附上了英文和中文的手冊。
MF RC522提供了3種接口模式:高達10 Mb/s的SPI、I2C總線模式(快速模式下能達400 kb/s,而高速模式下能達3.4 Mb/s)、最高達1228.8 kb/s的UART模式。買來的模塊采用了第一種模式——四線制SPI,通信中的時鍾信號由 Arduino 產生,MF RC522芯片設置為從機模式,接收來自 Arduino 的數據以設置寄存器,並負責射頻接口通信中相關數據的收發。
數據的傳輸路徑為:Arduino 通過 MOSI 線將數據發到 MF RC522,MF RC522 通過 MISO 線發回至 Arduino。
實驗設計
RC522模塊各引腳功能
SDA -- 串行數據線(IIC接口時的I/O線);在SPI接口中為NSS(從機標志管腳);
SCK -- 連接MCU的SCK信號;
MOSI -- MCU輸出,RC522接收(即主設備輸出,從設備輸入);
MISO -- RC522輸出,MCU接收(即從設備輸出,主設備輸入);
IRQ -- 中斷請求輸出;
GND -- 接地;
RST -- 復位;
3.3V -- VSS,工作電壓,若使用的事5V的MCU,注意分壓。
管腳對應關系:
RFID模塊 | Arduino UNO |
VCC | 3.3V |
RST | 5V |
GND | GND |
MISO | 12 |
MOSI | 11 |
SCK | 13 |
NSS | 10 |
IRQ | (不接) |
電路圖
實物連接圖
代碼的設計,我會放到下一篇文章中講。
實驗內容
1、實現利用IC卡控制LED燈閃爍。
2、實現利用七段數碼管顯示IC卡的類型,並記錄。
3、實現在七段數碼管上以十六進制顯示IC卡的序列號,並記錄。
4、從串口打印IC卡的類型和序列號。
5、測試最大的識別距離。
思考題
1、完成對IC卡的數據讀寫,需要哪幾個步驟?
答:四個步驟:尋卡 —> 防沖突 —> 選卡 —> 三次互相確認 —> 讀寫
2、請分別寫出實驗材料中標准S50卡、S50鑰匙卡的類型和序列號。
答:S50標准卡:Type 0400 和 SN FDC2E3D5
S50異形卡:Type 0400 和 SN D8163100
3、當多張卡在一起時,能否正確識別其卡號?並請說明其原因。
答:在這個實驗中不行。在這個實驗系統中,閱讀器會先執行尋卡操作並返回卡的類型,之后才執行防沖突操作。因為有多張卡處在閱讀器的可讀范圍,防沖突函數返回值為 MI_ERR,也就不能繼續執行選卡和讀寫的操作,也就獲取不到卡的序列號。
實驗中的觀察:
當我將兩張卡同時慢慢靠近閱讀器的過程中,閱讀器首先識別出了卡的類型和其中的某一種卡,並在串口上打印了卡的類型和序列號。接着串口只會一直打印卡的類型而不會打印的卡的序列號。有時也會只打印卡類型而沒有序列號。
分析:
在慢慢靠近的過程中,閱讀器得到的是不確定的信號,偶爾碰巧識別出了其中一張卡。但是之后,兩張卡相互干擾,以至都不能工作。
那么在多張卡的情況下,RFID閱讀器能否同時處理多個標簽呢?
答案是肯定的,TI 的 13.56MHz 系統每秒鍾能處理大約50張標簽。回顧一下上一篇文章講到的MF卡的邏輯結構,其中有一個模塊叫防沖突模塊:
如果有多張Mifare 1卡片處在讀寫器的天線的工作范圍之內時,防沖突模塊的防沖突功能將被啟動工作:根據卡片的序列號來選定一張卡片。被選中的卡片將直接與讀寫器進行數據交換,未被選擇的卡片處於等待狀態,准備與讀寫器進行通信。
既然有防沖突模塊,那么為什么我們用的同樣是 MF1 S50 的卡,還是無法識別呢?
原因就在 RFID 閱讀器的防沖撞機制上。如果我們的讀卡設備使用了防沖撞機制,那么在沖撞產生后,RFID系統會根據沖撞算法,將不同的卡片分時響應,並且已經響應的卡片將暫時被休眠(SLEEP),未被選擇的卡片處於等待狀態。這點在上一篇文章中我僅僅是提到算法的名字。
防沖撞機制使得同時處於讀寫區內的多張卡的正確操作成為可能,只用算法編程,讀頭即可自動選取其中一張卡進行讀寫操作。這樣既方便了操作,也提高了操作的速度。
如果在同一時間段內有多於一個的 VICC 或 PICC 同時響應,則說明發生沖撞。RFID的核心是防沖撞技術,這也是和接觸式 IC 卡的主要區別。ISO 14443-3 規定了 TYPE A 和 TYPE B 的防沖撞機制。二者防沖撞機制的原理不同:前者是基於位沖撞檢測協議,而 TYPE B 通過系列命令序列完成防沖撞;ISO 15693 采用輪尋機制、分時查詢的方式完成防沖撞機制,在標准的第三部分有詳細規定。
4、請測試 RC522 模塊是否能夠識別羊城通、校園一卡通等非接觸式IC卡?若能識別,請寫出其類型及序列號?
答:RC522 模塊還能識別羊城通、校園一卡通和銀行卡,發現類型都是 0400,屬於 MFOne-S50 卡。
某校園一卡通
Card type: MFOne-S50
The card's number is: F68F8EAB某羊城通
Card type: MFOne-S50
The card's number is: 95AF4B27某銀行卡
Card type: MFOne-S50
The card's number is: EF660184
第二代身份證的載波頻率是13.56MHz,副載波頻率為847KHz,記錄的信息有身份證號/姓名/性別/居住地址/照片等。
但是RC522並不能識別它,實驗的白卡是 IS0 14443 TYPE A,而第二代身份證是B型卡,協議是 ISO 15693B
實驗結果
led 閃爍
下次附圖。。。
數碼管顯示
下次附圖。。。
串口打印
識別距離
我粗略測量,發現白卡的識別需要在 4 cm 內,在 7 cm 的位置還是讀不到卡片的。至於加大工作電流,還是不能增加通信距離。用我的校園卡和白卡一起測試,幾乎都是只能識別校園卡。所以我以為校園卡的線圈比較好,但是單獨識別,距離依然是 4 cm。鑰匙扣的識別距離為2.5 cm 左右。
注意 識別的時候要先釋放手上的靜電,閱讀器的周圍不要有其他電流干擾。
實驗總結
廣州大學城的校園一卡通,能當交通卡、單車租用卡、圖書館借書卡、飯堂飯卡、學生卡等。IC 卡的識別,是對於卡片讀寫和一卡多用的的前提。