任 璐,李文石,錢 敏,
(1. 蘇州大學(xué) 文正學(xué)院 電子信息工程系,江蘇 蘇州 215104;2. 蘇州大學(xué) 電子信息學(xué)院 微電子工程系,江蘇 蘇州 215006)
基于nRF24L01的無線電子記分系統(tǒng)設(shè)計
任 璐1,李文石2,錢 敏1,2
(1. 蘇州大學(xué) 文正學(xué)院 電子信息工程系,江蘇 蘇州 215104;2. 蘇州大學(xué) 電子信息學(xué)院 微電子工程系,江蘇 蘇州 215006)
無線記分系統(tǒng)的設(shè)計分為發(fā)送端和接收端兩部分。發(fā)送端控制程序通過RS232串口通信發(fā)送比分數(shù)據(jù)到單片機控制的下位機,并經(jīng)由nRF24L01無線射頻模塊天線進行數(shù)據(jù)發(fā)送;接收端通過單片機控制的無線射頻模塊天線接收數(shù)據(jù)并使用8段LED數(shù)碼管顯示記分情況。系統(tǒng)的整體設(shè)計包括硬件電路、軟件程序設(shè)計;發(fā)送端上位機界面程序采用VB6.0設(shè)計,發(fā)送端下位機和接收端單片機程序采用C51。給出了軟件設(shè)計流程圖、硬件實物運行現(xiàn)場圖。測試表明,系統(tǒng)運行性能良好。
無線計分系統(tǒng);單片機控制;nRF24L01
體育比賽深受人們喜愛,比賽記分是比賽過程中的重要部分。大型比賽采用昂貴的大型電子記分系統(tǒng),然而大部分中小型球賽依舊采用傳統(tǒng)人工翻牌的記分模式。針對以上問題,本文設(shè)計了一款輕巧的便攜型式電子無線遙控記分系統(tǒng),成本相對低廉[1]。該系統(tǒng)采用Nordic公司的nRF24L01無線通信收發(fā)芯片和STC公司的STC89C52RC單片機。系統(tǒng)的硬件電路簡單,電路制作費用低[2-3]。經(jīng)過多次實驗測試,系統(tǒng)的工作性能穩(wěn)定,效果良好,可以廣泛運用于中小型球類比賽。
該無線遙控記分系統(tǒng)由發(fā)送端、接收端兩部分組成。發(fā)送端由上、下位機兩部分組成。下位機由觸摸按鍵、LED顯示數(shù)碼管、nRF24L01射頻發(fā)送模塊和MCU核心處理單元構(gòu)成;上位機采用PC,通過普通9針RS232串口與下位機通信。接收端由nRF24L01射頻接收模塊、MCU核心處理單元、LED顯示數(shù)碼管組成。系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 無線遙控記分系統(tǒng)結(jié)構(gòu)圖
發(fā)送端下位機硬件系統(tǒng)包括:主控制單元、射頻收發(fā)模塊、晶振電路、復(fù)位電路、顯示單元、串口通信單元(包括電平轉(zhuǎn)換模塊)、電源模塊等。接收端包括:主控制單元、射頻收發(fā)模塊、晶振電路、復(fù)位電路、顯示單元、電源模塊等,整體電路原理如圖2所示。下面介紹主要部分電路的設(shè)計。
圖2 系統(tǒng)整體硬件電路圖(發(fā)送端下位機主要部分,接收端類似)
2.1 核心處理單元
核心處理單元采用STC公司生產(chǎn)的低功耗、高性能、超強抗干擾的微控制器STC89C52RC。其基于CMOS工藝,攜有8 KB在系統(tǒng)可編程Flash存儲器,與80C51產(chǎn)品指令和引腳完全兼容,能為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活度、非常有效的解決方案。
STC89C52RC單片機內(nèi)部資源豐富,系統(tǒng)設(shè)計過程中充分利用這一特性,將其作為主控芯片,沒有增加過多外設(shè)。單片機的I/O端口具體資源利用情況如下:P1口及中斷與nRF24L01射頻收發(fā)模塊相連接,控制信息的發(fā)送/接收;P0口與數(shù)碼管的段選線連接,控制顯示的字段;P2端口與數(shù)碼管的位選線相連接,控制顯示數(shù)字的位;P3.0口(Rxd)與MAX232芯片的T2 OUT引腳相連;P3.1口(Txd)與MAX232芯片的T2 IN引腳相連接。P3.0和P3.1兩端口作為PC和單片機之間的串行通信口,負責兩機之間信息傳輸?shù)臉蛄?。軟件部分是單片機對nRF24L01讀/寫控制使之讀出當前的比分值,并實現(xiàn)與PC的通信。
PC的串口是RS-232電平,單片機的串口是TTL電平,為了使其能夠進行通信,使用集成芯片MAX 232進行電平轉(zhuǎn)換。
2.2 射頻模塊
nRF24L01是單片射頻收發(fā)芯片,工作于2.4~2.5 GHz ISM頻段。低功耗工作電壓為1.9~3.6 V。工作溫度范圍較大,可在-40℃~+80℃內(nèi)正常工作。nRF24L01配外置天線,無阻擋傳輸距離50~100 m,配PCB內(nèi)置天線,無阻擋傳輸距離20~50 m。該芯片有125個通信通道,滿足多點通信和調(diào)頻需要。無線收發(fā)器包括:頻率發(fā)生器、增強型Shock BurstTM模式控制器、功率放大器、晶體振蕩器、調(diào)制器、解調(diào)器。輸出功率、頻道選擇和協(xié)議的設(shè)置可以通過 SPI 接口進行實現(xiàn)。空中數(shù)據(jù)傳輸率最高可達2 Mb/s,有自動應(yīng)答和自動再發(fā)射功能。通過對相應(yīng)寄存器的寫入和讀出來完成對芯片的控制,如實現(xiàn)nRF24L01相應(yīng)寄存器的初始化、識別處理數(shù)據(jù)的收發(fā)情況并確保在數(shù)據(jù)傳輸中不發(fā)生數(shù)據(jù)丟包現(xiàn)象等。其結(jié)構(gòu)框圖如圖3所示。
圖3 nRF24L01結(jié)構(gòu)框圖
PCB布線的好壞對射頻性能有很大影響,一個差的PCB板設(shè)計可能導(dǎo)致丟包,甚至可能導(dǎo)致不能實現(xiàn)其應(yīng)有的功能。nRF24L01的射頻PCB板設(shè)計及其周邊元件包括匹配網(wǎng)絡(luò)等可以從Nordic下載。
使用至少兩層板(包括一個地層)。nRF24L01 的直流供電電源應(yīng)盡可能靠近芯片的VDD引腳,并且經(jīng)高質(zhì)量的RF電容去耦。最好用一個大電容 (比如4.7 μF鉭電容)并聯(lián)一個小電容。nRF24L01的供電電源必須經(jīng)過很好的濾波,并且與數(shù)字供電電源分離。
PCB板避免使用長的電源走線,所有元器件的地、VDD及去耦電容應(yīng)盡可能地靠近nRF24L01芯片。如果在PCB 板的頂層有鋪銅“地”,VSS應(yīng)直接與鋪銅面連接。如果在PCB板的底層有鋪銅“地”,則應(yīng)該在離VSS腳盡可能近的地方放置過孔連接。每個VSS最少應(yīng)有一個過孔。所有數(shù)字信號線和控制信號線都不能離晶振和電源線太近。
2.3 四位LED數(shù)碼管顯示
顯示部分是一個四位8段LED數(shù)碼管。8段數(shù)碼管由多個發(fā)光二極管封裝在一起組成“8”字形,引線在元件內(nèi)部已連接完成,只引出各個筆段和公共電極。其工作環(huán)境范圍寬泛,可達-40℃~+75℃;壽命長,正常情況下可超過80 000小時。數(shù)碼管外殼采用阻燃PC塑料制作,強度高、抗沖擊、抗老化、防紫外線、防塵、防潮。
8段數(shù)碼管可以通過專用驅(qū)動芯片控制,適合各種復(fù)雜工程需求。為了點亮數(shù)碼管,可以選擇靜態(tài)驅(qū)動方式或者動態(tài)驅(qū)動方式。
在本系統(tǒng)中,數(shù)碼管采用動態(tài)驅(qū)動方式。該方式中,四位數(shù)碼管的段選線相應(yīng)地并聯(lián)在一起,由一個8位I/O端口控制,形成了段選線的多路復(fù)用。而位選線分別由相應(yīng)的I/O線控制,實現(xiàn)了各位的分時選通。
2.4 觸摸按鍵
本設(shè)計中發(fā)送端下位機上設(shè)置了幾個按鈕作為直接計分數(shù)據(jù)發(fā)送開關(guān),用于測試和手持式控制,此時不需要上位機。因為本系統(tǒng)中所需按鍵數(shù)較少,故采用彈性小按鍵作為觸摸按鍵,直接用I/O端口線構(gòu)成單個按鍵電路,接口電路配置靈活、軟件結(jié)構(gòu)簡單。按鍵輸入采用低電平有效工作模式。
3.1 發(fā)送端下位機/接收端C51軟件設(shè)計
圖4 硬件資源定義程序流程圖
發(fā)送端下位機/接收端C51程序設(shè)計包含三部分:微控制器的初始化、對nRF24L01的訪問和對四位8段數(shù)碼管的控制。
根據(jù)系統(tǒng)的硬件設(shè)計,需要對nRF24L01模塊和數(shù)碼管顯示模塊進行硬件資源的配置和定義,如圖4所示。
nRF24L01的模式是由PWR_UP、CE和PRIM_RX三個引腳定義的,根據(jù)系統(tǒng)的需要來配置其工作狀態(tài)。在配置時,需要分別根據(jù)這三個引腳的不同狀態(tài)配置不同模式。這里僅僅列出了部分硬件資源的配置情況,更詳細的資料參看芯片手冊。
#define RT_MODEPWR_UP=1; PRIM_RX=0; CE=1;
//收發(fā)模式
#define RT_MODE PWR_UP=1; PRIM_RX=1; CE=0;
//配置模式
#define RT_MODE PWR_UP=1; PRIM_RX=0; CE=0;
//待機模式
#define RT_MODE PWR_UP=0;
//關(guān)機模式
單片機數(shù)據(jù)發(fā)送流程如圖5所示。
圖5 數(shù)據(jù)發(fā)送程序流程圖
(1)將接收機的地址(RX_ADDR)和要發(fā)送的數(shù)據(jù)(TX_DATA)寫入nRF24L01;
(2)配置寄存器(CONFIG寄存器)的工作模式,使其處于發(fā)送模式后,通過微控制器將CE拉高,時長至少10 μs;
(3)讀取狀態(tài)寄存器STATUS內(nèi)的內(nèi)容;
(4)判斷發(fā)送完成標志位是否被置位;
(5)清空標志位和數(shù)據(jù)緩沖,此后,nRF24L01進入空閑狀態(tài)。
單片機數(shù)據(jù)接收流程如圖6所示。
圖6 數(shù)據(jù)接收程序流程圖
(1)將本機的地址和要接收的數(shù)據(jù)寫入nRF24L01;
(2)配置CONFIG寄存器,使其切換為接收模式,然后將CE拉高,時長至少130 μs;
(3)判斷接收完成標志位是否被置位;
(4)清空標志位;
(5)讀取數(shù)據(jù)緩存區(qū)內(nèi)的數(shù)據(jù);
(6)清空數(shù)據(jù)緩沖,此后nRF24L01進入任意模式。
出于節(jié)省I/O口、減小功耗的考慮,數(shù)碼管顯示采用動態(tài)掃描方式,P2.0~P2.3作為位選信號的輸出端,P0.0~P0.7作為段選信號輸出端,利用人眼的視覺暫留現(xiàn)象和二極管的余暉效應(yīng)達到顯示效果。
voiddis_display()
{
P0=seg[count2%10];
led0=0;
Delay(40);
led0=1;
P0=seg[count2/10];
led1=0;
Delay(40);
led1=1;
P0=seg[count1%10];
圖7 單片機串口通信程序流程圖
……}
單片機RS-232串口通信模塊流程圖如圖7所示。
3.2 發(fā)送端上位機主控界面VB軟件設(shè)計
為方便進行一體化控制,如計分數(shù)據(jù)存儲、多場次計分等,本系統(tǒng)設(shè)計了后臺PC上位機主控制界面程序,采用VB6進行程序設(shè)計。上位機和下位機之間采用通用RS232串口進行數(shù)據(jù)通信[4-5]。
后臺主控制程序VB初始化程序如下:
Private SubForm_Load()
Combo1.AddItem "COM1"
//串口選擇
Combo1.AddItem "COM2"
……
Combo2.AddItem "4800"
//波特率
Combo2.AddItem "9600"
Combo2.AddItem "19200"
MSComm1.InputLen = 1
//一次讀取1字節(jié)
MSComm1.InBufferSize = 3
//設(shè)置接收緩沖區(qū)大小3
MSComm1.InBufferCount = 0
//清接收緩沖區(qū)
MSComm1.OutBufferSize = 512
//設(shè)置發(fā)送緩沖區(qū)大小
MSComm1.OutBufferCount = 0
//清發(fā)送緩沖區(qū)
MSComm1.RThreshold = 3
//每接收3個字符觸發(fā)接收事件
MSComm1.SThreshold = 0
//發(fā)送不觸發(fā)Oncomm事件
End Sub
“打開串口”按鈕事件代碼如下:
Private Sub Command11_Click()
Label4.Caption = "串口打開 "
If Form1.Combo1.Text = "COM1" Then
Form1.MSComm1.CommPort = 1
End If
If Form1.Combo1.Text = "COM2" Then
Form1.MSComm1.CommPort = 2
//設(shè)置串口
End If
……
If Form1.Combo2.Text = "4800" Then
Form1.MSComm1.Settings = "4800,N,8,1"
//設(shè)置波特率
End If
If Combo2.Text = "9600" Then
MSComm1.Settings = "9600,N,8,1"
End If
……
Form1.MSComm1.PortOpen = True
//打開串口
End Sub
VB程序設(shè)計相關(guān)事件源代碼如下所示:
A隊“+1分”Click事件代碼如下:
Private Sub Command1_Click()
//1
MSComm1.Output = "1"
End Sub
A隊“+2分”Click事件代碼如下:
Private Sub Command2_Click()
//2
MSComm1.Output = "2"
End Sub
B隊“+1分”Click事件代碼如下:
Private Sub Command5_Click()
//1
MSComm1.Output = "5"
End Sub
B隊“+2分”Click事件代碼如下:
Private Sub Command6_Click()
//2
MSComm1.Output = "6"
End Sub
本文根據(jù)實際需要完成了計分系統(tǒng)的研究與設(shè)計,包括整機設(shè)計、下位機底層硬件和軟件設(shè)計,較好地達到了預(yù)期目標。
本系統(tǒng)充分利用了STC89C52RC單片機微型化、低功耗、抗干擾能力強和nRF24L01可較遠距離傳輸信息等優(yōu)點,節(jié)省了電力和人力成本。該系統(tǒng)可根據(jù)賽制要求更改,以適用于不同的競賽場合。
[1] 李賀,程祥,曾令國. 基于nRF24L01芯片的近程無線通信系統(tǒng)設(shè)計[J]. 現(xiàn)代電子技術(shù), 2014,37(15): 32-34.
[2] 叢林,楊凱,胡文東,等. 基于nRF24L01和STM32L152RD超低功耗無線通信系統(tǒng)[J]. 電視技術(shù), 2013,37(17): 66-69, 101.
[3] 謝明明,陳學(xué)崗,陳常婷. 基于nRF24L01+的數(shù)據(jù)無線傳輸系統(tǒng)的設(shè)計與實現(xiàn)[J]. 電子設(shè)計工程, 2013,21(20): 114-116.
[4] 莢慶,王代華,張志杰. 基于nRF24L01的無線數(shù)據(jù)傳輸系統(tǒng)[J]. 現(xiàn)代電子技術(shù), 2008,31(7): 68-70, 82.
[5] 時志云,王代華,張志杰. 基于nRF24L01和PICl6F877的無線數(shù)據(jù)傳輸系統(tǒng)設(shè)計[J]. 電子測量技術(shù), 2008,31(1): 127-129, 152.
Design of a wireless electronic scoring system based on nRF24L01
Ren Lu1,Li Wenshi1,2,Qian Min1,2
(1. Department of Electronic and Information Engineering, Wenzheng College,Soochow University,Suzhou 215104,China;2. Department of Micro Electronic Engineering, School of Electronic & Information, Soochow University, Suzhou 215006, China)
In this paper, a wireless electronic scoring system based on 51-MCU & nRF24L01 is designed. The system contains two parts which receive and send real-time data through nRF24L01, and then the data are sent to LED displays. The PC upper computer transmits score data to nRF24L01 via RS232 port. Both hardware circuit design and software design are contained in this system. The controlling software of 51-MCU is constructed by C51, and the back-end software of PC is designed with VB6.0. The flow charts of the programs and a picture of running finished products are presented as well.
wireless electronic scoring system; single chip microcontroller; nRF24L01
TP274.2;TN925
A
10.19358/j.issn.1674- 7720.2017.04.020
任璐,李文石,錢敏.基于nRF24L01的無線電子記分系統(tǒng)設(shè)計[J].微型機與應(yīng)用,2017,36(4):66-69.
2016-09-21)
任璐(1994-),女,本科,主要研究方向:集成電路設(shè)計、可編程器件和嵌入式系統(tǒng)。
李文石(1963-),男,博士,教授,主要研究方向:集成電路設(shè)計、可編程器件和嵌入式系統(tǒng)。
錢敏(1970-),通信作者,男,博士,副教授,主要研究方向:集成電路設(shè)計、可編程器件和嵌入式系統(tǒng)。E-mail:qianmin@suda.edu.cn。