《电子技术应用》
您所在的位置:首页 > 模拟设计 > 设计应用 > 基于nRF24L01和PIC16F877无线数据传输系统设计
基于nRF24L01和PIC16F877无线数据传输系统设计
摘要: 本文设计了一个无线数据传输系统,它应用Microchip公司的PIC16F877单片机控制Nordic公司的无线数字传输芯片nRF24L01 ,通过无线方式进行数据双向传输。实验结果证明:该系统使用灵活、成本低廉,可方便地嵌入到无线监测系统中。
Abstract:
Key words :

  引言

  在工业控制现场, 常常需要采集大量的现场数据, 如温度、湿度、气压等, 并将这些数据传输到主机进行处理,由主机根据处理的结果, 将控制信号传输给现场执行模块进行各种操作。可以看出数据从采集设备到处理终端,监测控制指令从处理终端到采集设备,均需经过传输过程这一重要环节。当数据采集点处于运动状态,或者所处的环境不允许铺设电缆,采集设备必须与终端设备分离,此时只能通过无线方式进行数据传输。基于此,本文设计了一个无线数据传输系统,它应用Microchip公司的PIC16F877单片机控制Nordic公司的无线数字传输芯片nRF24L01 ,通过无线方式进行数据双向传输。实验结果证明:该系统使用灵活、成本低廉,可方便地嵌入到无线监测系统中。

  1.系统总体结构设计

  图1为系统设计总体框图。此无线数据传输系统主控制芯片采用Microchip公司的PIC16F877微处理器,它负责控制无线芯片L01,实现数据的无线传输。为了进行多通道的数据采集,这里采用10片A/D进行分时采样,它们的工作时序则由CPLD来控制,每路采集的数据经单片机处理后无线发射,至于何时采样,则由单片机发的Trigger信号决定。 在与计算机的通讯方面,系统采用USB芯片通过USB口将无线接收数据送入计算机,并存储在一个二进制文件内,当传输完毕后,运行VB读数软件,可将采集的信号读出以供分析。

  2.系统硬件设计

  2.1 数据采集部分

  数据采集部分主要由传感器、低通滤波放大器、A/D以及CPLD组成,电源管理则主要为各个芯片提供合适工作电压,并为CPLD提供1MHZ主时钟输入。此系统采用10片AD7492,可进行10路模拟信号的采样。CPLD主要控制10片A/D的采样和读数时序,采样率由CPLD内部分频器和无线传输率大小决定。为了配合无线传输模块的工作,这里采用触发采样。即在CPLD内部设计D触发器,并用VCC连接D输入端,Trigger信号作为时钟输入,如图2所示。系统上电后,CPLD便检测其引脚Trigger端,当出现上升沿时, D触发器输出高电平,打开与非门,Convast就会输出1KHz信号,A/D采样开始。

  

  2.2 无线传输部分

  数据传输主要利用PIC16F877单片机对无线射频芯片L01的控制实现的。nRF24L01是单片射频收发芯片,工作于2.4~2.5GHzISM频段,工作电压为1.9V~3.6V,工作温度为- 40℃~+ 85℃,有多达125个频道可供选择,最高通信速率2Mbit/s ,具有自动应答和重发功能,其工作参数全部通过芯片状态字配置,而这些配置字是由PIC16F877通过SPI[1]访问L01的。L01主要技术为:

  工作模式 :CE,CSN,SCK,MOSI,MISO,IRQ这6个管脚为该芯片的控制引脚。微处理器通过对这6个引脚的控制就可以决定该芯片的工作模式。当PWR_UP、PRIM_RX和CE为“111”时,L01处于接收模式;为“101”时处于发射模式;为“1X0”时处于空闲模式1;为“0XX”时处于掉电模式。

  增强型ShockBurst技术:L01融进了增强型ShockBurst技术,该项技术使得双向通信协议变得简单。在一个典型的双向通信中,接收方在收到发射方的数据时,将会向发射方回传一个应答信号,若接收方未收到该数据,发射方在等待一定延迟时间后将自动重发此包数据(在自动重发功能开启的情况下),这都不需要CPU的参与。

  数据通道:当L01处于接收状态时,它可以接收来自6个不同通道的数据。每个通道都有一个属于自己的通道地址,但共享同一频道。也就是说,一个配置为接收模式的L01可以和6个配置为发射模式下的L01进行通信,接收机可以根据它们的通道地址进行区分。通道0有一个40位的地址,通道1—5则共享高32位地址,只是低8位不同。每个通道都能开启自动重发射和自动应答功能。处于接收状态下的L01在回传应答信号时,将利用该接收通道的地址作为发射应答信号的发射地址。在发射设备中,通道0常用于接收应答信号。发射数据的地址必须和接收通道0的地址一致 ,这样才能有效地接收应答信号。

  数据包描述:“1字节字头 + 3~5字节地址 + 9Bit标志位 + 1~2字节CRC”。 当L01要发送数据时,微控制器要先把地址和有效数据写入L01缓存区,然后由L01自动产生字头和CRC校验码,之后再发射出去。

  2.3 USB接口设计

  系统采用USB芯片FT245,由单片机控制读写操作。FT245提供了一些状态标志位(RXF,TXE)供单片机查询,以便让单片机发读写脉冲执行读写操作,控制非常简单。

  3.软件设计

  要设计好系统的软件,必须清楚其工作原理:首先给发射机上电,配置其L01为PRX,使其进入接收模式等待主机的握手指令,此时采集装置并未开始工作。然后将接收机通过USB接口连接计算机,运行VB程序,点击开始试验按钮,握手指令(H’33’)便通过接收机的L01 (上电配置为PTX)发射出去,发射机在接收到握手指令后,还要做出判断,若不是H’33’,则继续等待握手指令;若是,表示双方建立连接成功,此时发射机的L01便配置为PTX,同时单片机向采集装置发送一脉宽为3.6us的高电平脉冲以激活A/D,使其开始采样,采样率为1KHz。由于每路传感器信号都要被A/D采样,并转换为12bit数字量(认为是2 Byte),那么10通道则为20 Byte,经过单片机处理后再送入L01打包发射。350us之后,接收机收到该数据,并通过单片机和USB芯片实时写入计算机缓存区内,这样双方数据传输10000次,每次20Byte,传输完毕后数据曲线会在VB界面上实时显示。

  基于以上分析,该系统软件分为两部分:单片机控制程序和计算机界面程序。前者主要完成以nRF24L01为核心的多通道信号的采集和无线传输,后者则完成信号的显示,以供研究人员分析。本文只介绍控制程序,它采用模块化程序设计方法, 分为发射机程序和接收机程序两部分。其流程图如图3所示。

  

  由于采集系统以1KHz进行采样,即每1ms送20Byte数据,因此无线部分进行一次传输需1ms。若接收机执行接收子程序不够1ms,则必须通过延迟补够,以和发射同步。另外,在接收机程序中特设置800us定时器中断,以防接收机因接收不到数据而长时间等待,影响数据的传输效率。

  4.问题分析

  本系统在运行时出现了一些问题,使其不能正常工作,现说明如下:

  ① L01在收发转换时出现问题;

  原因:配置字并未写入L01内。

  ② 数据传输时发现其低八位为零,但高四位有数;

  原因:开启了单片机的PSP功能,导致D口不能用了。

  ③ 数据传输波形图严重失真;

  原因:无线模块在收发同步上存在问题,数据包之间没有一一对应。

  5.实验结果

  本系统需进行10000次数据传输,每次传输20字节。传输数据时务必保证发射机和接收机的同步性,否则数据包之间将会出现错位,得到的数据曲线会严重失真,影响分析,所以同步问题在无线数据传输系统占重要地位。现附上本系统在同步良好情况下的无线数据传输波形图,见图4。图中的10条曲线是传感器信号被10片A/D采样后经无线传输至计算机后通过VB界面显示出的,中间幅值较高的曲线是两路正弦波,其余为基线。

  

  6.结论

  本系统控制方便、工作稳定,能实现可靠的无线数据传输。经大量实验测得:该系统的平均传输率可以达到256Kbps,平均误码率只有0.2%,可满足绝大部分无线数据传输的需要。

此内容为AET网站原创,未经授权禁止转载。