加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

【EsDA應(yīng)用】如何基于EsDA開發(fā)套件快速使用射頻讀卡器模塊

01/10 15:05
2832
閱讀需 23 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

無線射頻讀寫卡技術(shù)在門禁系統(tǒng),電子支付領(lǐng)域和物聯(lián)網(wǎng)等領(lǐng)域中具有越來越廣泛的應(yīng)用。本文將基于EsDA開發(fā)套件講解如何快速上手并開發(fā)射頻讀卡器模塊的相關(guān)業(yè)務(wù),為開發(fā)者大大縮短了學(xué)習(xí)和開發(fā)時(shí)間成本。

項(xiàng)目簡(jiǎn)介

無線射頻讀寫卡技術(shù)是一種基于無線通信的身份識(shí)別技術(shù),由讀寫器和卡片組成,讀寫器可以通過無線射頻信號(hào),實(shí)現(xiàn)與卡片之間的數(shù)據(jù)傳輸與操作。本文將基于EsDA開發(fā)平臺(tái),使用EPC6450-AWI開發(fā)板,以及圖形化設(shè)計(jì)工具AWFlow Designer實(shí)現(xiàn)ZLG600A的RFID讀寫器模塊與卡片之間無線通信的功能。該項(xiàng)目主要用到了timer,fscript,rfid_zlg600,log節(jié)點(diǎn),具體實(shí)現(xiàn)請(qǐng)見下文。

項(xiàng)目概述

該項(xiàng)目通過EsDA開發(fā)平臺(tái),使用ZLG600A的模塊快速實(shí)現(xiàn)類似門禁卡或電子支付場(chǎng)景等業(yè)務(wù)。該項(xiàng)目的主要步驟如下:

    通過ZLG600A的上位機(jī)配置工具,配置讀卡器模塊;使用ZLG600A的上位機(jī)測(cè)試工具,激活卡;使用rfid_zlg600節(jié)點(diǎn)實(shí)現(xiàn)檢驗(yàn)密鑰,獲取卡uid,寫塊數(shù)據(jù),讀塊數(shù)據(jù)等功能。

前期準(zhǔn)備

讀者若有興趣可以閱讀以下文章對(duì)EsDA的其他模塊項(xiàng)目進(jìn)行學(xué)習(xí):

    【EsDA應(yīng)用】如何5分鐘快速實(shí)現(xiàn)指紋采集與檢測(cè)【EsDA應(yīng)用】5分鐘快速實(shí)現(xiàn)攝像頭圖像采集【EsDA應(yīng)用】10分鐘快速實(shí)現(xiàn)人臉識(shí)別【EsDA應(yīng)用】5分鐘快速實(shí)現(xiàn)圖像人臉檢測(cè)

1. 硬件準(zhǔn)備

在標(biāo)有絲印為TF Card 的卡槽處,插入SD卡;

在標(biāo)有絲印為DUART的模塊上,將TTL轉(zhuǎn)USB串口模塊的TX與板子絲印為RXD連接,TTL轉(zhuǎn)USB串口模塊的RX與板子絲印為TXD相連;并將串口模塊的USB端口接入電腦;

在標(biāo)有絲印為Type-C 的接口處,插上Type-C線,并將Type-C線的另一端USB口插入電腦;

在標(biāo)有絲印為NET0?或 NET1的RJ45插座處接上網(wǎng)線的水晶頭,網(wǎng)線另一端水晶接頭插在PC的網(wǎng)絡(luò)插座上。

ZLG600A模塊支持TTL,RS232以及RS485接口通信,本文采用TTL通信。在標(biāo)有絲印為 3.3V 的排針針腳處接上ZLG600A模塊的 VCC 引腳;在標(biāo)有絲印為 GND 的排針針腳處接上ZLG600A模塊的 GND 引腳;在標(biāo)有絲印為 UTX1 的排針針腳處接上ZLG600A模塊的 RXD 的引腳;在標(biāo)有絲印為 URX1 的排針針腳處接上ZLG600A模塊的 TXD 的引腳上。

2. 上位機(jī)配置模塊

2.1 硬件連接

選擇ZLG600A(支持TTL,RS232以及RS485接口通信)與PC端通信的方式,本文選用TTL通信。將TTL轉(zhuǎn)USB串口模塊的TX與ZLG600A模塊絲印為 RXD 連接,TTL轉(zhuǎn)USB串口模塊的RX與ZLG600A模塊絲印為 TXD 相連,TTL轉(zhuǎn)USB串口模塊的GND與ZLG600A模塊絲印為 GND 相連,TTL轉(zhuǎn)USB串口模塊的VCC與ZLG600A模塊絲印為 VCC 相連;并將串口模塊的USB端口接入電腦。接線如下圖所示。

2.2 軟件操作

若想了解該模塊更多信息請(qǐng)?jiān)L問致遠(yuǎn)電子ZLG600A相關(guān)資料進(jìn)行查閱,本文只講解如何利用EsDA快速使用該模塊。

ZLG600A資料:https://www.zlg.cn/tm/down/down/id/146.html

上位機(jī)安裝包:https://www.zlg.cn/data/upload/software/Tm/ZLG600A_pcdemo.rar

解壓縮后,雙擊執(zhí)行ZLG600A_Configure V1.00.exe這個(gè)上位機(jī)程序。

找到在設(shè)備管理器中對(duì)應(yīng)的串口設(shè)備,選擇波特率為 19200?,點(diǎn)擊連接讀卡器,因?yàn)槭褂肨TL通信,所以其他配置按默認(rèn)的即可,點(diǎn)擊配置模塊,若配置成功則如下圖所示。

雙擊執(zhí)行ZLG600A_Test V3.00.exe這個(gè)上位機(jī)程序。

選擇對(duì)應(yīng)通信的串口號(hào),設(shè)置波特率為19200后點(diǎn)擊連接讀卡器。若不確定是否已激活卡片,可以點(diǎn)擊卡片激活,此時(shí)可以看到被分配的卡片ID號(hào)。

以上,卡片和讀卡器就已激活配置成功,后續(xù)可以使用讀卡器對(duì)卡片進(jìn)行讀寫等操作。

項(xiàng)目實(shí)施

1. 加載密鑰

本業(yè)務(wù)是向模塊內(nèi)加載密碼,而非改變Mifare卡內(nèi)扇區(qū)的密碼。每個(gè)區(qū)有密鑰A和密鑰B兩個(gè),對(duì)應(yīng)的cmd指令是load_mifare1_keyaload_mifare1_keyb。后續(xù)若想改變Mifare卡內(nèi)的密鑰,可以使用原密碼驗(yàn)證通過后,直接用寫塊數(shù)據(jù)指令將密碼塊進(jìn)行改寫。

1.1 流圖繪制

添加timer,fscript,rfid_zlg600,和log節(jié)點(diǎn)到畫布中并連線如下圖,為了和后面的業(yè)務(wù)進(jìn)行區(qū)分,timer的消費(fèi)者fscript的顯示名稱在此改為加載密鑰A。

1.2 節(jié)點(diǎn)配置

雙擊timer節(jié)點(diǎn),配置周期性去加載密鑰的時(shí)間。雙擊timer的消費(fèi)者節(jié)點(diǎn)fscript(顯示標(biāo)簽為加載密鑰A),卡密鑰的類型分為密鑰A和密鑰B,分別代表不同的cmd參數(shù),密鑰A的cmd指令為load_mifare1_keya,密鑰B的cmd指令為load_mifare1_keyb,在fscript中指定驗(yàn)證密鑰的類型,密鑰的值以及操作的塊區(qū)號(hào)。

print("load_mifare1_keya")output.cmd = 'load_mifare1_keya'
buf = wbuffer_create()
wbuffer_write_uint8(buf, 0xAA) ? //低字節(jié)wbuffer_write_uint8(buf, 0xFF) ? wbuffer_write_uint8(buf, 0xFF) ? wbuffer_write_uint8(buf, 0xFF) ? wbuffer_write_uint8(buf, 0xFF) ? wbuffer_write_uint8(buf, 0xFF) ? //高字節(jié)
output.key_data = wbuffer_get_data(buf)output.key_data_len = 6
output.section_id = 1

雙擊rfid_zlg600節(jié)點(diǎn),配置模塊通信參數(shù)。

雙擊rfid_zlg600的消費(fèi)者節(jié)點(diǎn)fscript,若加載密鑰的cmd指令成功,則說明密鑰正確。后續(xù)針對(duì)讀寫卡的其他操作都要進(jìn)行密鑰驗(yàn)證。

var i = 0print('result::::::::::::::::::::')
if (msg.cmd == "load_mifare1_keya") { ? ?if(msg.result == 0) { ? ? ? ?output.payload = "load_mifare1_keya_ok" ? ?} else { ? ? ? ?output.payload = "load_mifare1_keya_err" ? ?}}

log節(jié)點(diǎn)是用來輸出日志信息到控制臺(tái)或調(diào)試窗口等。1.3 下載驗(yàn)證繪制完流圖后,點(diǎn)擊CTRL+S?即可保存流圖,點(diǎn)擊下載流圖??梢钥吹酱谥稚巷@示加載密鑰成功的打印信息。

2. 讀卡UID

在本業(yè)務(wù)中先驗(yàn)證密鑰再對(duì)卡UID進(jìn)行讀取。

2.1 流圖繪制

添加timer,fscript,rfid_zlg600,和log節(jié)點(diǎn)到畫布中并連線如下圖,為了和后面的業(yè)務(wù)進(jìn)行區(qū)分,timer的消費(fèi)者fscript的顯示名稱在此改為讀卡號(hào)。

2.2 節(jié)點(diǎn)配置

雙擊timer節(jié)點(diǎn),配置周期性去讀卡號(hào)的時(shí)間。

雙擊timer的fscript節(jié)點(diǎn)(顯示標(biāo)簽為讀卡號(hào)),讀之前必需成功進(jìn)行密鑰驗(yàn)證。

print("get_mifare1_uid")output.cmd = 'get_mifare1_uid'output.keytype = 0x60
buf = wbuffer_create()
wbuffer_write_uint8(buf, 0xAA) ? //低字節(jié)wbuffer_write_uint8(buf, 0xFF) ? wbuffer_write_uint8(buf, 0xFF) ? wbuffer_write_uint8(buf, 0xFF) ? wbuffer_write_uint8(buf, 0xFF) ? wbuffer_write_uint8(buf, 0xFF) ? //高字節(jié)
output.key_data = wbuffer_get_data(buf)output.key_data_len = 6
//一個(gè)扇區(qū)有4個(gè)塊output.section_id = 1output.block_id = 4

雙擊rfid_zlg600節(jié)點(diǎn),配置模塊通信參數(shù)。

雙擊rfid_zlg600的消費(fèi)者節(jié)點(diǎn)fscript,若成功驗(yàn)證密鑰后則將讀取的卡UID進(jìn)行顯示。

var i = 0print('result::::::::::::::::::::')if(msg.cmd == "get_mifare1_uid") { ? ? ? ?if(msg.result == 0) { ? ? ? ? ? ? ? ?print('mifare1_uid_len: ' + msg.mifare1_uid_len) ? ? ? ?print('mifare1_uid: start') ? ? ? ?len = msg.mifare1_uid_len ? ? ? ?rbuf = rbuffer_create(msg.mifare1_uid, len) ? ? ? ?for (i = 0; i < len; i = i + 1) { ? ? ? ? ? ?data = rbuffer_read_uint8(rbuf) ? ? ? ? ? ?print('data'+ i + ':' + data) ? ? ? ?} ? ? ? ?print('mifare1_uid: end') ? ? ? ? ? ? ? ?output.payload = "get_mifare1_uid_ok" ? ?} else { ? ? ? ?output.payload = "get_mifare1_uid_err" ? ?} ? ?}
2.3 下載驗(yàn)證

繪制完流圖后,點(diǎn)擊CTRL+S?即可保存流圖,點(diǎn)擊下載流圖??梢钥吹酱谥稚巷@示讀取卡UID的值的打印信息。

3. 寫塊數(shù)據(jù)

本業(yè)務(wù)需要先對(duì)卡內(nèi)操作的塊區(qū)驗(yàn)證密鑰,驗(yàn)證成功后對(duì)同一扇區(qū)都可進(jìn)行寫操作(一個(gè)扇區(qū)有四個(gè)塊區(qū))??梢酝ㄟ^本業(yè)務(wù)對(duì)扇區(qū)尾的密碼塊進(jìn)行修改,這也是更改密碼的唯一方法。

3.1 繪制流圖

添加timer,fscript,rfid_zlg600,和log節(jié)點(diǎn)到畫布中并連線如下圖,為了和后面的業(yè)務(wù)進(jìn)行區(qū)分,timer的消費(fèi)者fscript的顯示名稱在此改為寫塊數(shù)據(jù)。

3.2 節(jié)點(diǎn)配置

雙擊timer節(jié)點(diǎn),配置周期性去寫塊數(shù)據(jù)的時(shí)間。

雙擊timer的fscript節(jié)點(diǎn)(顯示標(biāo)簽為寫塊數(shù)據(jù)),寫塊數(shù)據(jù)之前必需成功進(jìn)行密鑰驗(yàn)證。設(shè)置需要寫入的指定的扇區(qū)和寫入的數(shù)據(jù)。

print("write_mifare1_data")output.cmd = "write_mifare1_data"output.keytype = 0x60
buf = wbuffer_create()wbuffer_write_uint8(buf, 0xAA) ? //低字節(jié)wbuffer_write_uint8(buf, 0xFF) ? wbuffer_write_uint8(buf, 0xFF) ? wbuffer_write_uint8(buf, 0xFF) ? wbuffer_write_uint8(buf, 0xFF) ? wbuffer_write_uint8(buf, 0xFF) ? //高字節(jié)
output.key_data = wbuffer_get_data(buf)

buf1 = wbuffer_create()wbuffer_write_uint8(buf1, 0x12) ? //低字節(jié)wbuffer_write_uint8(buf1, 0x34) ? wbuffer_write_uint8(buf1, 0x56) ? wbuffer_write_uint8(buf1, 0x78) ? wbuffer_write_uint8(buf1, 0x90) ? wbuffer_write_uint8(buf1, 0x01) ? wbuffer_write_uint8(buf1, 0x02) ? wbuffer_write_uint8(buf1, 0x03) ? wbuffer_write_uint8(buf1, 0x04) ? wbuffer_write_uint8(buf1, 0x05) ? wbuffer_write_uint8(buf1, 0x06) ? wbuffer_write_uint8(buf1, 0x07) ? wbuffer_write_uint8(buf1, 0x08) ? wbuffer_write_uint8(buf1, 0x09) ? wbuffer_write_uint8(buf1, 0x11) ? wbuffer_write_uint8(buf1, 0x12) ? //高字節(jié)
output.data = wbuffer_get_data(buf1)output.data_len = 16
output.section_id = 1 output.block_id = 4

雙擊rfid_zlg600節(jié)點(diǎn),配置模塊通信參數(shù)。

雙擊rfid_zlg600的消費(fèi)者節(jié)點(diǎn)fscript,查看寫入塊數(shù)據(jù)的結(jié)果并打印。

var i = 0print('result::::::::::::::::::::')if (msg.cmd == "write_mifare1_data") { ? ?if(msg.result == 0) { ? ? ? ?output.payload = "write_mifare1_data_ok" ? ?} else { ? ? ? ?output.payload = "write_mifare1_data_err" ? ?}}
3.3 下載驗(yàn)證

繪制完流圖后,點(diǎn)擊CTRL+S?即可保存流圖,點(diǎn)擊下載流圖。

可以看到串口助手上顯示寫塊數(shù)據(jù)成功的打印信息。

4. 讀塊數(shù)據(jù)

本業(yè)務(wù)需要對(duì)指定塊區(qū)域進(jìn)行密鑰驗(yàn)證后,才可對(duì)同一扇區(qū)內(nèi)的數(shù)據(jù)進(jìn)行讀操作(一個(gè)扇區(qū)包含四個(gè)塊區(qū),且一個(gè)扇區(qū)共用一個(gè)密鑰)。

4.1 繪制流圖

添加timer,fscript,rfid_zlg600,和log節(jié)點(diǎn)到畫布中并連線如下圖,為了和后面的業(yè)務(wù)進(jìn)行區(qū)分,timer的消費(fèi)者fscript的顯示名稱在此改為讀塊數(shù)據(jù)。

4.2 節(jié)點(diǎn)配置

雙擊timer節(jié)點(diǎn),配置周期性去讀塊數(shù)據(jù)的時(shí)間。

雙擊timer的fscript節(jié)點(diǎn)(顯示標(biāo)簽為讀塊數(shù)據(jù)),讀塊數(shù)據(jù)之前必需成功進(jìn)行密鑰驗(yàn)證。設(shè)置需要讀取的指定的扇區(qū)。

print("read_mifare1_data")output.cmd = 'read_mifare1_data'output.keytype = 0x60
buf = wbuffer_create()
wbuffer_write_uint8(buf, 0xAA) ? //低字節(jié)wbuffer_write_uint8(buf, 0xFF) ? wbuffer_write_uint8(buf, 0xFF) ? wbuffer_write_uint8(buf, 0xFF) ? wbuffer_write_uint8(buf, 0xFF) ? wbuffer_write_uint8(buf, 0xFF) ? //高字節(jié)
output.key_data = wbuffer_get_data(buf)output.key_data_len = 6
//一個(gè)扇區(qū)有4個(gè)塊output.section_id = 1output.block_id = 4

雙擊rfid_zlg600節(jié)點(diǎn),配置模塊通信參數(shù)。

雙擊rfid_zlg600的消費(fèi)者節(jié)點(diǎn)fscript,查看讀取到的塊數(shù)據(jù)的內(nèi)容并打印。

var i = 0print('result::::::::::::::::::::')

if (msg.cmd == "read_mifare1_data") { ? ?if(msg.result == 0) { ? ? ? ?print('mifare1_data_len: ' + msg.mifare1_data_len) ? ? ? ?print('mifare1_data: start') ? ? ? ?len = msg.mifare1_data_len ? ? ? ?rbuf = rbuffer_create(msg.mifare1_data, len) ? ? ? ?for (i = 0; i < len; i = i + 1) { ? ? ? ? ? ?data = rbuffer_read_uint8(rbuf) ? ? ? ? ? ?print('data'+ i + ':' + data) ? ? ? ?} ? ? ? ?print('mifare1_data: end') ? ? ? ? ? ? ? ?output.payload = "read_mifare1_data_ok" ? ?} else { ? ? ? ?output.payload = "read_mifare1_data_err" ? ?} ? ?}
4.3 下載驗(yàn)證

繪制完流圖后,點(diǎn)擊CTRL+S?即可保存流圖,點(diǎn)擊下載流圖??梢钥吹酱谥稚巷@示讀取塊數(shù)據(jù)內(nèi)容的打印信息。

 

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
ADG918BCPZ-500RL7 1 Analog Devices Inc Wideband, 43 dB Isolation at 1 GHz, CMOS 1.65 V to 2.75 V, 2:1 Mux/SPDT Switches

ECAD模型

下載ECAD模型
$5.25 查看
LT5537EDDB#TRMPBF 1 Analog Devices Inc Wide Dynamic Range RF/IF Log Detector

ECAD模型

下載ECAD模型
$3.67 查看
RF3827TR7 1 RF Micro Devices Inc RF/MICROWAVE WIDE BAND MEDIUM POWER AMPLIFIER
$11.04 查看
致遠(yuǎn)電子

致遠(yuǎn)電子

廣州致遠(yuǎn)電子股份有限公司成立于2001年,注冊(cè)資金5000萬元,國(guó)家級(jí)高新技術(shù)認(rèn)證企業(yè),廣州市高端工控測(cè)量?jī)x器工程技術(shù)研究開發(fā)中心,Intel ECA全球合作伙伴和微軟嵌入式系統(tǒng)金牌合作伙伴。

廣州致遠(yuǎn)電子股份有限公司成立于2001年,注冊(cè)資金5000萬元,國(guó)家級(jí)高新技術(shù)認(rèn)證企業(yè),廣州市高端工控測(cè)量?jī)x器工程技術(shù)研究開發(fā)中心,Intel ECA全球合作伙伴和微軟嵌入式系統(tǒng)金牌合作伙伴。收起

查看更多

相關(guān)推薦

電子產(chǎn)業(yè)圖譜