摘 要:本方介绍了利用无线数传模块结合单片机来进行远程检测信息传输的开发方法,包括无线数传模块的介绍、硬件电路设计、软件设计等。
关键词:无线传输;单片机;远程监测
前言
工业现场、仓库、博物馆乃至居民小区等经常需要进行多点开关量信号的监测、报警及信号的远传,若采用有线方式,会有许多局限性。而采用无线模来进行远程信号的传输,将使系统设计方便、快捷,特别适用于各种架线不方便的监测区域。本文介绍的基于无线模块的远程监测与报警系统,利用单片机控制无线数传模块,通过无线的方式进行信号的远程传输,简单灵活,传输可靠,可满足远距离监测和数据采集系统的需要。
硬件总体结构
基于无线模块的远程监测传输系统发射部分的控制器选用89C2051,主要作用是存储检测到的信号状态,然后通过控制发射模块将其发送出去。接收部分的控制器选用89C51,主要作用是将接收模块传来的数据信息存储并显示。 无线收发模块是本系统的核心部件,所选用的无线数传模块型号为C11,这是一款Jammy(捷麦)公司的产品,它包括一个发送模块(缩写为:C11T)和一个接收模块(缩写为:C11R),单发单收,分别与各自的控制电路相接后即可进行无线收发工作。该模块的额定工作频段为145.150MHz,通信速率为1200bps;通信格式采用异步通信,1个起始位,8个数据位,1个停止位,额定工作电为DC6V。且发送椹 及接收模块旨脚结构完全相同。 模块与控制器之间通信的内容有两类,一类是数据,一类是命令。数据指的是通过无线发送和接收过程,再由接收模块传送给其对应的控制器的信息。命令则是指上位机通过串口,发送给模块让模块执行一定的动作或模块传送给控制器报送模块内的一些参数或者状态的数据信息。特别值得注意的是,当控制器向模块传送信息时,若传送的信息为命令,则必须将模块的DTR端置为逻辑“0”;若传送的信息为数据,则必须将模块的DTR端置为逻辑“1”。控制器对无线模块的控制是通过专用的控制指令来实现的,其指令非常简单。
硬件电路设计
本文针对远程液位进行监测设计出一点对点无线收发监测装置。其以送端的检测部分可对16路液位状态进行检测,液位到达警戒液位高度后,线路接通,该检测点电平为低电平。89C2051将检测到的形状量状态收集并存储起来,然后通过控制发射模块将其发送出去。接收端通过89C51将接收模块传过来的数据信息存储并转换后通过LED显示。相关管理人员通过LED显示就可以判断液面是否到达了警戒线或者是压不够等。其发送端和接收端的配件电路分别如图1和图2所示。 其中发送电路采用了74LS245双向总线驱动器,由于采集进来的数据流向为B A,故DIR端只有为低电平时才将数据信息采入。其中一片的使能端前接一反相器,改变P3.4电平可以使两片74LS245交替工作。接收端采用了74FS574锁存器,要使其正常工作,输出使能端OC与89C51写选通端之间要接一反相器为了以后大规模接收的需要,可以采用LED点阵显示,利用3—8译码器进行扩展选通每一列扫描线。发送端和接收端电路都采用了Maxim公司的MAX813看门狗,以防止程序跑飞。本系统可以监测16路信号,假如检测输入部分通道不够的话, 可以通过在发送端选用其他I/O口较多的单片机并扩展I/O口来实现。发送和接收电路跟无线模块引出的四条通信线直接相连,进行点对点的通信。类似地还可以采用多点发一点收的组网方式来对更多个检测点进行监测。
软件设计
按照以上硬件电路设计,对系统软件编程的基本思路是每隔2秒发送端控制器接收检测部分传来的状态信息,并存储到固定地址中后准备发送(注:此处存储16路形状时信号共用两个字节)。由于可能在发送过程中会有少量的误码产生,故需在接收端由控制器查询CRC校验结果。此外,程序设计还考虑了今后硬件检测点增多后传送多个字节的状况,只需对其略加修改即可。发送和接收程序流程图分别为如图3和如图4所示。 模块初始化子程序主要是利用模块自带的控制指令对模块的身份地址和目的进行调协等工作,特别注意在对模块进行初始化时,控制器必须先将收接模块的DTR端置“0”。发送指令时应先发D7H,然后发送后面的命令字节。控制器通过串口依次发送D7H,F5H,××H,××H格式俱可设置身份地址;依次发送D7H,E1H,××H,××H格式俱可设置目的地址。控制器通过串口依次发送D7H,F5H,××H,××H格式命令可设置身份地址;依次发送D7H,E1H,××H,××H格式命令可调协目的地址。若将发减灾 模块的身份地址设为0001,目的地址设为0002。准备无线发送数据时,发送端控制器必须先将模块的DTR端置“1”。假如一次发送多个字节,发送过程中呆能会有数据丢失现象。但是判断数据丢失之前需要判断这次发送过程是否完成了。对此在程序设计中采取超时处理的方法:发 送端每隔2秒检测一次形状量状态并将检测来的多个状态字节存储到固定地址中,然后开始发送。每隔5~10毫秒发送一个字节,这样全部发送完也只需几十个毫秒的时间。接收端只要在超过这几十个毫秒的时间后去判断数据是否发送完,就可以知道发大奖赛客串上是否有数据丢失现象,按照该方法,接收端只需在第一个字节接收的同时打开定时器进行计时(发磅数据较少时,定时时间一般为100~200毫秒),此后在每次数据来临前查询定时器是否溢出。假如定时器没有溢出且数据没有完全发磅完则继续等待接收数据。若定时器流出,程度查询数据是否发送完,没有发送完则表示在这次发送过程中有数据丢失,LED继续显示上次的状态并等待下一次接收的到来。若是在发送过程中,接收查询到已经收到了预期的状态字节个数,则关闭定时器提前结束计时,转向CRC校验,假期校验结果正确,则显示这次接收的结果。若错误,则继续显示上次的状态并等待下一次接收的到来。
图3 发送程序流程图 图4 接收程序流程图 结语
利用无线模块来进行远程多点信号监测,方便、快捷、适用范围广泛。现在已经在很多领域得到了应用。上述设计中所使用的无线模块传输误码率较低,查询 CRC校验结果方便。控制命令简单,缩短了项目开发周期。随着技术的进步,将有更多先进的无线模块用于以后的远程监测系统中。
参考文献
1 程云长,陈学明.C11控制命令及用法.捷麦通信有限公司
2 李朝青.PC机及单片机数据通信技术.北京:北京航空航天大学出版社.2002
3 何立民.MCS-51单片机应用系统设计—系统配置与接口技术.北京:北京航空航天大学出版社.2001
|