DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 744|回复: 0
打印 上一主题 下一主题

[无线] 基于MSP430和nRF40l的 无线自动抄表系统

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-4 23:11:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
基于MSP430和nRF40l的 无线自动抄表系统

摘要:介绍了一种基于MSP430和nRF401的家用射频无线自动抄表系统,详细地叙述了系统设计原理与软硬件的实现方法。     关键词:MSP430 nRF401 无线传输 自动抄表 家庭内部
传统的抄表收费方式存在许多弊端,如入户麻烦、管理费用过高、存在安全隐患等,已不适应现代物业管理的需要。小区自动抄表系统具有节省时间、人力、物力,提高工作效率,降低物业成本,可以准确及时地将用户三表数据抄送上来等优点,是抄表收费系统发展的趋势。为了在已建成的小区中方便地使用自动抄表系统,免除家庭内部重新布线的不便,设计了一个应用于家庭内部的短距离无线抄表系统。
1 系统的总体结构
图1为短距离无线抄表系统的总体结构,它可用于家庭内部三表或多表数据的抄送。系统下层直接与水表、电表、煤气表等连接,上层可以通过电话、以太网、GSM或GPRS等与抄表中心连接,实现数据的远程抄送。

系统一般使用被动抄表方式。上层模块接收到仪表中心的抄表命令时,通过无线方式向下层模块发送抄表指令。下层模块接收到指令后通过485总线采集三表的数据,将数据打包后通过无线通讯芯片发送出去。上层模块收到数据后,将数据解包,发送给抄表中心。系统也可采用主动抄表,即下层模块定时采集三表数据,发送到上层模块,再由上层模块发送到仪表中心。
2 系统的硬件实现
2.1 系统硬件结构
图2为系统的硬件结构。系统的MCU使用TI公司MSP430系列中的F123型,通过nRF401芯片实现无线数据收发,并通过MAX3485芯片及485总线与三表(下层模块)或电话、网络等(上层模块)连接。如果需要与232总线或仪表总线等连接,只需更换转换芯片即可方便地连接。通过液晶和简易键盘,用户可以查看三表的数据并对仪表地址进行设定。
2.2 主要系统器件介绍
无线通讯使用Nordic公司的单片收发芯片nRF401。这是一个为433MHz ISM频段设计的真正单片UHF无线收发芯片,它采用FSK调制解调技术。nRF401的最高工作速度可以达到20kbps,发射功率可调,最大为+10dBm。天线接口设计为差分天线,便于使用低成本的PCB天线。该芯片具有待机模式,可以更省电和高效。nRF401的工作电压范围为2.7V~5.25V,发射电流约为8mA~18mA(—10dB输出),接收电流约为10mA,待机电流为8μA。

    nRF401可以通过串行接口与单片机直接相连,无需复杂的编码,所需的外围器件很少,使用简单。其电路原理图如图3所示。
系统的MCU使用TI公司的MSP430系列,是一种具有超低功耗特性的功能强大的16位单片机。当运行在1MHz时钟条件下时,工作电流可因工作模式不同在0.1pμA~200μA(2.2V)之间,工作电压为1.8V~3.6V。其高效率精简16位指令结构可以确保任何任务的快速执行,大多数指令可以在一个时钟周期内完成;它还具有高级语言编程的能力,可以加速软件的开发。
本系统使用的是该系列的F123型,具有8KB+256Byte Flash Memory和256Byte RAM以及一个串口和一个定时器。
485芯片使用MAX公司的MAX3485芯片,不需485总线传输时可工作在关断模式下,在该模式下所需的电流小于1μA。


图3


    2.3 硬件设计中的注意事项
射频电路部分会受到数字电路部分的干扰。天线到射频芯片的输入信号可能小于1μV,所以数字信号与射频信号强度之间的差别可以达到100万倍(120dB)。如果这些信号没有被恰当地隔离或屏蔽,射频信号就将被干扰,传输性能会受到非常严重的影响。另外射频部分对电压的波动非常敏感,所以电源的噪声会严重影响传输性能。
因此,射频部分电路的设计就显得非常重要。在设计中应遵循以下原则:首先一定要有一个可靠的地平面,电源地应该直接与射频部分的地相连;其次,与地平面的连接越短越好。与地连接的焊盘应该在附近设置一个过孔,并且两个接地焊盘不可以共用一个过孔。解耦电容应该尽量靠近需要解耦的引脚,每个需要解耦的节点单独使用一个解耦电容。恰当地选择电容大小会起到很好的效果。电源要采用星形布线,即不同部分(数字部分、模拟部分、射频部分)的电源线分别直接从总电源引出,并且分别解耦,如图4所示。这样可以有效地防止电源噪声的干扰。
3 系统的软件设计
3.1 软件流程
系统软件分上层模块软件和下层模块软件两部分,图5和图6分别为系统上、下层模块软件流程图。
上层模块收到抄表中心的命令后,通过射频无线通讯方式向下层模块发送命令,同时开始计时。如果下层模块没有数据返回,超时后上层模块会重新发送命令。如果超过三次仍未有数据返回,则认为是下层模块工作异常,向抄表中心返回异常信号。
下层模块收到上层模块发来的抄表命令,首先检查地址。如果地址不符,说明命令是发给其它模块的,则丢弃命令,继续等待。如果地址符合,则将上层模块发来的命令转发给仪表,等待数据返回。如果超时则重新发送,超时三次则认为仪表故障,向上层返回异常信号。数据正常接收完毕后,模块按照与仪表的协议检验数据,如数据出现错误,则重新向仪表发送命令,如果正确则向上层发送数据,之后重新进入等待状态。
MSP430F123只有一个串口,而上下两层的模块需要两个串口。第二个串口由定时器A的捕获/比较功能实现。发送特性的实现采用比较功能将数据从输出单元的引脚移出的方法,波特率用比较数据及中断来获得。接收特性的实现采用捕获/比较功能将引脚数据经SCCIx位移入内存。
3.2 无线通讯协议
本系统是一个简单的点对多点通讯,所以通讯协议分为三层即可。第一层为物理层,由nRF401模块硬件实现;第二层为数据链路层;第三层为应用层。
数据链路层的功能是提供可靠的无线数据传输。发送数据时,将应用层发来的比较长的数据帧拆分为短的数据帧,并加上包头和校验和,重新打包后发送出去。接收数据时,将接收到的数据解包并重新组合成完整的长数据,移交给应用层。

    数据链路层的数据帧格式为:
0x550x55地址类型编号数据(十字节)校验和
每帧包括两个字节的起始帧头,一个字节的地址,一个字节的帧类型,一个字节的帧编号,十个字节的数据和两个字节的校验和。无线通讯容易受到干扰,一次发送的数据越长,受干扰的可能性越大。所以应该把比较长的数据分成小的数据包分别发送。本系统每个数据包的有效数据长度为十个字节,原始数据不足时用0补足。
因为nRF401是高灵敏度的,在没有进行数据传输时,它的数据输出脚会有杂波输出,这些杂波会被MCU的串口接收并处理。当一个有效数据帧头到达时,串口可能正采样到一个字节的中部。因为检测到起始位对于正确读取其后的数据是相当重要的,在每个数据帧之前要先发几个字节的同步码以实现数据同步。四个字节的0xCC加一个字节的0xF0就可以确保在有效数据帧到达前双方通讯实现同步。为了区分干扰杂波与有效数据,需要数据帧加上帧头。因为干扰杂波基本是随机的,如果使用一个字节的帧头,则可能无法区分干扰和有效数据。因此本系统协议使用两个字节的帧头,为两个0x55。0x55加上起始位和停止位,实际发送的是0101010101,杂波产生连续两个0x55的概率很小很小,可以确保有效数据的确认。数据帧的类型包括抄表命令、正常返回数据、出错要求重发、仪表异常信号、正确接收确认等,用一个字节来标示以便接收方分类处理。因为将较长的数据分成短的数据帧发送,所以每帧需要一个编号,以便接收方检查是否丢帧。在十个字节的数据之后是校验和,使用16位crc校验,检验数据传输的正确性。接收方同样计算crc后与校验和比较,如果不同,即为传输中出现错误。接收方记下错误帧的编号,待全部数据发送完毕后,将错误编号返回,要求发送方重新发送这些帧。如果全部数据正常接收,则发回正确接收确认。

    下层模块的应用层的功能是使仪表抄取与无线通讯相结合。对于不同的水表、电表或煤气表,可能有不同的抄取协议或抄取方法。应用层接收数据链路层发来的抄表命令,完成对仪表的抄取,并将数据打包发给数据链路层。上层模块的应用层负责与中心的链接。将中心发来的数据校验处理后转发给数据链路层,将数据链路层发来的抄表结果打包处理后发给中心。
因为协议是分层的,相邻层之间的联系只是调用发送接收函数,因此实现了各层是独立的。更换仪表或更换无线传输模块所需做的改动都不会影响其它层,提高了系统的灵活性。
4 系统的低功耗设计
系统中MSP430在等待时处于LPMl状态。在此状态下,Vcc=3V时工作电流低于50μA。系统中的485芯片使用MAXIM公司的MAX3485,在关断模式下,所需电流小于lμA。系统低功耗设计的重点是nRF401的控制。当它处于接收状态时,工作电流为l0mA左右,如果始终处于接收状态,整个系统的功耗就会过大,电池的电量将会很快耗尽。所以应尽量使nRF401处于休眠状态。但是休眠状态中的nRF401是无法收到数据的。为了解决这个矛盾,可使nRF401间歇性地工作在接收状态。nRF401从休眠到接收状态的转换时间为3ms,所以处于接收状态的时间不能少于3ms;因为nRF401处于接收状态,并且空中无有效信号时,会有杂波干扰,所以正常唤醒至少需要收到两个字节的唤醒码。因为本系统使用9600的波特率,发送两个字节,加起始位与停止位共20bit。所以接收时间为2.08ms。为了确保能够唤醒,应再适当延长。本系统使用8ms。处于休眠的时间因仪表抄送反映速度的要求而定。如仪表反映时间要求不严格,可加长处于休眠的时间,以便进一步降低功耗。本系统使用的周期为1s。上层模块抄表需要唤醒下层模块时,首先发送唤醒码,时长需要超过一个周期以确保唤醒,如图7所示。本系统使用0xFF作为唤醒码,即主机连续发送0xFF,从机收到连续两个0xFF后即保持接收状态而不进入休眠,此时计时器开始工作。如果两个周期内没有收到有效数据帧的帧头,则视为杂波干扰,重新进入休眠状态。如此设定之后,nRF401的平均工作电流可降至250μA以下。下层模块的nRF401工作在此状态下,整个模块的平均工作电流在300μA以下,按使用两节5号AA电池计算,可以使用半年以上。上层模块由于是主机,所有的无线传输都由它发起,所以等待时nRF401可一直工作在休眠状态,整个模块的平均工作电流在100μA以下,两节电池可以使用一年半以上。

    小区自动抄表系统是未来发展的必然趋势,而对于已经建成的住宅小区的家庭内自动抄表系统的改造,无线自动抄表系统具有使用方便、灵活、无需重新布线的优点,并且价格适中。家庭内部的三表可以统一抄送。此外,本系统略加改进也可以应用于报警与安全系统和家庭自动化控制遥控装置等。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-1 08:13 , 耗时 0.112030 秒, 22 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表