《電子技術應用》
您所在的位置:首頁 > 通信與網(wǎng)絡 > 設計應用 > 基于nRF24L01的無線電子記分系統(tǒng)設計
基于nRF24L01的無線電子記分系統(tǒng)設計
2017年微型機與應用第4期
任璐1,,李文石2,錢敏1,2
1. 蘇州大學 文正學院 電子信息工程系,江蘇 蘇州 215104;2. 蘇州大學 電子信息學院 微電子工程系,江蘇 蘇州 215006
摘要: 無線記分系統(tǒng)的設計分為發(fā)送端和接收端兩部分,。發(fā)送端控制程序通過RS232串口通信發(fā)送比分數(shù)據(jù)到單片機控制的下位機,并經由nRF24L01無線射頻模塊天線進行數(shù)據(jù)發(fā)送;接收端通過單片機控制的無線射頻模塊天線接收數(shù)據(jù)并使用8段LED數(shù)碼管顯示記分情況,。系統(tǒng)的整體設計包括硬件電路、軟件程序設計,;發(fā)送端上位機界面程序采用VB6.0設計,,發(fā)送端下位機和接收端單片機程序采用C51,。給出了軟件設計流程圖、硬件實物運行現(xiàn)場圖,。測試表明,,系統(tǒng)運行性能良好。
Abstract:
Key words :

  任璐1,,李文石2,,錢敏1,2

  (1. 蘇州大學 文正學院 電子信息工程系,江蘇 蘇州 215104,;2. 蘇州大學 電子信息學院 微電子工程系,,江蘇 蘇州 215006)

       摘要:無線記分系統(tǒng)的設計分為發(fā)送端和接收端兩部分。發(fā)送端控制程序通過RS232串口通信發(fā)送比分數(shù)據(jù)到單片機控制的下位機,,并經由nRF24L01無線射頻模塊天線進行數(shù)據(jù)發(fā)送,;接收端通過單片機控制的無線射頻模塊天線接收數(shù)據(jù)并使用8段LED數(shù)碼管顯示記分情況。系統(tǒng)的整體設計包括硬件電路,、軟件程序設計,;發(fā)送端上位機界面程序采用VB6.0設計,發(fā)送端下位機和接收端單片機程序采用C51,。給出了軟件設計流程圖,、硬件實物運行現(xiàn)場圖。測試表明,,系統(tǒng)運行性能良好,。

  關鍵詞無線計分系統(tǒng);單片機控制,;nRF24L01

  中圖分類號:TP274.2,;TN925文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.04.020

  引用格式:任璐,李文石,,錢敏.基于nRF24L01的無線電子記分系統(tǒng)設計[J].微型機與應用,,2017,36(4):66-69.

0引言

  體育比賽深受人們喜愛,比賽記分是比賽過程中的重要部分,。大型比賽采用昂貴的大型電子記分系統(tǒng),,然而大部分中小型球賽依舊采用傳統(tǒng)人工翻牌的記分模式。針對以上問題,,本文設計了一款輕巧的便攜型式電子無線遙控記分系統(tǒng),,成本相對低廉[1]。該系統(tǒng)采用Nordic公司的nRF24L01無線通信收發(fā)芯片和STC公司的STC89C52RC單片機,。系統(tǒng)的硬件電路簡單,,電路制作費用低[23]。經過多次實驗測試,系統(tǒng)的工作性能穩(wěn)定,,效果良好,,可以廣泛運用于中小型球類比賽。

1系統(tǒng)總體方案

  該無線遙控記分系統(tǒng)由發(fā)送端,、接收端兩部分組成,。發(fā)送端由上、下位機兩部分組成,。下位機由觸摸按鍵、LED顯示數(shù)碼管,、nRF24L01射頻發(fā)送模塊和MCU核心處理單元構成,;上位機采用PC,通過普通9針RS232串口與下位機通信,。接收端由nRF24L01射頻接收模塊,、MCU核心處理單元、LED顯示數(shù)碼管組成,。系統(tǒng)結構如圖1所示,。 

001.jpg

2系統(tǒng)硬件設計

  發(fā)送端下位機硬件系統(tǒng)包括:主控制單元、射頻收發(fā)模塊,、晶振電路,、復位電路、顯示單元,、串口通信單元(包括電平轉換模塊),、電源模塊等。接收端包括:主控制單元,、射頻收發(fā)模塊,、晶振電路、復位電路,、顯示單元,、電源模塊等,整體電路原理如圖2所示,。下面介紹主要部分電路的設計,。

002.jpg

  2.1核心處理單元

  核心處理單元采用STC公司生產的低功耗、高性能,、超強抗干擾的微控制器STC89C52RC,。其基于CMOS工藝,攜有8 KB在系統(tǒng)可編程Flash存儲器,,與80C51產品指令和引腳完全兼容,,能為眾多嵌入式控制應用系統(tǒng)提供高靈活度、非常有效的解決方案。

  STC89C52RC單片機內部資源豐富,,系統(tǒng)設計過程中充分利用這一特性,,將其作為主控芯片,沒有增加過多外設,。單片機的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進行電平轉換,。

  2.2射頻模塊

  nRF24L01是單片射頻收發(fā)芯片,工作于2.4~2.5 GHz ISM頻段,。低功耗工作電壓為1.9~3.6 V,。工作溫度范圍較大,可在-40℃~+80℃內正常工作,。nRF24L01配外置天線,,無阻擋傳輸距離50~100 m,配PCB內置天線,,無阻擋傳輸距離20~50 m,。該芯片有125個通信通道,滿足多點通信和調頻需要,。無線收發(fā)器包括:頻率發(fā)生器,、增強型Shock BurstTM模式控制器、功率放大器,、晶體振蕩器,、調制器、解調器,。輸出功率,、頻道選擇和協(xié)議的設置可以通過 SPI 接口進行實現(xiàn),。空中數(shù)據(jù)傳輸率最高可達2 Mb/s,,有自動應答和自動再發(fā)射功能,。通過對相應寄存器的寫入和讀出來完成對芯片的控制,如實現(xiàn)nRF24L01相應寄存器的初始化,、識別處理數(shù)據(jù)的收發(fā)情況并確保在數(shù)據(jù)傳輸中不發(fā)生數(shù)據(jù)丟包現(xiàn)象等,。其結構框圖如圖3所示?!?/p>

003.jpg

  PCB布線的好壞對射頻性能有很大影響,,一個差的PCB板設計可能導致丟包,甚至可能導致不能實現(xiàn)其應有的功能,。nRF24L01的射頻PCB板設計及其周邊元件包括匹配網(wǎng)絡等可以從Nordic下載,。

  使用至少兩層板(包括一個地層)。nRF24L01 的直流供電電源應盡可能靠近芯片的VDD引腳,,并且經高質量的RF電容去耦。最好用一個大電容 (比如4.7 μF鉭電容)并聯(lián)一個小電容,。nRF24L01的供電電源必須經過很好的濾波,,并且與數(shù)字供電電源分離。

  PCB板避免使用長的電源走線,,所有元器件的地,、VDD及去耦電容應盡可能地靠近nRF24L01芯片。如果在PCB 板的頂層有鋪銅“地”,,VSS應直接與鋪銅面連接,。如果在PCB板的底層有鋪銅“地”,則應該在離VSS腳盡可能近的地方放置過孔連接,。每個VSS最少應有一個過孔,。所有數(shù)字信號線和控制信號線都不能離晶振和電源線太近。

  2.3四位LED數(shù)碼管顯示

  顯示部分是一個四位8段LED數(shù)碼管,。8段數(shù)碼管由多個發(fā)光二極管封裝在一起組成“8”字形,,引線在元件內部已連接完成,只引出各個筆段和公共電極,。其工作環(huán)境范圍寬泛,,可達-40℃~+75℃;壽命長,,正常情況下可超過80 000小時,。數(shù)碼管外殼采用阻燃PC塑料制作,強度高,、抗沖擊,、抗老化,、防紫外線、防塵,、防潮,。

  8段數(shù)碼管可以通過專用驅動芯片控制,適合各種復雜工程需求,。為了點亮數(shù)碼管,,可以選擇靜態(tài)驅動方式或者動態(tài)驅動方式。

  在本系統(tǒng)中,,數(shù)碼管采用動態(tài)驅動方式,。該方式中,四位數(shù)碼管的段選線相應地并聯(lián)在一起,,由一個8位I/O端口控制,,形成了段選線的多路復用。而位選線分別由相應的I/O線控制,,實現(xiàn)了各位的分時選通,。

  2.4觸摸按鍵

  本設計中發(fā)送端下位機上設置了幾個按鈕作為直接計分數(shù)據(jù)發(fā)送開關,用于測試和手持式控制,,此時不需要上位機,。因為本系統(tǒng)中所需按鍵數(shù)較少,故采用彈性小按鍵作為觸摸按鍵,,直接用I/O端口線構成單個按鍵電路,,接口電路配置靈活、軟件結構簡單,。按鍵輸入采用低電平有效工作模式,。

3系統(tǒng)軟件設計

  3.1發(fā)送端下位機/接收端C51軟件設計

004.jpg

  發(fā)送端下位機/接收端C51程序設計包含三部分:微控制器的初始化、對nRF24L01的訪問和對四位8段數(shù)碼管的控制,。

  根據(jù)系統(tǒng)的硬件設計,,需要對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; //關機模式

  單片機數(shù)據(jù)發(fā)送流程如圖5所示。

005.jpg

   (1)將接收機的地址(RX_ADDR)和要發(fā)送的數(shù)據(jù)(TX_DATA)寫入nRF24L01,;

 ?。?)配置寄存器(CONFIG寄存器)的工作模式,,使其處于發(fā)送模式后,通過微控制器將CE拉高,,時長至少10 μs,;

  (3)讀取狀態(tài)寄存器STATUS內的內容,;

 ?。?)判斷發(fā)送完成標志位是否被置位;

 ?。?)清空標志位和數(shù)據(jù)緩沖,,此后,nRF24L01進入空閑狀態(tài),。

  單片機數(shù)據(jù)接收流程如圖6所示,。

006.jpg

  (1)將本機的地址和要接收的數(shù)據(jù)寫入nRF24L01,;

 ?。?)配置CONFIG寄存器,使其切換為接收模式,,然后將CE拉高,,時長至少130 μs;

 ?。?)判斷接收完成標志位是否被置位;

 ?。?)清空標志位,;

  (5)讀取數(shù)據(jù)緩存區(qū)內的數(shù)據(jù),;

 ?。?)清空數(shù)據(jù)緩沖,此后nRF24L01進入任意模式,。

  出于節(jié)省I/O口,、減小功耗的考慮,數(shù)碼管顯示采用動態(tài)掃描方式,,P2.0~P2.3作為位選信號的輸出端,,P0.0~P0.7作為段選信號輸出端,利用人眼的視覺暫留現(xiàn)象和二極管的余暉效應達到顯示效果,。

  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所示,。

007.jpg

  3.2發(fā)送端上位機主控界面VB軟件設計

  為方便進行一體化控制,如計分數(shù)據(jù)存儲,、多場次計分等,,本系統(tǒng)設計了后臺PC上位機主控制界面程序,,采用VB6進行程序設計。上位機和下位機之間采用通用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 //設置接收緩沖區(qū)大小3

  MSComm1.InBufferCount = 0 //清接收緩沖區(qū)

  MSComm1.OutBufferSize = 512//設置發(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 //設置串口

  End If

  ……

  If Form1.Combo2.Text = "4800" Then

  Form1.MSComm1.Settings = "4800,N,8,1" //設置波特率

  End If

  If Combo2.Text = "9600" Then

  MSComm1.Settings = "9600,N,8,1"

  End If

  ……

  Form1.MSComm1.PortOpen = True//打開串口

  End Sub

  VB程序設計相關事件源代碼如下所示:

  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

4結論

  本文根據(jù)實際需要完成了計分系統(tǒng)的研究與設計,包括整機設計,、下位機底層硬件和軟件設計,較好地達到了預期目標,。

  本系統(tǒng)充分利用了STC89C52RC單片機微型化,、低功耗、抗干擾能力強和nRF24L01可較遠距離傳輸信息等優(yōu)點,,節(jié)省了電力和人力成本,。該系統(tǒng)可根據(jù)賽制要求更改,以適用于不同的競賽場合,。

參考文獻

 ?。?] 李賀,程祥,曾令國. 基于nRF24L01芯片的近程無線通信系統(tǒng)設計[J]. 現(xiàn)代電子技術, 2014,37(15): 32-34.

  [2] 叢林,楊凱,胡文東,等. 基于nRF24L01和STM32L152RD超低功耗無線通信系統(tǒng)[J]. 電視技術, 2013,37(17): 66-69, 101.

 ?。?] 謝明明,陳學崗,陳常婷. 基于nRF24L01+的數(shù)據(jù)無線傳輸系統(tǒng)的設計與實現(xiàn)[J]. 電子設計工程, 2013,21(20): 114-116.

 ?。?] 莢慶,王代華,張志杰. 基于nRF24L01的無線數(shù)據(jù)傳輸系統(tǒng)[J]. 現(xiàn)代電子技術, 2008,31(7): 68-70, 82.

  [5] 時志云,王代華,張志杰. 基于nRF24L01和PICl6F877的無線數(shù)據(jù)傳輸系統(tǒng)設計[J]. 電子測量技術, 2008,31(1): 127-129, 152.


此內容為AET網(wǎng)站原創(chuàng),,未經授權禁止轉載,。