耿麗微+李泉輝
摘要: 針對(duì)傳統(tǒng)的奶牛養(yǎng)殖場(chǎng)數(shù)字化管理系統(tǒng)開(kāi)發(fā)RS232串行總線通信方式的局限性,使用由FTDI公司的通用串行總線(USB)轉(zhuǎn)TTL串口的UART模塊FT232BL實(shí)現(xiàn)奶牛養(yǎng)殖場(chǎng)數(shù)字化管理關(guān)鍵技術(shù)中多子系統(tǒng)與上位機(jī)的自由通信。上位機(jī)利用虛擬儀器開(kāi)發(fā)工具(LabWindows/cvi)開(kāi)發(fā),下位機(jī)為筆者所在研究室專為奶牛場(chǎng)開(kāi)發(fā)的射頻讀卡器。重點(diǎn)論述奶牛數(shù)字化虛擬儀器測(cè)控網(wǎng)絡(luò)中USB通信設(shè)計(jì),并給出閱讀器軟硬件和主機(jī)的軟件系統(tǒng)結(jié)構(gòu)的設(shè)計(jì)與實(shí)現(xiàn)。
關(guān)鍵詞: 奶牛;養(yǎng)殖場(chǎng);數(shù)字化管理;USB-UART模塊;射頻;虛擬儀器
中圖分類號(hào): TP277.2 文獻(xiàn)標(biāo)志碼: A 文章編號(hào):1002-1302(2016)03-0431-03
隨著我國(guó)科學(xué)技術(shù)水平的不斷發(fā)展,以奶牛為主體的畜牧養(yǎng)殖數(shù)字化程度不斷提高,奶牛養(yǎng)殖的數(shù)字化和信息化已成為奶牛養(yǎng)殖業(yè)發(fā)展的大勢(shì)所趨。當(dāng)前,國(guó)內(nèi)大部分中小型奶牛養(yǎng)殖場(chǎng)主要依靠飼養(yǎng)員的觀察來(lái)獲取奶牛個(gè)體的信息及牛舍內(nèi)的相關(guān)信息,相較依托現(xiàn)代通信技術(shù)和網(wǎng)絡(luò)信息技術(shù)實(shí)現(xiàn)對(duì)所有奶牛的實(shí)時(shí)監(jiān)控管理手段已落后很多[1]。本試驗(yàn)通過(guò)深入分析、細(xì)致研究,主要探討系統(tǒng)開(kāi)發(fā)過(guò)程中多個(gè)測(cè)控子系統(tǒng)(如奶牛場(chǎng)綜合信息監(jiān)控系統(tǒng),奶牛個(gè)體信息自動(dòng)化采集、身份識(shí)別和行為監(jiān)測(cè)等)與上位機(jī)連接所需的計(jì)算機(jī)外設(shè)接口的選擇問(wèn)題。
我國(guó)傳統(tǒng)的奶牛場(chǎng)通常采取RS232串口或其他串行總線方式來(lái)實(shí)現(xiàn)數(shù)字化管理系統(tǒng)的數(shù)據(jù)采集部分,但是由于采用RS232串口通信存在接口連接復(fù)雜、傳輸速效低等不足之處,而采用通用串行總線(USB)則較好地解決以上問(wèn)題。USB接口具有即插即用、安全性高、高傳輸速率等優(yōu)點(diǎn),并結(jié)合現(xiàn)代數(shù)據(jù)傳輸技術(shù),實(shí)現(xiàn)與計(jì)算機(jī)之間高速安全的數(shù)據(jù)通信,解決傳統(tǒng)通信技術(shù)帶給大家的不便。因而以計(jì)算機(jī)為上位機(jī)的測(cè)控系統(tǒng)中采用FTDI公司的 FT232BL設(shè)計(jì)的USB轉(zhuǎn)TTL串口的UART模塊,作為奶牛場(chǎng)開(kāi)發(fā)的射頻識(shí)別(RFID)系統(tǒng)的通信主控芯片[2],可以很好地解決奶牛場(chǎng)多個(gè)測(cè)控子系統(tǒng)與上位機(jī)的通信問(wèn)題,實(shí)現(xiàn)奶牛場(chǎng)各種參數(shù)的實(shí)時(shí)采集。因此,本研究采用USB接口轉(zhuǎn)串口的方案與PC機(jī)進(jìn)行通信,很好地解決了奶牛養(yǎng)殖場(chǎng)PC機(jī)串口資源需求較多的問(wèn)題。
本研究主要介紹利用USB-UART橋接芯片實(shí)現(xiàn)上位機(jī)與讀卡器通信的軟硬件設(shè)計(jì),以及根據(jù)通信協(xié)議實(shí)現(xiàn)單片機(jī)對(duì)射頻芯片操作的軟硬件設(shè)計(jì)。該系統(tǒng)上位機(jī)程序由虛擬儀器開(kāi)發(fā)工具(LabWindows/cvi)開(kāi)發(fā),讀卡器的開(kāi)發(fā)是利用 Atmel 公司的AVR單片機(jī)系列的ATmega162單片機(jī)、Philps公司的MF RC500射頻識(shí)別讀寫(xiě)器芯片、FTDI公司的 USB-UART 橋接電路模塊FT232BL、Mifare One卡等設(shè)計(jì)[3]。
1 USB接口通信協(xié)議設(shè)計(jì)
由于計(jì)算機(jī)會(huì)自動(dòng)識(shí)別USB轉(zhuǎn)TTL串口的UART模塊FT232BL并為其虛擬成模擬串口,所以PC機(jī)與卡讀寫(xiě)器的操作可以看作通過(guò)RS232串口連接,PC機(jī)通過(guò)規(guī)定格式的數(shù)據(jù)(或調(diào)用動(dòng)態(tài)連接庫(kù))向卡讀寫(xiě)器發(fā)送命令,并接收卡讀寫(xiě)器返回的數(shù)據(jù),傳送的數(shù)據(jù)為16進(jìn)制。PC機(jī)為主,卡讀寫(xiě)器為從,卡讀寫(xiě)器始終處于應(yīng)答狀態(tài),不主動(dòng)向PC機(jī)發(fā)送命令。
命令格式采用“命令頭+長(zhǎng)度字+設(shè)備標(biāo)識(shí)符+命令碼+命令內(nèi)容+校驗(yàn)字”。命令頭用2BYTE用0xAADD表示;設(shè)備標(biāo)志為2BYTE;命令碼用1BYTE表示;命令內(nèi)容為命令報(bào)文(可以為空);校驗(yàn)字為1BYTE、從長(zhǎng)度字取反到命令內(nèi)容的逐字節(jié)異或。例如發(fā)送AA BB 05 FA 00 00 01 03 F8表示串口初始化命令,讀卡器接收該數(shù)據(jù)后將執(zhí)行初始化串口操作波特率設(shè)置為9 600 bps。
2 讀卡器硬件設(shè)計(jì)
RFID 射頻讀寫(xiě)器的硬件電路主要由電子標(biāo)簽讀寫(xiě)芯片、通信天線電路、處理器核心芯片(AT-MEGA162)和USB轉(zhuǎn)串口硬件電路4個(gè)部分組成。其中,與電子標(biāo)簽通信的射頻信號(hào)產(chǎn)生、安全認(rèn)證、信號(hào)的調(diào)制及解調(diào)和防沖突等全部由標(biāo)簽讀寫(xiě)芯片來(lái)完成,本研究以MF RC500作為電子標(biāo)簽的讀寫(xiě)芯片,F(xiàn)T232BL為上位機(jī)與微處理器通信的USB主控芯片,整個(gè)系統(tǒng)對(duì)電子標(biāo)簽的讀寫(xiě)操作是通過(guò)微控制器對(duì)讀寫(xiě)芯片的特殊寄存器操作來(lái)完成的。因此,MF RC500可以看作微控制器與電子標(biāo)簽之間信息交換的媒介,微控制器只須將特定的指令傳送給MF RC500,就可以通過(guò)讀寫(xiě)器硬件電路實(shí)現(xiàn)與電子標(biāo)簽的信息交互。
2.1 FT232BL硬件電路設(shè)計(jì)
讀寫(xiě)器的數(shù)據(jù)是通過(guò)USB接口傳送到主機(jī)的。下位機(jī)與PC之間通信的主控芯片采用工控界中最好的FTDI公司設(shè)計(jì)的 USB轉(zhuǎn)TTL串口的UART模塊FT232BL。FT232BL提供的USB轉(zhuǎn)232串口在RS232和USB口之間很容易建立可靠的連接,其連接PCB原理如圖1所示。
FT232BL是環(huán)保無(wú)鉛產(chǎn)品,其USB端口到串行端口通信,支持RS232串行端口及RS422等的介面,其虛擬串口驅(qū)動(dòng)程序(VCP)支持Windows 98及98 SE、Win 2 000、WinME、WinXP、MAC OS-8及MAC OS-9、MAC OS-X、Linux 2.4等,其USB驅(qū)動(dòng)程序(D2XX)支持Win 98及98 SE、Win 2 000、WinME、WinXP 等系統(tǒng),完全兼容USB V2.0 規(guī)范,支持384 B接收緩存和128 B發(fā)送緩存。USB全速連接 12 Mb/s;USB總線直接取電,無(wú)需外接電源;支持自動(dòng)握手協(xié)議;高達(dá)1 Mb/s(RS232)或者3 Mb/s(RS422/RS485)的傳輸速率;支持遠(yuǎn)程喚醒和電源管理[4]。
2.2 主控芯片及射頻芯片硬件電路設(shè)計(jì)
該讀寫(xiě)器的MCU控制核心采用AVR系列的 ATMEGA162 單片機(jī),射頻卡讀寫(xiě)芯片采用Philps公司的MF RC500。該MCU的ALE、8路外部數(shù)據(jù)/地址線以及WR和RD使其可以方便地與RC500物理引腳進(jìn)行連接和通信[5],并且 ATMEGA162 的SPI接口、2個(gè)串口和3個(gè)外部中斷等豐富的硬件資源,可以很好地完成讀寫(xiě)器集成設(shè)計(jì)。PCB電路原理如圖2所示。
2.3 讀寫(xiě)天線硬件電路設(shè)計(jì)
本設(shè)計(jì)采用直接匹配的天線設(shè)計(jì)方式,天線電路由射頻模塊接收電路、天線和匹配電路與濾波和電阻轉(zhuǎn)換電路3個(gè)部分組成。電子標(biāo)簽選擇符合ISO14443typeA接口標(biāo)準(zhǔn)的Mifare1卡,作為無(wú)源電子標(biāo)簽卡,它是通過(guò)讀卡器天線(根據(jù)變壓器原理)獲得能量的。ISO14443typeA標(biāo)準(zhǔn)規(guī)定讀卡器與卡之間采用100%的ASK、Miller編碼、副載波負(fù)載調(diào)制的方式進(jìn)行數(shù)據(jù)傳輸[6]。讀卡器天線設(shè)計(jì)原理如圖3所示。
2.4 讀寫(xiě)電路板的制作
該讀寫(xiě)器電路板采用2層設(shè)計(jì),通過(guò)天線底層設(shè)計(jì)不封閉的屏蔽環(huán)來(lái)吸收天線線圈產(chǎn)生的電場(chǎng),從而改良天線EMC[7]。圖4為該讀卡器的PCB板圖。
3 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)主要包括PC機(jī)的軟件設(shè)計(jì)以及單片機(jī)的軟件設(shè)計(jì)2部分。PC機(jī)軟件由虛擬儀器開(kāi)發(fā)工具(LabWindows/cvi)開(kāi)發(fā),單片機(jī)程序的開(kāi)發(fā)則利用單片機(jī)C語(yǔ)言開(kāi)發(fā),且通過(guò)JTAG仿真調(diào)試。
3.1 PC機(jī)軟件的設(shè)計(jì)
PC機(jī)軟件由虛擬儀器開(kāi)發(fā)工具LabWindows/cvi開(kāi)發(fā),PC機(jī)會(huì)識(shí)別USB設(shè)備為模擬串口。所以,PC機(jī)軟件由虛擬儀器開(kāi)發(fā)工具LabWindows/cvi開(kāi)發(fā),全部為對(duì)標(biāo)準(zhǔn)RS23串口操作。所用到的函數(shù)包括打開(kāi)及串口初始化、讀/寫(xiě)以及關(guān)閉串口等,主要函數(shù)如下:
OpenComConfig (4,“COM4”,19200,0,8,1,512,512);//串口初始化與連接ComWrtByte (4,0xaa);//向單片機(jī)發(fā)送一字節(jié)數(shù)據(jù)ComRdByte (4);//接收單片機(jī)一字節(jié)數(shù)據(jù)CloseCom (4)。//關(guān)閉串口上位機(jī)。
界面及與奶牛卡片數(shù)據(jù)塊四通信結(jié)果如圖5所示。
3.2 單片機(jī)軟件的設(shè)計(jì)
單片機(jī)軟件控制程序主要包括與上位機(jī)進(jìn)行UART串行通信的部分和通過(guò)對(duì)射頻模塊進(jìn)行寄存器命令初始化、讀寫(xiě)、中斷處理等2部分。該讀卡器的控制芯片為ATMEGA162,其有2個(gè)UART端口,其中本USB串口芯片UART0:UART1用于其他功能擴(kuò)展接口,可以做成計(jì)步器的上位機(jī),從而使該設(shè)計(jì)更加簡(jiǎn)約。
串行通信用C語(yǔ)言編寫(xiě),其中接收中斷處理函數(shù)為該系統(tǒng)的核心負(fù)責(zé)接收上位機(jī)數(shù)據(jù)的校驗(yàn),以及根據(jù)命令對(duì)單片機(jī)以及射頻讀寫(xiě)芯片的操作[8]。利用ATMEGA162的中斷模式實(shí)現(xiàn)串行通信程序如下:
void USART0_Init(unsigned int baud);//串口初始化
ISR(USART0_TXC_vect);//發(fā)送中斷處理
ISR(USART0_RXC_vect);//接收中斷處理
讀卡器操作函數(shù)及實(shí)現(xiàn)程序如下:
char PcdRequest(uchar req_code)//尋卡函數(shù)req_code為尋卡方式:req_code=0x52時(shí)尋天線區(qū)內(nèi)所有符合14443A標(biāo)準(zhǔn)的卡,req_code=0x26時(shí)只尋未進(jìn)入休眠狀態(tài)的卡char PcdAnticoll(uchar *snr)防沖撞:尋卡成功后,通過(guò)此函數(shù)向天線區(qū)內(nèi)卡片發(fā)送防沖撞命令,無(wú)論天線區(qū)內(nèi)有幾張卡此函數(shù)只得到一張卡片的序列號(hào)Pcdselect()//選卡,則所有后續(xù)命令針對(duì)此卡PcdHalt()//命令此卡進(jìn)入休眠狀態(tài),再尋未進(jìn)入休眠狀態(tài)的卡,可進(jìn)行其他卡片的操作snr=存放序列號(hào)(4byte)的內(nèi)存單元首地址char PcdSelect(uchar *snr)//選定一張卡void WriteRawRC(uchar Address,uchar value)//寫(xiě)RC500寄存器ucahr ReadRC(uchar Address)//讀RC500寄存器等。
4 測(cè)試結(jié)果分析
為了驗(yàn)證USB通信接口在測(cè)控網(wǎng)絡(luò)工作的可靠性,采用6張Mifare One卡作為身份標(biāo)識(shí)節(jié)點(diǎn)。在河北農(nóng)業(yè)大學(xué)測(cè)控實(shí)驗(yàn)室進(jìn)行數(shù)據(jù)測(cè)試。把FT232BL設(shè)備與計(jì)算機(jī)連接,驅(qū)動(dòng)程序安裝后,在設(shè)備管理器中會(huì)有FT232BL虛擬的COM口。采集結(jié)果如表1所示。
PC機(jī)通過(guò)射頻卡讀寫(xiě)器與奶牛射頻卡通信結(jié)果表明,該設(shè)計(jì)能很好地讀取射頻卡的序列號(hào)以及卡特定存儲(chǔ)區(qū)塊的數(shù)據(jù)結(jié)果。該設(shè)計(jì)開(kāi)發(fā)快捷、使用可靠,可以作為奶牛養(yǎng)殖場(chǎng)數(shù)字化管理關(guān)鍵技術(shù)研究課題中多子系統(tǒng)與上位機(jī)的通信標(biāo)準(zhǔn)模塊。
5 結(jié)論
該設(shè)計(jì)中由USB轉(zhuǎn)TTL串口的UART通信模塊FT232BL被成功地嵌入到筆者所在研究室專為奶牛場(chǎng)開(kāi)發(fā)的射頻讀卡器當(dāng)中,可以方便地實(shí)現(xiàn)虛擬儀器測(cè)控網(wǎng)絡(luò)中上位機(jī)與多下位機(jī)之間的通信,同時(shí)完成的為奶牛場(chǎng)設(shè)計(jì)的讀卡器具有穩(wěn)定可靠、成本低和響應(yīng)快等優(yōu)點(diǎn),對(duì)奶牛場(chǎng)RFID系統(tǒng)的推廣具有重要意義。
參考文獻(xiàn):
[1]柳平增,丁為民,汪小旵,等. 奶牛發(fā)情期自動(dòng)檢測(cè)系統(tǒng)的設(shè)計(jì)[J]. 測(cè)控技術(shù),2006,25(11):48-51.
[2]孫智剛,梁衛(wèi)波. RFID技術(shù)發(fā)展趨勢(shì)預(yù)測(cè)研究[J]. 商場(chǎng)現(xiàn)代化,2012(22):22-24.
[3]郭建強(qiáng),彭 華,王澤勇,等. MSP430系統(tǒng)與PC機(jī)通信的USB接口設(shè)計(jì)[J]. 信息技術(shù),2012(8):102-107.
[4]劉 建,武樹(shù)飛. 基于FT232BL的USB接口快速設(shè)計(jì)[J]. 艦船電子工程,2009(6):51-54.
[5]沙 超,董挺挺,王汝傳,等. 無(wú)線傳感器網(wǎng)絡(luò)硬件平臺(tái)的研究與設(shè)計(jì)[J]. 電子工程師,2006,32(5):52-55.
[6]Future technology devices international FT232BL designers guide[EB/OL]. (2006-08-16)[2014-11-05]. http://www.ftdchip. com.
[7]Philips Semiconductors. MF RC500 Highly Integrated ISO14443A Reader IC-Preliminary Product Specification Revision 2.0 CONFI-DENTIAL[M]. Austria:Philips Semiconductors Gratkom GmbH,2001.
[8]ISO/IEC 14443-4—2001 無(wú)接觸點(diǎn)集成電路卡傳輸協(xié)議[S]. 江蘇農(nóng)業(yè)科學(xué),2016,44(3):434-438.