任璐1,李文石2,钱敏1,2
(1. 苏州大学 文正学院 电子信息工程系,江苏 苏州 215104;2. 苏州大学 电子信息学院 微电子工程系,江苏 苏州 215006)
摘要:无线记分系统的设计分为发送端和接收端两部分。发送端控制程序通过RS232串口通信发送比分数据到单片机控制的下位机,并经由nRF24L01无线射频模块天线进行数据发送;接收端通过单片机控制的无线射频模块天线接收数据并使用8段LED数码管显示记分情况。系统的整体设计包括硬件电路、软件程序设计;发送端上位机界面程序采用VB6.0设计,发送端下位机和接收端单片机程序采用C51。给出了软件设计流程图、硬件实物运行现场图。测试表明,系统运行性能良好。
关键词:无线计分系统;单片机控制;nRF24L01
中图分类号:TP274.2;TN925文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.04.020
引用格式:任璐,李文石,钱敏.基于nRF24L01的无线电子记分系统设计[J].微型机与应用,2017,36(4):66-69.
0引言
体育比赛深受人们喜爱,比赛记分是比赛过程中的重要部分。大型比赛采用昂贵的大型电子记分系统,然而大部分中小型球赛依旧采用传统人工翻牌的记分模式。针对以上问题,本文设计了一款轻巧的便携型式电子无线遥控记分系统,成本相对低廉[1]。该系统采用Nordic公司的nRF24L01无线通信收发芯片和STC公司的STC89C52RC单片机。系统的硬件电路简单,电路制作费用低[23]。经过多次实验测试,系统的工作性能稳定,效果良好,可以广泛运用于中小型球类比赛。
1系统总体方案
该无线遥控记分系统由发送端、接收端两部分组成。发送端由上、下位机两部分组成。下位机由触摸按键、LED显示数码管、nRF24L01射频发送模块和MCU核心处理单元构成;上位机采用PC,通过普通9针RS232串口与下位机通信。接收端由nRF24L01射频接收模块、MCU核心处理单元、LED显示数码管组成。系统结构如图1所示。
2系统硬件设计
发送端下位机硬件系统包括:主控制单元、射频收发模块、晶振电路、复位电路、显示单元、串口通信单元(包括电平转换模块)、电源模块等。接收端包括:主控制单元、射频收发模块、晶振电路、复位电路、显示单元、电源模块等,整体电路原理如图2所示。下面介绍主要部分电路的设计。
2.1核心处理单元
核心处理单元采用STC公司生产的低功耗、高性能、超强抗干扰的微控制器STC89C52RC。其基于CMOS工艺,携有8 KB在系统可编程Flash存储器,与80C51产品指令和引脚完全兼容,能为众多嵌入式控制应用系统提供高灵活度、非常有效的解决方案。
STC89C52RC单片机内部资源丰富,系统设计过程中充分利用这一特性,将其作为主控芯片,没有增加过多外设。单片机的I/O端口具体资源利用情况如下:P1口及中断与nRF24L01射频收发模块相连接,控制信息的发送/接收;P0口与数码管的段选线连接,控制显示的字段;P2端口与数码管的位选线相连接,控制显示数字的位;P3.0口(Rxd)与MAX232芯片的T2 OUT引脚相连;P3.1口(Txd)与MAX232芯片的T2 IN引脚相连接。P3.0和P3.1两端口作为PC和单片机之间的串行通信口,负责两机之间信息传输的桥梁。软件部分是单片机对nRF24L01读/写控制使之读出当前的比分值,并实现与PC的通信。
PC的串口是RS-232电平,单片机的串口是TTL电平,为了使其能够进行通信,使用集成芯片MAX 232进行电平转换。
2.2射频模块
nRF24L01是单片射频收发芯片,工作于2.4~2.5 GHz ISM频段。低功耗工作电压为1.9~3.6 V。工作温度范围较大,可在-40℃~+80℃内正常工作。nRF24L01配外置天线,无阻挡传输距离50~100 m,配PCB内置天线,无阻挡传输距离20~50 m。该芯片有125个通信通道,满足多点通信和调频需要。无线收发器包括:频率发生器、增强型Shock BurstTM模式控制器、功率放大器、晶体振荡器、调制器、解调器。输出功率、频道选择和协议的设置可以通过 SPI 接口进行实现。空中数据传输率最高可达2 Mb/s,有自动应答和自动再发射功能。通过对相应寄存器的写入和读出来完成对芯片的控制,如实现nRF24L01相应寄存器的初始化、识别处理数据的收发情况并确保在数据传输中不发生数据丢包现象等。其结构框图如图3所示。
PCB布线的好坏对射频性能有很大影响,一个差的PCB板设计可能导致丢包,甚至可能导致不能实现其应有的功能。nRF24L01的射频PCB板设计及其周边元件包括匹配网络等可以从Nordic下载。
使用至少两层板(包括一个地层)。nRF24L01 的直流供电电源应尽可能靠近芯片的VDD引脚,并且经高质量的RF电容去耦。最好用一个大电容 (比如4.7 μF钽电容)并联一个小电容。nRF24L01的供电电源必须经过很好的滤波,并且与数字供电电源分离。
PCB板避免使用长的电源走线,所有元器件的地、VDD及去耦电容应尽可能地靠近nRF24L01芯片。如果在PCB 板的顶层有铺铜“地”,VSS应直接与铺铜面连接。如果在PCB板的底层有铺铜“地”,则应该在离VSS脚尽可能近的地方放置过孔连接。每个VSS最少应有一个过孔。所有数字信号线和控制信号线都不能离晶振和电源线太近。
2.3四位LED数码管显示
显示部分是一个四位8段LED数码管。8段数码管由多个发光二极管封装在一起组成“8”字形,引线在元件内部已连接完成,只引出各个笔段和公共电极。其工作环境范围宽泛,可达-40℃~+75℃;寿命长,正常情况下可超过80 000小时。数码管外壳采用阻燃PC塑料制作,强度高、抗冲击、抗老化、防紫外线、防尘、防潮。
8段数码管可以通过专用驱动芯片控制,适合各种复杂工程需求。为了点亮数码管,可以选择静态驱动方式或者动态驱动方式。
在本系统中,数码管采用动态驱动方式。该方式中,四位数码管的段选线相应地并联在一起,由一个8位I/O端口控制,形成了段选线的多路复用。而位选线分别由相应的I/O线控制,实现了各位的分时选通。
2.4触摸按键
本设计中发送端下位机上设置了几个按钮作为直接计分数据发送开关,用于测试和手持式控制,此时不需要上位机。因为本系统中所需按键数较少,故采用弹性小按键作为触摸按键,直接用I/O端口线构成单个按键电路,接口电路配置灵活、软件结构简单。按键输入采用低电平有效工作模式。
3系统软件设计
3.1发送端下位机/接收端C51软件设计
发送端下位机/接收端C51程序设计包含三部分:微控制器的初始化、对nRF24L01的访问和对四位8段数码管的控制。
根据系统的硬件设计,需要对nRF24L01模块和数码管显示模块进行硬件资源的配置和定义,如图4所示。
nRF24L01的模式是由PWR_UP、CE和PRIM_RX三个引脚定义的,根据系统的需要来配置其工作状态。在配置时,需要分别根据这三个引脚的不同状态配置不同模式。这里仅仅列出了部分硬件资源的配置情况,更详细的资料参看芯片手册。
#define RT_MODEPWR_UP=1; PRIM_RX=0; CE=1;//收发模式
#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; //关机模式
单片机数据发送流程如图5所示。
(1)将接收机的地址(RX_ADDR)和要发送的数据(TX_DATA)写入nRF24L01;
(2)配置寄存器(CONFIG寄存器)的工作模式,使其处于发送模式后,通过微控制器将CE拉高,时长至少10 μs;
(3)读取状态寄存器STATUS内的内容;
(4)判断发送完成标志位是否被置位;
(5)清空标志位和数据缓冲,此后,nRF24L01进入空闲状态。
单片机数据接收流程如图6所示。
(1)将本机的地址和要接收的数据写入nRF24L01;
(2)配置CONFIG寄存器,使其切换为接收模式,然后将CE拉高,时长至少130 μs;
(3)判断接收完成标志位是否被置位;
(4)清空标志位;
(5)读取数据缓存区内的数据;
(6)清空数据缓冲,此后nRF24L01进入任意模式。
出于节省I/O口、减小功耗的考虑,数码管显示采用动态扫描方式,P2.0~P2.3作为位选信号的输出端,P0.0~P0.7作为段选信号输出端,利用人眼的视觉暂留现象和二极管的余晖效应达到显示效果。
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发送端上位机主控界面VB软件设计
为方便进行一体化控制,如计分数据存储、多场次计分等,本系统设计了后台PC上位机主控制界面程序,采用VB6进行程序设计。上位机和下位机之间采用通用RS232串口进行数据通信[45]。
后台主控制程序VB初始化程序如下:
Private SubForm_Load()
Combo1.AddItem "COM1"//串口选择
Combo1.AddItem "COM2"
……
Combo2.AddItem "4800"//波特率
Combo2.AddItem "9600"
Combo2.AddItem "19200"
MSComm1.InputLen = 1 //一次读取1字节
MSComm1.InBufferSize = 3 //设置接收缓冲区大小3
MSComm1.InBufferCount = 0 //清接收缓冲区
MSComm1.OutBufferSize = 512//设置发送缓冲区大小
MSComm1.OutBufferCount = 0 //清发送缓冲区
MSComm1.RThreshold = 3 //每接收3个字符触发接收事件
MSComm1.SThreshold = 0//发送不触发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结论
本文根据实际需要完成了计分系统的研究与设计,包括整机设计、下位机底层硬件和软件设计,较好地达到了预期目标。
本系统充分利用了STC89C52RC单片机微型化、低功耗、抗干扰能力强和nRF24L01可较远距离传输信息等优点,节省了电力和人力成本。该系统可根据赛制要求更改,以适用于不同的竞赛场合。
参考文献
[1] 李贺,程祥,曾令国. 基于nRF24L01芯片的近程无线通信系统设计[J]. 现代电子技术, 2014,37(15): 32-34.
[2] 丛林,杨凯,胡文东,等. 基于nRF24L01和STM32L152RD超低功耗无线通信系统[J]. 电视技术, 2013,37(17): 66-69, 101.
[3] 谢明明,陈学岗,陈常婷. 基于nRF24L01+的数据无线传输系统的设计与实现[J]. 电子设计工程, 2013,21(20): 114-116.
[4] 荚庆,王代华,张志杰. 基于nRF24L01的无线数据传输系统[J]. 现代电子技术, 2008,31(7): 68-70, 82.
[5] 时志云,王代华,张志杰. 基于nRF24L01和PICl6F877的无线数据传输系统设计[J]. 电子测量技术, 2008,31(1): 127-129, 152.