当前位置: 首页 > news >正文

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博客

相关文章:

  • Linux安全:保护你的数字堡垒
  • 多功能投票系统(ThinkPHP+FastAdmin+Uniapp)
  • 什么牌子充电宝值得买?这几款充电宝好用到没话说!内行人推荐
  • c语言单元测试构建
  • Windows defender bypass | 免杀
  • Java解析Json格式数据
  • Multisim软件仿真之频谱分析仪
  • 【MySQL】复合查询和内外连接
  • Qt系统相关
  • 利用K8S技术栈打造个人私有云
  • 随心而遇,跟着感觉走
  • 高考专业抉择探索计算机专业的未来展望及适合人群
  • Vue3搭载后端服务器开发文档
  • SNMP学习
  • 13.4 内存管理
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • [译]CSS 居中(Center)方法大合集
  • 【翻译】babel对TC39装饰器草案的实现
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • FastReport在线报表设计器工作原理
  • jdbc就是这么简单
  • leetcode-27. Remove Element
  • Magento 1.x 中文订单打印乱码
  • Markdown 语法简单说明
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 精彩代码 vue.js
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 三栏布局总结
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 原生js练习题---第五课
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • No resource identifier found for attribute,RxJava之zip操作符
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • # Java NIO(一)FileChannel
  • #Linux(Source Insight安装及工程建立)
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (c语言)strcpy函数用法
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (SERIES10)DM逻辑备份还原
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十三)Flask之特殊装饰器详解
  • (算法)N皇后问题
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • (自用)交互协议设计——protobuf序列化
  • .md即markdown文件的基本常用编写语法
  • .mysql secret在哪_MySQL如何使用索引
  • .NET Core引入性能分析引导优化
  • .Net 基于IIS部署blazor webassembly或WebApi
  • .NET 事件模型教程(二)