基于FreeRTOS和STM32的微波炉

news2025/5/13 23:36:33

一、项目简介

        使用STM32F103C8T6、舵机、继电器、加热片、蜂鸣器、两个按键、LCD及DHT11传感器等硬件。进一步,结合FreeRTOS和状态机等软件实现了一个微波炉系统;实现的功能包含:人机交互、时间及功率设置、异常情况处理及固件升级等。

二、功能需求

     (一)、初始状态
        1、当STM32初始化后,LCD显示LCD屏幕显示欢迎界面(例如“Microwave Demo V1.1”),持续2秒后进入待机模式;
        2、LED状态:腔体内部LED灯常亮(模拟门未关闭时的照明);
        3、舵机状态:SG90舵机处于“开门”位置(角度0°,门锁未闭合)。
    (二)、用户操作流程
        1、用户手动关闭门,第一次按下按键KEY1关门,舵机旋转90°代表关闭,此时LED灯灭;
        2、LCD显示默认时间和加热功率挡位:倒计时为0s;功率挡位为Medium;
        3、用户短按KEY2开始设置倒计时,此时LCD打印“time setting”,然后通过再次短按
        KEY2循环切换倒计时打印在LCD屏幕上,短按一次加20s,最大为60s;设置好时间后长按              KEY2切换功率设置,此时LCD打印“Power setting”,然后通过短按KEY2循环切换加热挡位           打印在LCD屏上(low/medium/high可选择),之后继续长按KEY2,又切换到“time setting”。
        4、选择好时间及挡位后启动加热:
            (1)长按KEY1启动加热,此时PWM开始控制加热片;
            (2)转盘(用360°sg90舵机模拟)以恒定速度旋转;
            (3)蜂鸣器短鸣两声“滴滴”代表开始运行;
            (4)倒计时启动打印在LCD上;
            (5)用DHT11实时显示温度在LCD上;
            (6)LCD显示状态“Heating”表示正在加热。
        5、加热完成
            (1)倒计时归零,PTC加热片断电;
            (2)转盘停止旋转;
            (3)蜂鸣器短鸣三声“滴滴滴”代表结束;
            (4)打印时间及温度在LCD上;
            (5)打印“completed”状态在LCD上。
        6、当第5步加热完成之后,门自动打开,此时LED灯亮;LCD显示默认时间设置及挡位设置。
    (三)、异常情况处理流程
        1、加热过程中断情况:
            (1)当加热过程中,用户按下KEY1开门,此时加热片断电,转盘停止,LED灯亮起;
            (2)倒计时暂停在LCD屏上,并且显示“Heating stopped!”;
        2、恢复加热:
            (1)用户按下KEY1关闭门,LED灯熄灭,需再次长按KEY1才能启动加热操作并且继续倒计时。
        3、温度过高:
            (1)DHT11监测温度超过设定阈值,此时加热片断电,转盘停止,LED灯亮起,门自动打开;
            (2)蜂鸣器短鸣四声“滴滴滴滴”;
            (3)LCD打印“Heating stopped!”。
        4、门未关闭时启动:
            (1)蜂鸣器短鸣一声,加热片和转盘不工作;
            (2)LCD屏打印“Close door first”。
    (四)、固件更新功能
        (1)通过串口加DMA接收APP升级程序;
        (2)编写Bootloader任务,将APP程序从RAM写到Flash上;
        (3)设置SP及PC寄存器,重定向中断向量表;
        (4)跳转到APP程序执行。

三、软件架构

四、硬件接线图

五、硬件设计

1、180°舵机驱动

        舵机的控制通常要求约20ms的参考脉冲,其高电平区间通常为0.5-2.5毫秒,其总间距为2ms。而1.5ms转90度,因此也就是需要百分之五的占空比转90度,其舵机转动角度与脉冲宽度关系如图所示:

2、360°舵机驱动

        

        其他硬件比较简单,不再过多叙述。

六、软件设计

        设计亮点如下:

        (1)使用面向对象思想编写BSP,方便移植以及维护,使用户仅关心接口而无需在意底层实现细节。

        (2)使用状态机来实现两个按键的多功能切换需求。

        (3)移植FreeRTOS源码并进行内核裁剪以适应STM32F103C8T6单片机。

        (4)使用二值信号量完成多任务之间同步与通信。

        (5)使用串口加DMA接收APP程序,减轻CPU负担。

        (6)编写Bootloader任务,跳转到APP程序后实现固件升级。

        (7)编写按键检测算法来识别长按/短按。

七、源代码

        以下仅展示内核裁剪的程序,完整源程序请查看笔者其他帖子进行获取

八、调试记录

   1、程序下载进去时发生HardFault,调试一看是进入定时器中断了,说明TIM_Cmd(TIM2,DISABLE)函数不能关闭中断,仅能将定时器的计数器关闭,只能关闭中断自动触发功能,但未完全关闭中断,需要调用TIM_ITConfig(TIM2,TIM_IT_Update,DISABLE)函数才能完全关闭掉。重新启用时也需要再次调用该函数打开中断。
    2、当倒计时归零正常结束烹饪时,此时门会自动弹开,但是如果你现在再次短按KEY1,不会发生关门响应,这是因为没有对门状态复位。
    3、由于我使用了TIM2的中断以及两路PWM,但是我设置TIM2中断频率与TIM2的PWM频率不一致,这导致PWM无法工作,造成冲突;因此,将TIM2中断换成TIM4中断,问题解决!
 

九、实物演示

IAP

基于FreeRTOS的微波炉

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

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

相关文章

国防科大清华城市空间无人机导航推理!GeoNav:赋予多模态大模型地理空间推理能力,实现语言指令导向的空中目标导航

作者: Haotian Xu 1 ^{1} 1, Yue Hu 1 ^{1} 1, Chen Gao 2 ^{2} 2, Zhengqiu Zhu 1 ^{1} 1, Yong Zhao 1 ^{1} 1, Yong Li 2 ^{2} 2, Quanjun Yin 1 ^{1} 1单位: 1 ^{1} 1国防科技大学系统工程学院, 2 ^{2} 2清华大学论文标题:Geo…

uniapp打ios包

uniapp在windows电脑下申请证书并打包上架 前言 该开发笔记记录了在window系统下,在苹果开发者网站生成不同证书,进行uniapp打包调试和上线发布,对window用户友好 注:苹果打包涉及到两种证书:开发证书 和 分发证书 …

快速搭建 Cpolar 内网穿透(Mac 系统)

1、Cpolar快速入门教程(官方) 链接地址:Cpolar 快速入门 2、官方教程详解 本地安装homebrew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"这个是从 git 上拉取的&#x…

动态监控进程

1.介绍: top和ps命令很相似,它们都是用来显示正在执行的进程,top和ps最大的不同之处,在于top在执行中可以更新正在执行的进程. 2.基本语法: top [选项] 选项说明 ⭐️僵死进程:内存没有释放,但是进程已经停止工作了,需要及时清理 交互操作说明 应用案…

HADOOP 3.4.1安装和搭建(尚硅谷版~)

目录 1.配置模版虚拟机 2.克隆虚拟机 3.在hadoop102安装JDK 4.完全分布式运行模式 1.配置模版虚拟机 1.安装模板虚拟机,IP地址192.168.10.100、主机名称hadoop100、内存2G、硬盘20G(有需求的可以配置4G内存,50G硬盘) 2.hado…

第 4 篇:平稳性 - 时间序列分析的基石

第 4 篇:平稳性 - 时间序列分析的基石 在上一篇中,我们学习了如何将时间序列分解为趋势、季节性和残差。我们看到,很多真实世界的时间序列(比如 CO2 浓度)都包含明显的趋势(长期向上或向下)和/…

DeepSeek赋能Nuclei:打造网络安全检测的“超级助手”

引言 各位少侠,周末快乐,幸会幸会! 今天唠一个超酷的技术组合——用AI大模型给Nuclei开挂,提升漏洞检测能力! 想象一下,当出现新漏洞时,少侠们经常需要根据Nuclei模板,手动扒漏洞文章…

从0到1彻底掌握Trae:手把手带你实战开发AI Chatbot,提升开发效率的必备指南!

我正在参加Trae「超级体验官」创意实践征文, 本文所使用的 Trae 免费下载链接: www.trae.ai/?utm_source… 前言 大家好,我是小Q,字节跳动近期推出了一款 AI IDE—— Trae,由国人团队开发,并且限时免费体…

opencv图片颜色识别,颜色的替换

图片颜色识别 1. RGB颜色空间2. 颜色加法2.1使用numpy对图像进行加法2.2使用opencv加法(cv2.add) 3 颜色加权加法(cv2.addWeighted())4. HSV颜色空间5. 制作掩膜4. 与运算(cv2.bitwise_and)5.颜色的替换7 R…

B实验-12

需要注意版本、页面源代码 两个文件一个目录:phpinfo robots phpmyadmin 实验12 靶机1 一个key在phpmyadmin,一个key在回收站 用两个扫描目录的工具扫,nmap给python版 情况1:弱口令 root root root 123456 …

【网工第6版】第5章 网络互联②

目录 ■ IPV6 ▲ IPV6报文格式 ◎ IPV6扩展报头(RFC2460) ◎ IPv6相关协议 ▲ IPV6地址分类 ◎ IPv6地址基础 ◎ IPv6地址举例 ◎ IPv6地址分类 ◎ 特殊地址对比IPv4 vs IPv6 ▲ 过渡技术 本章重要程度:☆☆☆☆☆ ■ IPV6 与IPv4…

单页面应用的特点,什么是路由,VueRouter的下载,安装和使用,路由的封装抽离,声明式导航的介绍和使用

文章目录 一.什么是单页面应用?二.什么是路由?生活中的路由和Vue中的路由 三.VueRouter(重点)0.引出1.介绍2.下载与使用(5个基本步骤2个核心步骤)2.1 五个基本步骤2.2 两个核心步骤 四.路由的封装抽离五.声明式导航1.导航链接特点一:能跳转特点二:能高亮 2.两个高亮类名2.1.区…

STM32---外部中断EXTI

目录 一、中断向量表 二、EXTI工作原理图 三、NVIC模块 四、GPIO设置为EXTI的结构 五、C语言示例代码 在STM32中,中断是一个非常重要的结构,他能让我们在执行主函数的时候,由硬件检测一些外部或内部产生的中断信号,跳转到中断…

Itext进行PDF的编辑开发

这周写了一周的需求,是制作一个PDF生成功能,其中用到了Itext来制作PDF的视觉效果。其中一些功能不是很懂,仅作记录,若要学习请仔细甄别正确与否。 开始之前,我还是想说,这傻福需求怎么想出来的&#xff0c…

Hibernate的组件映射

在实际的开发中,使用的是非常多的,还有几种比较特殊的关系映射: 组件映射继承映射 先看一下组件映射: 组件映射中, 组件也是一个类, 但是这个类它不独立称为一个实体, 也就是说, 数据库中没有一个表格单独的和它对应, 具体情况呢, 看演示:

C++ 操作符重载Operator

C可以重载大多数操作符&#xff0c;如算术运算符号&#xff0c;-号。 位操作符<<,>> 下标符号[]等都可以重载。 重载的意思&#xff0c;是让这些符号&#xff0c;按你定义的行为来执行代码&#xff0c;但是这种自定义&#xff0c;是有限制的&#xff0c;必须有一…

Docker 镜像、容器和 Docker Compose的区别

前言&#xff1a;Docker 的镜像、容器和 Docker Compose 是容器化技术的核心组件&#xff0c;以下是对它们的详细解析及使用场景说明。 ​​1、Docker 镜像&#xff08;Image&#xff09;​​ ​​定义​​&#xff1a; 镜像是只读模板&#xff0c;包含运行应用程序所需的代码、…

Linux深度探索:进程管理与系统架构

1.冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系。 截至目前&#xff0c;我们所认识的计算机&#xff0c;都是由⼀个个的硬件组件组成。 输入设备&#xff1a;键盘&#xff0c;鼠标…

一段式端到端自动驾驶:VAD:Vectorized Scene Representation for Efficient Autonomous Driving

论文地址&#xff1a;https://github.com/hustvl/VAD 代码地址&#xff1a;https://arxiv.org/pdf/2303.12077 1. 摘要 自动驾驶需要对周围环境进行全面理解&#xff0c;以实现可靠的轨迹规划。以往的方法依赖于密集的栅格化场景表示&#xff08;如&#xff1a;占据图、语义…

4月21日星期一今日早报简报微语报早读

4月21日星期一&#xff0c;农历三月廿四&#xff0c;早报#微语早读。 1、女子伸腿阻止列车关门等待同行人员&#xff0c;被深圳铁路警方行政拘留&#xff1b; 2、北理工再通报&#xff1a;开除宫某党籍&#xff0c;免去行政职务&#xff0c;解除聘用关系&#xff1b; 3、澳门…