基于STM32单片机车载儿童滞留检测系统设计_第1页
基于STM32单片机车载儿童滞留检测系统设计_第2页
基于STM32单片机车载儿童滞留检测系统设计_第3页
基于STM32单片机车载儿童滞留检测系统设计_第4页
基于STM32单片机车载儿童滞留检测系统设计_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

[14]。安装车内儿童滞留报警装置是解决这类事故的重要手段之一。综上所述,避免这种事故发生的主要方法还是加强监护人的防范意识,但难免偶尔出现粗心大意的时候。为了解决这样的问题,车内儿童滞留报警装置也应运而生。1.3主要研究内容本文设计基于STM32单片机车载儿童滞留检测系统,其主要目标是,解决汽车上锁后滞留儿童的人身安全问题,为儿童在车内滞留时,提供一种能够发出报警信号,并提供帮助救助的设备。在向外界寻求帮助的同时也改善车内温度过高和有害气体浓度过高的恶劣环境,从而给滞留儿童延长宝贵的救助时间,防止因儿童滞留车内时间过长而导致人身伤害的发生,避免儿童因滞留时间过长的那些悲剧事故的出现。该系统应完成的主要功能有:1.车主关门时,系统自动开启工作;2.系统可监测车内有无儿童滞留,;3.系统监测到儿童长时间滞留车内,发送短信给车主,通知车主注意儿童安全;4.系统监测到儿童长时间滞留车内,语音呼叫帮助;5.儿童滞留车内期间,系统通过CO2含量采集模块实时监测车内CO2含量,如果CO2含量超出阈值,系统自动打开天窗通风;反之保持天窗关闭状态。6.儿童滞留车内期间,系统通过温度采集模块实时监测车内的温度,如果车内温度超过阈值,自动开启降温设备;反之保持降温关闭状态。总体结构框图如图1所示。图1-1总体结构图第2章相关技术介绍本章主要介绍基于STM32单片机车载儿童滞留检测系统主要应用的技术,介绍这些技术的概念和主要应用,为下面章节展开论述提供技术参考。2.1基于STM32单片机车载儿童滞留检测系统系统本文描述了一项利用STM32单片机技术实现的车载儿童滞留检测系统。该系统通过不断的优化和改进,实现了系统的可靠性和稳定性,并采取相应的措施保证儿童的安全。该系统的工作原理如下:当车主关门时,系统会自动开启工作,监测车内是否有儿童滞留。系统通过使用传感器来检测车内的情况,如红外传感器。这些传感器能够实时监测车内的人员情况。如果系统监测到儿童长时间滞留车内,会通过短信或语音呼叫的方式通知车主注意儿童安全。这种提醒方式可以确保车主及时采取行动,避免儿童在车内受到伤害。同时,该系统还能够实时监测车内CO2含量和温度状况。如果CO2含量或温度超过设定的阈值,系统会自动打开天窗或开启降温设备,以确保车内空气流通和温度适宜,减少儿童滞留导致的窒息和中暑风险。通过实验验证,该系统能够有效地预防儿童滞留车内带来的安全问题。其具有较好的实用性和可靠性,能够在车辆停放期间保护儿童的安全。该系统采用了STM32单片机技术,具有较高的性能和稳定性。同时,系统的设计还考虑了低功耗和小型化等因素,以确保系统能够在车辆的有限空间内有效运行。2.2开发工具介绍Keil5是一款强大的嵌入式开发工具,广泛用于嵌入式系统的软件开发和调试。它是由ARM公司开发的,提供了一套完整的开发环境,包括编译器、调试器和集成开发环境(IDE)。Keil5集成了一系列功能强大的工具,使开发人员能够方便地进行嵌入式软件开发。其中最重要的是其支持多种微控制器架构,包括ARMCortex-M系列和8位和16位的微控制器。这使得开发人员能够在一个统一的开发环境中处理不同架构的嵌入式系统,从而提高了开发的效率。Keil5提供了一款高效的编译器,支持多种编程语言,包括C和汇编语言。编译器具有优化功能,能够生成高效的机器代码,并提供丰富的调试信息。此外,Keil5还提供了一个强大的调试器,可以与硬件连接,并支持实时调试、变量监视和断点调试等功能,帮助开发人员快速定位和解决问题。Keil5的集成开发环境(IDE)提供了一个直观和用户友好的界面,使开发人员能够轻松地创建、编辑和管理项目。IDE提供了许多实用的功能,如代码自动完成、语法高亮显示和项目管理工具。此外,Keil5还提供了丰富的软件库和示例代码,帮助开发人员快速上手和开发应用程序。Keil5还具备跨平台的特性,可以在多种操作系统上运行,包括Windows和Linux。这使得开发人员能够在自己熟悉的操作系统下进行开发,并且可以与其他开发人员进行协作。AD是一个设计原理图和PCB的专业软件,功能十分强大,且使用方便,比较容易上手。是业界首例将设计流程、集成化PCB设计、可编程器件如FPGA)设计和基于处理器设计的\t"/u012867916/article/details/_blank"嵌入式软件开发功能整合在一起的产品,一种同时进行PCB和FPGA设计以及嵌入式设计的解决方案,具有将设计方案从概念转变为最终成品所需的全部功能在原理图部分,新增加“灵巧粘帖”可以将一些不同的对象拷贝到原理图当中,比如一些网络标号,一页图纸的BOM表,都可以拷贝粘帖到原理图当中。原理图文件切片,多个器件集体操作,文本筐的直接编辑,箭头的添加,器件精确移动,总线走线,自动网标选择等强大的前端将多层次、多通道的原理图输入、VHDL开发和功能仿真、布线前后的信号完整性分析功能。在信号仿真部分,提供完善的混合信号仿真,在对XSPICE标准的支持之外,还支持对Pspice模型和电路的仿真。2.3短信发送技术SIM800C是一种基于2G网络的通信模块,它集成了GSM/GPRS功能,支持全球范围内的语音通话、短信和数据传输。SIM800C的通信技术涉及多个方面。首先,它支持GSM网络,通过与基站建立连接,实现与其他手机用户的语音通话和短信传输。其次,它支持GPRS数据传输,通过将数据分成小的数据包,并使用IP协议进行传输,可以通过GPRS连接到互联网,实现远程数据传输。SIM800C还集成了TCP/IP协议栈,通过该协议栈可以实现基于IP的数据传输,连接到远程服务器进行网络通信。此外,SIM800C使用AT指令集进行配置和控制,通过发送不同的AT指令,可以实现SIM卡的初始化、拨打电话、发送短信和建立GPRS连接等功能。最后,SIM800C具有较低的功耗和良好的电源管理功能,可通过低功耗模式和休眠模式来降低功耗,并通过唤醒引脚进行灵活的控制,适应不同的功耗需求。SIM800C的通信技术使其成为一款功能强大且适用于各种应用场景的通信模块。2.4单片机型号模块主控制芯片选择STM32F103C8T6,STM32F103C8T6单片机与普通51单片机相比有以下特点1、同样晶振的情况下,速度是普通51的8~12倍2、有8路10位AD3、多了两个定时器,带PWM功能4、有SPI接口。图2STM32单片机STM32是由意法半导体公司(STMicroelectronics)推出的一系列32位的嵌入式微控制器(MCU)。STM32系列产品在性能、功耗、成本、可扩展性、易用性等方面均表现出色,被广泛应用于工业自动化、汽车电子、智能家居、医疗设备、安防监控、航空航天等领域。STM32系列产品有多个系列,每个系列又包含多个型号,针对不同的应用场景提供不同的解决方案。其中,STM32F系列是最为常用的一款产品,它提供了丰富的外设和接口,如USB、CAN、SPI、I2C、USART等,并支持多种通信协议和操作系统,如FreeRTOS、LwIP等。此外,STM32还提供了一套完整的开发工具链,包括STM32CubeMX、STM32CubeIDE等,方便开发者进行快速开发和调试。本设计采用STM32F103C8T6单片机作为主控。2.5本章小结本章主要是介绍基于STM32单片机车载儿童滞留检测系统需要用到的技术,并对相关技术进行论述和探讨,为论文的进一步展开论述提供理论基础。第3章系统的硬件部分设计3.1系统总体设计本设计采用文献研究法,通过阅读相关文献和期刊,并提出了一种全新的系统结构。在此基础上,详细设计了系统,以明确开发目标。通过归纳与演绎、分析与综合以及抽象与推广等方法,深入了解软件和硬件开发相关技术,掌握各个功能模块之间的关系,以及系统的工作原理和本质,最终确定了开发流程。通过对各功能模块的结合,设计出了一套优良的系统,并编写了规范的程序。希望该系统能够得到有效的应用和推广,为双足竟步机器人设计领域的发展做出贡献。(1)硬件部分需要单片机STM32F103C8T6、有害气体传感器、人体感应模块、温度传感器、短信模块、语音模块、继电器;(2)软件平台程序用keil5;(3)画原理图用AD;(4)编程语言用C语言;(5)用户信息显示查看。3.2系统的主要功能模块设计3.2.1温度采集模块设计DHT11是一种数字温湿度传感器,其主要功能是测量环境的温度和湿度并输出数字信号。主要参数1.工作电压:3V至5.5V2.温度测量范围:0°C至50°C3.湿度测量范围:20%RH至90%RH4.温度精度:±2°C5.湿度精度:±5%RH6.输出信号:数字信号工作原理其工作原理是利用一种称为电容式湿度测量技术的方法来测量湿度,并使用一个NTC热敏电阻来测量温度。当DHT11被放置在环境中时,它会自动测量环境的温度和湿度,并将这些值转换为数字信号,然后通过单总线接口输出给外部设备。该数字信号由40位数据帧组成,其中包含16位湿度数据、16位温度数据和8位校验和。外部设备可以使用该数据帧来获取环境的温度和湿度。在代码中使用DHT11传感器的库函数来读取温度值。读取到温度值后,通过判断温度是否超过某个阈值来触发车载儿童滞留检测系统的报警功能。为了实现实时监测,将读取温度的代码放在一个无限循环中,以保持持续监测的状态。该模块设计简单、实用,可以为车主提供一个有效的儿童滞留预防方案。温度采集模块如图3-1所示。图3-1温度采集模块原理图3.2.2人体感应模块设计AM312是一种常用的红外线感应器,主要用于人体感应、智能家居、自动化控制等领域。其主要功能是探测人体的热辐射,当有人经过时,它能够感应到人体释放的红外线辐射信号,并将这个信号转化为电信号输出。其主要参数包括探测范围、探测角度、工作电压等。一般来说,AM312的探测范围在5-7米之间,探测角度为110度左右,工作电压在4.5-20V之间。AM312广泛应用于安防、智能家居、自动化控制等领域。例如,在智能家居领域,可以使用AM312感应器来实现自动控制灯光、空调、音响等家电设备,提高生活的舒适度和便捷性。在安防领域,AM312可以用于控制门禁、监控摄像头等设备,提高安全性和便捷性。工作原理基于人体热辐射原理。当有人经过AM312感应器探测范围时,人体会释放红外线辐射,感应器就会探测到这个信号,并将信号转化为电信号输出。感应器内部一般采用了一个红外线传感器和一个运算放大器,通过调节传感器和放大器之间的参数来实现对探测范围和探测灵敏度的控制。当有人经过时,感应器会输出一个电信号,这个信号可以触发后续的自动化控制或者安防设备。本设计根据其灵敏度高、低功耗、性价比高的特点,用来检测是否有儿童滞留在车内,以满足设计的需求。人体感应模块原理图如图3-2所示。图3-2人体感应模块原理图3.2.3CO2含量采集模块设计MQ-2是一种气体传感器,可以检测多种可燃气体,如甲烷、丙烷、乙烯、烷基、乙醇、一氧化碳等。其主要功能是检测环境中有害气体的浓度,然后输出一个电信号,以便监测和报警。主要参数:1.工作电压为5V2.最大负载电流为150mA3.检测范围为200-10000ppm4.响应时间为<10秒5.恢复时间为<30秒。工作原理:基于化学敏感元件(CSE)的电学特性随着被测气体的浓度而发生变化。当被测气体与CSE接触时,其表面发生化学反应,从而改变其电学特性。MQ-2传感器中的电路测量这些变化,并输出一个与被测气体浓度成正比的电信号。这个电信号可以被微控制器或其他电子设备读取,并用于报警或其他目的。CO2含量采集模块原理图如图3-3所示。图3-3CO2采集模块原理图3.2.4语音合成模块设计SYN6288是一种中文语音合成芯片,其主要功能包括将文本转换成中文语音输出,并支持音量、语速、音调等参数调节。该芯片广泛应用于各种中文语音合成设备,例如语音提醒、语音播报、语音交互、语音导航等领域。通过将其集成到各种应用中,可以实现人机交互的自然语言交流,提升用户体验。主要参数:1.支持的语音格式:中文普通话2.支持的语音音频输出:模拟音频输出3.支持的工作电压:3.3V-5V4.控制接口:串口5.内置语音库:包含常用词汇和短语6.支持语音合成参数调节:音量、语速、音调工作原理:SYN6288芯片内部集成了语音合成算法和中文语音库,通过串口控制接口接收外部文本输入,并将其转换成对应的语音信号输出。在输出过程中,可通过外部控制电路调节音量、语速、音调等参数以满足用户需求。语音合成模块原理图如图3-4所示。图3-4语音合成模块原理图3.2.5GSM模块设计SIM800C是一种集成了GSM/GPRS通信功能的模块,它主要被用于M2M(机器对机器)通信和物联网应用,SIM800C广泛应用于各种物联网设备和M2M应用,如智能家居、智能车辆、远程监控、智能仓储、智能交通等领域。它可以通过短信、语音、数据传输等方式实现设备之间的通信,并可以通过GPS定位功能对设备的位置进行监控和追踪。主要功能1.支持GSM/GPRS通信2.支持短信发送和接收3.支持语音通信4.支持TCP/UDP通信5.支持GPS定位主要参数:1.工作电压:3.4V-4.4V2.通信频率:GSM850/EGSM900/DCS1800/PCS19003.数据传输速率:GPRS类104.接口类型:UART、USB、SIM卡口、GPIO等工作原理SIM800C模块通过与SIM卡的通信实现对GSM网络的连接,进而实现短信、语音、数据传输等功能。在使用SIM800C之前,需要将其连接到电源和外部设备(如单片机或PC)上,并对其进行初始化和配置。之后,通过向SIM800C发送AT指令,可以控制它的各种功能并获取相应的数据。GSM模块原理图如图3-5所示。图3-5GSM模块原理图第4章系统的软件设计4.1系统总体流程图当单片机初始化成功会检测车内是否有人,如果有人会发短信给车主,同时进行语音提示再执行以下操作;反之,不发短信不提示不执行以下操作。通过温湿度传感器和MQ-2型烟雾传感器分别检测车内的温度和CO2含量,如果车内温度超过给定的阈值,自动开启降温模式;反之,保持关闭降温状态。如果车内CO2含量超过给定的阈值,自动打开天窗通风;反之,保持天窗关闭状态。总体流程图如图4-1所示:图4-1系统总体流程图4.2温度采集模块软件的设计当单片机初始化成功会通过温湿度传感器检测内的温度,如果车内温度超过给定的阈值,自动开启降温模式;反之,保持关闭降温状态。温度采集模块子流程图如图4-2所示:图4-2温度采集模块子流程图4.3CO2含量采集模块软件的设计当单片机初始化成功会通过MQ-2型烟雾传感器检测车内CO2含量,如果车内CO2含量超过给定的阈值,自动打开天窗通风;反之,保持天窗关闭状态。CO2含量采集模块子流程图如图4-3所示:图4-3CO2含量采集模块子流程图4.4人体感应模块软件的设计当单片机初始化成功会检测车内是否有人,如果有人会发短信给车主,同时进行语音提示;反之,不发短信不提示。人体感应模块子流程图如图4-4所示:图4-4人体感应模块子流程图弟5章系统测试5.1系统实物图图5-1系统实物图5.2测试原理测试过程应该全面、系统地测试所有功能,确保系统的各个部分都可以正常工作。测试应该尽可能地模拟实际使用情况,以保证测试结果的可靠性。在测试过程中,需要记录测试结果,包括测试数据、测试环境等,以便分析测试结果并找出问题。如果发现问题,应该及时进行排查,并修复问题,直到所有问题都得到解决。5.3短信/语音提示功能测试当单片机初始化成功会检测车内是否有人,如果有人会发短信给车主,同时进行语音提示;反之,不发短信不提示。人体感应传感器实物图如图5-2所示;GSM模块实物图如图5-3所示;语音合成模块实物图如图5-4所示。图5-2人体感应传感器实物图图5-3GSM模块实物图图5-4语音合成模块实物图5.4天窗开关功能测试当单片机初始化成功会通过MQ-2型烟雾传感器检测车内CO2含量,如果车内CO2含量超过给定的阈值,自动打开天窗通风;反之,保持天窗关闭状态。烟雾传感器实物图如图5-5所示;天窗开关继电器实物图如图5-6所示。图5-5烟雾传感器实物图图5-6天窗开关继电器实物图5.5降温功能测试当单片机初始化成功会通过温湿度传感器检测内的温度,如果车内温度超过给定的阈值,自动开启降温模式;反之,保持关闭降温状态。温湿度传感器实物图如图5-7所示;降温继电器实物图如图5-8所示。图5-7温湿度传感器实物图图5-8降温继电器实物图总结与展望STM32单片机车载儿童滞留检测系统是一种用于检测车内是否有儿童滞留的系统,可以有效地避免儿童在车内被遗忘而导致的意外情况。本系统采用了STM32单片机作为主控芯片,配合温湿度传感器、人体红外传感器、CO2含量检测传感器等多种传感器,通过采集车内的温湿度、声音和压力等信息,以判断车内是否有儿童滞留,并及时发送警报信息,以提醒车主及时处理。在本系统设计过程中,需要进行硬件设计和软件编程两个方面的工作。在硬件设计方面,需要进行电路原理图设计、PCB设计、元器件选型等工作;在软件编程方面,需要进行系统架构设计、程序编写、算法优化等工作。本系统的核心功能是基于STM32单片机的数据采集和处理,因此对于单片机的学习和掌握具有重要的意义。展望:随着人们对安全意识的提高,对车载儿童滞留问题的关注也越来越多。未来,车载儿童滞留检测系统有望得到更加广泛的应用。为了进一步提高系统的可靠性和安全性,可以考虑加入摄像头等传感器,以提高儿童滞留的检测精度和覆盖范围。同时,还可以通过云平台等技术手段,实现数据的实时传输和远程监控,以方便车主及时掌握车内情况。此外,可以考虑加入更多的功能,如人脸识别、语音交互等,进一步提升系统的智能化和便捷性。参考文献侯丽;赵亚妮;胡亚楠;刘凇余.基于无线传感器技术的车内儿童滞留报警装置[P].石河子科技.2022.田崇峰;徐杨;闵玺润.基于物联网技术的儿童滞留车内高温紧急报警求救装置设计与实现[C],工业技术与职业教育.2022.王星宇;李康伟;张帆;孙海峰.车内儿童防滞留系统的设计与实现[C],设备管理与维修.2020.陈浩东;万立里;袁子航;姚凤娟;陈俊杰.基于Mega2560单片机的车内滞留儿童安全监测系统设计.铜陵职业技术学院学报,2021.吕绪浩;何文超;徐婷.儿童滞留车内主动安全防护系统设计[J]机电信息,2019.张岚.基于51单片机的车内滞留儿童监测系统的设计与实现[J]现代信息科技.2022.宋佳超;林俊烨;邢伟志;张思涵.基于人脸年龄识别的车内儿童防滞留监测系统[J].电子制作,2021.林倩;陈思维;胡单辉 .基于无线传感器网络的车内儿童滞留检测系统的研究[P].佳木斯大学学报,2020.梁雨石;朱冬;孙雪莲;刘国凯.一种车内滞留儿童应急脱险装置的设计[J].中国新技术新产品.2021吴东盛;陈洁球;翁建红;冯南山;陈芷衡.一种儿童滞留安全警报装置的研发[M].农业装备与车辆工程.2021DuanDan-hui;;ZhuMing-yuan.Investigationondietarynutrientsamongruralstrandedchildrenof2-7yearoldsinchina.[P].2020ScheftelSusan.Thechildren'sbooksofWilliamSteig:acreativerepresentationofearlyseparationandresiliency..2022. NagwaAEl-Esnawy、WahibaAZarouk.DetectionofTTVirus-DNAamongChildrenwithCollagenVascularDiseasesReceivingBloodTransfusions.2019LauraSimms. ChildrenStranded"AmongTheseDarkSatanicMills":TheChild'sResponsetoEvilinFantasiesFromFourDifferentCountries[P]. JournaloftheFantasticintheArts.2020TheLancet.TraumaformigrantchildrenstrandedinGreece.2019RFSurgicalSystems,Inc.;AtlantaMedicalCenterSelectsRFDetectionTechnologyforthePreventionofRetainedSurgicalItems[J].Politics&GovernmentBusiness,2012.GarryDavidJ,AsanjaraniSandra,GeissDonnaM.Policyforpreventionofaretainedspongeaftervaginaldelivery.[J].Casereportsinmedicine,2012,2012.刘宝宇,程进,邹卓成,赵佳麒,常创创,姚宇军,李光东,王骏琦,周子肖,余兴,邹小平.校车滞留儿童检测系统的研究[J].传感器世界,2020,26(02):18-24.DOI:10.16204/ki.sw.2020.02.003.王文乐,郑鑫,袁昊,胡一品,张轶,季惠.基于Arduino的车载儿童防滞留系统模拟设计[J].汽车实用技术,2020(06):56-58.DOI:10.16638/ki.1671-7988.2020.06.018.张永生,张梦杰,范金鑫,刘琼琼,游专.基于STM32F103的车载儿童防滞留报警系统[J].内燃机与配件,2020(12):132-133.DOI:10.19475/ki.issn1674-957x.2017.12.075.曲云鹤,于源.一种智能车载儿童求救装置的设计与实现[J].机械设计与制造,2021(01):156-158.DOI:10.19356/ki.1001-3997.2021.01.036.李芯怡,郭思蔷,孙梦茹,姜雪松.基于工业工程技术的车载儿童报警装置设计[J].价值工程,2020,39(27):209-211.贾晓毅.车载儿童安全座椅的创新设计与实践[D].齐鲁工业大学,2020.DOI:10.27278/ki.gsdqc.2020.000336.杨宇,薛同川,施洁,曹克明,刘烜宇,周学礼.儿童遗留车内自动安全处理车载系统[J].山西电子技术,2020(01):48-51.附录电路图源代码#include"sys.h"#include"delay.h"#include"usart.h"#include"usart3.h"#include"app.h"#include"tim.h"#include"voice.h"#include"stdlib.h"//#include"usart2.h"#include"gpio.h"#include"dht11.h"#include"adc.h"#include"bsp_gsm_usart.h"#include"bsp_gsm_gprs.h"uint8_tval[2];intmain(void){u8t; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级 delay_init(); //延时函数初始化 DHT11_Init(); USART_Config();//串口打印USART3_Config(9600);//语音adc_init();system_Time_Init(9,7199);//系统时间定时器2 GPIOSys_Configuration();//继电器GSM_USART_Config(); while(gsm_cmd("AT\r","OK",1000)!=GSM_TRUE); while(IsInsertCard()!=GSM_TRUE){ delay_ms(500); } while(1) { app(); }}#ifndef__SYS_H#define__SYS_H #include"stm32f10x.h" //0,不支持ucos//1,支持ucos#defineSYSTEM_SUPPORT_OS 0 //定义系统文件夹是否支持UCOS //IO口操作宏定义#defineBITBAND(addr,bitnum)((addr&0xF0000000)+0x2000000+((addr&0xFFFFF)<<5)+(bitnum<<2))#defineMEM_ADDR(addr)*((volatileunsignedlong*)(addr))#defineBIT_ADDR(addr,bitnum)MEM_ADDR(BITBAND(addr,bitnum))//IO口地址映射#defineGPIOA_ODR_Addr(GPIOA_BASE+12)//0x4001080C#defineGPIOB_ODR_Addr(GPIOB_BASE+12)//0x40010C0C#defineGPIOC_ODR_Addr(GPIOC_BASE+12)//0x4001100C#defineGPIOD_ODR_Addr(GPIOD_BASE+12)//0x4001140C#defineGPIOE_ODR_Addr(GPIOE_BASE+12)//0x4001180C#defineGPIOF_ODR_Addr(GPIOF_BASE+12)//0x40011A0C#defineGPIOG_ODR_Addr(GPIOG_BASE+12)//0x40011E0C#defineGPIOA_IDR_Addr(GPIOA_BASE+8)//0x40010808#defineGPIOB_IDR_Addr(GPIOB_BASE+8)//0x40010C08#defineGPIOC_IDR_Addr(GPIOC_BASE+8)//0x40011008#defineGPIOD_IDR_Addr(GPIOD_BASE+8)//0x40011408#defineGPIOE_IDR_Addr(GPIOE_BASE+8)//0x40011808#defineGPIOF_IDR_Addr(GPIOF_BASE+8)//0x40011A08#defineGPIOG_IDR_Addr(GPIOG_BASE+8)//0x40011E08//IO口操作,只对单一的IO口!//确保n的值小于16!#definePAout(n)BIT_ADDR(GPIOA_ODR_Addr,n)//输出#definePAin(n)BIT_ADDR(GPIOA_IDR_Addr,n)//输入#definePBout(n)BIT_ADDR(GPIOB_ODR_Addr,n)//输出#definePBin(n)BIT_ADDR(GPIOB_IDR_Addr,n)//输入#definePCout(n)BIT_ADDR(GPIOC_ODR_Addr,n)//输出#definePCin(n)BIT_ADDR(GPIOC_IDR_Addr,n)//输入#definePDout(n)BIT_ADDR(GPIOD_ODR_Addr,n)//输出#definePDin(n)BIT_ADDR(GPIOD_IDR_Addr,n)//输入#definePEout(n)BIT_ADDR(GPIOE_ODR_Addr,n)//输出#definePEin(n)BIT_ADDR(GPIOE_IDR_Addr,n)//输入#definePFout(n)BIT_ADDR(GPIOF_ODR_Addr,n)//输出#definePFin(n)BIT_ADDR(GPIOF_IDR_Addr,n)//输入#definePGout(n)BIT_ADDR(GPIOG_ODR_Addr,n)//输出#definePGin(n)BIT_ADDR(GPIOG_IDR_Addr,n)//输入//以下为汇编函数voidWFI_SET(void); //执行WFI指令voidINTX_DISABLE(void);//关闭所有中断voidINTX_ENABLE(void); //开启所有中断voidMSR_MSP(u32addr); //设置堆栈地址#endif#ifndef__DELAY_H#define__DELAY_H #include"sys.h" voiddelay_init(void);voiddelay_ms(u16nms);voiddelay_us(u32nus);voiddelay_nms(u16nms);voiddelay_nus(u32nus);#endif#ifndef__USART_H#define__USART_H#include"stdio.h" #include"sys.h"#include"stm32f10x.h" //externu8USART_RX_BUF[USART_REC_LEN];//接收缓冲,最大USART_REC_LEN个字节.末字节为换行符//externu16USART_RX_STA; //接收状态标记 //voiduart_init(u32bound);//串口1-USART1#defineDMA_UART1_data_len128externu8DMA_UART1_data[DMA_UART1_data_len];#defineDEBUG_USARTxUSART1#defineDEBUG_USART_CLKRCC_APB2Periph_USART1#defineDEBUG_USART_APBxClkCmdRCC_APB2PeriphClockCmd#defineDEBUG_USART_BAUDRATE9600//USARTGPIO引脚宏定义#defineDEBUG_USART_GPIO_CLK(RCC_APB2Periph_GPIOA)#defineDEBUG_USART_GPIO_APBxClkCmdRCC_APB2PeriphClockCmd#defineDEBUG_USART_TX_GPIO_PORTGPIOA#defineDEBUG_USART_TX_GPIO_PINGPIO_Pin_9#defineDEBUG_USART_RX_GPIO_PORTGPIOA#defineDEBUG_USART_RX_GPIO_PINGPIO_Pin_10#defineDEBUG_USART_IRQUSART1_IRQn#defineDEBUG_USART_IRQHandlerUSART1_IRQHandlervoidUSART_Config(void);voidUsart_SendByte(USART_TypeDef*pUSARTx,uint8_tch);voidUsart_SendString(USART_TypeDef*pUSARTx,char*str);voidUsart_SendHalfWord(USART_TypeDef*pUSARTx,uint16_tch);#endif#ifndef__USART3_H#define__USART3_H#include"stdio.h" #include"sys.h"#defineUSART3_REC_LEN 200 //定义最大接收字节数200#defineEN_USART3_RX 1 //使能(1)/禁止(0)串口1接收 externu8USART3_RX_BUF[USART3_REC_LEN];externu16USART3_RX_STA; voiduart3_init(u32bound);voidUSART3_Config(u32bound);voidUSART3_send_byte(u8data);voidUSART3_send_buf(u8*buf,u16len);#endif#ifndef__app_H#define__app_H #include"stm32f10x.h" voidapp(void);externu16gonglv_MAX;//功率当前值externu16liangdu_MIN;//亮度externu16pm_MAX;//pmexternu8shidu_MAX;//湿度externu8wendu_MAX;//温度externu16youhai_MAX;//烟雾externu16v_C;//功率当前值externu16liangdu_C;//亮度externu16pm_C;//pmexternu8shidu_C;//湿度externu8wendu_C;//温度externu16youhai_C;//烟雾externu8key_433;typedefstruct{ u16 V; u32I; u32W; u32Q; u16HZ; u16GLYS; u16 GHAlmflg; //功耗异常报警}Param; externParamParamter; #endif//printf("sys_running_timer.ms1=%djiance_tim.ms1=%d",sys_running_timer.ms,jiance_tim.ms); // printf("sys_running_timer.sec1=%djiance_tim.sec1=%d",sys_running_timer.sec,jiance_tim.sec);#ifndef__TIM_H#define__TIM_H #include"sys.h"typedefstruct{ u32ms; u32sec;}sys_tim;externsys_timsys_running_timer;voidsystem_Time_Init(u16arr,u16psc);#endif#ifndef__VOICE_H#define__VOICE_H#include"stdio.h" #include"sys.h"voidSYN_FrameInfo(u8Music,u8*HZdata);voidYS_SYN_Set(u8*Info_data);#endif#ifndef__USART2_H#define__USART2_H#include"stdio.h" #include"sys.h"voiduart2_init(u32bound);#defineDMA_UART2_data_len 128 //定义最大接收字节数200#defineEN_USART2_RX 1 //使能(1)/禁止(0)串口1接收 externu8DMA_UART2_data[DMA_UART2_data_len];externu16USART2_RX_STA; voidUSART2_SendString(u8*DAT,u8len);voidUSART2_SendData(u8data);voidUSART2_Init(u32bound);#endif#ifndef_GPIO_H#define_GPIO_HvoidGPIOSys_Configuration(void);#definezhendongGPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0)#definehongwaiGPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5)#definereshiGPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7)#definekeyGPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)#defineS_433GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)#defineBEEPGPIO_SetBits(GPIOA,GPIO_Pin_6);#defineBEEPNGPIO_ResetBits(GPIOA,GPIO_Pin_6);#defineO_DGPIO_SetBits(GPIOC,GPIO_Pin_13);#defineC_DGPIO_ResetBits(GPIOC,GPIO_Pin_13);#endif#ifndef__DHT11_H#define__DHT11_H#include"sys.h"//IO方向设置#defineDHT11_IO_IN(){GPIOA->CRL&=0XFF0FFFFF;GPIOA->CRL|=8<<20;}#defineDHT11_IO_OUT(){GPIOA->CRL&=0XFF0FFFFF;GPIOA->CRL|=3<<20;}////IO操作函数 #define DHT11_DQ_OUTPAout(5)//数据端口 PA0#define DHT11_DQ_INPAin(5)//数据端口 PA0externu8temperature;externu8humidity;u8DHT11_Init(void);//初始化DHT11u8DHT11_Read_Data(u8*temp,u8*humi);//读取温湿度u8DHT11_Read_Byte(void);//读出一个字节u8DHT11_Read_Bit(void);//读出一个位u8DHT11_Check(void);//检测是否存在DHT11voidDHT11_Rst(void);//复位DHT11//voidDHT11_IO_IN(void);//voidDHT11_IO_OUT(void);#endif#ifndef_adc_h_#define_adc_h_#include"sys.h"externu16adc_value[3];voidadc_init(void);#endif#ifndef__BSP_GSM_USART_H#define __BSP_GSM_USART_H#include"stm32f10x.h"#include<stdio.h>//GSM_GPRS使用的串口#defineGSM_USARTxUSART2#defineGSM_USART_CLKRCC_APB1Periph_USART2#defineGSM_USART_APBxClkCmdRCC_APB1PeriphClockCmd#defineGSM_USART_BAUDRATE9600//USARTGPIO引脚宏定义#defineGSM_USART_GPIO_CLK(RCC_APB2Periph_GPIOA)#defineGSM_TX_GPIO_PORTGPIOA#defineGSM_TX_GPIO_PINGPIO_Pin_2#defineGSM_RX_GPIO_PORTGPIOA#defineGSM_RX_GPIO_PINGPIO_Pin_3#defineGSM_USART_IRQUSART2_IRQn#defineGSM_USART_IRQHandlerUSART2_IRQHandlervoidGSM_USART_Config(void);voidbsp_GSM_USART_IRQHandler(void);char*get_rebuff(uint8_t*len);voidclean_rebuff(void);voidGSM_USART_printf(char*Data,...);#endif/*__BSP_GSM_USART_H*/#ifndef__BSP_GSM_GPRS_H#define__BSP_GSM_GPRS_H#include"stm32f10x.h"#include"bsp_gsm_usart.h"#include"delay.h"typedefenum{GSM_TRUE,GSM_FALSE,}gsm_res_e;typedefenum{GSM_NULL=0,GSM_CMD_SEND='\r',GSM_DATA_SEND=0x1A,//发送数据(ctrl+z)GSM_DATA_CANCLE=0x1B,//发送数据(Esc)}gsm_cmd_end_e;//本机号码AT+CNUM\r+CNUM:"",,129,7,4//很多SIM卡默认都是没设置本机号码的,解决方法如下/blog/a21234642.html//SIM营运商AT+COPS?\r+COPS:0,0,"CHN-UNICOM"OK//SIM卡状态AT+CPIN?\r+CPIN:READYOK//SIM卡信号强度AT+CSQ\r+CSQ:8,0OKexternuint8_tgsm_cmd (char*cmd,char*reply,uint32_twaittime);externuint8_tgsm_cmd_check (char*reply);#defineGSM_CLEAN_RX()clean_rebuff()#definegsm_ate0()gsm_cmd("ATE0\r","OK",100)//关闭回显#defineGSM_TX(cmd) GSM_USART_printf("%s",cmd)#defineGSM_IS_RX()(USART_GetFlagStatus(GSM_USARTx,USART_FLAG_RXNE)!=RESET)#defineGSM_RX(len)((char*)get_rebuff(&(len)))#defineGSM_DELAY(time)delay_ms(time)//延时#defineGSM_SWAP16(data) __REVSH(data)/***************************电话功能***************************/#define GSM_HANGON() GSM_TX("ATA\r"); #define GSM_HANGOFF() GSM_TX("ATH\r"); //挂断电话 uint8_t gsm_init (void); //初始化并检测模块uint8_tgsm_cnum(char*num);//获取本机号码voidgsm_call (char*num);//发起拨打电话(不管接不接通)uint8_t IsRing (char*num); //查询是否来电,并保存来电号码uint8_tIsInsertCard(void);/***************************短信功能****************************/uint8_tgsm_sms(char*num,char*smstext);//发送短信(支持中英文,中文为GBK码)char*gsm_waitask(uint8_twaitask_hook(void));//等待有数据应答,返回接收缓冲区地址uint8_t IsReceiveMS (void);uint8_t readmessage (uint8_tmessadd,char*num,char*str);/***************************GPRS功能******************

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论