基于STM32单片机的厨房天然气蓝牙手机APP检测GSM短信报警系统
- 0、毕业设计选题原则说明(重点)
- 1、项目简介
- 1.1 系统功能
- 1.2 演示视频
- 2、部分电路设计
- 2.1 STM32单片机核心板电路设计
- 2.2 HC05 蓝牙无线通信电路设计
- 2.3 sim900A GSM短信报警电路
- 2.4、MQ-4天然气检测电路设计
- 2.5、HC-SR505热释红外感应 人体检测电路设计
- 3、单片机代码展示
- 3.1 MQ-4获取天然气数据
- 3.2 SIM900A 发送短信程序
- 3.3 HC-SR505初始化程序
0、毕业设计选题原则说明(重点)
- 选题之前,同学们要弄明白一件事情,做毕业设计是干什么用的!
- 这里我告诉大家,毕业设计对于你来说,不是让你去搞研究,掌握运用所学知识的,也不是让你去比谁做的毕业设计多么牛逼,多么厉害。
- 说白点,它的作用就是一个,让你顺利毕业,能够拿到学位证,毕业证而已!!!
- 当你明白这一点后,作毕业设计的要求就是在满足老师的要求后,越简单越好,这样不但容易去做,而且你自己也容易去理解,掌握,同样也能花最少的钱!!!
- 满足老师的要求,这个没办法,毕竟他是决定你是否能通过答辩的人。
- 每年都有很多同学找到我的时候,后悔当初为什么要把功能写的那么复杂,后悔没有提前找我咨询一下!所以在这里提醒同学们,提交开题报告之前一定要多想想,不要自己随便写一堆提交上去!!!
1、项目简介
- 系统构成:系统由STM32单片机、MQ4天然气传感器、OLED液晶显示屏、蓝牙模块、人体检测电路、风扇控制电路、sim900A GSM短信报警电路、蜂鸣器报警电路、指示灯报警电路构成。
1.1 系统功能
- 功能介绍:
- 1、气体传感器模块监测天然气浓度,无泄漏绿灯,有轻微泄露黄灯,泄露超过安全值红灯加蜂鸣器报警加排风扇
- 2、人体红外监测模块监测厨房有没有人,有人的话就不需要发短信提醒天然气泄露,没人的话就短信提醒泄露
- 3、手机通过蓝牙连接系统,可以实时监测天然气浓度
- 4、OLED屏幕显示天然气实时浓度
1.2 演示视频
2、部分电路设计
2.1 STM32单片机核心板电路设计
- 基于 ARM Cortex-M3内核的STM32F1系列单片机属于主流STM32单片机,其中增强型STM32F103子系列单片机的CPU 主频高达72MHz,片内Flash容量高达1MB,芯片引脚数量多达144个,有 QFN、LQFP、CSP、BGA 等多种芯片封装形式,并具有多种片内外设、USB接口和CAN 接口。根据STM32F103单片机片内Flash容量的不同,ST 公司将其分为小容量(16-32KB)、中等容量(64-128KB)、大容量(256KB-1MB)3种。
- 电源电路:为单片机提供稳定的工作电压,通常采用3.3V电源供电。电源电路的设计要保证单片机在不同工作条件下都能获得稳定的电压输出,以确保单片机的正常工作。
- 晶振电路:提供单片机工作所需的时钟信号。晶振电路通过晶振和电容组成,为单片机提供稳定的工作脉冲,确保单片机的定时和同步需求。
- 复位电路:实现单片机的复位功能,类似于电脑的重启。复位电路通过电容和电阻的配合,实现单片机在上电启动时的自动复位,以及通过手动按键实现复位功能,保证单片机在程序跑飞或异常情况下能够重新开始执行程序。
STM32单片机是一种功能强大、易于使用、灵活且可靠的32位微控制器,基于ARM Cortex™-M内核。其主要功能特点包括:
- 高性能和低功耗:STM32系列单片机提供多种内核选择,如Cortex-M0、Cortex-M3、Cortex-M4等,满足不同应用场景对性能的需求,同时保持低功耗特性。
- 多种通信和外设接口:STM32单片机具备广泛的通信和外设接口,如I2C、SPI、USART、USB等,便于开发者实现各种复杂功能。
- 易于开发和调试:STM32单片机提供了丰富的软件和硬件工具,如HAL库、CubeMX等,帮助开发者快速创建和调试嵌入式系统。
- 高集成度和设计灵活性:STM32系列单片机全系列产品共用大部分引脚、软件和外设,优异的兼容性为开发人员带来最大的设计灵活性
单片机最小系统原理图如下图所示:
- 实物图:
2.2 HC05 蓝牙无线通信电路设计
- HC-05蓝牙模块是一种常用的蓝牙通信模块,广泛应用于物联网、智能家居、无线传感器网络等领域。它可以实现蓝牙设备之间的无线通信,包括数据传输和控制命令的交互。
HC-05蓝牙模块的主要特点和优势包括:
- 低功耗:HC-05蓝牙模块采用低功耗设计,能够在长时间的使用中保持较低的能耗。
- 简单易用:HC-05蓝牙模块具有简单的接口和配置方式,方便开发者快速集成到各种应用中。
- 高稳定性:HC-05蓝牙模块采用成熟的蓝牙通信协议,具有较高的稳定性和可靠性。
- 远距离传输:HC-05蓝牙模块支持较远距离的数据传输,通信距离可达10米以上。
- 多设备连接:HC-05蓝牙模块支持多设备同时连接,可以实现多对一或一对多的通信方式。
HC-05蓝牙模块在Android开发中的应用场景主要包括:
- 远程控制:通过HC-05蓝牙模块,可以实现手机与其他设备(如智能家居设备、机器人等)之间的远程控制,例如远程开关灯、控制机器人运动等。
- 数据传输:HC-05蓝牙模块可以用于手机与其他设备之间的数据传输,例如传输文件、传输传感器数据等。
- 无线音频传输:通过HC-05蓝牙模块,可以实现手机与蓝牙耳机、蓝牙音箱等设备之间的无线音频传输。
其具体电路原理图如下图所示:
实物图如下:
2.3 sim900A GSM短信报警电路
- SIM900A模块是一款由SIMCom公司生产的GSM/GPRS无线通信模块,支持语音、短信和数据传输等多种功能。 该模块采用高性价比的设计,支持双频GSM/GPRS网络(900/1800MHz),具备低功耗、高性能的特点。SIM900A模块支持RS232和LVTTL串口,工作电压范围广泛(5V~24V),便于与各种设备连接。其硬件结构包括嵌入式ARM处理器、GSM/GPRS调制解调器、SIM卡插槽、天线接口、串口和GPIO等,通过AT指令集进行控制,可以实现发送短信、接听电话、建立GPRS连接等功能。SIM900A模块的应用非常广泛,包括但不限于物联网、远程监控、物流管理、车辆定位和安防系统等领域,因其体积小、功耗低、稳定性高的特点,非常适合嵌入式系统的应用。
优点:
- 稳定可靠:SIM900A模块采用高质量的GSM/GPRS芯片和先进的射频技术,能够稳定地连接到移动网络,具有良好的信号质量和通信稳定性。
- 灵活易用:SIM900A模块支持标准的AT指令集,可以通过串口控制模块的各种功能,使用方便,上手快。
- 低功耗高性能:SIM900A模块采用低功耗设计,能够在省电模式下工作,同时具有高性能的数据处理和通信速度。
- 成本低廉:相对于其他移动通信模块,SIM900A模块的成本相对较低,适合各种中小型应用场景。
其具体电路原理图如下图所示:
实物图:
2.4、MQ-4天然气检测电路设计
- MQ-4 气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。
- MQ-4 气体传感器对甲烷灵敏度高,对酒精及其他一些干扰性气体有较强的抗干扰能力。
其具体电路原理图如下图所示:
实物图:
2.5、HC-SR505热释红外感应 人体检测电路设计
- HC-SR505小型人体感应模块是基于红外线技术的自动控制产品,灵敏度高,可靠性强,超小体积,超低电压工作模式。广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品。
- HC-SR505人体热释感应模块接口原理图如下图所示。热释红外模块,通过三极管9012驱动,当检测到有人时,单片机控制引脚为高电平,否则,为低电平。黄色LED灯为信号指示灯,灯亮代表热释模块检测到有人,灯不亮,代表热释模块没有检测到人。
其具体电路原理图如下图所示:
实物图:
3、单片机代码展示
3.1 MQ-4获取天然气数据
u16 Get_Adc_Average(u8 ch,u8 times)
{
u32 temp_val=0;
u8 t;
for(t=0;t<times;t++)
{
temp_val+=Get_Adc(ch);
Delay_ms(5);
}
return temp_val/times;
}
//获取数据
float GetMQData(void)
{
u32 temp_val=0;
float mq_baifenbi = 0;
temp_val+=Get_Adc_Average(ADC_Channel_1, 10); //读取ADC值
mq_baifenbi = (float)temp_val / 4095;
return mq_baifenbi;
}
3.2 SIM900A 发送短信程序
/*
*==============================================================================
*函数名称:App_Sim900a_SendMsg
*函数功能:SIM900A发送短信
*输入参数:无
*返回值:无
*备 注:有待添加返回值,可更改接收手机号,默认发送“酒驾危险”
*==============================================================================
*/
void App_Sim900a_SendMsg (void)
{
sprintf((char*)gString,"AT+CMGF=1\r\n");
Med_Sim900a_SendCmd(gString);
delay_ms(200);
sprintf((char*)gString,"AT+CSCS=\"UCS2\"\r\n");
Med_Sim900a_SendCmd(gString);
delay_ms(200);
sprintf((char*)gString,"AT+CSMP=17,167,0,8\r\n");
Med_Sim900a_SendCmd(gString);
delay_ms(200);
sprintf((char*)gString,"AT+CMGS=\"%s\"\r\n",NEMBER);
USART_Send(UART1,gString);
delay_ms(500);
sprintf((char*)gString,"%s\r\n",CONTENT);
USART_Send(UART1,gString);
delay_ms(500);
sprintf((char*)gString,"%c\r\n",0x1a);
USART_Send(UART1,gString);
delay_ms(1000);
delay_ms(1000);
}
3.3 HC-SR505初始化程序
void DIInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(DI_1_GPIO_RCC,ENABLE);//使能时钟
GPIO_InitStructure.GPIO_Pin = DI_1_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
GPIO_Init(DI_1_GPIO_PORT, &GPIO_InitStructure);//初始化引脚
}