RTthread+STM32F407ZGTx+烟雾报警检测+蜂鸣器报警+LED闪烁||使用RTthread Studio
目录
实验背景
1.安装环境
2.配置环境
3.先编译下载实例程序2,观察DS0是否闪烁
4.实验方法
5.实例代码
6.硬件连接
7.实验效果
8.关于这次开发遇到的问题
1.反应慢,都熄灭1分钟多了,才报的问题?
2.关于rt_pin_mode(KEY0_PIN, PIN_MODE_INPUT_PULLDOWN);PIN_MODE_INPUT_PULLDOWN参数会导致什么现象?
无聊的小知识
参考文章
实验背景
想实现串口打印输出烟雾传感器的状态,无烟雾时每个1s打印0,LED灯循环闪烁;存在烟雾时打印1,同时进行一个5s的滤波,当5s后烟雾依旧存在则蜂鸣器报警,LED灯不在循环闪烁。同时,也可以通过模拟按键来实现烟雾报警的效果。主要是想对烟雾报警器做一个长时间测试,看是否有误报的现象。
1.安装环境
rtthread官网下载RTthread Studio安装包安装
2.配置环境
新建工程

3.先编译下载实例程序2,观察DS0是否闪烁
4.实验方法
本次使用PF9、PF8、PA0引脚,来实现该效果。


5.实例代码
#define KEY0_PIN GET_PIN(A,0) //PA0
#define LED0_PIN GET_PIN(F,9)
#define BEEP_PIN GET_PIN(F,8) //定义蜂鸣器 超过5次后蜂鸣器叫,打印0,叫完后程序将不在运行
#define KEY_FILTER_TIME 5 //定义滤波时间:5次
static int SmokeFlog=0;
static int consecutive_ones = 0; // 1连续出现的次数
int main(void)
{rt_pin_mode(KEY0_PIN, PIN_MODE_INPUT_PULLDOWN); //上拉是1 下拉是0rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT);rt_pin_mode(BEEP_PIN, PIN_MODE_OUTPUT);rt_pin_write(BEEP_PIN, PIN_LOW);while (1){rt_kprintf(" %d\n",rt_pin_read(KEY0_PIN));Detect_Smoke();//异常if(SmokeFlog==1){//对应指示灯亮起 //让PF9灯亮rt_pin_write(LED0_PIN, PIN_HIGH);//开启蜂鸣器rt_pin_write(BEEP_PIN, PIN_HIGH); //开启蜂鸣器}if(SmokeFlog==0){//对应指示灯一两一灭 看看蜂鸣器引脚pf8rt_pin_write(BEEP_PIN, PIN_LOW);rt_pin_write(LED0_PIN, PIN_HIGH);rt_thread_mdelay(500);rt_pin_write(LED0_PIN, PIN_LOW);rt_thread_mdelay(500);//均无异常关闭蜂鸣器}rt_thread_mdelay(1000);// 延时1000e}
}void Detect_Smoke(void){//rt_kprintf(" %d\n",rt_pin_read(KEY0_PIN));//当烟雾指数高于20则触发异常if (rt_pin_read(KEY0_PIN) == 1) // 如果读取到的值为1{consecutive_ones++; // 递增连续出现1的次数}if (rt_pin_read(KEY0_PIN) == 0){consecutive_ones = 0; // 重置连续出现1的次数}if (consecutive_ones >= KEY_FILTER_TIME) // 如果连续出现1的次数达到5次{SmokeFlog = 1; // 设置烟雾标志位为1}else {SmokeFlog = 0;}
}
6.硬件连接
| PA0 | 烟雾传感器A |
| GND | GND |
| VCC5V | 5V |
7.实验效果

8.关于这次开发遇到的问题
1.反应慢,都熄灭1分钟多了,才报的问题?
可能是接触不良,受到了干扰,用热融胶固定一下
2.关于rt_pin_mode(KEY0_PIN, PIN_MODE_INPUT_PULLDOWN);PIN_MODE_INPUT_PULLDOWN参数会导致什么现象?
这要从原理图说起:

本次使用的是KEY_UP,该按键按下,高电平有效,这导致烟雾传感器不接地的话就会报警,PIN_MODE_INPUT_PULLDOWN该参数会让KEY_UP松开时,也就是低电平能在控制台打印0,烟雾报警器报警时打印1,比较直观。
KEY0是低电平有效,上拉模式(PIN_MODE_INPUT_PULLUP),按下是1,烟雾传感器接上会变成1(是因为接地导通了,不能因此说明烟雾传感器的值是不对的),这是个硬件问题,因为测量的烟雾报警器它是一个开关量,让开关量连续几次检测到,在进行滤波,这也是本项目测试的解决思路。
无聊的小知识
1.怎么区分三极管是NPN还是PNP?
三级管都是从P>(指向)N,那就是NPN

参考文章
Stm32F103&Rt_Thread系列开发——03 日志管理_stm32 日志-CSDN博客
(STM32)从零开始的RT-Thread之旅--GPIO_rt-thread 配置gpio-CSDN博客
STM32F407ZE基于RT-Thread和ZigBee实现多传感器检测以及数据上传到oneNet_stm32f407对于外设传感器信息采集和处理-CSDN博客
教你搞懂RT-Thread的移植和配置ENV工具环境_rtthread keil env 教程 知乎-CSDN博客
基于RT-Thread(RTT)的HAL库+ADC+DMA多通道采集_rt-thread dma+adc-CSDN博客
keil 5 : Error: L6218E: Undefined symbol 问题解决方法小记-CSDN博客
RT-Thread 串口的使用_env没有usart2-CSDN博客
STM32F407——基于RT-Thread实现触摸屏按键点灯案例_stm32 mipi-CSDN博客
相关文章:
RTthread+STM32F407ZGTx+烟雾报警检测+蜂鸣器报警+LED闪烁||使用RTthread Studio
目录 实验背景 1.安装环境 2.配置环境 3.先编译下载实例程序2,观察DS0是否闪烁 4.实验方法 5.实例代码 6.硬件连接 7.实验效果 8.关于这次开发遇到的问题 1.反应慢,都熄灭1分钟多了,才报的问题? 2.关于rt_pin_mode(KEY…...
k8s资源的基本操作
文章目录 一、Namespace1、概述2、预定义的k8s命名空间2.1、default2.2、kube-public2.3、kube-system2.4、kube-node-lease 3、命名空间基本操作3.1、查看3.1.1、查看所有的命名空间3.1.2、查看指定的命名空间3.1.3、指定输出格式3.1.4、查看ns详情 3.2、创建3.2.1、命令行创建…...
19.面包屑导航制作
面包屑导航制作 官网:组件 | Element 1. 在layout下新建BreadCrumb.vue BreadCrumb.vue <template><div class"bread-text"><el-breadcrumb class"bred"separator"/"><el-breadcrumb-item v-for"item in…...
做动画?Animatediff 和 ComfyUI 更配哦!
如果从工作流和内存利用率的角度来说,Animatediff 和 ComfyUI 可能更配一些,毕竟制作动画是一个很吃内存的操作。 首先,我们需要在管理器中下载 Animatediff 插件,当然也可以直接导入听雨的工作流,然后在管理器的安装…...
笔记-python里面的xlrd模块详解
那我就一下面积个问题对xlrd模块进行学习一下: 1.什么是xlrd模块? 2.为什么使用xlrd模块? 3.怎样使用xlrd模块? 1.什么是xlrd模块? ♦python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel&…...
oracle将字符串中的字符和数字拆分开等功能
将字符串中的字符和数字拆分开 create or replace procedure F_GetNumber1( inString IN VARCHAR2,n_return1 out varchar2, n_return2 out varchar2) ISDCHAR VARCHAR2(1024); OUTCHAR VARCHAR2(1024); j number default 0; ulen number; BEGINOUTCHAR:;DCHAR:TRIM(inStr…...
汇编基础之使用vscode写hello world
汇编语言(Assembly Language) 概述 汇编语言(Assembly Language)是一种低级编程语言,它直接对应于计算机的机器代码(machine code),但使用了更易读的文本符号。每台个人计算机都有…...
APS计划排程系统如何打破装备使用约束
APS计划排程系统是离散制造型企业在计划控制方向的重要支撑,它提供的是交期预测、订单排产计划、物料采购计划、人力分配计划等等。近些几年来,多品种、小批量、多订单的生产模式,让企业的计划员应接不暇、疲累不堪,传统的人工经验…...
gigachad - suid
gigachadeasyftp利用、google反图搜索、 suid提权、s-nail 提权 主机发现 ┌──(kali㉿kali)-[~/桌面/OSCP] └─$ sudo netdiscover -i eth0 -r 192.168.44.138/24服务探测 ┌──(kali㉿kali)-[~/桌面/OSCP] └─$ sudo nmap -sV -A -T 4 -p- 192.168.44.138 |_/kingchad…...
QtScript模块
在Qt中,可以使用Qt Script模块来将C类和方法绑定到Qt脚本引擎中,从而使得可以在Qt脚本中调用这些C类和方法。以下是一个简单的示例,演示了如何在Qt中将C类暴露给Qt Script引擎: 假设有一个名为 MyClass 的C类,其头文件…...
qt中for循环不要使用循环中会更改的变量
检查代码,发现始终会少了一位,最后发现我在使用for循环时,懒省事,判断条件中使用的变量是涉及到循环体中更改的变量,代码如下,更直观 for (int i 0; i < m_images.size(); i) {packageToDBList[0].imag…...
spark独立集群搭建
spark独立集群搭建(不依赖Hadoop) 1、上传spark-2.4.5-bin-hadoop2.7.tgz至 /usr/local/moudel ,再解压到 /usr/local/soft tar -zxvf spark-2.4.5-bin-hadoop2.7.tgz -C /usr/local/soft/ 重命名 mv spark-2.4.5-bin-hadoop2.7/ spark-2.4.5 配…...
【BFS算法】广度搜索·由起点开始逐层向周围扩散求得最短路径(算法框架+题目)
0、前言 深度优先搜索是DFS(Depth Frst Search),其实就是前面所讲过的回溯算法,它的特点和它的名字一样,首先在一条路径上不断往下(深度)遍历,获得答案之后再返回,再继续往下遍历。…...
微信小程序---登录
手机号登录 手机号快速验证和手机号实时验证区别 手机号快速验证组件,平台会对号码进行验证,但不保证是实时验证;收费0.0.3元手机号实时验证组件,在每次请求时,平台均会对用户选择的手机号进行实时验证。收费0.0.4元…...
IPython大师课:提升数据科学工作效率的终极工具
IPython是一个增强的Python交互式shell,它提供了丰富的功能和易用性改进,特别适合进行数据分析、科学计算和一般的Python开发。本文将全面介绍IPython的基本概念、使用方法、主要作用以及注意事项。 一、IPython简介 1. IPython的起源 IPython最初由Fe…...
抖音素材网站平台有哪些?素材下载网站库分享
在这个视觉信息充斥的时代,抖音已经成为众多自媒体人展示才华的舞台。要在众多创作者中脱颖而出,不仅需要独特的创意,还需要优质的素材来支持你的内容制作。今天,我将介绍几个为抖音视频提供高品质素材的网站,包括国内…...
MODBUS TCP协议实例数据帧详细分析
MODBUS TCP协议实例数据帧详细分析 1.简介 2.ModbusTCP数据帧 2.1.报文头MBAP 2.2.帧结构PDU 3.ADU详细结构 3.1. 0x01:读线圈 3.2. 0x02:读离散量输入 3.3. 0x03:读保持寄存器 3.4. 0x04:读输入寄存器 3.5. 0x05:写单…...
Spring Boot启动与运行机制详解:初学者友好版
Spring Boot启动与运行机制详解:初学者友好版 随着微服务的兴起和容器化部署的流行,Spring Boot以其快速搭建、简单配置和自动化部署的特性,成为了众多开发者的首选。对于初学者而言,理解Spring Boot的启动与运行机制是掌握其精髓…...
Ubuntu 22.04 解决 firefox 中文界面乱码
问题复现 在为Ubuntu 22.04 Server安装完整的GNOME 42.01桌面后,将桌面语言设置为中文时,打开Firefox可能会出现中文乱码的问题。经过网上调查发现,这个问题是由Snap软件包引起的。 解决方案 为了避免在Ubuntu 22.04中文模式下的乱码问题…...
前端面试题日常练-day77 【面试题】
题目 希望这些选择题能够帮助您进行前端面试的准备,答案在文末 在Sass中,以下哪个功能用于将样式规则应用于多个选择器? a) extend b) mixin c) import d) include Sass中的嵌套规则(Nested Rules)有助于实现以下哪个…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
