基于nRF24L01和PIC16F877无线数据传输

发布时间:2010-11-18 11:32    发布者:eetech
关键词: nRF24L01 , PIC16F877 , 数据传输 , 无线
在工业控制现场, 常常需要采集大量的现场数据, 如温度、湿度、气压等, 并将这些数据传输到主机进行处理,由主机根据处理的结果, 将控制信号传输给现场执行模块进行各种操作。可以看出数据从采集设备到处理终端,监测控制指令从处理终端到采集设备,均需经过传输过程这一重要环节。当数据采集点处于运动状态,或者所处的环境不允许铺设电缆,采集设备必须与终端设备分离,此时只能通过无线方式进行数据传输。基于此,本文设计了一个无线数据传输系统,它应用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访问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%,可满足绝大部分无线数据传输的需要。
本文地址:https://www.eechina.com/thread-40465-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
QQ42142951 发表于 2011-7-25 10:26:33
Nordic是专业的射频品牌,公司绝对优势配合提供NRF24L01/NRF24L01+/NRF24LE1/NRF24LU1P/NRF905/NRF24AP2系列,在研发样品阶段需要样品支持,试产阶段需要少批量支持,大批量生产阶段需要长期稳定供应,甚至协助做产品优化,请随时联系!13510620050
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表