BasedOnTheSerialPortCommunication
DesignofGPRSSCM
MABaoGuo1,JIAYinBo2,QIAOLingLing3
1.SchoolofMaterialsScienceandEngineering,WuhanUnivertsityofTechnology,Wuhan
(430070),China
2.XXX,WuhanUnivertsityofTechnology,Wuhan(430070),China
3.XXX,WuhanUnivertsityofTechnology,Wuhan(430070),China
Abstract:Thispaperproposedonekindofwalloutsidesurfacedataacquisitionsystem'sdesignwhichisfromPLCreal-timereaddataandtransmitsforthesuperiorcomputer,XXX,XXX,andusedtheSHT10ofSHT1_seriestoacquirethereal-timetemperature/humiditydataandsendthedatatotheGPRSwirelesstransmissionmodule,andthenittransmitsagainthedatabythewiXXX,bytransferringformidableserialportcommunicationAPIfuction—javacomm20-win32.
Keyword:collectingdata;wirelesscommunication;superiormachine;GPRS;马(1957-),男(汉族),河南开封人,教授,博士生导师,主要研究方向:专家系统
1.引言
随着计算机网络技术、数据库技术、现代通信技术,尤其是无线通信技术的高速发展,信息采集系统与计算机网和通信网的结合正成为趋势.传统的通信技术是通过数据线和PC机串口直接相连,这样就存在布线困难和其他不方便的因素。而且传统的RS232串口通讯存在传输速度低、接口连接复杂、数据丢失等不足。在此数据采集系统中,嵌入先进GPRS无线通信模块构成自动数据、快速有效传输体系。它实现了基于GPRS无线通信技术和Internet的远程数据采集、无线数据传输和控制等功能。这不但降低了数据采集的成本,而且保证数据的准确性,更为后期的数据处理带来方便[3]。
2.数据采集系统
整个采集系统由传感器模拟量采集模块、GPRS无线通信模块和电源供电及复位模块组成。传感器模块主要采集模拟量,由于接的是标准的传感器,传感器送过来的是标准电流信号,因此模拟量采集部分具有一定的通用性,只要接不同的传感器,就可以采集不同信号源的数据。GPRS无线通信模块主要是把SHT10传感器采集的数据转发到Internet。电源及复位模块主要是为整个系统提供可靠的电源,另外考虑到系统工作需要有复位功能,因此提供复位信号。
2.1模拟量采集模块
模拟量采集模块于SHT10传感器相连,由于从SHT10传感器送来的是标准信号(即4mA~20mA),所以需要A/D转换,把电流信号转换为电压信号。
模拟量采集电路通过一个高精度电阻将电流转换成电压信号,这样可以提高采集的精度。电路中采用二极管作为ESD保护电路,考虑到干扰问题,采用电容进行滤波处理。模拟量采集模块的流程如图2-1:
图2-1模拟量采集流程图
该模块主要涉及到A/D转换和定时器A的操作:采集8通道模拟数据,并通过定时器马(1957-),男(汉族),河南开封人,教授,博士生导师,主要研究方向:专家系统
A来控制采集的频率,另外也设置一个标志来通知主程序已经获得新的数据,通过全局变量来实现与主处理程序实现数据的交互。这部分采用中断来实现,在定时器A里先停止A/D转换,读取数据后再启动A/D转换,然后再等待下一次中断的到来[1]。
A/D转换的初始化程序如下:
VoidInit_ADC(viod)
P6SEL=0_FF;/设置P6.0为模拟输入通道
ADC12CTL0=~(ENC);/设置ENC为0,从而修改ADC12寄存器的值ADC12CTL1|=CSTARTADD_0;/转换的起始地址为:ADCMEM0
ADC12MCTL0=INCH_0;/设置参考电压分别为AVSS和AVCC,输入通道为A0ADC12MCTL1=INCH_1;/设置参考电压分别为AVSS和AVCC,输入通道为A1ADC12MCTL2=INCH_2;/设置参考电压分别为AVSS和AVCC,输入通道为A2ADC12MCTL3=INCH_3;/设置参考电压分别为AVSS和AVCC,输入通道为A3ADC12MCTL4=INCH_4;/设置参考电压分别为AVSS和AVCC,输入通道为A4ADC12MCTL5=INCH_5;/设置参考电压分别为AVSS和AVCC,输入通道为A5ADC12MCTL6=INCH_6;/设置参考电压分别为AVSS和AVCC,输入通道为A6ADC12MCTL7=INCH_7+EOS;/设置参考电压分别为AVSS和AVCC,输入通道为A7ADC12CTL0|=ADC12ON;
ADC12CTL0|=MSC;/上升沿触发
ADC12CTL1|=CONSEQ_1;/转换模式为:多通道、单次转换
ADC12CTL1|=ADC12SSEL_1;/SMCLK
ADC12CTL1|=ADC12DIV_0;/时钟分频为1
ADC12CTL1|=(SHP);/采样脉冲由采用定时器产生
ADC12CTL0|=ENC;/使能ADC转换
Return;
2.2GPRS无线通讯模块
单片机通过串口和GPRS模块交换数据,所以首先要编写串口驱动程序,包括串口初始化(Init_Comm)、写串口数据(PrintChar)等函数。读串口数据是通过中断来完成的。串口初始化的代码如下:
voidInit_Comm(void)
TMOD=TMOD0_0F;
TMOD=TMOD|0_20;/定时器1采用方式2,用于产生串口1的波特率
TL1=0_FD,TH1=0_FD;/32MHz-57600bps
WDCON=0_80;/SMOD1=1
马(1957-),男(汉族),河南开封人,教授,博士生导师,主要研究方向:专家系统
SCON1=0_50;/串口1采用方式1
TR1=1;/启动定时器1
}[2]
在这些串口函数的基础上编写GPRS模块的驱动函数。单片机通过AT命令进行拨号后,GPRS模块就转入在线模式,此时通过PPP协议取得一个IP地址,就可以连接到互联网了。其流程如图2-2:
图2-2数据传输流程图
2.3电源供电
整个系统采用3.3V供电,考虑到硬件系统对电源要求具有稳压功能和纹波小、低功耗等特点,因此采用公司的TPS76033芯片实现。该芯片具有个很小的封装,因此能有效节约PCB板的面积[1]。
2.4复位电路
该系统采用MA_809芯片来实现复位电路。用复位芯片复位代替R-C复位电路,保证了复位电路的可靠性。
XXX机程序设计
本实验室承接的项目是墙体外表面保温材料监测及评估系统。
需求:针对全国不同地区(南北方不同气候)的墙体外表面保温材料在四季气候影响下是否符合标准及人体舒适度问题
解决方案:在墙体外表面安装恒温箱、热流计和传感器等设备,捕获数据后,经过MSP430F149芯片处理转发后,由编写的上位机java程序获得数据,并存入数据库。再从数据库中调出数据处理,进行相关验证及评价。
实验通过加载串口通讯javaAPI--javacomm20-win32包编写上位机程序,在此仅以COM1口数据捕获部分代码为例。(只略写出主要部分,省略了异常捕获的代码):
串口定义部分:
/检测系统中可用的通讯端口类/
staticCommPortIdentifierstaticEnumerationInputStreamportId;portList;inputStream;/声明RS-232串行端口的成员变量/SerialPortserialPort;
/线程/
ThreadreadThread;
数据捕获部分:通过按钮的点击事件打开串口之后,由串口数据触发数据捕获程序:马(1957-),男(汉族),河南开封人,教授,博士生导师,主要研究方向:专家系统
/点击按扭所触发的事件:打开串口,并监听串口./
publicvoidactionPerformed(ActionEventevent){if(XXX()==btnOpen){/获取系统中所有的通讯端口/portList=XXX();/用循环结构找出串口/while(XXX()){/强制转换为通讯端口类型/portId=(CommPortIdentifier)XXX();
if(XXXtPortType()==XXX)
{if(XXX().equals("COM1")){……
/设置串口/
try{}……/侦听到串口有数据,触发串口事件/XXX(true);XXX(this);}/ifend}/ifend}/whileendreadThread=newThread(this);XXX();/线程负责每接收一次数据休眠20秒钟}}/actionPerformed()end
/串口触发的事件,设置串口通讯参数,读取数据并写到文本区中/
publicvoidserialEvent(SerialPortEventevent){/设置串口通讯参数:波特率、数据位、停止位、奇偶校验/
马(1957-),男(汉族),河南开封人,教授,博士生导师,主要研究方向:专家系统
try{XXX(9600,XXX,
byte[]readBuffer=newbyte[20];
……/从线路上读取数据流/while(XXX()>0){intnumBytes=XXX(readBuffer);inputStream=XXX();XXX,XXX);
}/whileendstr=newString(readBuffer);/接收到的数据存放到文本区中/XXX(str+" ");XXX(true);/激活自动换行功能in_mXXX(true);/激活断行不断字功能}/serialEvent()end
4.实验总结:
该系统采用MSP430F149芯片、温/湿度传感器实现的数据采集系统具有一定的通用性,它通过片内的A/D转换通道与外部的采集传感器进行连接,由于外部与传感器进行连接,获得是标准的电流信号,这样使采集系统具有很大的通用性,只要接不同的传感器就可以采集不同数据源的数据,做到系统与数据源的无关性[1]。采集系统采集到数据后,通过GPRS模块转发到Internet,上位机程序再从串口读取数据存到数据库中处理分析。既降低了系统的负担,避免了采集系统的海量存储器,也为以后分析数据提供资料。
马(1957-),男(汉族),河南开封人,教授,博士生导师,主要研究方向:专家系统
下载本文