STM32单片机设计防儿童人员误锁/滞留车内警报系统

news/2024/11/18 6:40:41/

目录

 目录

前言

一、本设计主要实现哪些很“开门”功能?

二、电路设计原理图

1.电路图采用Altium Designer进行设计:

2.实物展示图片

三、程序源代码设计

四、获取资料内容


前言

近年来在车辆逐渐普及的情况下,由于家长的疏忽,将儿童误锁车内导致悲剧发生情况时有发生。儿童被锁车内因高温,缺氧而窒息死亡的事件也屡见不鲜。近年儿童被锁车内死亡的新闻逐渐增多,我们在一边提高注意力的同时,是不是可以通过一种预警器来避免这种情况。


因此,基于这种情况,我们以STM32F103芯片为控制核心设计的误锁车内的主动式报警装置便应运而生。本装置解决的最大问题就是一旦发现有孩童被遗忘在车里会立即打电话给车主报警。本装置由STM32F103c8t6芯片、红外遥控、GSM模块、温度监测模块、CO检测模块、WIFI模块等其他硬件设计而成的误锁车内的主动式报警装置,通过红外遥控模拟车钥匙关闭车门后立即上电各个模块立即开始工作,红外如果检测到人,GSM模块立即拨打电话给车主报警,而车主知道后可在赶回去车里时可用过APP实时了解车内温度高低和车内有害气体浓度,确保能在第一时间保障车内人员安全。

一、本设计主要实现哪些很“开门”功能?

1、APP远程开关控制车辆

2、APP远程读取车辆智能传感器数据信息

3、APP上显示数据弹窗信息警告功能,温度弹窗,有害气体弹窗

4、系统WIFI智能联网,数据双向交互,APP WIFI连接

5、无线遥控,可控制车辆开关门

6、红外热释式人体红外检测,一旦检测触发警报

7、车内有害气体检测,并不上传到手机APP显示

8、车内温度检测,温度数据上传到APP显示

9、报警装置的的人体红外检测到车上有人立即启动拨打电话进行警报

10、测内温度系统自动判别,立即开启风扇进行降温

二、电路设计原理图

1.电路图采用Altium Designer进行设计:

1、通过STM32F103C8T6单片机作为系统主控,最小系统电路是整个电路的核心。

2、通过红外热释模块实现的人体检测,模块与单片机之间通过数字引脚进行连接。

3、 使用无线433HZ射频遥控,模块与单片机进行数据引脚协议解析。

4、通过DS18B20进行测内温度检测,模块与单进行单总线连接。

5、使用GSMSIM900A短信模块发送短信打电话,模块与单片机使用串口连接。

6、通过STM32F103C8T6单片机作为系统主控,最小系统电路是整个电路的核心。

7、使用ESP8266 WIFI模块进行联网,模块与单片机串口连接。

8、使用MQ-9有害气体检测车内一氧化碳浓度,模块与单片机使用模拟引脚连接。

2.实物展示图片

 

三、程序源代码设计

代码如下(示例):


/* 用户区当前设备状态结构体*/
dataPoint_t currentDataPoint;
u8 wifi_sta=0;//WIFI连接状态 0: 断??: 已连接

//协议初始化
void Gizwits_Init(void)
{
    TIM3_Int_Init(9,7199);//1MS系统定时
      usart3_init(9600);//WIFI初始化
    memset((uint8_t*)&currentDataPoint, 0, sizeof(dataPoint_t));//设备状态结构体初始化
    gizwitsInit();//缓冲区初始化
}

//数据采集
void userHandle(void)
{
    //判断当前LED1开关量
       if(LED0==1&&aa==1)
         {
             currentDataPoint.valueAlarm_switch = 1;
         }
     else 
       {
             currentDataPoint.valueAlarm_switch = 0;
         }

    if(wifi_sta)//判断wifi 是否连接
    {
            temp=DS18B20_Get_Temp();//读取DS18B20温度值赋给temp
             currentDataPoint.valueCar_temp = temp ;//温度数据
                 if(temp>=Temp_alarm)//温度值>温度上限值
                 {  
                        temp_num++;
                      FAN=0;//继电器0触发
                        if(temp_num>=alarm_num)//警报次数达到一定次数
                        {
                            temp_num=0;
                            currentDataPoint.valueTemp_Alarm=1;//APP出现警报提示
                        } 
                 }
                 else  
                 {
                     FAN=1;
                    currentDataPoint.valueTemp_Alarm=0;
                 }
                 
                 adcx=Get_Adc_Average(ADC_Channel_1,10);
                 voltoge_2=(float)adcx*(3.3/4596);
                 if(voltoge_2>0.35&&voltoge_2<=0.75)
                 {gas = gas_chu;} 
                 else
                 {
                     voltoge_2=voltoge_2-voltoge_1;
                     gas=voltoge_2*450+gas_chu;
                 }
                 currentDataPoint.valueGas_con = gas; //有害气体数据
                if(gas>=gas_alarm)//有害气体浓度>浓度上限值
                {
                        gas_num++;
                        if(gas_num>=alarm_num)//警报次数达到一定次数
                        {
                            gas_num=0;
                            currentDataPoint.valueGas_Alarm=1;//APP出现警报提示
                        }
                }
                else
                { 
                    currentDataPoint.valueGas_Alarm=0;
                }
    }
    else  
    {
        //没连接wifi,将警报次数清零 保险
        if(temp_num!=0||gas_num!=0) 
        {
            temp_num=0;gas_num=0;
        }
    }         
}

//主函数
 int main(void)
 {    
    delay_init();                //延时函数初始化      
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
    KEY_Init();             //按键初始化 
    EXTIX_Init();             //外部中断初始化     
    Gizwits_Init();         //协议初始化
    DS18B20_Init();                    //温度初始化
    Adc_Init();                  //ADC初始化    
    LED_Init();                    //LED端口初始化
    uart_init(115200);        //串口初始化为115200
   
  printf("ATS7=30\r");//从拨打电那一刻起到自动挂断30秒
    delay_ms(200);
  while(1) 
    {
       userHandle();//用户采集   
     gizwitsHandle((dataPoint_t *)&currentDataPoint);//协议处理
    }     

 

四、获取资料内容


http://www.ppmy.cn/news/1547925.html

相关文章

嵌入式学习-C嘎嘎-Day03

嵌入式学习-C嘎嘎-Day03 1. 友元 friend 1.1 概念 1.2 友元函数 1.3 友元类 1.4 友元成员函数 2. 运算符重载 2.1 概念 2.2 友元函数运算符重载 2.3 成员函数运算符重载 2.4 特殊运算符重载 2.4.1 赋值运算符重载 2.4.2 类型转换运算符重载 2.5 注意事项 3. 字符串类型 string …

比特币前景再度不明,剧烈波动性恐即将回归

比特币市场降温&#xff0c;波动性增加 自特朗普赢得美国总统大选以来&#xff0c;比特币市场的投机狂热有所降温&#xff0c;现货和衍生品市场的活跃度开始减弱。比特币在上周五跌破87000美元&#xff0c;较之前创下的历史高点低了约6500美元。这一变化受到美联储主席鲍威尔讲…

【Mysql 底层原理】MySQL 查询优化器的工作原理:如何生成最优执行计划

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

Elasticsearch面试内容整理-Elasticsearch 基础概念

Elasticsearch 是一个基于 Apache Lucene 的开源分布式搜索和分析引擎,提供强大的全文本搜索、实时数据分析、分布式存储等功能。以下是 Elasticsearch 的一些基础概念: 什么是 Elasticsearch? ● Elasticsearch 是一个用于全文搜索和实时分析的分布式搜索引擎。 ● 开源和可…

el-cascader 使用笔记

1.效果 2.官网 https://element.eleme.cn/#/zh-CN/component/cascader 3.动态加载&#xff08;官网&#xff09; <el-cascader :props"props"></el-cascader><script>let id 0;export default {data() {return {props: {lazy: true,lazyLoad (…

跟李笑来学美式俚语(Most Common American Idioms): Part 10

Most Common American Idioms: Part 10 前言 本文是学习李笑来的Most Common American Idioms这本书的学习笔记&#xff0c;自用。 Github仓库链接&#xff1a;https://github.com/xiaolai/most-common-american-idioms 使用方法: 直接下载下来&#xff08;或者clone到本地…

安全见闻(完整版)

目录 安全见闻1 编程语言和程序 编程语言 函数式编程语言&#xff1a; 数据科学和机器学习领域&#xff1a; Web 全栈开发&#xff1a; 移动开发&#xff1a; 嵌入式系统开发&#xff1a; 其他&#xff1a; 编程语言的方向&#xff1a; 软件程序 操作系统 硬件设备…

【前端知识】Vue组件Vuex详细介绍

vuex组件介绍 概述一、Vuex的核心概念二、Vuex的工作原理三、Vuex的优点四、Vuex的使用场景五、Vuex的使用步骤 如何使用1. 安装 Vuex2. 创建 Store3. 在 Vue 实例中使用 Store4. 在组件中使用 Vuex5. 使用辅助函数简化代码 概述 Vuex是专门为Vue.js应用程序开发设计的状态管理…