基于 stm32 智能水壶的设计与实现(源码+万字报告+实物)
目 录
摘 要 I
Abstract II
1 绪论 1
1.1 本毕业设计目的 1
1.2 本毕业设计意义 2
1.3 本毕业设计国内外研究现状 2
1.4 本毕业设计研究内容 3
2 系统总体设计 4
2.1 硬件系统 5
3 硬件部分 6
3.1 Esp32 6
3.2 Freertos 6
3.3 阐述时钟系统的工作原理 6
3.4 阐述 pwm 的基本原理 7
3.5 阐述中断模块的工作原理 7
3.6 阐述 ds18b20 模块工作原理 7
3.7 阐述蜂鸣器模块工作原理 7
3.8 阐述 USART 工作原理 8
3.9 阐述红外接收模块工作原理 8
3.10 继电器的工作原理 9
3.11 阐述智能水壶遇到的关键问题 9
4 软件系统设计 11
4.1 ds18b20 的数据读取 12
4.2 红外接收器 13
4.3 Esp32 的数据收发 14
4.4 I/O 口的定义及解释 16
结论 17
参考文献 18
附录 19
致谢 20
1 绪论
从詹姆士·哈格里夫斯到爱迪生,再从特斯拉到爱因斯坦,在无数伟人的前 仆后继下,我们是生活从只有火照明,一到夜晚就乌漆墨黑,到现在的一到晚上 就灯火通明,无数的科技成果通过电作为主体便利了我们的生活,提高了我们的 生活效率,生活水平,单片机的出现大大方便了我们的生活,只要是有机器的地 方就有单片机,单片机可以大大减少人力的使用,因此有很大的市场、通过对继 电器,时钟的使用,我们开发出各种各样的功能,尤其是时间管理,单片机方面
的市场前景非常可观。
在这个电子产品繁多的时代,万物互联互通,各个电子产品之间相互配合往 往能够达到意想不到的效果,在经济学中有一个名词叫机会成本,团队中人们往 往从事熟练度最高的工作团队整体的收益最高,通过wifi 将智能水壶和手机连
接到一个局域网,通过手机对智能水壶进行控制将是一个很好的设计[1]。
1.1 本毕业设计目的
21 世纪以来,随着我国社会生产力及半导体行业的快速发展,各行各业都 凭借这一发展进行了大量的改造和变革,旨在借助其顺应时代的潮流,应势搭乘 上生产力及半导体发展的“顺风车 ”,很显然,中国经济在过去四十多年里取得 了令人惊叹的奇迹。除了原有的电子产业外,还涌现出了一批新兴电子产业,这 一方面得益于我国电力产业十分迅速的发展,得益于全世界制造中心向中国转 移,这些都大大刺激了我国的电子设备的制造生产,这已成为不争的事实,现在, 中国比以往任何时候都更有信心,也能更有能力。创新、活力和国际合作将在中 国未来的经济复苏中发挥非常关键的作用,并帮助中国在推动全球繁荣与和平方 面发挥更加重要的作用,互联网改变了我们的生活,物联网将万物互联,数字化 意味着将有更高层次的效率,而电气化是实现去碳的唯一方法,数字化与电气化 的结合等于可持续化的未来。绿色转型将是一场全面系统深刻的经济社会结构转 型,任何国家都要主动去适应和把握绿色转型的机遇,我们虽然已经很强大富强, 但是我们不能掉以轻心,取长补短相得益彰是我们科技进步的根本,Stm32 单片 机的出现使我们的生活变得更加便利更加智能,以前人力完成的事情现在有了单
片机我们的效率得到极大的提高。烧水往往需要经过打水,加热,还需要有人盯
着水有没有烧开,然后关火,然后晾在一边等水变温等一系列麻烦的步骤,现如 今急需一个可以自动控制加水,调节水温的智能水壶[2] ,在没有人直接参与的情 况下,应用检测仪表和控制装置对水壶和烧水过程进行控制,使其达到预期的温
度,然后自动加水,并满足稳定性,准确性和快速性[3] ,我们既要学习古上圣贤
的理论同时又要有新的技术,新的技术是科技进步的血液,把烧水这道传统工序 结合stm32 的智能控制可以极大简化这个工序,实现一键就能喝热水,为中华文
化繁荣兴盛,中华民族伟大复兴助了一份力。
1.2 本毕业设计意义
现在中国正在进入信息化的科技和社会,万物互联互通是必然的趋势,如何 用信息化的工程带动工业化的工程,是一个极大的挑战,经过一个世界的发展, 我国在电子研发,高等教育方面都有了扎扎实实的基础,我国的科技强大,地大 物博,人口众多必然导致我国是世界上最大的市场,现在是中国和美国的科技竞 争嘴激烈的时期,美国对中国的制裁不断,措施越来越严厉,对中国公司的影响 越来越大,越是打压,我们越要迎难而上,设想一下,在家里一个手机就可以进 行一切需要自己动手操作的事情,轻轻触摸一下屏幕,洗衣机就自动的旋转,电 视自己打开喜欢的频道,衣柜自己进行衣服的收纳,扫地机器人自动进行垃圾的 扫描和清洁,水壶里的水自动烧开保温,人只需要躺在沙发上对手机屏幕点一点 就可以省下很多时间去干自己喜欢的事情,是多么的方便,单片机因为其体积等 许多优点,对我们的生活有巨大的价值,越是自动化,越离不开嵌入式,我们的 水壶也不例外,通过对局域网的组建,将水壶作为服务器,手机为客户端,进行 socket 通信,应用 http 协议就可以通过浏览器控制家里的设备将是很方便的一个
事情。
1.3 本毕业设计国内外研究现状
21 世纪以来,随着我国社会生产力及半导体行业的快速发展,各行各业都 凭借这一发展进行了大量的改造和变革,旨在借助其顺应时代的潮流,应势搭乘 上生产力及半导体发展的“顺风车 ”。Stm32 单片机的出现使我们的生活变得更 加便利更加智能,以前人力完成的事情现在有了单片机我们的效率得到极大的提
高。烧水往往不够透明,用多了一些水垢会附着到水壶内壁而无法注意到,水垢
附着到底部将减少加热的效率,而且浪费能源,如果我们将水壶设计成玻璃并且 可以远程操控,当水烧开了会自动停止加热,这样不仅可以防止水垢的堆积,并
且可以提高安全性能,将煤气灶的热力变成电力加热。
1.4 本毕业设计研究内容
(1)选择 keil5 和thonny 作为程序开发的环境,加入其他硬件传感器模块, 对电源电路下载电路进行选择,将 wifi 模块,红外模块,温度传感器模块代码
分别模块化保证工程的可移植性,提高系统的稳定性。
(2)引入 cs 架构,用 esp32wifi 模块与手机热点进行连接,使其在局域网 组网,当客户端发送 http 请求时,esp32 作为服务器进行响应,实现远程对智能
水壶的控制。
(3)在 microPython 环境里对 esp32wifi 模块进行编写,选择 socket 模块,
创建tcp socket 套接字,为了保证数据的稳定传输选择tcp 协议作为通信手段。
(4)编写手机控制智能水壶开和关的两个 html 文件,为减小内存占用,页
面图片采用超链接的方式让手机浏览器自动在网上搜索并下载。
(5)用 Chrome 浏览器进行对 http 协议的调试,配合 microPython 完成对
Header 部分的编写。
(6)针对红外传感器的时序,对红外时序进行读和写的代码编写,在开发
板上运行并调试。
(7)针对温度传感器的时序,进行对时序的读和写部分进行操作,在开发
板上运行并调试。
(8)对直流电机通过编写 pwm 函数进行转速的控制。
(9)完成软件模块部分的整合,编写 main 函数,完成 gpio 的初始化,开
启端口时钟,配置 gpio 模式 。
2 系统总体设计
本次设计的主要是一种智能水壶的系统,共有两个部分,对单片机的软件部 分和单片机的硬件部分,软件部分采用 c 语言和 python 作为传感器和wifi 模块 程序的编写语言,分别用 iic 协议和tcp 和 http 协议进行编写,保证了数据传输 的稳定性,并将软件部分模块化,提高了系统的可移植性,为了更方便的控制水 壶 ,配有遥控器和手机两种方式来进行对智能水壶的控制 ,硬件部分采用 stm32zet6 作为核心,对电源电路,下载电路,直流电机驱动电路和 gpio 引脚进 行控制,引入esp32 作为手机服务的服务器,该模块可以通过其自带的wifi 模块 实现远程对手机的交互,并且提高了能源的节约性,传输的安全性,设备的便利
性。
图 2-1 系统总体设计
2.1 硬件系统
本设计采用了 Stm32 系列单片机,把能使 STM32 工作的最简
单基础的电路统称为 STM32 最小系统,其内部结构框图如下图 2. 1 所示。
可以运行的最简单的电路叫做系统的最小电路,STM32 最小系统
由以下几部分组成:
(1)晶振电路 ,如图 2- 1 所示
(2)复位电路 ,如图 2-2 所示
(3)电源电路,如图 2-3 所示
图 2- 1 晶振电路
图 2-2 复位电路
图 2-3 电源电路
3 硬件部分
3.1 Esp32
Esp32 是一种专门用于物联网开发的芯片,不仅功能强大,有很强大的 api 函数库而且价格很低,功耗也更低,esp32 同时支持wifi 和蓝牙,由于 stm32 没 有内置wifi 和网卡,所以选择 esp32 进行wifi 的开发是很方便的,而且 esp32 支 持 microPython 进行开发,相比于 c 语言 python 不仅面向对象,而且语言简洁,
更加智能,在如今芯片的技术飞速发展下,代码效率也相差无几。
3.2 Freertos
freertos 是免费开源的系统[4],而且特别适合体积不大的工程对丰富 ARM7、 Cortex-M3 硬件来说,RTOS 占用的硬件资源已经越来越可以忽略。无需担心 RTOS 会拖累性能。内核只有 3 个.c 文件,全部围绕着任务调度,没有任何其 它干扰,便于理解学习。而且,根本不需要其它繁多的功能,只要任务调度就
够了。
这个操作系统不大,Freertos 可以进行信号量、任务管理、消息队列、时间 管理、信号量、内存管理等[5] ,对于本设计已经绰绰有余。Freertos 通过对不同 的任务赋予不同的优先级,最多可以赋予 32 个不同的优先级来执行任务,通过 对任务赋予堵塞状态,处理器让处于就绪状态的、优先级最高的任务先运行。系 统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同 一优先级的任务共享 CPU 的使用时间。通过对链表的应用,每个任务都由一个
结构体进行定义,我们可以设置任务的优先级,栈大小,来分配不同的资源.
3.3 阐述时钟系统的工作原理
没有时钟机器就不会运行,他就像架子鼓的拍子,一首音乐没有节拍也不会 好听,会杂乱无章[6] ,我采用外部时钟源的方式来给主机提供时钟,每一个外设
需要时钟才能使能。
3.4 阐述 pwm 的基本原理
pwm 就是波形的等效,将一个波形通过分割成一系列的占空比不一样脉冲 来摸拟各种不规则图形,非常的好用,可以将模拟信号通过数字信号来模拟出来, 我们平时见到的 LED 灯,它也是通过 pwm来控制的,当它的频率大于 50Hz 的 时候,人眼就会产生视觉暂留效果,基本就看不到闪烁了,而是一个常亮的 LED 灯,人在 1 秒内,高电平 0.5 秒,低电平 0.5 秒,如此反复,那么你看到的电灯 就会闪烁,但是如果是 10 毫秒内,5 毫秒打开,5 毫秒关闭, 这时候灯光的亮 灭速度赶不上开关速度,由于视觉暂留作用 人眼不感觉电灯在闪烁,而是感觉
灯的亮度少了因为高电平时间为 50% 亮度也就为之前的 50% 。
3.5 阐述中断模块的工作原理
中断是系统执行任务时可以暂停当前任务去进行预先设定好的中断任务,根 据中断任务的优先级高低,优先级高得中断任务先执行,等执行完搞得中断任务
再执行低的中断任务,中断的好处是不会一直占用系统资源。
3.6 阐述 ds18b20 模块工作原理
DS18B20 只需要一根线就能和主机通讯,温度在负五十五摄氏度度到一百 二十五摄氏度之间,精度误差在零点五摄氏度左右,具有精度高,速度快的优点, 有 CRC 校验码,可以抵抗干扰,有纠错的功能,即使正负极接反也可以不烧坏 主板,但是不工作,而且 ds18b20 可以多个连接一个主机,通过设置不同的地址
来访问每个 ds18b20 ,非常的方便好用。
3.7 阐述蜂鸣器模块工作原理
蜂鸣器非常简单适用,通电就响,我选用它作为热水烧开了时提醒人们去注
意的报警器。
北京理工大学珠海学院 2023 届本科生毕业设计(论文)
图 3- 1 有源蜂鸣器电路
3.8 阐述 USART 工作原理
Usart 是全双工的异步收发器,因为要用 printf 查看当前工程有没有问题, 我们可以通过重定向的方式把变量的构成打印到调试助手上,这样即使程序出现
了 bug 也可以知道是哪里出现的。
3.9 阐述红外接收模块工作原理
利用红外线进行遥控是一种很方便的技术,红外线抗干扰,采用的通讯协议
可靠耗能小,我们的电视遥控就是红外接收。
我们将信息通过红外线的形势发送到接收设备,这种信号是我们制定了一系
列规定来发送的。
(1)信号总共 16 位
(2)信号发两遍
(3)通过占空比来说明“ 0 ”和“ 1 ”;
(4)频率为 38Khz;
(5)一个发送位的时间为 1. 125ms 或 2.25ms;
NEC 码位定义时序图如下图所示:
图 3-2 NEC 码 1 和 0 时序图
NEC 遥控数据格式为:引导码、地址码、地址反码、控制码、控制反 码。我们要发送一个引导码,通过对高低电平的时长和顺序还有大小来发送
数据格式如下:
图 3-3 引导码高低电平时序图
这个码规定了各个高低电平要通过固定的顺序,每个的时间长短来发送。
3.10 继电器的工作原理
继电器是一种电子控制器件,是一个通过电磁原理进行开关的器件,可以接 在任意导线上,通过对控制线圈控制来闭合,断开时没导通,闭合时导通。通常 使用继电器可实现小电流控制大电流,或者低压控制高压等设备。比如stm32 的
gpio 输出电平是 3.3v ,要控制 220v 高压设备,可选择继电器。
一般情况下,常闭触点和公共出点事导通连接在一起的,当继电器工作后, 公共出点和常闭出点就断开,然后常开触点和公共触点导通连接在一起,这就像
开关一样。
3.11 阐述智能水壶遇到的关键问题
自动控制不光要稳,还要快,如何利用有限的资源进行最快最准的操作是一
个问题,我需要用到 freertos 实时抢占式操作系统来分配内存,让有限的内存迸
发出无限的能量,我需要编写 ds18b20 的时序来完成 stm32 对 ds18b20 读和写的
操作,并且在此之前我要初始化接收发送的 gpio 端口,包括相应的时钟管脚,
调用 Systick 系统定时器,并且要编写一个函数,此函数用来检测 DS18B20 是否 存在。因为红外接收也有协议,所以我还要编写红外接收的函数,利用高电平时 间判断是 1 还是 0[7],然后将变量通过 hw_jsm<<= 1 和 hw_jsm+=Data 这两行代码
存储在 hw_jsm 中。
图 3-11 主程序流程图
4 软件系统设计
软件系统我选用 FreeRtos 系统,FreeRtos 系统是基于优先级的实时抢占式系 统,系统允许多个任务同时运行,同时 freetos 提供一个低功耗的 tickless 模式, 降低了电量的使用,在系统里我设置了三个任务,在开启管脚时钟和初始化 gpio 管脚模式后,分别用于监测红外接收,温度传感器,esp32 的wifi 模块连接的管
脚。
图 4-1 软件系统设计
4.1 ds18b20 的数据读取
Ds18b20 是一款高精度的温度传感器,内置了温度灵敏原件,低温触发器, 高温触发器,配置寄存器和高速缓存存储器,监测的温度数据存放在温度寄存器 中,通过对 EEPROM 寄存器的数据的设置可以设置温度传感器的精度,储存的 数据一共有两个字节,如果温度大于 0,只需将所得数据乘以 0.0625 即得到实际
温度
图 4-2 ds18b20 内部结构图
使用 ds18b20 时要先初始化单总线的时序,主机输出一段时间低电平,可以 产生复位脉冲,然后拉高电平,进入接收模式,接着 ds18b20 会拉低总线的电平,
作为应答脉冲
写时序起始于主机拉低总线,通过对时长的设置不同,可以进行写 1 或写 0
的操作
Ds18b20 仅在主机发出读时序时才向主机传输数据,同样读时序也是起始于
主机拉低总线,
总结一下操作流程为先进行复位,然后进行 skiprom 指令的发送,转换命令 的发送,然后进行延时,然后进行复位,之后再进行 skiprom 指令的发送,然后 读存储器的指令,然后再读取两个字节的温度数据,我们可以先定义一个变量 temper ,然后通过 if(temper>=预定值)语句来实现达到预定值时报警的功能
图 4-3 温度读取过程
4.2 红外接收器
通过设置外部中断函数可以编写红外解码函数,当管脚检测到一个下降沿后 就会触发中断,检测高电平时间就可以判断是否是来自遥控器的红外线的 1 和 0。 在此之前要先开启 SysTick 系统时钟,用于时间的监测[8] 。流程如下,先开启时 钟,然后开启外部中断,进过获取高电平的函数判断是否是有用信号,然后进行
红外函数的解码,最后将所解码的数值储存在一个变量中。
北京理工大学珠海学院 2023 届本科生毕业设计(论文)
图 4-3 红外接收流程图
4.3 Esp32 的数据收发
通过用手机热点产生一个局域网,将 esp32 接入手机,通过网页控制水壶的 加水,加热和停止加水和停止加热,通过用 socket 写一个服务端的代码建立一个
服务器[9] ,来和浏览器建立连接操作如下
(1)创建tcp 的套接字
(2)绑定本地信息
(3)变成监听套接字
(4)等待客户端的链接
(5)为客户端服务
(6)关闭套接字
连接成功后会显示当前局域网分配的 ip 地址,我们用手机的浏览器输入响应 ip
地址就可以打开预先写好的 html 网页了。
图 3-4 micropython 里写的 socket 连接以后显示的地址
通过tcp 的三次握手和四次挥手来保证数据的稳定,三次握手,客户端向服 务器发送 syn 请求服务器收到后回应ack 加另外一个 syn 请求,客户端收到后回 应一个 ack 响应,这样,双方就建立了一个虚拟的通道[10] ,三次握手占用了一部 分资源,这些资源通过四次挥手进行释放,第一次挥手由客户端进行,客户端发 送 fin 数据包给服务器,服务器收到后进行 ack 响应并且发送另外一个 fin 数据
包给客户端,客户端收到后再回送一个 ack 响应,至此四次握手结束。
浏览器与服务器之间的协议是 http 协议,一个服务器与客户端通信光有 tcp 是不行的,还要遵循 http 协议浏览器才能将 html 文件成功接收,我们在浏览器 地址栏输入 url,这个url 会被发送到网关[11],经过交换机和路由器最终到达域名解 析服务器,域名解析出 ip 地址再发送给客户端,这时客户端再去发送数据去真 正的web 服务器,浏览器请求以 get /地址 /HTTP/1. 1 的格式告诉服务器请求, 服务器把网页传给浏览器,HTTP 响应分为 Header和 Body 两部分,实际上就是 把网页的 HTML 代码发送给浏览器,让浏览器显示出来。我们经常看到的响应 有 HTTP/1. 1 200 OK 这样的文字,类似的还有 404 Not Found,500 Internal Server Error 等等[12] ,一般是文件不存在或者服务器出错当浏览器读取到服务器发送的 HTML 源码后,它会解析 HTML 页面,然后,根据 HTML 里面的各种链接,再 发送 HTTP 请求给服务器,拿到相应的图片、视频、Flash、JavaScript 脚本、CSS 等各种资源,最终显示出一个有动态的灵动的页面。总结一下,http 请求的过程 是,浏览器向服务器发送包括方法(get 或者 post(附带 body))路径域名,然 后服务器向浏览器返回一个 http 回应包括响应代码响应类型还有 body ,如果浏
览器还想要更多的资源就重复发送 http 请求。
http 协议具有极强的的拓展性,可以将对一个服务器的压力分散到很多个服
务器上,比如网页里的图片可能是别的服务器里的资源。
连接成功后会显示当前局域网分配的 ip 地址,我们用手机的浏览器输入响
应 ip 地址就可以打开预先写好的 html 网页了。
4.4 I/O 口的定义及解释
表 4-1 统计表
IO 管脚 IO 管脚作用
Pb1 用来触发外部中断 1 停止加热并蜂鸣器响
Pb2 继电器控制管脚
Pb5 输出 pwm控制直流电机
Pb8 蜂鸣器
Pb9 红外接收中断
Pg11 温度传感器 ds18b20 数据收发
Pb11 esp32wifi 连接管脚
更多推荐


所有评论(0)