基于微信小程序的智能温控系统设计*
2024-01-02卢诗瑶蔡士东龙新宇安华凯郭一凡
卢诗瑶,蔡士东,龙新宇,安华凯,郭一凡
(大连民族大学信息与通信工程学院,辽宁 大连 116600)
0 引言
随着温控系统的智能化发展,如何使人们更加便捷快速的得到温控系统的各种数据和控制温控系统成为了当下市场的热门方向。目前市场现有的智能温控系统都需要下载指定的APP进行控制和操作,占用内存空间,而微信小程序具有无需下载、打开即用,内存占用量小的优势,是智能温控系统设计方案的更优选择。
1 总体设计方案
本文的设计智能温控系统基于MQTT协议栈接入阿里云物联网平台实现数据在整个系统的传输。本系统分为3个层次,即感知控制层、数据传输层和应用层。数据感知层使用ESP32物联网芯片、传感器模块和控制模块完成系统的数据采集、发送和外设控制工作;数据传输层使用阿里云物联网平台将数据感知层的数据转发到应用层;应用层使用微信小程序开发的手机终端应用,微信小程序具有无需安装等优势,使得用户方便地对温控设备进行监控和管理[1]。该系统的总体架构设计如图1所示。
图1 系统总体架构
2 感知控制层设计
2.1 功能介绍
感知控制层主要实现温度的采集、温度数据的上传、接收应用层的指令和控制外部设备。1) 数据采集:间隔3s定时读取温度传感器的数据。2) 数据上传:通过ESP32芯片自带的Wi-Fi功能将温度数据通过Wi-Fi无线网络上传到阿里云物联网平台的相应设备。3) 接收指令:指令是两个层之间的约定,包括预定温度加减、工作模式切换和风速调节,指令以JSON格式传输,在到达感知控制层时会将其解析为变量方便后续处理。4) 外设控制:根据收到的指令控制外部设备。如收到将空调模式转变为制热时,会将控制空调转变为制热模式。另外,感知控制层还会根据当前的温度实时控制空调的工作状态。
2.2 硬件电路设计
感知层硬件电路采用ESP32芯片作为主控,DS18B20作为温度传感器,三极管和继电器构成控制模块。ESP32是由乐鑫公司开发物联网芯片,集成2.4 GHz Wi-Fi和蓝牙双模的单芯片方案,它具有双核32位处理器、4MB FLASH、34个GPIO,拥有常用的接口,ESP32芯片是一款功能强大,能适用于各种应用场景的物联网芯片[2]。
ESP32核心板通过I2C总线和DS18B20温度传感器进行通信,只需向DS18B20发送一个指令就能读取到温度数据。在控制模块中我们使用小风扇来模拟风速,使用继电器开关来模拟空调的开关,使用红蓝两种LED灯珠来模拟空调的工作模式;其中模拟风速的电机使用L9110电机驱动芯片,使用该芯片是因为其具有较大的电流驱动能力和控制简单等优势;在模拟空调开关电路中,使用S8550 PNP型三极管驱动继电器工作。ESP32核心板电路如图2所示。
图2 ESP32核心板原理图
图3 硬件程序执行流程图
2.3 硬件程序设计
基于ESP32芯片的程序设计,我们使用Arduino-ESP32框架在PlatformIO平台上进行开发。在这里简单介绍一下Arduino和PlatformIO。Arduino是一款便捷灵活、方便上手的开源电子原型平台。包括硬件和软件。Arduino降低了嵌入式开发的门槛,提高了开发的效率。Arduino-ESP32是一个适用于ESP32系列芯片的Arduino Core库,能够使用Arduino来开发ESP32系列芯片。PlatformIO是一款面向嵌入式开发的专业协作平台,基本支持市面上的热门开发板,如:STM32、Atmelavr、Espressif等,它还有出色的调试、编译和依赖管理功能,在搭配上VSCode开发工具的语法提示,能带给开发者出色的开发体验和更高的开发效率。
在该硬件程序设计中,将整个程序分为几个模块:初始化模块、风扇控制模块、模式切换模块、屏幕显示模块、消息收发模块、数据读取模块、日志模块。其中除初始化模块函数外,其余函数均使用FreeRTOS任务方式运行,只需在初始化函数中注册任务函数后,所有任务将会循环不停的执行。
在初始化函数中会进行GPIO初始化、传感器初始化、Wi-Fi初始化、MQTT初始化、屏幕显示初始化、互斥锁初始化,最后注册FreeRTOS任务。因为各个任务都会争用全局变量,所有要设计互斥锁,来确保数据的完整和正确性。之后每个任务独立循环运行。
3 数据传输层设计
3.1 MQTT协议介绍
在本系统中,MQTT通讯协议是最主要的通讯协议,同时MQTT通讯协议也是物联网协议的重要部分。MQTT是一种轻量级基于代理的发布订阅的消息传输协议,其设计思想是简单、轻量、易于实现,适合在带宽、计算机和处理能力受限的环境下工作[3]。
基于TCP/IP提供网络通信的MQTT通讯协议和HTTP协议一样,都属于发布订阅消息模式,就是指发布者与订阅者不直接通过MQTT协议交互数据。MQTT协议支持根据QoS的标识定义发布服务的质量[4]。
发布者发布消息的流程根据网络状态和服务要求采取3种不同的消息传输质量等级,本文设计的温控系统向服务器发送消息时采用当QoS=0时的消息传输质量等级。当QoS=0时,服务器接收到发布者的PUBLISH消息,将PUBLISH消息发送给所有订阅此主题的订阅者。
3.2 阿里云物联网平台
在数据传输层中我们采用阿里云物联网平台作为数据转发节点。相当于应用部分和硬件部分的数据交互中间层,使应用层和感知控制层实现数据交互。
阿里云物联网平台是一个集成了设备管理、数据安全通信和消息订阅等能力的一体化平台。向下支持连接海量设备,采集设备数据上云;向上提供云端API,服务端可通过调用云端API将指令下发至设备端,实现远程控制。本方案选择阿里云物联网平台的原因是阿里云物联网平台支持多协议、多网络、多地域设备快速接入。
进入阿里云物联网平台的控制台创建产品,定义产品的物模型,添加设备后,可获得一个阿里云的三元组,之后自定义Topic。而后在云产品流转中创建规则,以便数据流转到其他设备中。将获得的阿里云三元组信息绑定到微信小程序和ESP32芯片,从而实现设备到微信小程序的数据双向流动。
4 应用层设计
应用层部分采用微信小程序技术,使用微信公众平台提供的微信开发者工具进行开发,通过MQTT协议和阿里云三元组信息接入阿里云物联网平台。
微信小程序与阿里云物联网平台基于MQTT通讯协议进行通信,在微信小程序上将用户的控制指令转发给阿里云物联网平台的过程中,微信小程序作为消息发布者,阿里云物联网平台作为消息订阅者,阿里云物联网平台在接收到微信小程序服务器授权允许的CONNACK确认消息后,发送SUBSCRIBE消息,指定Topic主题列表,即发送订阅请求;订阅成功后,微信小程序发送PUBLISH消息后,会将PUBLISH消息传递给所有订阅此主题的订阅者,即阿里云物联网平台。
通过MQTT通讯协议,微信小程序利用subscribe()函数从阿里云物联网平台获取感知控制层的数据,通过publish()函数将用户操作数据转发到阿里云物联网平台,再由阿里云物联网平台转发给感知控制层,由此实现硬件和软件部分的数据交互[5]。
5 结束语
本文主要研究基于微信小程序的智能温控系统,1) 使用阿里云物联网平台提供可靠强大的数据服务为整个系统的稳定运行提供了强有力支撑;2) 使用新一代的ESP芯片ESP32作为设备主控,其自带Wi-Fi、稳定且高性能和生态丰富的特点,更方便物联网应用的开发,让开发者更专注于业务;3) 使用微信小程序作为系统的客户端,其轻便快速而又无需安装的特点解决了手机中安装大量App的痛点。物联网技术在发展,我们应该采用更加前沿的技术,让物联网应用更加智能可靠。