智能饮水机嵌入式控制系统设计

2019-06-10 01:01宋慧文白国振仲梁维
软件导刊 2019年2期
关键词:嵌入式系统饮水机

宋慧文 白国振 仲梁维

摘 要:为改善传统饮水机功能过于单一且缺乏人机交互界面以及无法远程控制的缺点,设计了一款基于嵌入式技术的智能饮水机控制系统。以STM32为控制核心,在STM32上移植了FreeRTOS实时操作系统及STemWin图形界面系统,引入无线通讯模块对饮水机进行远程监控,利用水质检测模块和水量检测模块对饮水机水质和剩余水量进行监测,实现对饮水机工作状态的实时监控、饮水机的水质和剩余水量的监测以及远程控制。多次试验表明,该系统工作稳定,达到设计要求。

关键词:嵌入式系统;STM32;饮水机;STemWin

DOI:10. 11907/rjdk. 182695

中图分类号:TP319文献标识码:A文章编号:1672-7800(2019)002-0091-05

Abstract:In order to improve the disadvantages that the traditional water dispenser are too single and lack of man-machine interface and cant be controlled remotely, this paper designs an intelligent  water machine control system based on embedded technology, which takes STM32 as the control core, and FreeRTOS real-time operating system and STemwin graphics interface System are transplanted on the STM32. The wireless communication module is introduced to monitor and control the water dispenser remotely, and the water quality detection module and the water volume detection module are used to monitor water quality and residual water. It realizes the real-time monitoring of the working state of drinking dispenser, the monitoring of water quality and remaining water, and the remote control. It is proved by many experiments that the system works stably and its working effect is in full accord with the purpose of this paper.

Key Words:embedded system; STM32; water dispenser; STemWin

0 引言

隨着科技经济的不断进步,智能饮水机进入人们的生活。智能饮水机控制系统代表性方案有:文献[1]采用STC单片机、蓝牙、机身指示灯及按键实现无线监控与控制,文献[2]利用STM32单片机、WiFi模块、LCD液晶显示屏等实现了远程监控与控制,文献[3]利用STC单片机、LED模块、独立按键模块实现了无水断电和报警提醒。以上几种方案与传统的、功能单一的饮水机相比,加入了温度监控、模式选择、无水断电、LCD显示、报警提醒等一个或多个功能,极大丰富了饮水机功用,但依然存在缺乏良好的人机交互界面、无法对水质和剩余水量进行监测、无法远程监测与控制的问题。

本文以家用饮水机为例,设计了一套基于嵌入式的智能饮水机控制系统。系统以STM32单片机为控制核心,采用FreeRTOS实时操作系统及STemWin图形界面系统,并配备水质监测模块和无线通讯模块等,用户可通过本系统监测到饮水机的工作情况和水质水量情况,并可通过手机APP对饮水机进行远程监测和控制,具有操作便捷、稳定性好、健康节能的特点。

1 系统功能

本系统由STM32单片机、LED灯、继电器、水量传感器、水质检测系列传感器、LCD屏以及WiFi模块组成,饮水机具备状态显示、温度监控、水质水量监测、无水断电、加热控制、远程监控与控制等功能。

系统采用LCD触摸屏控制及智能手机APP控制两套模块,饮水机上配备的LCD触摸屏不仅可实时显示饮水机的工作状态、水温、剩余水量、饮用水的Tds(溶解性固体总量)值,还可通过触摸LCD屏控制加热,大大改善了体验感。饮水机上配备的WiFi模块与智能手机连接后,会将饮水机的状态信息(同LCD上显示的信息)实时发送给手机,用户打开特定的手机APP后即可观察到这些数据,也可通过APP控制饮水机的相关功能。功能描述如图1所示。

2 系统硬件设计

本设计硬件系统包括STM32单片机、WiFi模块、LCD触摸屏、温度传感器、继电器、PH传感器、Tds传感器、无水断电装置等元件,如图2所示。下面针对主体硬件进行说明。

2.1 STM32单片机

单片机是整个控制系统的核心,具有极其重要的作用。由于本设计采用了实时操作系统及图形界面系统,因此所选单片机必须具有存储容量大、性能强的特点。综合比较之下,本设计采用STM32F407单片机。STM32F407单片机由意法半导体开发,采用Cortex-M4 为内核的高性能 32 位微控制器,拥有1M的内部FLASH、192KB的内部SRAM以及丰富的内部外设[4],符合本设计对单片机的要求。

2.2 WiFi模块

WiFi模块负责把饮水机的状态信息发送给手机,并把手机发过来的信息传递给单片机。目前国内外WiFi芯片生产厂商很多,芯片性能越来越好。ESP8266是一款性价比较高的低功耗WiFi芯片[5],应用非常广泛,如智能机器人、无人机以及工业自动化控制等地方,在移动通信设备和物联网应用设计领域广泛使用。该模块具有UART异步通信串行接口,支持串口数据透明传输[6]。通过串口WiFi模块,可使智能设备联网,实现无线远程控制[7]。ESP8266的断电寄存器EEROOM有保持状态不变的功效,在突然掉电情况下可实时保留断电前的状态,再次上电时数值不变。 ESP8266收发数据稳定,只要波特率设置恰当就没有乱码问题,且传输波特率可达115200bps[8]。

2.3 触摸显示模块

触摸显示模块采用ATK的4.3'触摸屏,其分辨率为800×480,16位真彩显示,NT35510驱动,自带GRAM,无需外加驱动器,因而任何单片机都可轻易驱动。该屏为电容触摸屏,支持5点同时触摸,具有非常好的操控效果。该屏为TFTLCD,它与无源TN-LCD、STN-LCD的简单矩阵不同,在液晶显示屏的每个像素上都设置有一个薄膜晶体管(TFT),可有效克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,大大提高了图像质量[9]。具有亮度好、对比度高、层次感强、颜色鲜艳等特点,是目前主流的LCD显示器,广泛应用于各类电子产品中。STM32F4内部自带高度集成的 LCDTFT显示控制器。LCDTFT 显示控制器和 TFTLCD 显示屏之间通过 24 位的并行 RGB 数据线、同步时钟信号 CLK、行同步信号 HS、场同步信号 VS 以及数据使能信号DE连接[10]。TFTLCD驱动流程如图3所示。

2.4 温度检测模块及水质监测模块

DS18B20 是一种常用的数字化温度传感器,它支持“一线总线”接口,即与单片机接口仅需占用一个 I/O 端口,无须任何外部元件。可将环境温度信号直接转换为数字信号,以数字码方式串行输出,大大简化了传感器与微处理器的接口[11]。DS18B20具有体积小、接口方便、传输距离远等特点,内含寄生电源[12],测温范围为-55℃~125℃,分辨率可达0.0625℃[13],适用于测量精度要求不高场合,本设计采用此传感器。

TDS又称总溶解固体,它表明1L水中溶有多少毫克溶解性固体。TDS值越高表明水中含有的溶解物越多,对人的健康影响越大[14]。传统的饮水机控制系统无法检测桶装水水质情况,本设计采用EMD的TDS传感器,实现对饮用水质的检测。

2.5 PH值监测模块

PH值可反映水的酸度、净化程度、有机和金属稳定性等,本系统选用的270-WQ201PH传感器是一种相对耐用精度高的PH值检测器件[15]。

3 系统软件设计

3.1 操作系统和图形界面系统移植

STM32单片机需要完成采集、控制、通信、人机界面4个工作。由于数据的采集、控制、传输与人机界面的操作都具有较高的实时性要求,普通的前后台编程方式无法满足, 所以本系统运行一种嵌入式操作系统FreeRTOS。FreeRTOS是一个可裁剪的小型RTOS系统,其内核支持抢占式、合作式和时间片调度,只需占用4~9k空间,任务数量及优先级不限,支持开发者使用IAR、GCC 和 Keil 等编译器预编译,在超过30种架构的芯片上进行过移植[16]。由于本设计采用LCD触摸屏,因此需要一个合适的图形界面系统支撑。STemWin圖形库是SEGGER公司授权给ST在emWin的基础上开发的,使用ST芯片可免费使用STemWin,但不能用在其它芯片厂商的处理器上。利用配套的开发小工具可方便地设计出许多控件界面[17],它与单任务和多任务环境系统、专业计算机系统或任何商业RTOS兼容[18],适用于本设计所选的LCD触摸屏。在进行控制程序编写之前需要在STM32F407上移植好FreeRTOS和STemWin,移植顺序为先移植FreeRTOS再移植STemWin。

任务切换是FreeRTOS移植的关键点。FreeRTOS采用中断形式进行任务处理,需要修改STM32固件库中的默认中断服务函数名称,这样中断发生后会跳转到FreeRTOS代码里的中断服务函数,把SVC_Handler,PendSV_Handler,SysTick_Handler分别改为vPortSVHandler,xPortPendSVHandler,xPortSysTickHandler[19]。

STemWin移植关键点是:把FreeRTOS的系统节拍数改为1000,也就是1ms。由于使用了操作系统,因此需要对GUIconf.h中的GUI_OS(支持操作系统)和GUI_MAXTASK(可以调用的STemWin任务的最大数量)宏定义进行更改,分别改为1和5。

3.2 单片机软件设计

在进行控制系统应用层程序开发前,需要先完成各硬件模块的驱动程序开发,主要有LCD触摸屏驱动、WiFi模块驱动、温度传感器和水质传感器驱动等。在完成驱动程序开发之后需要进行应用层开发,先对各硬件模块及软件中间件初始化,随后利用FreeRTOS系统进行每个工作任务开发,包括温度检测任务、LCD显示及按键扫描任务、无线通信任务、水质检测任务及水量检测任务等,工作模式如图4所示。

(1)温度检测任务:读取DS18B20值并转化成温度值,随后把温度值传递给LCD显示。当水温达到100℃时会发送信号给加热控制任务,结束加热,流程如图5所示。

(2)水质与剩余水量检测任务:读取相关传感器的值并转化为水质水量参数,随后把参数传递给LCD进行显示。当水量不足时单片机会启动相应程序驱动继电器模块关闭加热功能,并在LCD屏上提示缺水。缺水信息会通过WiFi模块发送至手机APP,用户可在手机APP上看到缺水信息,流程如图6所示。

(3)LCD任务:该任务需要调用STemWin系统中的函数创建工作界面用于人机交互,并通过与其它任务通信得到饮水机各项工作数据并显示在LCD界面上,同时也可接收用户的相关命令并传递其它任务,如图7所示。

(4)无线通信任务:当手机端与WiFi模块建立连接后,该任务会与其它任务通信并把饮水机的工作数据发送给手机端,用户可以打开手机APP进行查看,也可通过手机APP对饮水机进行操作。由于采用的是WiFi通信,因此用户与饮水机之间可有一段距离,方便使用饮水机,如图8所示。

3.3 手机APP与人机交互界面设计

手机APP的作用是远程显示饮水机状态信息以及远程控制饮水机的加热功能,因此APP操作界面要有当前饮水机的工作状态、剩余水量、水质等板块,还要有控制饮水机工作模式的按键。采用STemWin设计的人机交互界面具备以上功能,如图9所示。

4 程序编写与系统测试

本系统采用keil5开发环境编写程序,并编译、链接生成STM32单片机运行的可执行文件。为保证可执行文件的成功烧录和调试,需要采用FlyMcu软件和ST-Link调试器。在程序编写之前要在ST官网上下载STM32F4的固件库、FreeRTOS系统与STemWin系统,为了模块化设计程序,需要建立分类文件夹,文件夹结构如图10所示。在以上准备工作完成后,需要进行系统移植及模块化设计程序。

在程序开发及烧录完成后进行大量的系统测试,同时把测试结果同仪器(如温度计)测试结果进行对比,对比显示该系统工作可靠、实时性好。人机交互界面显示效果如图11所示。

5 结语

智能饮水机控制系统以STM32单片机为控制核心,采用FreeRTOS实时操作系统及STemWin图形界面系统,并配备水质监测模块和无线通讯模块,实现对饮水机工作状态、水温、剩余水量及水质的本地和远程监控。与传统饮水机相比,本设计操控简便,系统工作稳定,达到设计目的。该智能饮水机方便了人们生活,具有一定的市场竞争力[20]。不足之处是无法预设加热温度,这将在后续研究中加以完善。

参考文献:

[1] 陈书辉,曹菁菁,曾绍坤,等. 基于蓝牙通信的智能饮水机设计[J]. 机电信息,2017 (15):130-131,133.

[2] 李伟,贺梓洹,梁洪源,等. 基于STM32的智能饮水机控制系统[J].福建电脑,2017 (11):108-109,125.

[3] 杨崇海. 基于单片机的智能饮水机系统[J]. 科技风,2017 (11):17-18.

[4] 意法半导体. STM32F4系列微控制器[J]. 世界电子元器件,2011 (11):23-24.

[5] 范兴隆. ESP8266在智能家居监控系统中的应用[J]. 单片机与嵌入式系统应用,2016 (9):52-56.

[6] 吴允强,吴由松. 基于ESP8266的智能家居控制系统设计[J]. 电子测试,2017(21):9-24.

[7] 屈良潘,唐曼玲,刘静,等. 基于ESP8266的LED灯无线远程控制设计[J]. 电子世界,2017(9):179-181.

[8] 周兴华. 用ARM驱动TFTLCD[J]. 无线电,2013 (11):65-67

[9] 杨志佳,陈小平. STM32F429的TFTLCD显示驱动方案的研究[J]. 单片机与嵌入式系统应用,2016(12):44-47.

[10] 李欢. 基于DS18B20的温控系统设计[J]. 信息与电脑,2016 (24):147-149.

[11] 顾剑,李彬. 基于DS 18 B20的多点测温监测系统设计[J]. 电子科技,2018(3):61-64.

[12] 陈晓雷. 基于DS18B20的数字温度计设计与实现[J]. 科技资讯,2017(8):117-119.

[13] 陈杰,李亚东. Arduino+micro:bit无线水质TDS检测仪[J]. 无线电,2018(2):26-28.

[14] 谢静. 小型水质监测硬件系统的研究与设计[J]. 数字技术与应用,2016(6):106-107.

[15] 何小庆. 谈谈 FreeRTOS及其授权方式[J]. 单片机与嵌入式系统应用,2015(10):3-4,15.

[16] 陶森林,李晖,苗中华,等. 基于STemWin图形库和SAE J1939 CAN通信协议的采棉机监控系统设计[J]. 工业控制计算机,2017(9):25-26.

[17] 叶铁英. 基于ARM和emWin的空调终端控制系统设计[J]. 中国科技投资,2014(A12):192-193

[18] 夏鑫,张果,王剑平,等. 实时操作系统 Free RTOS移植的实验研究[J]. 化工自动化及仪表,2016(7):720-724,767.

[19] 宋娟,曾實现,薛蕊. 饮水机的远程无线控制系统[J]. 科技通报,2014,30(7):164-165.

(责任编辑:杜能钢)

猜你喜欢
嵌入式系统饮水机
自制饮水机
嵌入式系统课程“中断、异常与事件”教学实践及启示
面向实践创新人才培养的嵌入式系统教学研究
选购饮水机要从功能入手