本设计基于STM32和GSM做的智能家居系统,通过手机短信可控制家电开关,查询各个模块工作状态。当烟雾、温度过高便会进行蜂鸣器报警,并给主人发送报警短信
硬件接口:
1、GSM模块:
TX-->PA9
RX-->PA10
VCC-->5V
GND-->GND
2、烟雾传感器
VCC-->5V
GND-->GND
DO->PA4
3、温湿度传感器
VCC-->3.3V
GND-->GND
DATA-->PA1
4、蜂鸣器
VCC-->3.3V
GND-->GND
I/O-->PA11
5、人体红外模块
VCC-->5V
GND-->GND
OUT-->PA0
6、继电器模块
VCC-->3.3V
GND-->GND
IN-->PB6
7、运行指示灯
GND-->GND
VCC-->PB9
使用说明:
1、上电之后默认使用电话号码15638869356,但是在上电之前通过将PB8口置高改变电话为18134414310。
2、上电后模块需要进行初始化工作(GSM与单片机),初始化完成后运行指示灯会闪烁频率2HZ(此过程需要20s左右)。如果长时间后初始化仍没有完成
需要检查线路连接(GSM与单片机),以及GSM模块供电是否充足(可以拨打模块电话是否能打的通,能打通说明模块正常,打不通需要检查模块供电)
3、程序正常运行后(运行指示灯间歇闪烁),初次上电模块会给设定手机号发送正常状态。手机接收到模块打来的短信表明通信正常,没收到短信需要进行检查。
收到短信后就可以通过手机发送短信对其进行控制。
4、初次上电后默认是“撤防”状态,此模式下人员活动不会产生报警,但是烟雾过高,温度过高(默认40度)则会报警。
5、如果主任外出需要人员活动报警的话发送begin使其进入"设防"状态,设置成功模块会返回 BEGIN OK!,如需撤防发送 end 即可,撤防成功模块返回 END OK!
6、发送 changexx(其中xx为电话号码)即可改变短信接收的电话。改变成功后模块返回 Change Phone OK!
7、发送 onled 可以打开与继电器相连的家电,打开成功返回 LED ON OK!
8、发送 offled 可以关闭与继电器相连的家电,关闭成功返回 LED OFF OK!
9、发送 setxx(xx为温度<100)可设置报警温度,设置成功返回 Set Temperature Alarm Data OK!
10、发送 hsxx(xx为电话号)可设置方的电话号之后模块每隔20s向对方拨打一次电话,设置成功模块返回 HS Open OK!
11、发送 close 可关闭“呼死”功能。
12、发送 status 可查看目前各个报警状态正常为 Normol 温度烟雾过高显示 High ,人员报警显示 Warring。发送成功模块返回当前状态值。
单片机源程序如下:
- /**********************************************************************************
- * 工程名 :发送TEXT文本短信
- * 描述 :通过STM32开发板控制模块发送TEXT文本短信
- * 实验平台:STM32F10X
- * 库版本 :
- * 作者 :泥人通信模块开发平台团队
- * 硬件连接说明
- 使用单片串口2与GPRS模块通信 注:使用串口2可以避免下载和通信不会冲突
- STM32 GPRS模块
- PA3 (RXD2)->RXD
- PA2 (TXD2)->TXD
- GND ->GND
- PB9 ->PWR
- PWR:这个引脚是控制模块启动,V1.2版本已经有自启动电路所以不必接,老版本可以通过程序
- 控制这个引脚让模块开机。当然也可以使用按键手动开机。
- * 软件功能说明
- 板子上电后运行指示灯RUNING_LED会以一秒的频率闪烁
- 修改短信中心号、接收方手机号和短信内容,编译成功后下载到单片机里面,就可以实现发
- 送一条文本短信
- **********************************************************************************/
- #include "stm32f10x.h"
- #include "stm32f10x_rcc.h"
- #include "usart.h"
- #include "hardware.h"
- #include "SysTick.h"
- #include "timer.h"
- #include "string.h"
- #include "gsm.h"
- /************* 外部函数和变量声明*****************/
- u8 SC_Flag=0; //监控标志开关 0:关闭监控 1:打开监控 默认0
- u8 RH_D[5]; //保存温湿度
- u8 S_F=0,T_F=0,P_F=0,B_F=0; //设置人员、烟雾、温度、蜂鸣器标志位
- u16 M_Time=100; //报警计时
- u8 Alarm=0; //主人回应标志,0打开报警,1关闭报警,默认0
- u8 Alarm_T=40; //报警温度默认40C
- u8 HS=0; //呼死功能开关标志 0:关 1:开 默认0
- void Control_APP(void);
- //static unsigned char *content="Hello kitty";//发送短信内容
- char Message[]="Temperature : Normol\r\nSmoke : Normol\r\nPeople : Normol \
- \r\nLED : OFF";//发送短信内容
- /*******************************************************************************
- * 函数名 : main
- * 描述 : 主函数
- * 输入 :
- * 输出 :
- * 返回 :
- * 注意 : 串口2负责与MG323模块通信,串口1用于串口调试,可以避免在下载程序时数据
- 还发送到模块
- *******************************************************************************/
- int main(void)
- {
-
- SysTick_Init_Config();
- GPIO_Config();
- USART2_Init_Config(115200);
- USART1_Init_Config(9600);
- UART1_SendString("GPRS模块短信测试程序\r\n");
- UART1_SendString("GPRS模块在注册网络\r\n");
- Wait_CREG(); //查询等待模块注册成功
- UART1_SendString("GPRS模块注册成功\r\n");
- UART1_SendString("GPRS模块短信模式设置\r\n");
- Set_Text_Mode();//设置短信为TEXT模式
- UART1_SendString("设置成功,短信模式:TEXT\r\n");
- // memcpy(Message+13," High ",7);
- // memcpy(Message+39," High ",7);
- // memcpy(Message+66," Warring",8);
- // memcpy(Message+96," ON ",7);
- Change_Phone();
- Send_Text_Sms(Message);//发送一条短消息
- delay_ms(1000);
- delay_ms(1000);
- delay_ms(1000);
- UART1_SendString("初始化完成\r\n");
- Timer2_Init_Config(2000,36000-1);
- TIM3_Init(250,36000-1);
- while(1)
- {
- Check_New_Message();
- if(SC_Flag==1)
- {
- Control_APP();
- }
- }
- }
- void Control_APP(void)
- {
- if(Smoke_IO==0)
- {
- S_F=1;
- memcpy(Message+39," High ",7);
- }
- else
- {
- S_F=0;
- memcpy(Message+39," Normol",7);
- }
- if(IR_IO==1)
- {
- P_F=1;
- memcpy(Message+66," Warring",8);
- }
- else
- {
- P_F=0;
- memcpy(Message+66," Normol ",8);
-
- }
- if(RH_D[2]>40)
- {
- T_F=1;
- memcpy(Message+13," High ",7);
- }
- else
- {
- T_F=0;
- memcpy(Message+13," Normol",7);
- }
- }
复制代码
所有资料51hei提供下载:
GSM智能家居.rar
(314.29 KB, 下载次数: 287)
|