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

基于单片机的智能风扇设计

摘 要: 传统风扇无法根据周围环境的温度变化进行风速的调整,必须人为地干预才能达到需求 本文基于单片机的智能风扇主要解决以往风扇存在的问题,其有两种工作模式: 手动操作模式和自动运行模式,人们可以根据需要进行模式选择。 在自动运行模式下,风扇随周围环境温度的变化而自主调节风速,可实现 温度高,风速大; 温度低,风速小”。 同时,智能风扇在两种模式中都配置了定时功能,用户可以根据需要选择不同的定时时间 本次设计中对风扇的控制采用了触摸屏面板和无线通信技术,这将给用户带来便利。
关键词: 单片机; 智能风扇; 风速调整; 工作模式; 定时
在我们国家,电风扇是 80 年代才流行的一种家用小型电器,作为传统的清凉和解暑工具,电风扇具有价格低廉,占据空间少等特点。 受消费水平的制约,大多数家庭尤其在中小型城市和农村,风扇仍旧会占有很大的市场份额。 然而由于其功能单一且耗电量大,极大地限制了电风扇的发展空间。 近年来,单片机凭借其小巧、 抗干扰能力强 且易操作 成本低等特点,已经深入各领域,使用很广泛。 随着大型集成电路技术的进一步成熟,单片机的性能仍在快速地提高,未来单片机技术及传感器技术等的发展必将给电风扇的进一步发展带来突破性的变化。对于目前风扇的发展,采用单片机技术和传感器技术可以使风扇的功能更加完善、使用更加人性化。 传统的风扇,尤其是夏天晚上,风扇以不变的风速工作这样会使老年人和小孩着凉、 感冒,因为传统风扇风速的大小无法根据周围环境温度的变化作出调整,所以迫切需要一款能够满足现代人生活的风扇。

1 硬件电路设计与实现

1. 1 系统整体设计

系统整体框图如图 1 所示
本设计的整体思路: 系统设计主要包括两部分:
( 1 ) 终端( 接收命令) 部分: 温度传感器 ds18b20实时采集周围的温度,将微处理器读取的温度值实时显示在 LCD1602 无线收发模块通过串口与 51 单片机通信,将从 stm32 发来的数据读给 51单片机。 51 单片机根据其接收的命令,控制与其相连的外设
(2 ) 控制端( 发送命令) 部分: 通过对 STM32 编程,在 TFTLCD 模块上做一个智能风扇系统的功能
界面,通过触摸模块界面的功能按钮,产生相应的数据。 产生的数据通过串口发送给无线收发模块,无线收发模块将从串口传来的数据发送出去。 同时,与 stm32 单片机连接的 DHT11 实时读取周围环境的温湿度,其中 stm32 通过单总线通信方式访问DHT11,将读取的温湿度数据实时显示在 LCD

1. 2 各部分电路设计

1. 2. 1 51 单片机最小系统电路

单片机最小应用系统即用很少的电路元件组成可以让单片机正常运行的系统。 对于 51 单片机,其最小系统一般包括: 微处理器、 晶振电路 复位电路 、电源电路。
( 1 ) 按键复位电路: 由按键 、10 uf 电容和电阻组 成,用来对单片机本身和其扩展模块进行复位,使程序重新执行。
( 2 ) 晶 振 电 路: 51 单 片 机 的 晶 振 一 般 取11. 0592 MHz,这样可以准确 产 生 9600 bps 和19200 bps,产生的波特率用于串口通信 外部晶振电路结合单片机内部电路产生单片机正常工作的时钟,单片机代码的执行都基于晶振电路产生的时钟频率。
( 3 ) 电源电路: 51 单片机采用 5 V 供电,由外部提供电源。

1. 2. 2 液晶 LCD1602 显示电路

液晶 LCD1602 是数字式的,因此和单片机连接的电路简洁,易编写程序。 液晶 LCD1602 51 单片机的通信使用 8 位数据口,采用并行方式,每次传输 8 bit 的数据
本次设计中 LCD1602 第一行显示周围环境温度,温度显示只有整数位。 第二行显示风扇的风速级别,风扇未开启时,显示为 - ; 风扇正常工作时显示的风速级别在数字 1 ~ 3 之间

1. 2. 3 温度采集电路

proteus 仿真软件上搭建的 ds18b20 温度采集电路如图 2 所示 由于其与单片机通信采用单总线方式,故只含数据端口 DQ

1. 2. 4 电机驱动模块电路

本次设计中采用 51 单片机的定时器模拟 PWM波输出数字信号,并利用电机驱动模块 L298N 来驱 动 12 V 的直流电机,通过改变 PWM 波的高电平所占的比例来实现风扇风速的调节。 实际生活中由于风扇只往一个方向转,所以对 L298N 模块的配置如图 3 所示

1. 2. 5 串口通信电路

在多机通信系统中,单片机之间的数据交换一般多采用串行通信方式。 本次系统中串口电路包括两部分: 一部分是 stm32 ZigBee 节点的串口通信电路: 系统设计中 stm32 通过其串口的 TX 端发送数据给 ZigBee 模块, ZigBee 模块只需要从串口的 RX端读取数据,故只使用了一条数据线,连接电路图如图 4 所示 另外一部分是 51 单片机与 ZigBee 节点的串口通信电路: 系统设计中 ZigBee 模块从串口TX 端发送数据给 51 单片机, 51 单片机从串口的RX 端读取数据,故只使用了一条数据线,连接电路图如图 5 所示

在实际的硬件电路测试中发现,两个单片机系统在进行数据通信时,必须要共地,否则数据传输出错或无法接收到数据。

2 软件设计与实现

程序的编写都使用的是 C 语言, C 语言程序本身不取决于硬件资源,基本上稍做修改就可以将用户程序从不同的硬件系统平台上移植。

2. 1 主程序设计

主程序是整个设计的中心,它是将各个子模块通过逻辑判断相互结合起来构成的。 由于基于单机的智能风扇系统采用无线通信方式,故主程序 为两部分: 一部分是执行控制命令端的主程序,这一部分的程序设计是以对 51 单片机编程为基础构成的,主要包括: 风扇模式选择及风速调节、51 单片机与 ZigBee 模块之间的数据通信、 51 单片机定时读取ds18b20 采集的温度值 LCD1602 显示温度值及风扇的风速档位、 定时器模拟 PWM 波输出等,该主程序流程图如图 6 所示 另一部分是发送控制命令端的主程序,这一部分的程序设计是以对 stm32 单片机编程为基础构成的,主要包括: TFTLCD 触摸屏界面设计与显示、 DHT11 采集温湿度 、stm32 与 ZigBee模块之间的数据通信等,该主程序流程图如图 7 所示。

2.2 触摸屏界面以及 LCD 显示子程序设计

该部分完成的主要功能包括: 汉字 字符串的显示,图片的加载与显示,触摸屏触摸的实现。 完成这些功能,涉及的知识特别多,包括 TFTLCD 显示 、SPI通信、 触摸屏的触摸实现 内存管理 SD FATFS文件系统模块、 汉字显示原理以及汉字字库的制作 、图片的解码等相关知识。 该部分的设计流程图如图8 所示

2.3  51 单片机读取 ds18b20 采集的温度子程序 设计

通过单总线方式 51 单片机与 ds18b20 进行数据通信,由于 stc89c52 单片机在硬件上不支持单总线通信方式,故选取编程的方法来演示单总线通信方式来完成对温度传感器的访问。
单总线协议规定了以下时序: 初始化时序 读数据时序、 写命令时序 全部时序都将控制器作主机,单总线器件( 例如: 传感器等) 作从机。 特别要说明的是: 每次命令和数据的交换都是主机自动开启写时序,若单总线器件回复数据,则在结束写命令后,主设备要开始读时序完成数据的接收。 该部分程序设计的流程图如图 9 所示

相关文章:

基于单片机的智能风扇设计

摘 要: 传统风扇无法根据周围环境的温度变化进行风速的调整,必须人为地干预才能达到需求 。 本文基于单片机的智能风扇主要解决以往风扇存在的问题,其有两种工作模式: 手动操作模式和自动运行模式,人们可以根据需要进行模式选择。 在自动运行…...

【实战】Spring Security Oauth2自定义授权模式接入手机验证

文章目录 前言技术积累Oauth2简介Oauth2的四种模式授权码模式简化模式密码模式客户端模式自定义模式 实战演示1、mavan依赖引入2、自定义手机用户3、自定义手机用户信息获取服务4、自定义认证令牌5、自定义授权模式6、自定义实际认证提供者7、认证服务配置8、Oauth2配置9、资源…...

Redis数据失效监听

一、配置Redis开启 打开conf/redis.conf 文件,添加参数:notify-keyspace-events Ex 二、验证配置 步骤一:进入redis客户端:redis-cli步骤二:执行 CONFIG GET notify-keyspace-events ,如果有返回值证明配…...

【达梦数据库】-SQL调优思路

【达梦数据库】-SQL调优思路 --查看统计信息是否准确 select table_name,num_rows,blocks,last_analyzed from user_tables where table_name表名; #默认每周六1点进行全库信息统计1、确认SQL --sql select * from test;2、查看ET ---------------------------------------…...

DispatcherServlet 源码分析

一.DispatcherServlet 源码分析 本文仅了解源码内容即可。 1.观察我们的服务启动⽇志: 当Tomcat启动之后, 有⼀个核⼼的类DispatcherServlet, 它来控制程序的执⾏顺序.所有请求都会先进到DispatcherServlet,执⾏doDispatch 调度⽅法. 如果有拦截器, 会先执⾏拦截器…...

代码随想录算法训练营第十八天| 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先

题目: 530. 二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 示例 1: 输入:root [4,2,6,1,3] 输出:…...

会议室占用的时间(75%用例)D卷(JavaPythonC++Node.jsC语言)

现有若干个会议,所有会议共享--个会议室,用数组表示各个会议的开始时间和结束时间,格式为: 会议1开始时间,会议1结束时间 会议2开始时间,会议2结束时间 请计算会议室占用时间段。 输入描述: 第一行输入一个整数 n,表示会议数量 之后输入n行,每行两个整数,以空格分隔,…...

C++初阶_1:namespace

本章详细解说:namespace 。 namespace: namespace,意为:命名空间,c的关键字(关键字,就是提示:取变量名,函数名时不能与之撞名)。 namespace的价值: 为了解…...

低代码开发平台:效率革命还是质量隐忧?

如何看待“低代码”开发平台的兴起? 近年来,“低代码”开发平台如雨后春笋般涌现,承诺让非专业人士也能快速构建应用程序。这种新兴技术正在挑战传统软件开发模式,引发了IT行业的广泛讨论。低代码平台是提高效率的利器&#xff0…...

在 Django 表单中传递自定义表单值到视图

在Django中,我们可以通过表单的初始化参数initial来传递自定义的初始值给表单字段。如果我们想要在视图中设置表单的初始值,可以在视图中创建表单的实例时,传递一个字典给initial参数。 1、问题背景 我们遇到了这样一个问题:在使…...

Android之复制文本(TextView)剪贴板

效果图&#xff1a; 功能简单就是点击“复制”&#xff0c;将邀请码复制到 剪贴板中 布局 <androidx.constraintlayout.widget.ConstraintLayoutandroid:id"id/clCode"android:layout_width"dimen/dp_0"android:layout_height"dimen/dp_49"…...

Ubuntu24.04设置国内镜像软件源

参考文章&#xff1a; Ubuntu24.04更换源地址&#xff08;新版源更换方式&#xff09; - 陌路寒暄 一、禁用原来的软件源 Ubuntu24.04 的源地址配置文件发生改变&#xff0c;不再使用以前的 sources.list 文件&#xff0c;升级 24.04 之后&#xff0c;该文件内容变成了一行注…...

分布式与微服务详解

1. 单机架构 只有一台机器&#xff0c;这个机器负责所有的工作 &#xff08;这里假定一个电商网站&#xff09; 现在大部分公司的产品都是单机架构 。 2. 分布式架构 一台机器的硬件资源是有限的&#xff0c;服务器处理请求是需要占用硬件资源的&#xff0c;如果业务增长&a…...

Vue设置滚动条自动保持到最底端

需求描述&#xff1a;在开发中我们常常会遇到需要让滚动条保持到最底端的需求&#xff0c;比如在开发一个聊天框时&#xff0c;请求接口拿到消息列表数据&#xff0c;展示到前端页面时&#xff0c;需要让滚动条自动滚到最底端&#xff0c;以此来展示最后的聊天记录。同时&#…...

uniapp创建一个新项目并导入uview-plus框架

近年来&#xff0c;随着技术的发展&#xff0c;人们越来越意识到跨平台和统一的重要性。对于同一款应用来说&#xff0c;一般都会有移动端、PC端、甚至小程序端。这是由于设备的不同&#xff0c;我们必须要做很多的客户端来满足不同的用户需求。但是由于硬件设施的不同&#xf…...

LabVIEW光电在线测振系统

开发了一种基于LabVIEW软件和光电技术的在线测振系统。该系统利用激光作为调制光源&#xff0c;并通过位置敏感型光电传感器&#xff08;PSD&#xff09;进行轴振动的实时检测。其主要特点包括非接触式测量、广泛的测量范围、高灵敏度和快速响应时间&#xff0c;且具备优良的抗…...

分布式光伏电站 转化能源 丰富用电结构

分布式光伏系统是一种利用分散式的可再生能源&#xff0c;在靠近用户端的地方安装光伏发电设施&#xff0c;通过光伏效应将太阳能转化为直流电能&#xff0c;并通过逆变器将其转换为交流电&#xff0c;以供用户使用的系统。以下是对分布式光伏系统的详细阐述&#xff1a; 一、…...

环境配置:如何在IntelliJ IDEA中安装和修改JDK版本配置(以Windows为例)

环境配置&#xff1a;如何在IntelliJ IDEA中安装和修改JDK版本配置&#xff08;以Windows为例&#xff09; 为了在Java开发中使用最新的功能和优化&#xff0c;升级和配置JDK版本是必不可少的。本文将详细介绍如何下载、安装、配置最新的JDK版本&#xff0c;并在IntelliJ IDEA…...

Spring AOP 原理——代理模式

目录 一、代理模式 1.1 静态代理 1.2 动态代理 1.2.1 JDK动态代理 1.2.2 CGLIB动态代理 Spring AOP 是基于动态代理来实现AOP的。 一、代理模式 代理模式, 也叫委托模式。该模式是为其他对象提供⼀种代理以控制对这个对象的访问。它的作用就是通过提供一个代理类&#…...

leetcode 234.回文链表

思路&#xff1a;其实就是判断反转链表是不是和原链表一样的问题。 我们可以借助反转链表的思路&#xff0c;首先我们先把链表的全部元素正向存储&#xff0c;然后再把链表进行反转。 之后我们再遍历反转之后的链表结点元素是不是和刚刚存储数组里面的元素一致就可以了。一旦…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...

相关类相关的可视化图像总结

目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系&#xff0c;可直观判断线性相关、非线性相关或无相关关系&#xff0c;点的分布密…...

数据库——redis

一、Redis 介绍 1. 概述 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的、高性能的内存键值数据库系统&#xff0c;具有以下核心特点&#xff1a; 内存存储架构&#xff1a;数据主要存储在内存中&#xff0c;提供微秒级的读写响应 多数据结构支持&…...

python读取SQLite表个并生成pdf文件

代码用于创建含50列的SQLite数据库并插入500行随机浮点数据&#xff0c;随后读取数据&#xff0c;通过ReportLab生成横向PDF表格&#xff0c;包含格式化&#xff08;两位小数&#xff09;及表头、网格线等美观样式。 # 导入所需库 import sqlite3 # 用于操作…...

八、【ESP32开发全栈指南:UDP客户端】

1. 环境准备 安装ESP-IDF v4.4 (官方指南)确保Python 3.7 和Git已安装 2. 创建项目 idf.py create-project udp_client cd udp_client3. 完整优化代码 (main/main.c) #include <string.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h&…...