从传统汗蒸演变为如今与科技融合的新一代细胞浴,然而应该如何利用现有的技术使得汗蒸房智能化,使得用户体验更加安全节能以及舒适的汗蒸服务。
本课题旨在站在用户角度上设计一款安全、节能以及智能的汗蒸房控制器。本设计研制一款智能汗蒸房的控制器。该设计核心功能是通过PID算法对加热器进行恒温控制。本设计主控MCU采用STM32H743芯片,搭载RT-Thread物联网实时操作系统,并利用其内置集成的工作频率高达480MHz的AMR Cortex M7内核对实时采集回来的传感器数据进行计算以及处理,其次用ASR01离线语音模块来提供语音交互功能,LCD液晶显示屏充当实时数据显示界面,另外,物联网功能则是由OneNET云平台与微信小程序共同实现数据的传输以及命令的下发。
通过系统调试与分析可得,系统利用PID算法实现自动温度控制功能,有效改善传统汗蒸手动加热繁琐,同时确汗蒸房温度不会危害人体安全。语音控制和微信小程序为该系统的智能化便捷控制。另外还设有音乐播放功能,做到养生娱乐两不误。
关键词:PID算法;RT-Thread;语音交互;物联网;
From traditional sweat steaming to a new generation of cell baths that are now integrated with technology, however, how to utilize existing technology to make sweat steaming rooms intelligent and enable users to experience safer, more energy-efficient, and more comfortable sweat steaming services.
This design develops a controller for an intelligent sweat steaming room. The core function of this design is to control the temperature of the heater through PID algorithm. The microcontroller uses the STM32H743 chip as the main controller, equipped with the RT Thread IoT real-time operating system, and uses its built-in integrated AMR Cortex M7 with a working frequency of up to 480MHz to verify and process the real-time collected sensor data. Secondly, the ASR01 offline voice module is used to provide voice interaction function, and the LCD screen serves as the real-time data display interface. In addition, The IoT function is achieved by the OneNET cloud platform and WeChat mini programs to jointly transmit data and issue commands.
Through system debugging and analysis, the system uses PID algorithm to realize automatic temperature control function, effectively improve the traditional sweat steam manual heating cumbersome, and ensure that the temperature of sweat steam room will not harm human safety. Voice control and wechat small program for the intelligent and convenient control of the system. In addition, it also has the function of playing music, so that the health and entertainment are not wrong.
Key words:PID Algorithm;RT-Thread;Voice Interaction;IoT;
目 录
摘 要 I
Abstract II
第1章 绪 论 1
1.1 研究背景及意义 1
1.2 国内外研究现状 1
1.3 设计内容与要求 2
1.4 经济性分析和社会影响 3
1.5 章节安排 3
第2章 总体设计 5
2.1 总设计框图 5
2.2 元器件选择 6
2.2.1 主控芯片选用方案 6
2.2.2 温湿度传感器选用 7
2.2.3 空气质量传感器选用 7
2.2.4 换气风机选用 8
2.2.5 液晶显示屏选用 8
2.2.6 WiFi模块选用 9
2.3 本章小结 9
第3章 硬件电路设计 10
3.1 核心板设计 10
3.2 外壳设计 12
3.3 驱动板设计 14
3.4 音乐播放板设计 15
3.5 本章小结 18
第4章 软件程序设计 19
4.1 主程序设计 19
4.2 GPIO程序设计、按键程序设计 21
4.3 液晶显示程序设计 21
4.4 温湿度传感器读取程序、空气质量传感器读取程序设计 23
4.5 PID程序设计 24
4.6 MQTT、OneNET程序程序设计 26
4.7 离线语音程序设计 27
4.8 本章小结 27
第5章 系统调试与分析 28
5.1 硬件电路调试 28
5.2 软件调试 28
5.3 软硬件联调测试 30
5.4 制作过程的难题及解决方法 33
5.5 本章小结 33
结 论 34
参考文献 35
致 谢 36
附录A 软件设计流程图 37
附录B 核心板原理图 38
附录C 核心板PCB图 39
附录D 驱动板原理图及PCB图 40
附录E 音乐播放板原理图及PCB图 42
附录F 实物图 44
研究背景:
汗蒸房最早源于韩国,其原理就是来源于最古老的传统桑拿,最早桑拿是皇室专享的,一直以来就是因为汗蒸有养生功效所以一直流传至今。“Sauna”(桑拿)是唯一被英语引入的芬兰语单词,桑拿的传统起源于芬兰人与大自然、森林、湖泊几个世纪以来一直不变的紧密关系,如今它已在芬兰的社会中根深蒂固,即使在今天,桑拿浴仍然是所有重要生活事件的核心,它象征了友爱、团结和集体社会领域,在社交方面外,桑拿房也是沐浴、排毒的场所,还提供私密空间以精神净化、安宁冥想,桑拿房是让身心共同蜕变的场所[1] 。
研究意义:
现在汗蒸已经成为了一种人们日常养生的时尚,这些就取决于现代的科技进步使得汗蒸更容易受到青睐,是一个集养生休闲与一体的好项目。汗蒸房在国内城市迅速蔓延开来,像养生馆、美容院、足疗馆、酒店、温泉馆甚至旅游景点周边都存在它们的身影,可见汗蒸广受人们的喜爱。然而现有的汗蒸房使用时需保持内部尽量减少空气流动而带走热量,且较凉的空气又会对体表温度较高的人体造成刺激或受凉,但是长时间密闭空间又可能导致氧气含量不足。针对上述问题,本课题旨在站在用户角度上设计一款安全、节能以及智能的汗蒸房控制器。
由于人口老龄化、亚健康状态以及环境气候变化等因素的影响,健康产业的发展具有广阔的发展空间,同时科技发展也为健康产业提供源源不断的动力,然而于健康行业而言,汗蒸已经成为了健康行业的桥头堡。
国外研究现状:
国外的蒸浴文化历史悠久,更有“为健康而休息”的倡导。过去,汗蒸房是庭院边缘的小木屋。如今,它可以广泛在楼宇公寓中或别墅住宅中使用,更有营业性场所中使用,并与现代先进的技术相结合。谈到过往的汗蒸房,让人印象深刻的可能就是电影里出现的那些木屋结构,手动加水调温的形式。但是如今的汗蒸房在现代技术的加持下,已然发展为无需人工的智能自动调节温度,用户仅需设置想要的温度值,控制板便会自动进行调节温度。同时,在内部更有远红外线灯的设计,在汗蒸的同时更是添加了理疗的效果。另外,在生命安全方面,某些先进的更是给用户配备了生命体征手环,实时监测使用者的身体状况避免使用过程当中可能会出现的身体不适导致的失治。
国内研究现状:
相比于国外而言,国内的汗蒸发展较为迟缓,但是健康生活的追求在国内也是备受追捧的,汗蒸房因此也受到不少民众的热爱。不过较为不同的是,国内汗蒸房的存在大多在营业性场所,除具备健康养生外,还融合了许多娱乐休闲的元素。比如内部设置餐饮、唱歌、电影、棋牌等等的娱乐性元素,在国内广大的汗蒸房市场发展呈现多元化。应用也是走进了不同的场所,酒店、美容院、疗养机构、医院等,近年更是走进许多个人家庭,更是成为了智能家居的一部分。
本课题旨在研究智能汗蒸房控制器的设计与实现,要求设计一款用于汗蒸房电气控制设备的装置。硬件控制系统以STM32单片机为主要控制核心,外部主要由温湿度传感器、空气质量传感器、陶瓷加热片、换气风机、人机交互单元、电源以及相应的灯组成。
具体要求如下:
(1)监测汗蒸房内部温度并实时显示至液晶显示屏,STM32利用温度传感器采集回来的数据通过PID算法计算并自动调节加热片的工作;
(2)监测汗蒸房内部二氧化碳浓度并实时显示至人机交互界面,STM32利用二氧化碳传感器采集回来的数据自动调节换气风机的工作;
(3)实现微信小程序上位机、OneNET云平台、单片机下位机之间的通信,微信小程序上位机实时显示相关传感器的数据以及命令的下发执行功能;
(4)用户能通过语音指令对设备进行控制,实现语音交互功能;
(5)娱乐性功能由音乐播放体现;
课题各阶段内容安排:
(1)准备阶段:研读毕设题目和任务要求,做好资料的搜集与前期的准备工作,对初步实现方案进行构想,分析可能出现的困难并作好应对方案准备;
(2)外壳设计阶段:确定设备调试环境的设想,根据预定要求进行3D外壳的设计,在此阶段需要充分考虑该外壳与后续电路硬件的结合,包括具体的传感器安装位置、电路板之间的连接、外围器件的安装等等均需要仔细考虑,完成设计后,及时发出打样确保进度的有序进行;
(3)硬件设计阶段:以外壳设计为安装要求,根据预定任务要求进行原理图绘制、PCB的布局与制板;在PCB的设计阶段同步做好元器件的选型采购工作;PCB打样回来及时进行检查测试,确认无误进行焊接和预安装,确保外壳和硬件的结合;初步开始撰写论文摘要、绪论、硬件设计等部分;
(4)软件设计阶段:对软件设计进行模块化设计,基于RTThread Studio进行详细软件设计程序的设计,制定相应软件设计流程;
(5)整机调试阶段:将外壳设计、硬件设计、软件设计进行结合测试,检验是否达到预定的功能要求,对测试阶段发现的问题及时进行解决。
(6)撰写论文阶段:按照论文格式详细撰写相关设计实现目的、原理以及过程,做好答辩准备。
经济性分析:
硬件部分,硬件设计在构想以及选型阶段以尽可能模拟实际环境为主,以减少设计耗费为次。因此,这选型方面充分考虑了过往项目中的器件是否也满足本次设计的需求。去年暑假制作的STM32H7的核心板对于本次设计而言就十分满足功能需求,且扩展性强。另外在PCB板的设计方面,利用嘉立创每月两次免费打样的优惠以达降低设计费用的目的。
软件设计方面,目前有多种的主流的实时操作系统,然而RT-Thread是最为简洁,浅显易懂,便于移植的操作系统之一。丰富的软件包使其快速开发的特点尤为明显。相较于Linux系统来说,RT-Thread的体积更小,开发成本更低,功耗更低。
社会影响:
目前,国内的汗蒸房大部分都在经营性场所。在未来的发展趋势中,结合物联网和智能家居的元素后,相信将来必定会成为更多汗蒸爱好者置办新居纳入计划的一部分。另外,由于智能控制、物联网控制和语音控制,将会为其增加不少科技感和安全感。因此,人们追求的汗蒸房应该是满足安全、节能、智能的多种要求的。
第1章对课题的研究背景及意义展开了论述,对国内外相关发展现状进行了分析,在此基础上对设计内容及课题内容进行了划分,后对经济性和社会影响进行了分析。
第2章详细对总体设计进行叙述,分别从硬件、软件以及元器件选型等角度向读者介绍总体设计过程。
第3、4章分别对本设计的硬件部分和软件部分的设计过程展开叙述,其中主要对设计原理和目的展开叙述。
第5章从硬件调试、软件调试、软硬件联调以及设计过程出现的问题与解决等方面对系统调试分析过程进行了详细的叙述。
硬件设计:主要由STM32单片机、2.8寸串口液晶显示屏、温湿度传感器、空气质量传感器、离线语音模块、WiFi模块、风机、音乐播放器等部分组成,如图2.1所示。
图2.1 硬件框图
(1)单片机部分是整个系统的核心大脑,它既是数据的收集者、处理者和发送者的角色,也是控制指令的执行者。
(2)温湿度传感器和空气质量传感器是采集数据的直接单元。
(3)加热片是受控单元,单片机利用温湿度传感器采集的数据进行PID计算后,通过PWM进行调控,以达到温度控制的目的。
(4)风机是当接收到控制指令或空气质量超过阈值时对调试环境内部空气进行排出。
(5)ESP12S是系统联网连接OneNET云平台和小程序上位机的WiFi模块。
(6)2.8寸液晶显示屏用于实时显示当前传感器采集到的数据信息以及PID算法当前的参数。
(7)音乐播放器是蓝牙音频播放器,设有电池供电,可单独使用。
软件主体设计:主要是温湿度采集、空气质量采集、PID算法计算、液晶显示、离线语音控制指令接收处理、云平台数据更新和命令下发接收处理等,通过按键可以控制设备温度设定值的改变,亦可通过微信小程序上位机按键进行改变,然后通过PID算法计算出控制量及时对内部温度进行调控。另外,可通过语音指令的形式控制灯光、风机、音乐播放器等进行控制。
本次设计是基于RT-Thread物联网实时操作系统完成的,RT-Thread是一款具有完全的自主知识产权且主要由中国开源社区主导开发的开源实时操作系统,是一个轻量级的操作系统,具有不少的优势,本设计中各功能的设计正是应用了其多线程及其调度的能力。
详细软件设计流程如附录A所示。分别设有离线语音线程、OneNET线程、按键线程、温湿度采集线程、PID算法线程、液晶显示线程、空气质量线程,各线程均代表不同的功能,因此线程名称均以功能来命名,其中各线程均根据不同要求分配不同的优先级、栈空间以及执行时间片。
本设计所选用的芯片型号是STM32H743VIT6,选择该型号的芯片作为主控的最主要原因是因为该型号的芯片属于高性能芯片,具有丰富的片内外设以及高能效的特点,完全符合课题应用要求,其部分功能简介如表1所示。其次就是该芯片在去年暑假期间就制作成为一款核心板,命名其为金牛座,于下文进行详细介绍。
表1 STM32H743VIT6功能参数
芯片结构 |
性能/功能 |
简介 |
内核CPU |
ARM Cortex M7 |
480MHz工作频率 |
存储 |
2MFLASH、1MRAM |
2048kB闪存 1024kB存储器空间 |
通信接口 |
6个SPI通道 1个QUADSPI通道 3个I2S通道 4个I2C通道 9个UART通道 等等 |
拥有强大的通信与信息传输能力 |
定时器 |
18 个16位定时器 2个32位定时器 2个电机控制定时器 5个低功耗定时器 1个高分辨率定时器 |
为系统提供精确时间 |
I/O端口 |
82个通用I/O端口 |
数据的输入输出 |
温湿度传感器是一种以测量物理量为目的,以一定精度转换为与之有确定关系的、容易分析处理的电量信号输出的装置。
方案一:DHT11温湿度传感器是单总线输出,测量精度为湿度正负百分之五,温度正负2摄氏度,分辨率百分之一。
方案二:AHT20温湿度传感器测量精度为湿度正负百分之二,正负零点三摄氏度;分辨率接近千分之一,接口为I2C。AHT20温湿度传感器如下图2.2所示。
图2.2 AHT20温湿度传感器
综上所述,AHT20温湿度传感器无论是性能还是精度都更加优越,因此AHT20更加适合作为本设计的温湿度传感器。
AHT20小体积高性能。传感器的输出是经过标定的数字信号,标准的I2C格式。同时它还增加了PTFE防水透气膜,大大提高了它在恶劣环境下的可靠性。该传感器广泛应用于消费电子、医疗、汽车、工业、气象等领域,可见其可靠性极高。虽然这种小体积的SMD封装焊接难度稍高,但是本设计电路板自行采用锡膏工艺可克服此难度。
空气质量传感器常用于监测空气中的污染物浓度情况,其主要监测空气中二氧化碳、总挥发性有机物、氢气等气体浓度,大量触目惊心的事实证明,室内空气污染已成为危害人类健康的“隐形杀手”[2]。为了提高本设计保障健康能力,提高整体可靠性性,考虑了如下方案:
方案一:当MQ-135空气质量传感器所处环境中存在污染气体时,其电导率随空气中污染程度的增加而增大,是一款适合多种应用的低成本传感器。气体敏感元件测试浓度范围为:10~1000ppm。
方案二: SGP30空气质量传感器,它采用的是Sensirion公司比较前言的CMOSens技术。包括数字I2C接口。主要应用于空调、空气净化器、智能家居等。输出量程:TVOC为0~60000ppb,CO2为400~60000ppm。
综上所述,MQ-135空气质量传感器相较于SGP30空气质量传感器,其价格便宜、功耗高、传感器体积大、性能差。从设计需求出发,SGP30空气质量传感器更适合应用于本设计,因此,最终选择SGP30空气质量传感器作为最终方案。
本设计实际应用场所是为密闭空间的汗蒸房内,因此风机的选择应该具备更换室内气体的作用。在综合考虑功能要求、安装条件、以及电气参数后选择采用如下图2.3所示的5V 鼓风机作为本设计的换气风机作为排放室内污染气体的硬件设备。
图2.3 5V鼓风机
在参数选择方面:选择的是尺寸75*30MM,额定电压DC 5V,输入电流0.3A,双滚珠轴承、转速2614±10%RPM、静音款的鼓风机。使用该款鼓风机能够轻松将调试环境内部有害其他排出,且静音效果好,有效增加用户的舒适性。
液晶显示屏,属于平面显示器的一种,显示两片极化材料之间使用了液体水晶溶液。本设计主要用该模块来显示传感器采集到的数据,另外在开发板上已经设有多个按键,因此无需选用触摸型的液晶显示器[3]。为此,有以下两个方案:
方案一:OLED显示模块,优点:价格低,体积小,使用简单。缺点:不能多种颜色进行显示,显示字符较小;接口为I2C接口。
方案二:2.8寸集成串口屏,优点:内置字库字符集、RGB彩色显示、串口连接使用便捷、价格适中。缺点:驱动是以命令的形式进行的,每次执行均需要响应时间,显示刷新率较低。
OLED显示字体过小,而2.8寸集成串口屏虽然刷新率较低,但是显示效果整体不错,综合考虑显示效果以及性价比后,最终选用2.8寸集成串口屏作为本设计的液晶显示模块。
方案一:AP6181WiFi模块,该模块使用SDIO接口进行通信,传输速率可达2MB/S。
符合802.11 b/g/n标准,在802.11 n草案中单流传输速率可达72.2Mbps,802.11g中规定为54Mbps,IE为11Mbps。优点:传输速率快、安全性高、兼容性强;缺点:需要自行设计天线及其外围元器件,增加PCB绘制难度。
方案二:ESP12SWiFi模块,改模块使用串口接口进行通信,通信速率最高可达4Mbps。优点:支持AT指令使用便捷、性价比高、内置Flash空间,支持802.11 b/g/n协议,完整的TCP/IP协议栈,具有板载天线。
以性价比而言,ESP12SWiFi模块使更胜一筹的。在价格差不多的情况下,ESP12SWiFi模块的使用时更加便捷的,首先是AT指令的使用,再者就是具有板载的天线,可降低PCB设计的难度。因此,选用方案二中的ESP12SWiFi模块。
本章主要介绍了本设计的硬件框图、软件设计思路以及主要器件的选用,从整体上阐明了设计过程当中的思路,主要体现了设计过程当中的一些思考以及理论依据。在此为下文阐述做了一个铺垫,为本课题的相关功能与任务设计搭建项目框架,第3章将提供本设计的详细硬件设计。
核心板设计是去年暑假期间所制作的一块以STM32H743VIT6为主控的核心板,并为其命名为金牛座(Taurus)。核心板的系统框图如下图3.1所示
图3.1 金牛座-核心板系统框图
电源是由Micro USB插座输入5V后经LM1117-3.3稳压至3.3V,电源供电是单片机系统不可或缺重要的一部分。晶振、复位、电源电路原理图如图3.2所示:
图3.2 晶振、复位、电源电路原理图
程序下载调试电路(ST-Link)和LED指示灯。ST-Link的是设计是考虑到开发核心板方便后期做项目时可以仅仅通过一条USB数据线的连接就能够实现程序的下载以及串口输出打印而设计的。
图3.3 ST-Link原理图
板载ST-Link如图3.3所示。由于最新固件的大小STM32F103CT6已经无法满足,因此本核心板的板载ST-Link核心采用的是STM32F103C8T6,并设有蓝色下载指示灯,当程序正常下载通讯时可观察到蓝色指示灯闪烁。
核心板整体原理图参考附录B,核心板PCB图参考附录C。
外壳设计:前文提到,根据设备调试环境的设想,汗蒸房温度调控应在密闭空间下进行的,因此以核心板螺丝孔为依据,在立创EDA专业版上绘制了简单的外壳3D图如图3.4所示。
图3.4 外壳3D图
在材料选择方面,采用8111X SLA光敏树脂,这种材料初始状态为液体,成型以后具有硬度好、收缩极小、表面光正整平滑等特点,符合项目调试环境搭建的需求。外壳3D预览图如图3.5所示。
图3.5 外壳3D预览图
正方形镂空部分为驱动板凸起元器件预留安装空间,侧面圆形镂空为5V鼓风机预留安装位置,另外一面为预留亚克力挡板插入槽预留。至此,3D外壳设计已经完成,亚克力板作为最后的封闭,确保能观察内部的同时也能为内部提供封闭的空间。
驱动板内设有两路继电器控制电路,分别控制加热片和排气风机。另设有温湿度传感器电路、空气质量传感器电路、音乐播放控制预留电路、LED驱动电路、LDO稳压电路以及与核心板连接的预留接口排针。驱动板原理图及PCB图参考附录D。
继电器控制电路,原理是以一个IO口作控制信号输入,以S8050及其电阻组成的开关电路导通与否来控制继电器的闭合和断开。继电器采用单刀双掷型,常闭和常开输出端口均设有不同颜色的指示灯作继电器状态的指示作用。当继电器不导通时,红色指示灯亮,负载不工作;反之,绿色指示灯亮,负载工作。继电器控制电路如图3.6所示。
图3.6 继电器电路
温湿度传感器电路外围电路十分简单,仅需在AHT20芯片电源输入脚接RC滤波,在I2C通信引脚做电阻上拉即可完成其外围设计。温湿度传感器外围电路如图3.7所示。
图3.7 温湿度传感器外围电路
空气质量传感器采用的是SGP30模块,由于没有购买到芯片因此采用的是集成模块,而该模块内部已经做了稳压以及上拉,因此不再叙述。
该部分设计是附加音乐休闲功能而设计的,目的模拟在现实汗蒸过程中可以播放优美动人的音乐来缓解一天疲惫的心灵。在中医理论上,源于音乐与阴阳协调统一、五音与五脏的互通互感,七情与五脏的互通互用,对人体的气血经络疏通,具有驱病延年,预防保健、调理亚健康的作用[4]。
下面对音乐播放板的电路原理进行介绍,音频接收采用的是MH-M18蓝牙音频接收模块,MH-M18蓝牙音频接收模块如图3.8所示。
图3.8 MH-M18蓝牙音频接收模块
模块采用半孔工艺,可直接贴片焊接于电路板上。其引脚功能如表2所示:
表2 MH-M18蓝牙音频接收模块引脚功能表
编号 |
引脚 |
说明 |
1 |
KEY |
按键控制端(4个按键功能,需要另外加电阻) |
2 |
MUTE |
静音控制端(静音时输出高电平3.3V,播放时输出低电平0V) |
3 |
VCC |
电源正极5V(锂电池3.7V供电需要短路二极管) |
4 |
GND |
电源负极 |
5 |
L |
左声道输出 |
6 |
R |
右声道输出 |
根据使用手册绘制原理图如图3.9所示。
图3.9 MH-M18外围原理图
在音频接收以后,首先进行的是采用的是NE5532AD8G前置放大,NE5532是一种高性能低噪声双运算放大器集成电路,与许多标准运放特性相似但具有更好的性能,广泛应用于音响设备电路中,是很多音响发烧友手中必备的运放之一[5]。
音频输入接电位器作用是调节输入音频信号的大小从而起到调节音量的作用;NE5532内部集成两个运算放大器,第一个以比例放大的形式连接,放大倍数是两倍;第二个是以电压跟随器的形式连接,起到了隔离直流信号的作用。
在前置放大输出端串联1UF的耦合电容后,音频信号输入到TPA3116功率放大器中,TPA3116是TI公司出品的一款高效的立体数字功率放大器芯片,集成了120兆欧姆MOSFET,可以提供高达7.5安培的输出电流,由于D类功放的高效率,该款放大器无需散热器即可输出出色的音频性能,该芯片输入级采用全差分输入,并且内置了故障保护电路,确保芯片的正常工作[6]。
电源输入方面设计了锂电池输入接口,除本设计使用外,平时也可作为独立蓝牙音箱使用。音乐播放板完整原理图和PCB图参考附录E。
本章介绍了本设计的外壳设计、核心板设计、驱动板设计和音乐播放板设计,阐述了整体硬件的原理及设计。硬件所包含的几个部分设计,看似是分开的,但是他们最终是需要安装成为一个整体的,因此在设计的同时,除了需要考虑他们之间的电气连接是否合理之外,还需要考虑结构上的可行性,就好比一个产品电路板是它的五脏六腑,外壳是它的身体,只有它们之间结合为一个整体才能成为一个产品。
回想整个设计的过程当中,也曾出现过纰漏,在驱动板打样回来时立即与外壳进行安装螺丝孔的核对,发现没有将3D外壳的壁厚考虑进PCB的板边距离的计算,导致无法安装进外壳内部,因此需要重新修改后再次打样。
其次,在见证着一个个独立的元器件最终被焊接成为电路板,再将电路板通电调试的整个过程确实能让自己的专业水平提升不少,在收获个人项目经验的同时也是收获了不少以前学不到的知识。
图4.1 主程序流程图
本设计的程序设计是基于RT-Thread Studio开发的,它具有易于使用的图形化配置系统和丰富的软件包及组件资源,支持简单、高效地开发物联网应用。本设计主程序流程图如图4.1所示,功能是将各个子功能进行初始化调用,各个子功能将在下文进行叙述。
int main(void)
{
IO_Init(); //IO初始化
Button_Inin(); //按键初始化
JC028_init(); //显示液晶初始化
Aht20_Inin(); //温湿度传感器初始化
SGP30_Inin(); //空气质量传感器初始化
PID_Inin(); //PID初始化
onenet_mqtt_init(); //MQTT初始化
rt_thread_mdelay(5000);
onenet_upload(); //云平台数据上传初始化
ASR01_init(); //语音模块初始化
return RT_EOK;
}
简要说明:GPIO部分是所有子功能中最简单的一部分,主要涉及的是本设计需要用到的通用型输出GPIO的初始化。
按键扫描线程流程图如图4.2所示。
图4.2 按键扫描线程流程图
每个按键的扫描都做了相应的软件消抖处理,在此不详细描述。当检测到按键按下时会对温度设定值进行改变,然后对温度设定值进行超限判断,目前在模拟调试环境下温度设定值得范围是30℃~45℃。
串口又称通用异步收发传输器,是异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输,是应用程序开发过程中使用频率最高的数据总线[7]。
硬件部分提到,液晶显示屏采用的是2.8寸集成串口液晶显示屏,因此该部分软件设计首先要做的就是对使用的串口外设进行初始化。根据RT-Thread开发手册,用户对串口设备进行初始化的流程应该是先查找设备,然后控制设备,再打开设备,最后创建线程。由此可知,在RT-Thread操作系统中是基于在应用层去对一个外设进行相应的控制的。
在初始化之后就是线程进入函数,其软件设计必须参考硬件所提供的手册进行。集成串口液晶显示屏用户手册上规定软件上电流程如图4.3所示。
图4.3 集成串口液晶显示屏上电流程图
同时还要注意上电等待1秒是模块正常工作的前提,因此该部分的通信不能过早进行。主机与从机之间的通信是以特定格式的命令进行的,否则从机无法执行,且每发送一次命令则需要软件延时一段时间来等待从机执行。简要线程入口函数代码如下所示。线程进入后首先执行的是发送设置波特率指令,随后软件延时1秒;然后发送清屏指令,软件延时100毫秒;其次发送设置横屏显示指令,软件延时30毫秒;最后循环执行的是刷新显示内容的代码。
static void JC028_thread_entry(void *parameter)
{
rt_device_write(lcd,0,"BPS(115200);\r\n",rt_strlen("BPS(115200);\r\n"));
rt_thread_mdelay(1000);//设置波特率115200
rt_device_write(lcd, 0, "CLR(0);\r\n", rt_strlen("CLR(0);\r\n"));
rt_thread_mdelay(100);//清屏
rt_device_write(lcd, 0, "DIR(1);\r\n", rt_strlen("DIR(1);\r\n"));
rt_thread_mdelay(30);//设置横屏显示
while (1)
{
...
//刷新显示内容代码
...
}
}
本设计所使用到的温湿度传感器AHT20和空气质量传感器SGP30都是以I2C就扣形式接入主控芯片的。
I2C总线是一种半双工、双线二线制同步串行总线。I2C总线传输数据时只需两根信号线,一根双向数据线SDA,另一根是双向时钟线SCL,它允许同时有多个主设备存在,每个连接到总线上的器件都有一个唯一的地址,主设备启动数据传输并产生时钟信号,从设备被主设备寻址,同一时刻只允许有一个主设备[8]。I2C总线传输协议结构如图4.4所示。
图4.4
I2C总线
I2C总线主要的数据传输格式如图4.5所示。
图4.5 I2C数据传输格式
根据RT-Thread开发手册,I2C设备使用的主要步骤如下:
(1)查找获取I2C设备句柄,并对传感器设备进行初始化。
(2)创建线程后利用相关函数对传感器的内部寄存器进行操作。
(3)将读取到的数据进行对应的转化,例如将温度十六进程的数据转化为十进制的数据等。
至此两种传感器的数据读取程序设计就完成了,由于所监测数据差异导致的代码会有所不同,在此就不展开叙述了。
图4.6 PID程序流程图
PID程序流程如图4.6所示。程序目的是将温度传感器采集回来的数据与所设定的温度目标进行算法运算,再利用计算结果对加热片进行控制,以达到接近目标温度。
PID温度控制比较的关键是设定物理量与被控物理量之间的差值,在本设计中即设定的目标温度值与当前温度值之间的差值,在工程应用中最广泛的控制就是比例、积分和微分三种,称为PID控制,其最大的特点是不需要了解被控对象的精确数学模型,依据被控变量与设定值得偏差及偏差的变化率进行参数调整,从而输出较为满意的系统控制效果[9]。
以本系统的温度控制来理解,利用温湿度传感器采集的温度数据反馈到算法当中,然后利用温度设定与实时温度值的计算出误差值,其次进行PID算法运算,最后通过PWM输出来控制加热片在控制周期内的工作时间,从而使被控环境内部温度值保持在设定值得附近。
位置式PID控制算法适用于不带积分元件的执行器,执行器的运动位置与输入信号呈现对应关系,控制器根据当前采集到的被控物理量与设定物理量之间的偏差计算出输出的变量,位置式PID控制算法的数学表达式如式4.1表示[10]:
其中,output为输出变量,e为被控物理量与设定物理量之间的偏差值,为比例系数,Ti为积分系数,Td为微分系数。
进一步地,令,位置式PID控制算法离散化数学表达式如式4.2表示:
(4.2)
得到上式,程序设计时就可以利用C语言将其实现出来。Output为PID计算的结果,利用这个结果去改变固定控制周期的PWM的占空比,就可以实现控制周期内对加热片进行控制,从而达到将内部温度保持在设定值附近的效果。利用C语言编写代码如下所示。
error = (Temp_Set*10 - Temp_Last*10); // 计算当前误差
(将温度值和设定值放大十倍去掉小数点)
sum_error += error; // 累计误差
d_error = (error - last_error) ; // 计算误差变化值
last_error = error; // 更新上一次误差
output = kp * error + ki * sum_error + kd * d_error;// 计算控制输出
下一步,结合单片机自身集成PWM发生器,即可实现陶瓷加热片的温度控制,提高了温度控制的稳定性。实际生活中的汗蒸房温度控制应为40℃-45℃左右有利于个人的身体健康,在本设计中为尽量模拟实际环境,但是考虑到小型加热片的有限功率,因此在本设计中设置的温度设定范围为30℃-45℃,初始值为30℃。这样可避免功能演示时需要长时间的加热等待。
MQTT客户端功能特点如下:
(1)断线自动重连:RT-Thread MQTT客户端实在网络状态不佳的情况下会自动进行重新连接,并自动重新订阅Topic,提高了连接的可靠性以及降低编程难度。
(2)非阻塞API:降低编程难度的同时提高了代码的运行效率,pipe适用于高并发数据量小的情况。
(3)事件回调机制:在建立连接、收到消息或者断开连接等事件发生时,可以执行自定义的回调函数。例如接收来自云平台的命令时,执行解析命令的回调函数就能轻易实现联网控制功能。
在RT-Thread中使用MQTT使用流程如下:
(1)设置代理信息:首先要设置好代理服务器的必要的信息。
(2)配置MQTT客户端结构体:配置断开通知消息、设置时间回调函数、配置连接参数、配置订阅表。
(3)启动MQTT客户端:在启动MQTT客户端之后,系统会根据事件的触发执行相应的回调函数对数据进行处理。
接下来就是在RT-Thread Settings里面对需要连接OneNET平台的各种信息进行填写,如设备ID、身份验证信息、API秘钥、产品ID、主/产品APIKEY等。在填写完成以后直接调用onenet_mqtt_init函数进行初始化,设备会自动连接OneNET平台。最后创建定期推送数据的线程即可实现实时更新云平台上的数据。设备串口终端输出显示如图4.8所示。
图4.8 串口终端输出显示图
离线语音采用的ASR-01模块,在本设计中,主要是通过UART接口与核心单片机进行连接,利用语音识别后发送不同的指令的形式实现语音人机交互功能。在RT-Thread中UART的使用前文已经介绍过了,在此不再重复,此处不同的是以中断接收的形式打开该UART设备。即当ASR-01识别到命令词后通过UART向核心单片机发送命令,当单片机收到消息后触发中断,进入中断回调函数对命令进行解析并执行相应的动作。ASR-01程序流程图如图4.9所示。
图4.9 ASR-01程序流程图
本章从软件设计的开发角度对主程序以及子功能程序进行了叙述,整体描述了各个子功能的实现过程以及本人在编写时的思路,本次的软件程序设计也是首次RT-Thread编程实战项目,在学习的过程也是参考了大量的资料手册,也深刻明白了技术水平是需要沉淀的。下个章节将开始安装调试工作。
本设计共设计了三块PCB,分别是核心板、驱动板以及音乐播放板。(PCB布局参考附录C-E)焊接方面多数采用的是锡膏工艺,在确保可靠性的同时,还能使整体更加干净美观,个别插件元器件在焊接后也进行了洗板。
硬件调试的首先对电源进行了仔细的检查,包括输入有无对地短路、电容有无焊接错误、开关有无焊反等。确认无误后,进行上电测试,其中核心板和驱动板的输入电源为DC5V,音乐播放板输入电源为DC12V。本设计的硬件测试主要用到了示波器、电压源和万用表等,相关的测试报告如表3所示。
表3 硬件调试报告
项目 名称 |
智能汗蒸房控制器的设计与实现 |
||||
测试地点 |
**** |
测试人员 |
*** |
测试日期 |
2023-03-25 |
测试项目 |
理论结果 |
实际结果 |
|||
电源 |
正常供电 |
LDO、电源电路工作正常 |
|||
板载ST-Link |
通信正常 |
下载程序、Shell命令正常 |
|||
ESP12S |
通信正常 |
AT指令、联网功能正常 |
|||
继电器电路 |
工作正常 |
开关状态、指示灯正常 |
|||
温湿度传感器 |
采集正常 |
温湿度数据采集正常 |
|||
空气质量传感器 |
采集正常 |
空气质量数据采集正常 |
|||
集成串口液晶显示屏 |
显示正常 |
RGB、字符显示正常无坏点 |
|||
离线语音模块 |
工作正常 |
词条识别、通信正常 |
|||
音乐播放 |
播放正常 |
蓝牙连接、音乐播放正常 |
相关硬件实物图参考附录F。
软件调试主要是针对软件子功能程序代码的验证过程,利用RT-Thread Studio开发软件的调试工具功能,以板载的ST-Link作为连接器,只需要在希望观察的地方打上断点,就可以便捷地在监察窗口观察变量值得变化。利用RT-Thread Studio调试截图如图5.1所示。
图5.1 RT-Thread Studio调试截图
除了上述的办法外,在 RT-Thread 中当需要调试验证某个程序的代码运行情况时,可以将该部分功能导出至FinSH 命令列表,再通过FinSH 命令执行。同时利用rt_kprintf函数将需要观察的变量打印至串口终端显示更加利用软件程序的调试。串口终端打印截图如图5.2所示。
图5.2 串口终端打印截图
进入软硬件联调阶段就代表设计阶段已基本完成,需要将整体硬件软件所涉及的功能进行联合调试,查缺补漏的一个环节。通过观察记录系统运行情况的形式对该设计进行整体的检查,以此来判断该设计整体是否达到要求:
(1)上电、传感器采集、液晶显示等功能测试:
测试情况:通过USB数据线接入USB接口供电,上电后电源指示灯亮起,离线语音模块播报欢迎语句,等待系统初始化完成后,可以观察到集成串口液晶显示屏刷新显示传感器数据及PID参数值。图5.3为上电实际图片。
图5.3 上电实际图片
通过上图可以看出,右下角电源指示灯正常亮起,液晶彩色显示正常,温湿度、空气质量等数据显示正常。
(2)PID调试:
由于系统的差异性,因此在调整参数的时候需要多思考多观察,及时将实际情况与对口诀的理解相结合,经过多次调试后选出一组较好的参数作为本设计PID参数。总的来说,符合功能要求的参数并不唯一,只有本着优中选优的态度才能选出最为适合该系统的参数。
测试情况:例举如图5.4所示,经过一段时间的自动调节后,设备调试环境内部温度始终保持在温度设定值附近,且系统运行稳定,误差不超过±0.5摄氏度,满足功能要求。因此,PID功能测试正常。
图5.4 PID实际运行图
(3)上位机小程序、OneNET云平台调试:
测试情况:定期向OneNET云平台上传温湿度传感器以及空气质量传感相关数据,上位机小程序定期获取相关数据并显示,时延不超过1秒。如图5.5所示。
图5.5 小程序、云平台调试图
小程序控制命令下发测试:小程序上六个按键分别对应六个命令,其中Temp_Set是控制温度设定值的命令。实现原理是小程序向云平台API接口发送命令,云平台再转发命令至单片机。云平台命令日志如图5.6所示。通过命令日志可以观察到小程序按键触发正常,命令下发正常,设备响应正常。多次测试,观察液晶显示温度设定值的变化,观察设备灯光、风机的联网控制响应能力均处于低时延响应。
图5.6 云平台命令日志图
(4)离线语音功能联合调试:
由于该离线语音模块的语音模型是天问官方编译器生成的,因此无需在此对识别度进行调试。仅需调试识别后与单片机进行通讯是否正常,单片机是否能准确根据识别的到的命令执行相应的功能。
测试情况:
语音词条 |
理论结果 |
实际结果 |
打开风机 |
正常 |
继电器闭合,风机转动 |
关闭风机 |
正常 |
继电器断开,风机停止 |
打开灯光 |
正常 |
灯光亮起 |
关闭灯光 |
正常 |
灯光熄灭 |
播放音乐 |
正常 |
音乐开始播放 |
停止播放 |
正常 |
音乐停止播放 |
下一首 |
正常 |
音乐切换下一首 |
上一首 |
正常 |
音乐切换上一首 |
根据上述测试情况,基本确定实现了该功能,且在较短的时延下执行,完成了预期的功能。该模块具有较大的拓展空间,比如增加词条以达到更多的控制功能,但是在本设计中不是技术核心,因此不再深入研究。
至此,主要功能已调试完毕,系统也进行了长时间的稳定性测试,暂未发现系统出现跑飞情况,可以判断该设计符合任务要求。
(1)关于PCB设计、安装:
存在问题:驱动板第一次打样回来时发现无法安装进外壳内。
解决思路:在拿到样板后立即与外壳进行核对孔位和安装,在还没有进行焊接前及时发现问题,发现问题是由于是第一次设计3D外壳,在考虑螺丝孔位置以及板边距离时没有仔细检查,没有把外壳璧厚计算进去。随后再次确认尺寸后重新发出打样。
(2)关于物联网实时操作系统:
存在问题:本次课设是第一次真正意义上的RT-Thread实时操作系统实战,之前都是基于开发板进行自学的,基础比较薄弱;
解决思路:RT-Thread是最简洁、优雅的开源操作系统之一,且是一款完全由国内开发团队开发维护的嵌入式实时操作系统。另外它还有开源社区、独立的第三方开放平台、云端一体化、丰富的组件软件包等等的优势,即使是刚刚接触也被激起了浓厚的兴趣。
(3)关于微信小程序上位机设计:
存在问题:对于微信小程序的设计十分陌生,之前也没有接触过,学校也没有开设这门课程;
解决思路:通过询问其他有这方面了解的同学得知,在B站上有相关的入门课程,上手难度也不高,可以试着跟着视频边学边做。通过几天的学习摸索,也是能够实现本次课设的基本要求,虽然界面制作得十分简单,但是基础功能都能实现出来。
本设计已完成任务书所有要求,增加了语音功能和音乐播放,整体调试情况较好,使得设计更加贴合现实需求。虽然目前汗蒸行业多数存在于营业性场所,但是相信在科技的不断进步下,不久就会成为智能家居的一部分。本设计对比市面上优秀产品可能还存在不少不足,但是在设计的方面也是预留了较多的拓展空间,日后可根据需求拓展更多的功能。
市面上,很多汗蒸房产品注重的是材料的构造,本设计注重的是将传统的汗蒸房加入现代化的元素。利用自身所学的知识将32位单片机的微控制、PID自动控温、语音识别、物联网控制、音乐娱乐等相结合,可实现集养生、休闲、智能、成本低于一身的汗蒸房,以更加便捷的操作方式,使汗蒸养生也能走进智能家居的一部分,通过技术为传统行业开拓新的发展方向。
本文从绪论、总体设计、硬件电路设计、软件程序设计等方面介绍了该汗蒸房控制器的设计与应用。本文首先系统地叙述了本设计的研究背景与发展现状,分析了对汗蒸的现代化需求,从而确立本设计的设计方向和具体功能需求。根据需求与现实条件的设想,综合考虑了用于模拟调试环境的外壳设计,用于实现具体功能的软硬件设计。不仅需要较好的知识积累,更需要严谨的意识和较强的自学能力。严谨的意识体现在小到元器件选型,达到外壳与硬件的结合是环环相扣的。自学能力体现在对于陌生的技术或是遇到困难时的解决,只有自己不断突破技术瓶颈才能更好地完成,更快地成长。
本设计不足的地方有:使用继电器电路作为开关控制具有较大的噪音,频繁的开关动作会使得继电器寿命缩短,为此可改为可控硅作为开关控制;目前的PID算法并没有加入参数自整定功能,为了能够增强系统对硬件的适应性和抗干扰能力,应加入自整定功能;上位机小程序过于简单,界面不够美观,目前仅实现了基本的功能并没有考虑整体美观,后续可进一步提升;音乐播放功能依赖于手机蓝牙,若升级为联网音乐将会更有产品价值。
图A1 软件设计流程图
图B1 核心板原理图
图C1 核心板PCB图
图D1 驱动板原理图
略
图D2 驱动板PCB图
图E1 音乐播放板原理图
图E2 音乐播放板PCB图.
图E1 实物图
演示视频:
2023-通信工程物联网毕设演示视频