基于单片机的智能灭火小车设计
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式
文章目录
- 概要
- 一、整体设计方案
- 1.1 整体设计任务
- 1.2 整体设计要求
- 1.3 系统整体方案设计
- 1.3.1 整体模块设计
- 1.3.2 整体设计方案选择
- 二、系统的硬件设计
- 2.1 系统硬件基本组成部分的设计方案
- 2.1.1 控制器模块
- 2.3系统检测部分的设计思想
- 2.4系统各模块的最终方案
- 三、软件设计
- 3.1 系统的软件设计
- 3.2主程序流程图
- 四、结论
- 五、 文章目录
概要
当今社会,火灾在现实生活中普遍存在,被称为自然界三大灾害之一。当火灾发后,灭火工作坏境恶劣时,人工不能完成一些灭火任务,此时便可以使用智能灭火小车去完成相应的任务。本文设计了一个以单片机为核心的智能灭火小车。本设计是利用单片机作为灭火的控制中心,检测火源用火焰传感器,小车行驶由直流减速电机驱动行驶。电机驱动电路部分使用L293D芯片,小车行驶使用舵机控制方式。实现的功能是:从安全区出发,沿着路线前进,火焰传感器检测到火源之后,启动水泵进行灭火。
关键词:STC89C52;舵机控制;吹灭火源
一、整体设计方案
1.1 整体设计任务
本设计是制作一个智能灭火小车,使其能够沿着指定路线进行灭火工作。其工作原理如下图:
图1.1 灭火实验场地
1.2 整体设计要求
综合考虑实际工作的要去提出下列的设计目标:
(1)在启动以后能够自动探测火源的位置并且前往火源处
(2)在到达目的地以后停止前进,开始灭火装置扑灭火源。
(3)检测火源的存在状态,一直到被扑灭为止,扑灭之后探测下一个火源并前往灭火
1.3 系统整体方案设计
1.3.1 整体模块设计
本设计的整体设计方案:火源是通过火焰传感器来检测的,然后单片机STC89C52接收到火焰传感器输出的热源信号并进行处理。电机驱动方式采用舵机控制。本设计方案大致由6个部分组成,其系统构成如图1.2:
图1.2系统模块示意图
系统各个功能模块简介:
1.控制器模块:作为整个控制系统的核心器。
2.寻光模块:主要用来给灭火小车做导航作用。
3.电源模块:主要用来给整个控制进行供电。
4.火焰检测模块:主要用来对火焰进行检测。
5.电机驱动模块:主要用来驱动小车的行驶。
6.灭火模块:主要是用来控制水泵进行灭火。
1.3.2 整体设计方案选择
方案一:在智能灭火小车的两侧各安装两个轮子并由两个普通直流减速电机驱动,方便智能灭火小车行驶并起平衡支撑作用。用传感器来探测是否存在火源,可以将其安装位置选择在小车两侧,通过比较其来火焰距离小车的距离,在左侧的传感器上安装放大器,用来寻找远处的火源,右侧的传感器用来寻找近处的火源。为了能够精确的定位火源的位置,在小车的中部也安置两个传感器,两个之间的距离稍稍超过前后的两个传感器之间的距离。小车启动后,从安全区行驶出来,到达中线以后左转弯,然后通过左侧的传感器来寸照是否在一侧存在火源,如果存在火源的时候下一次转弯的时候向左转,如果在这个时候刚好前方不远有障碍物存在则沿着之前行走的路程往回行使,一直到前一个路口在向左转,无论是在左侧探测到存在火源还是在右侧探测到存在火源,就前往火源处将其扑灭。接下来继续回到中线上行使,在行使过程中随时监测火源,在行驶到了墙边的位置以后,通过一个一百八十度的转角探询另一侧的火情。此设计方案中,需要用的硬件并不复杂,在软件方面,也有很清晰的编写思路,然而实际上其未必能够达到足够的避障效果,目前的情况是,如果障碍物是静止不变的话,那么在探测到其位置可以实现良好的避障效果,但是如果障碍物会发生移动,则避障效果就难以保证,从而灭火任务也有可能无法完成。
方案二:比方案一相比,车身不变,在小车前方添加一个红外测距仪,用来探测障碍物的位置,在两侧安装火焰传感器,传感器发出信号,信号通过比较器的时候会被探测出距离大小。两侧的传感器都能够检测到何处存在火源。小车启动以后,出发到达中线处,然后想作转动,同时开启左侧的传感器探测火情,如果不存在火源的话,就继续前行,如果存在火源的话,就在下个转角处左转,前往货源出扑灭火源。接下来继续向前行驶一直到发现下一个火源。结合实际情况以及两种方案的特点综合考虑以后在这里选择方案二。
二、系统的硬件设计
2.1 系统硬件基本组成部分的设计方案
2.1.1 控制器模块
本设计中,系统的控制中心是STC89C52单片机。STC89C52是宏晶科技生产的低能耗、高速可靠、低抗干扰、价格低的8位微处理器。
STC89C52具有的优点:
(1)高抗静电(ESD保护);
(2)32位I/O口线;
(3)内置2KB EEPOM;
(4)4个外部中断;
(5)3个16位定时器;
(6)最高运作频率35MHZ,6T/12T可选;
(7)晶振频率为11.0592MHZ;
(8)内部集成A/D、D/A转换;
(9)可直接进行串口下载。
STC89C52单片机引脚图如图2.1所示:
图2.1 STC89C52单片机引脚图
2.3系统检测部分的设计思想
小车移动和灭火操作都是以这个模块的成功为前提的,传感器将采集到的信息传送到单片机,单片机处理过后发出控制信号,电机根据控制信号来转动,从而控制智能灭火小车行驶,基本原理可用如图2.7来表示:
图2.7 检测部分基本原理图
(1)细分又可以分为两个部分,其一是红外火焰传感器检测,外界温度的变化会影响传感器的电流大小,同时距离也有一定的影响,将变化的电压与参考电压对比,便能够判断出火源在哪个位置以及两者间的距离,这是火焰传感器的工作机理;红外传感器用于检查周围行驶路线上是否存在障碍物,直接使用集成模块,如果障碍物和小车的距离接近到10厘米以内,电平便会升高。其二是光电寻线传感器检测。依靠路径和周围区域颜色灰度的不同来探测行驶路线,受到外界光源的影响较大。
(2)此外,避障和路程测量是通过软件来自动进行的,可以在一定程度上降低硬件技术在实现上的困难。
2.4系统各模块的最终方案
经过分析和论证,设计的原器件清单如附录D所示,实物图如附录E。系统6个模块的最终方案如下:
(1)控制器模块:采用STC89C52单片机作为智能灭火小车系统的控制中心。
(2)火源探测模块:用了两个火焰传感器来准确的检测火源的位置所在。
(3)寻光电路模块:用了两个光敏电阻来调整小车的行为使其能够按照既定的路线行驶。
(4)智能灭火小车电机驱动模块:电机类型为普通直流减速电机,双驱动、四接口、PWM脉宽调速。
(5)灭火模块:以水泵作为灭火装置通过单片机控制来灭火。
(6)电源模块:直接采用6V电池盒。
三、软件设计
3.1 系统的软件设计
对于整个系统进行编程时,选择使用C语言来实现单片机的各项功能。具体代码可以附录A中查找。
对于整个系统进行原理图设计时,决定采用较为熟悉的Altium Designer16软件来将所设计的整个控制系统的工作原理图绘制出来。原理图见附录B。
根据设计工作中做选择的各项方案此次设计的设计目标,在进行软件设计的时候,应该使其能够实现下面的功能。
1.寻迹模块主程序:传感器收集路况信息,单片机进行处理,处理过后发出控制信号控制电机转动。
2.机驱动模块主程序:通过此模块开控制电机转动,从而控制小车行驶。
3.火焰检测模块主程序:其作用在于将有段温度的一些执行模块传递给单片机。
4.水泵模块程序:其作用在于控制水泵的启动或者关闭,从而实现灭火功能。
3.2主程序流程图
主程序主是整个设计的重要部分,能够确定小车的运动状态。小车的各项具体功能主要是通过其他子程序来实现的。绘制出主程序的流程图如下图3.1所示:
图3.1 智能灭火小车主程序流程图
主程序的意义在于引导或者是决策,在整个设计内容中都有着重要地位,小车在什么时候调用哪个模块,进行哪个操作,往哪个方向转,是移动还是开启水泵,这些都是由主程序来进行控制的。
四、结论
本设计采用STC89C52单片机作为整个控制系统的核心,其具有低能耗、高速可靠高
速可靠、低抗干扰、价格低等特点,以火焰传感器来监测周围的火情,并且实时的将其所采集到的数据传送给单片机,在单片机中经过A/D转换便可以确定火源在何处,单片机发出控制信号,电机接收到信号信号开始转动,小车向火源方向运动,在运动过程中通过红外传感器实时检测周围的障碍物,到达火源处以后停在一个适当的位置开始启动灭火装置来灭火,单片机发出控制信号,水泵在接收到信号以后开启,保持开启状态一直到火被扑灭,然后小车再次进入实施检测状态寻找下一个火源。
五、 文章目录
目 录
摘要 I
Abstract II
引言 3
第一章 智能灭火小车整体设计 4
1.1 整体设计任务 4
1.2 整体设计要求 4
1.3 智能灭火小车系统整体方案设计 4
1.3.1 智能灭火小车整体模块设计 4
1.3.2 智能灭火小车整体设计方案选择 5
第二章 智能灭火小车的硬件设计 7
2.1 智能灭火小车系统硬件基本组成部分的设计方案 7
2.1.1 控制器模块 7
2.1.2 火源检测模块 8
2.1.3寻光电路模块 9
2.1.4电机驱动模块 10
2.1.5灭火模块 12
2.1.6电源模块 12
2.2智能灭火小车系统控制部分的设计思想 12
2.2.1 控制部分 12
2.2.2控制部分单元电路图 13
2.3智能灭火小车系统检测部分的设计思想 13
2.4系统各模块的最终方案 14
第三章 智能灭火小车的软件设计 15
3.1 智能灭火小车系统的软件设计 15
3.2智能灭火小车主程序流程图 15
3.3火焰探测子程序流程图 16
结 论 19
致 谢 20
参 考 文 献 21
附录 A 22
附录 B 26
附录 C 27
附录 D 28
相关文章:

基于单片机的智能灭火小车设计
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式 文章目录 概要 一、整体设计方案1.1 整体设计任务1.2 整体设计要求1.3 系统整体方案设计1.3.1 整体模块设计1.3.2 整体设计方案选择…...

[Machine Learning][Part 7]神经网络的基本组成结构
这里我们将探索神经元/单元和层的内部工作原理。特别是,与之前学习的回归/线性模型和逻辑模型进行比较。最后接介绍tensorflow以及如何利用tensorflow来实现这些模型。 神经网络和大脑的神经元工作原理类似,但是比大脑的工作原理要简单的多。大脑中神经元的工作原理…...

精准测试:提高软件质量和用户满意度的利器
📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…...
代碼隨想錄算法訓練營|第五十八天|583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结篇。刷题心得(c++)
目录 讀題 583. 两个字符串的删除操作 自己看到题目的第一想法 看完代码随想录之后的想法 72. 编辑距离 看完代码随想录之后的想法 583. 两个字符串的删除操作 - 實作 思路 代碼隨想錄思路 Code 72. 编辑距离 - 實作 思路 Code 编辑距离总结篇 判斷子序列 不同…...

JavaScript基础之BOM与DOM
文章目录 BOM操作window对象window的子对象之navigator对象(了解即可)window的子对象之screen对象(了解即可)window的子对象之history对象(了解即可)window的子对象之location对象 弹出框警告框确认框提示框…...

【Linux学习笔记】进程概念(中)
1. 操作系统的进程状态2. Linux操作系统的进程状态3. 僵尸进程4. 孤儿进程5. 进程优先级5.1. 优先级是什么和为什么要有优先级5.2. Linux中的进程优先级 6. 进程切换7. 环境变量7.1. 环境变量的认识7.2. 环境变量相关的命令7.3. 环境变量和本地变量7.4. 命令行参数7.5. 获取环境…...

scanpy赋值问题
今天发现一个很奇怪的bug import numpy as np import pandas as pd import anndata as ad from scipy.sparse import csr_matrix print(ad.__version__)counts csr_matrix(np.random.poisson(1, size(100, 2000)), dtypenp.float32) adata1 ad.AnnData(counts) print(adata1)…...

腾讯云域名备案后,如何解析到华为云服务器Linux宝塔面板
一、购买域名并且进行备案和解析,正常情况下,购买完域名,如果找不到去哪备案,可以在腾讯云上搜索“备案”关键词就会出现了,所以这里不做详细介绍,直接进行步骤提示: 二、申请ssl证书࿰…...
odoo 按钮打印pdf报表
odoo打印一般是在动作里面进行的 所以此方法可用自定义按钮进行打印 <template id"report_sale_line_packing_template"> xxx </template><template id"report_sale_line_packing"><t t-call"web.basic_layout"><t …...

用逻辑分析仪观察串口Uart数据波形
一、概述 只讨论嵌入式编程中较为常用的异步串行接口(Universal Asynchronous Receiver/Transmitter, UART),TTL电平。 串口的参数一般有: 1.波特率,数据传输速率,单位bps(bits per…...
数据结构-栈应用括号匹配
1、顺序栈的定义 2、顺序栈的入栈,出栈,取出栈顶元素,匹配判断函数 3、顺序栈的运行测试 4、实现代码 #include<iostream> using namespace std; #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; #define M…...
leetcode做题笔记209. 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: 输入&#…...

【机器学习】几种常用的机器学习调参方法
在机器学习中,模型的性能往往受到模型的超参数、数据的质量、特征选择等因素影响。其中,模型的超参数调整是模型优化中最重要的环节之一。超参数(Hyperparameters)在机器学习算法中需要人为设定,它们不能直接从训练数据…...

使用免费 FlaskAPI 部署 YOLOv8
目标检测和实例分割是计算机视觉中关键的任务,使计算机能够在图像和视频中识别和定位物体。YOLOv8是一种先进的、实时的目标检测系统,因其速度和准确性而备受欢迎。 Flask是一个轻量级的Python Web框架,简化了Web应用程序的开发。通过结合Fla…...

不使用屏幕在树莓派4B安装Ubuntu22.04桌面版(64位)
因为时间有限只说一下基本路径: 1首先安装Ubuntu22.04server版本 2设置服务器版本的SSH和WiFi 3通过服务器版本安装Ubuntu-desktop升级到Ubuntu22.04桌面版 4在桌面版上安装远程控制软件:xrdp; 5使用Windows自带的远程桌面连接访问Ubuntu 6完成...

Pymysql模块使用操作
一、pymysql模块安装 二、测试数据库连接 测试数据库连接.py from pymysql import Connectioncon None try:# 创建数据库连接con Connection(host"localhost",port3306,user"root",password"XXXXX")# 测试链接print(con.get_host_info())print…...

8+双疾病+WGCNA+多机器学习筛选疾病的共同靶点并验证表达
今天给同学们分享一篇双疾病WGCNA多机器学习的生信文章“Shared diagnostic genes and potential mechanism between PCOS and recurrent implantation failure revealed by integrated transcriptomic analysis and machine learning”,这篇文章于2023年5月16日发表…...
springboot如何获取前端请求头的值并加入ThreadLocal
依赖: <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.7</version> </dependency>示例: public class ThreadLocalUtil {private static ThreadLoc…...

程序员想要网上接单却看花了眼?那这几个平台你可得收藏好了!
现在经济压力这么大,但是生活成本还在上升,相信大家都知道“四脚吞金兽”的威力了吧!话虽如此,但是生活总得继续,为了家庭的和谐幸福,为了孩子的未来,不少人选择多干几份工作,赚点外…...
前端食堂技术周刊第 102 期:Next.js 14、Yarn 4.0、State of HTML、SEO 从 0 到 1
美味值:🌟🌟🌟🌟🌟 口味:肥牛宽粉 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 大家好,我是童欧巴。欢迎来到前端食堂技术周刊,我们先来看下…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...