物联网温湿度无线监测系统研究
扫描二维码
随时随地手机看文章
引言
温湿度监测是物联网技术的应用之一,远程测量在实际生产过程中的应用十分广泛。温湿度是工农业生产中主要的被控参数,影响着产品的质量。基于单片机对采集温湿度数字信号的处理,数传模块(或GSM模块)进行数据远传。以单片机为核心的检测系统,包括单片机、数传模块(或GSM模块)、温湿度传感器、显示、系统软件等部分。系统的开发,达到远程温湿度采集和监测。
1系统设计思路
本系统由信息采集终端和监控终端组成。信息采集终端由温湿度传感器、单片机和GSM模块组成,监控终端由移动手机构成。图1所示是其系统原理图。系统功能主要包括温湿度的采集,LCD液晶屏显示温湿度参数,LCD显示特殊短信的内容及电话号码,向移动终端发送温湿度数据并显示数据,接收特殊短信等。系统工作时,先由上位机给GSM发送能够识别的内容代码,单片机发送开始采集温湿度的指令,温湿度传感器将采集到的数据传送到单片机,并在液晶显示屏上显示,数据同时传给与单片机相连的GSMSIM300模块。监控终端由上位机手机移动终端组成,手机接收到由GSM模块经发短信方式发来的数据,并读取显示。本设计中的单片机选用STC12C5A60S2,GSM模块选用SIM300,温湿度传感器选用DHT11。
图1系统原理图
2主要硬件电路设计
2.1电源设计
本系统的电源电路如图2所示。该电路具备2种供电方式:其中POWER1为外接直流9V供电电源,POWER2为外接5V直流电源,POWER1与POWER2通过开关KP进行选择。POWER1为9V的直流电,通过ACadapter将输入的100〜240V的交流电转为9V直流电输出。输出的9V电源不能直接给各芯片进行供电,采用三端集成稳压器LM7805将其转为稳定的5V电源。二极管用于整流,C1、C2为滤波电容,取100uF。C3主要用于滤除输出端的高频信号,改善电路的暂态响应,取典型值0.1uF。LED1为电源指示灯,其连接LED1的限流电阻R31取200Q。POWER2是通过USB接PC机获得的电压,其电压值为5V,可以直接供电。
图2电源电路
2.2温湿度传感器电路
温湿度传感器模块的功能是在接收到单片机采集温湿度的指令后,开始采集当前的温湿度数据,并将采集到的数据返回给单片机[3]。其温湿度传感器电路如图3所示。
图3温湿度传感器电路
2.3单片机电路
图4所示是本系统中的单片机电路,该电路采用内部时钟方式。电路中的电容C5、C6起稳定振荡频率、快速起振的作用,电容取30pF。系统中需要采用串口,选用晶振频率为11.0592MHz的晶体振荡器产生时钟脉冲。复位电路是单片机内电路的初始化操作,是单片机从一种确定的状态开始工作。只要给单片机的RESET引脚加上两个机器周期以上的高电平信号,就可以使单片机复位。当系统电源开始供电时,复位电路在上电自动复位状态上工作,通过外部复位电路的电容充电得以实现,系统死机时,按键复位。
3 系统软件设计
本系统的主程序流程图如图 5 所示。图 6 所示是系统数据采集流程图。其主程序如下:
图5系统主程序流程图
图6采集程序流程
#include"STC_NEW_8051.H"
#include"uart.h"
#include"misc.h"
#include"key.h"
#include"lcd1602.h"
#include"timer.h"
#include"stdio.h"
#include"string.h"
#include"sms.h"
unsignedcharlcdbuf(16);
unsignedcharlcdbuf2(16);
unsignedchartemp_var=0;//全局临时辅助变量,任何函数(除中断外)可用
unsignedchardisp_type=0;//该变量的内容决定当前液晶上显示的内容,由按键处理函数来改变
//主函数
voidmain()
{
//初始化外设
init_1602();//液晶
display_string(0,1,"inituart...");
init_uart();//串口
display_string(0,1,"initkey...");
init_key();//按键
display_string(0,1,"startgprs...");
start_gprs();//检查模块是否已开机display_string(0,1,"initgprs...");init_gprs();//初始化模块,获取信号强度、运营商等信息
display_string(0,1,"inittimer...");init_timer0();//初始化定时器display_string(0,1,"initdone!");//进入主循环,该循环永不退出while(1)
{
//有按键按下if(key_pending){
//processkeysif(key_code==MENU){
disp_type=0;//display
gprsstatus
}
elseif(key_code==UP)
{
disp_type=1;//display
meterinfo
}
〃clearflag
key_pending=0;
}
//串口收到消息,由于本系统中由模块主动发送的信息一般都忽略,此处一般不做处理
if(rx_data_pending)
{
rx_data_pending=0;temp_var=0;
while(rx_rear<rx_head)
{
rx_rear++;
}
}
//显示当前温湿度,温湿度信息已在在采集事件触发后填入lcdbuf和lcdbuf2中,此处仅显示即可
if(timer_int_status&&(disp_type==0))//温湿度信息读数
{
timer_int_status=0;clear_lcd();display_string(0,0,lcdbuf);
display_string(0,1,lcdbuf2);
}
if(timer_int_status&&(disp_type==1))//显示新短信内容和手机号码
{
timer_int_status=0;ifnew_sms==0)
{
clear_lcd();display_string(0,0,"NoMessage");
display_string(0,0,"Available!");
}
elseifnew_sms==l)
{
clear_lcd();
display_string(0,0,short_message);
display_string(0,1,phone_num);
new_sms=2;〃clearflag
}
}
if(timer_int_check)
{
timer_int_check=0;
//检查有无新短信get_new_sms();
}
if(timer_int_2s)
{
timer_int_2s=0;
read_dht11();//读取温湿度信息//将读到的温湿度值转换为字符串存入缓冲区中用于显示
sprintf(lcdbuf,"Temp:%d",
(unsignedint)dhtlldata(2));
sprintf(lcdbuf2,"Humi:%d",
(unsignedint)dht11data(0));
}
}
}
4结语
系统的设计是通过短消息的收发实现对温湿度进行测量的,并利用GSM网络实时地给手机用户发送短信,以起到遥控测量的效果。实际上,本系统不仅能够对温湿度进行自动采集,更可以远程检测,甚至是远程传递,因而有着一定的应用和参考价值。
20211024_617520fd168f0__物联网温湿度无线监测系统研究