RTthread+STM32F407ZGTx+烟雾报警检测+蜂鸣器报警+LED闪烁||使用RTthread Studio

news2025/2/22 19:48:44

目录

实验背景

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   下拉是0
    rt_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){
            //对应指示灯一两一灭  看看蜂鸣器引脚pf8
            rt_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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1838025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 图形化编程GTK3.0 快速入门之布局

GTK3.0 布局之水平布局 核心语法: 水平布局容器: 水平布局容器的创建: GtkWidget *gtk_hbox_new( gboolean homogeneous, gint spacing ); homogeneous:容器内控件是否大小一致( gboolean 取值为TRUE 或 FALSE ) spacing&#…

什么是数字化,什么是数智化?数字化与数智化的区别和联系

什么是数字化?什么是数智化?以及数字化与数智化的区别,下面分为三块跟大家详细讲解。 一、什么是数字化? 1、概念: 数字化(Digitalization)是将信息转换为数字(即计算机可读&#…

操作系统之如何使用C语言完成SFJ和SRTJ,并完成他的甘特图

目录 前言 SFJ SRTJ 结束语 前言 不知不觉已经写博客一个月了,前段时间因为学业上的一些原因咕咕咕了,今天我又回来了。今天我给大家带来的是C语言代码完成的SFJ和SRTJ,并且带大家描述他的甘特图。如果有对SFJ和SRTJ不了解的小伙伴可以翻…

windows anaconda 安装 Labelme

安装 # 创建环境 conda create -n labelme python3.6 #激活环境 conda activate labelme # 安装依赖 conda install pyqt conda install pillow # 安装labelme conda install labelme3.16.2 # 启动labelme labelme右键选择标注类型,从上到下为多边形(常…

超声波清洗机哪个牌子好用点?四大卓越臻品不容错过!

选购超声波清洗机能为日常生活提供非常多的便利!比如像是戴眼镜或者是有婴儿的家庭,使用超声波清洗机不仅能够帮助清洗需要清洗的物品,同时更能保证物品健康清洁,对清洗的物品进行杀菌灭菌!相对于比较费时间并且容易损…

eclipse宝刀未老

Theia 是一个高度可定制的、开源的、基于 Web 的集成开发环境(IDE)框架。它由 Eclipse Foundation 主导,旨在为云和本地环境提供现代化的、全功能的 IDE 解决方案。Theia 的核心目标是提供一个灵活的平台,开发者可以根据自己的需求…

2005-2022年款福特福克斯维修手册和电路图线路图接线图资料更新

经过整理,2005-2022年款福特福克斯全系列已经更新至汽修帮手资料库内,覆盖市面上99%车型,包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对…

MaxWell实时监控Mysql并把数据写入到Kafka主题中

配置mysql 启用MySQL Binlog MySQL服务器的Binlog默认是未开启的,如需进行同步,需要先进行开启 修改MySQL配置文件/etc/my.cnf sudo vim/etc/my.cof 增加如下配置 注:MySQL Binlog模式 Statement-based:基于语句,…

定制化物联网设备:开启智能生活新篇章

随着科技的进步,物联网(IoT)已成为我们日常生活和工作中不可或缺的一部分。从智能家居到工业自动化,物联网设备以其独特的功能和特性,极大地提高了我们的生活质量和工作效率。然而,在众多的物联网设备中&am…

【深度解析】1688货源拿货价比拼多多贵?为何商家仍选1688

对电商卖家来说,首先需要解决的问题就是货源。 虽然知道1688是个大型综合性的货源平台,但很多卖家还是觉得1688上面的货源很贵,甚至在平台严查无货源的背景下,还是坚持从1688拿货。那么为什么有些拼多多的商品会比1688还便宜呢&a…

基于大型语言模型的全双工语音对话方案

摘要解读 我们提出了一种能够以全双工方式运行的生成性对话系统,实现了无缝互动。该系统基于一个精心调整的大型语言模型(LLM),使其能够感知模块、运动功能模块以及一个具有两种状态(称为神经有限状态机,n…

Linux系统编程——进程信号

目录 一,信号预备 1.1 生活中的信号 1.2 技术应用中的信号 1.3 signal函数捕捉信号 1.3 信号的发送与记录 1.4 信号的常见处理方式 二,信号的产生 2.1 核心转储 2.1.1 环境配置 2.1.2 利用core文件进行调试 2.1.3 core dump标志 2.2 通过系统…

【Python机器学习实战】 | 基于空气质量监测数据,采用多层神经网络预测PM2.5浓度

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

【漏洞复现】海康威视 综合安防管理平台软件 center_api_files 任意文件上传漏洞

免责声明: 本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测…

Navicat 重装 查找 保存的查询sql文件

背景:Navicat 一个收费的软件,存在的最大缺点就是收费,所以我们为了优化它会遇到卸载重装这些复杂的过程,但是我们保存的查询sql会跟随卸载Navicat而删除,为了节省时间省去不必要的麻烦,我们可以查到我们保…

YOLOv10改进 | 注意力篇 | YOLOv10引入HAttention(HAT)注意力

1. HAT介绍 1.1 摘要:基于 Transformer 的方法在低级视觉任务(例如图像超分辨率)中表现出了令人印象深刻的性能。 然而,我们发现这些网络通过归因分析只能利用有限的输入信息空间范围。 这意味着 Transformer 的潜力在现有网络中仍未得到充分发挥。 为了激活更多的输入像素…

通过阿里云OOS定时升级Redis实例临时带宽

功能背景 在数据驱动的现代业务环境中,Redis以其卓越的性能和灵活性,已成为众多企业关键基础设施的重要组成部分。Redis广泛应用于处理缓存、会话管理、消息队列等多种数据密集型和响应敏感型的场景,对业务连续性和用户体验贡献极大。然而&a…

从入门到实战,一篇学会TS,保姆式教程

本文知识图谱分基础、进阶和实战三个部分,分别如下: image.png image.png image.png 这三份知识图谱里罗列的知识看似很多,实际上除了进阶部分的泛型、高级类型(二)和实战部分需要稍微费点脑细胞外,其他…

AlmaLinux 更换CN镜像地址

官方镜像列表 官方列表&#xff1a;https://mirrors.almalinux.org/CN 开头的站点&#xff0c;不同区域查询即可 一键更改镜像地址脚本 以下是更改从默认更改到阿里云地址 cat <<EOF>>/AlmaLinux_Update_repo.sh #!/bin/bash # -*- coding: utf-8 -*- # Author:…

上位机图像处理和嵌入式模块部署(h750 mcu和usb虚拟串口)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 对于mcu usb而言&#xff0c;大部分情况下&#xff0c;它和上位机之间的关系都是device的关系。一般usb&#xff0c;可以分成host和device。如果mc…