1 引言
投票表決器在選舉,會議,教學,娛樂節目中得到大量的使用。現行的無線表決系統采用單一的無線網絡,使無線終端設備與上位機進行通信。由于無線網絡存在傳輸距離有限,對障礙物穿透性較差等問題,無法實現遠程監控和多會議室同時投票等問題。本文利用Zigbee 技術具有低功耗,使用頻段免費和以太網具有傳輸遠,傳輸速率快等特點,將二者相結合,設計了一款無線投票表決器基站。實現了無線投票表決器遠程監控和多會議室同時投票功能。
2 系統概述
整個無線投票表決器系統,由監控中心,基站,表決器組成,如圖1 所示。基站既作為遠程監控中心與無線投票表決器設備通信的樞紐,并且還作為無線投票表決器網絡中的協調器,維護和管理整個無線網絡。基站收集各投票表決器的投票情況,接受遠程監控中心的指令和定時訪問。
圖1 無線投票表決器系統整體結構
3 硬件設計
基站硬件結構如圖2 所示,由ARM7 處理器AT91SAM7X256、無線模塊、以太網模塊,存儲模塊,電源模塊,和顯示模塊組成。
圖2 硬件整體結構
其中AT91SAM7X256 作為整個基站的主控芯片,由Atmel 公司出品,它集成了ARM7TDMI 處理器,片內256KB Flash 和64KB SRAM,還包括了USART、SPI、CAN 控制器、Ethernet 網口等外圍設備。
無線模塊采用CC2520 芯片。CC2520 是由TI 公司推出的第二代基于Zigbee/IEEE802.15.4 協議的收發芯片。豐富的硬件支持幀處理,數據緩存,數據加密,CCA 等操作。CC2520 通過SPI 接口與AT91SAM7X256 實現通信。AT91SAM7X256 分別通過/CSN 引腳和VREG_EN 引腳對CC2520 進行片選和使能,GPIO4 引腳為AT91SAM7X256 提供接收數據幀起始信號和發送數據幀結束信號。
以太網模塊采用DM9161 芯片,DM9161 是Davicom 公司推出的能實現全部10M/100M 以太網物理功能的低功耗高性能物理層收發器。
4 軟件設計
圖3 軟件整體結構
軟件整體結構框圖如圖3 所示。本基站采用μC/OS-II 操作系統,并在此操作系統上完成基于TCP/IP協議的LwIP 協議棧和基于Zigbee 協議的msstatePAN協議棧的移植,以及以太網網卡驅動程序,無線收發芯片驅動程序,應用程序的編寫工作[3,4].下面將詳細對驅動程序和應用程序進行詳細的說明。
4.1 以太網網卡驅動
由EMAC_INIT()函數完成對EMAC 的初始化設置,其中包括對EMAC 操作模式、MII 接口和PHY進行配置,設置發送和接收緩沖區描述符[5].MII 接口是IEEE-802.3 定義的以太網行業標準,用于FastEthernet MAC-block 與各種類型的PHY 連接[6]. 它包括一個數據接口,以及一個MAC 和PHY 之間的管理接口。在PHY 上電后,先對DM9161 進行一次軟件復位操作,待軟件復位結束后使EMAC 和PHY 各自進行初始化設置,并使能EMAC 和PHY 接口,然后實現自動協商過程,在自動協商過程中,依靠MDIO接口是EMAC 和PHY 進行通訊,使二者配置成相同的速度和雙工模式。最后設置EMAC 地址并完成接收和發送緩沖區標識符的初始化工作,使得每個描述符指向正確的緩沖地址并將描述符首地址寫入隊列指針寄存器。EMAC 的數據包讀取和數據包傳送分別由EMACReadPacke()和EMACSendPacket()函數來完成,其中為了保證獲得正確的數據包讀取位置在讀取數據包之前必需先調用GetInputPacketLen()函數獲得數據包的長度。
4.2 Zigbee 收發芯片CC2520 驅動
由初始化模塊,數據發送模塊和數據接收模塊組成。通過初始化模塊對CC2520 進行初始化配置。其中包括對CC2520 進行啟動,設置網絡頻道號,發射功率,自動CRC 校驗,將GPIO4 管腳配置成用來接收SFD 幀起始信號。
發射模塊完成數據的發送任務。下面程序為數據發送過程。
先清除發送緩沖區,再將待發數據包寫入發送緩沖區內并進入待發狀態,然后根據GPIO4 管腳信號判斷數據是否發送完畢,若未發送完畢繼續等待,若發送完畢清楚SFD 標志位,最后使CC2520 進入空閑狀態。
接收模塊完成數據的接收任務。當檢測到CC2520的GPIO4 管腳的SFD 信號后,產生中斷,進入到接收中斷服務程序。接收中斷服務程序與發送程序類似,這里不再一一列出。
4.3 應用層
主要實現:1.以太網和Zigbee 網絡的建立。2.接受遠程監控中心的訪問和各項指令。3.維護并管理整個Zigbee 網絡。4.接收來自Zigbee 網絡中的各投票表決器的投票數據幀。程序流程圖如圖4 所示。
首先建立以太網絡,完成與上位機的連接后,上位機向基站發出建立無線投票表決器網絡的基礎信息幀。基站根據基礎信息幀中指定的頻段,PAN 號,發射功率等參數建立Zigbee 網絡。各無線表決器申請加入該網絡,成功加入后將會將獲得由基站(Zigbee 網絡中的協調器)分配的一個16 位動態網絡短地址。并同時提示用戶表決器通信正常。否則提示通信失敗。
在設定時限內,基站統計成功加入該網絡的投票表決器數目,并向上位機發送統計結果。屏蔽此后所有申請加入該網絡的投票表決器設備直到基站收到上位機更新網絡的命令。上位機收到參與該階段的投票表決器總數若大于設定的最低人數時,則向基站發送投票信息幀。若參與該階段的投票表決器總數若小于設定的最低人數時上位機則向基站發送延長等待投票表決器加入網絡的時限指令。若再次超過時限仍未達到指定人數則提示該階段投票無效。投票信息幀中包括本階段投票的投票格式,投票類型等內容。基站收到投票信息幀后并向整個Zigbee 網絡進行廣播,此時投票開始進行。Zigbee 網絡中的各投票表決器根據收到的投票信息幀,將提示用戶進行相應的投票操作。用戶完成投票操作后,投票表決器將投票數據幀發送給基站,基站將投票數據幀存入到Zigbee_BUF 數據緩沖區中,并向投票表決器發送回復幀,向用戶指示成功發送。然后收回該投票表決器的網絡短地址,使其脫離該網絡,防止用戶進行二次投票。
圖4 應用程序
上位機定時向基站進行訪問,基站收到訪問請求后向上位機傳輸數據緩沖區內容。上位機收到后返回信息確認幀。基站接受到上位機的信息確認幀之后清除數據緩沖區內容。基站在規定投票時限內,收回所有網絡短地址,使本次加入該網絡的投票表決器全部脫離,停止用戶進行投票。
完成該階段投票過程后,進入新階段投票時,上位機向基站發送更新網絡命令。此時,基站重新允許投票表決器加入該網絡。開始新一輪的投票過程。
4.4 實現結果
基站完成了聯調工作。成功的實現了本文介紹的全部功能。圖5 為頻譜儀監測基站與無線投票表決器進行通信時的數據傳輸情況。
圖5 遠程監控中心上位機監控軟件
5 結論
本文設計的基站實現了以太網和Zigbee 網絡的連接,為Zigbee 網絡實現遠程監控提供了一些思路。該基站已投入市場,并取得良好的經濟效益。如何在功耗和傳輸速度上提高基站的性能以及設計出能與現行的多種協議互聯的基站是我們今后研究的重點。
作者:張程皓 彭楚武 肖昌炎 唐韜 鄒楊