论文导读:该系统通过多气体传感器采集气体的浓度并传给单片机,由单片机判断是否达到预设报警值并将实时数据递交液晶显示。当达到或者超过阈值时,蜂鸣器报警、液晶显示相应的数值,并将气体种类、气体浓度通过GSM模块发送给指定用户。AVR单片机的PD3脚模拟出时钟信号来控制数据的发送。
关键词:GSM,AVR,传感器,TWI协议
1 前言
近年来,随着全球经济的高速发展,工业排放的废气也与日俱增,这些废气对人类本身和人类的生存造成了不可忽略的损害。随着环保意识深入人心,气体检测系统受到了人们的关注,一些气体检测仪以及监测系统也相继而出,但都存在着诸多弊端。论文发表。如:一般的检测仪只能对单一气体进行检测,检测多气体时就需要购买多种检测仪。
此外一般的多气体检测系统虽然能实现多气体检测,但检测数据只能人工记录,而不能实现自动记录,在一些对人体有害的环境里,人们不能实时观测到气体检测系统的数据,这类气体采集系统也就失去了作用。这些缺点都给气体浓度的检测和环境测量带来了不便。所以,设计一种可以存储数据、实时无线传送数据的新型多气体检测系统已成为研究的目的和重点。论文发表。
2 系统硬件结构
该系统通过多气体传感器采集气体的浓度并传给单片机,由单片机判断是否达到预设报警值并将实时数据递交液晶显示。当达到或者超过阈值时,蜂鸣器报警、液晶显示相应的数值,并将气体种类、气体浓度通过GSM模块发送给指定用户。再把数据送入外部数据存储器,按地址存储此实时数据。当收到GSM信号时,将此时的实时数据传送给发送用户。从而实现气体智能无线检测功能。
硬件系统结构框图如图1所示 :

图 1 硬件系统结构框图
控制系统部分采用Mega16L单片机作为核心器件,接收气体传感器模块采集的气体浓度数据,经过单片机内部自带的A/D转换处理,送交液晶显示模块显示浓度,并判断浓度是否达到或超过阈值,若达到或超过阈值报警模块将报警。同时,数据通过单片机的TWI串行总线分段存储到AT24C512外部数据存储模块,以记录气体浓度数据。
GSM接收到有效信号后,通过单片机的串口传给单片机。本系统中使用单片机的UART与GSM模块进行通信[2]。
液晶模块采用YM12864,该模块是128*64点阵型LCD,可以显示4行中英文,并自带显示字库。系统使用同步串行数据传送方式与单片进行通信,数据传送端SID和时钟信号端CLK分别与单片机的PD2、PD3相连。AVR单片机的PD3脚模拟出时钟信号来控制数据的发送。
传感器模块主要有酒精传感器MQ303、一氧化碳传感器MQ7、甲烷传感器MQ4组成。通过AMS1117-3.3芯片把单片机所用的电压转换为MQ303的加热电压,而MQ7和MQ4的加热电压为5V,所以可直接用单片机所用电压。各个传感器在经过与电阻的串联或并联后,与单片机的PA0~PA2(AD0~AD2)相连。当系统工作时,传感器预热几秒钟后正常工作,根据气体浓度的变化从而改变电压,并由单片机的内部A/D进行采集[3]。
外部数据存储模块采用AT24C512,该芯片是I2C总线接口的串行EEPROM,容量为64K,可重复擦/写10万次,数据保存100年不丢,写入时间为10ms。AT24C512的5、6引脚和单片机的PC1(SDA)、PC0(SCL)相连。单片机通过I2C总线方式与AT24C512通信,进行数据的存储。
3 系统的软件设计
3.1软件系构
软件系统的核心是主机对外围器件的控制,首先是对气体浓度的采集及液晶显示,其次主机通过TWI协议实现与外部数据存储器的通信,以及通过UART与GSM模块的通信[4]。
主机初始化结束后,传感器感应气体浓度,单片机PA口接收传感器数据,片内A/D开始连续转换,转换完成后进入A/D完成中断提取A/D采集值,送入主机进行处理,并在LCD液晶上显示,再与事先存入的阈值数据进行比较,报警模块将会发出报警,并将气体种类、气体浓度通过GSM模块发送给指定用户;同时把超标数值送入到外部存储器的预先设定好的地址进行存储。论文发表。当GSM模块接收到信息时,将触发主机串口中断,进入中段服务程序,将外部存储器所对应的数值通过UART送给GSM发送端发送,发送完成后继续传感器信号的数据采集处理[5]。若没收到信号,则继续传感器信号的采集处理。
系统程序流程图如图2所示:

图 2 系统程序流程图
3.2传感器数据A/D转换程序设计
系统采用单片机片内的A/D,采用外部供电,数据右对齐。A/D转换程序作为一个子程序供主程序调用,所以通道的选择在主程序里实现。具体的A/D初始化程序如下:
void ad_Init(void)
{ ADMUX = _BV(MUX2); //选择外部供电、ADC4通道、右对齐
ADCSRA= _BV(ADEN) | _BV(ADSC) | _BV(ADATE) | _BV(ADIE);
_BV(ADTS2);
}
void ad_Start(void)
{ADCSRA|=_BV(ADSC); //自由模式开始转换
sei();
}
void ad_Stop()
{ ADCSRA &= ~_BV(ADEN);
}
3.3 外部数据存储器程序设计
外部数据存储器AT24C512与单片机的通信采用的是标准2线串行总线通信TWI,其中TWI总线的启动和关闭的函数如下:
void i2cstart(void)
{
TWCR=BIT(TWINT) | BIT(TWSTA) | BIT(TWEN);
while (!(TWCR &BIT(TWINT)));
}
void i2cstop(void)
{
TWCR = BIT(TWINT) | BIT(TWSTO)| BIT(TWEN);
}
3.4 GSM收发程序设计
系统采用的GSM模块为TC35I,该模块具备GSM无线通信的全部功能,并提供标准的UART串行接口,支持GSM 07.05所定义的AT命令集的指令。根据GSM 07.05的定义,SMS短信息的发送和接收模式共有三种:Block模式、基于AT命令的Text模式和基于AT命令的PDU模式[6]。本系统采用PDU模式。
串口初始化程序如下:
void init_uart(void)
{ UCSRB = 0x18; // 使能接收发送引脚
UCSRC= 0x86; // 设置数据位为8位宽度(异步、无校验、无停止位、)
UBRRH= 0;
UBRRL= 27; //设置波特率
k=UDR;//数据寄存器空
k=0;
}
接收GSM发送过来的指令与预设指令对比,对符合的指令执行相应控制程序。
其关键程序如下:
Send_AT('AT+CNMI=2,1',11);//新信息指示
putc(0x0d);
while(1)
{rec[i++]=getc();
if(i>=2)
if(rec[i-2]=='O'&&rec[i-1]=='K')
{_delay_ms(10);////
gsm_value=1;
break;
}
}
Clear(rec,i);
Send_AT('AT+CPMS=ME,MT,SM',16);//选择短信息存储区,SM卡
putc(0x0d);
while(1)
{rec[i++]=getc();
if(i>=2)
if(rec[i-2]=='O'&&rec[i-1]=='K')
{_delay_ms(10);
gsm_value=1;
break;
}
}
Clear(rec,i);
Send_AT('AT+CMGS=029',11);//发送短消息
putc(0x0d);
while(1)
{rec[i++]=getc();
if(rec[i-1]=='>')
{_delay_ms(10);
break;
}
}
4 结束语
基于GSM单片机的多气体监测系统实现了多气体同时采集,并能实时提取气体浓度数值,为环境检测提供了最有力的技术工具。多气体传感器,GSM数据无线传输的设计理念,大大提高了该系统的可靠性,该系统将会大大降低恶劣环境对人的伤害,更好的提高气体检测质量,同时也将为环保节能带来较大的帮助和效益。
参考文献:
[1] 吴晓庆,呼和牧仁. 单片机控制GSM模块通信. [J].内蒙古科技与经济,2010年,2期
[2] 马潮.《AVR单片机嵌入式系统原理与应用实践》.[M].北京:北京航空航天大学出版社,2007年
[3] 高丛. 基于单片机的多气体检测系统设计. [J].中国科技信息,2008 年,18 期
[4] 车朝雄,赵彦敏.基于串口的手机收发短信的设计方法. [J].福建电脑, 2006年,2期:
[5] 段锦,叶霖,黄显澍.基于GSM短消息的远程数据采集传输系统. [J].长春理工大学学报,2005年,4期,28卷
[6] GSM AT命令手册.[z].南京傲屹电子有限公司.2007年
|