news 2026/7/4 12:36:00

记录嵌入式学习心得2:烟雾报警器项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
记录嵌入式学习心得2:烟雾报警器项目

1.任务目标:检测烟雾浓度,达到一定浓度后响起警报并打开风扇。可以控制临界值的大小,并在lcd1602上显示临界值和当前烟雾值。
2.所需模块:lcd1602,继电器(模拟风扇),蜂鸣器,烟雾模块MQ-2,STM32板,两根杜邦线(模拟按键)。

项目框图

左边输入,MQ-2模拟输入电压,经ADC后通过DMA转运到内存,按键1和按键2按下分别上升临界值和下降临界值。右边输出,lcd1602上显示当前烟雾值和临界值,当烟雾值大于当前临界值时打开蜂鸣器并打开风扇,当烟雾值小于当前临界值时关闭蜂鸣器并关闭风扇。

总体思路:
封装每个模块,包括Key,ADC,lcd1602,Fan,Beep。在主函数中依次测试每个模块,查看是否有接线错误,引脚配对。
监测按键,如果按下则对应改变临界值。
将DMA转运到内存的值拿出来作烟雾的值。
通过比较烟雾值和临界值对应设置开关蜂鸣器和风扇。

#注意事项:
1.ADC有对应的转运通道,此例中的使用PB0接入,应该走第8通道。

2.ADC_DMA转运的时候,需要设置一个uint32_t * 型的地址来接收数据,但是我们需要的烟雾值是浮点型float。可以通过在ADC模块中设置中间变量,先把数据接收下来,然后再重新封装一个返回值是float的函数。在主函数中调用新封装的函数即可。

3.需要让lcd1602显示一个变化的值,可以重新封装一个函数,输入一个变量值,在函数中定义一个数组,调用sprintf函数,将变量值赋到数组中,显示这个数组即可。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/4 5:13:55

MYSQL的学习

mysql的分类mysql在其内部根据功能的不同分为不同的语言一、数据查询语言(DQL, Data Query Language)核心作用:从数据库中查询 / 检索数据(仅读取,不修改数据),是最常用的 SQL 类别。核心关键字…

作者头像 李华
网站建设 2026/7/4 5:13:54

8、延迟执行与虚拟零调制解调器驱动解析

延迟执行与虚拟零调制解调器驱动解析 在系统编程中,延迟执行是一个常见的需求,它可以帮助我们更好地管理资源和处理事件。本文将介绍几种延迟执行的方法,并通过虚拟零调制解调器驱动 nmdm(4) 的案例来深入理解这些方法的应用。 1. 延迟执行的基本概念与相关函数 在某些…

作者头像 李华
网站建设 2026/7/4 5:13:52

7、Linux 网络安全与防火墙配置全解析

Linux 网络安全与防火墙配置全解析 1. 网络安全威胁概述 在网络环境中,不同的 OSI 层面临着各种各样的安全威胁。以下是各层常见的攻击类型: - 第 1 层攻击 :主要是电缆切断,Linux 对此类攻击无法有效应对。 - 第 2 层攻击 :这类攻击具有很强的破坏性,因为它们会…

作者头像 李华
网站建设 2026/7/4 4:16:44

基于springboot和vue的校园二手书交易系统_w387km94

目录 具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring…

作者头像 李华
网站建设 2026/7/2 7:44:31

基于SpringBoot的艺术作品展示平台 艺术家在线交流系统 关注z50di044

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/7/1 20:03:50

C#AI系列(6): C#离线实现高效OCR

幅提升。在C#中调用Tesseract (https://github.com/tesseract-ocr/tesseract) 有两个方式:命令行调用:带参数执行 tesseract.exe 文件,读取控制台获取解析结果。适合简单直观,不需要写代码,直接在终端输入命令即可&…

作者头像 李华