APP下载

基于单片机的插座定时系统设计

2020-10-10朱俊涛郭莉莉张展李璇

机电信息 2020年27期

朱俊涛 郭莉莉 张展 李璇

摘要:针对传统插座功能简单、不能定时的问题,设计了一款基于STM32单片机的插座定时系统。该插座定时系统具有短路保护、远程控制等功能,通过搭建消息队列遥测传输(Message Queuing Telemetry Transport,MQTT)通信服务器,配合微信小程序实现了远程控制,也可通过实体按键实现插座的定时功能,最后将插座通电状态显示在OLED屏幕上。

关键词:定时插座;STM32;ESP8266;MQTT

1    系统总体描述

本系统以STM32F103C8T6为主控芯片,使用ESP8266模块连接MQTT服务器,实现插座系统和外界通信与控制。通过按键模块及OLED显示屏,实现通过按键和显示屏完成插座的定时设置。交流电控制部分使用继电器完成,采用降压模块连接220 V交流电源供电。直接使用STM32模块上的RTC晶振来定时。为使用时更灵活,MQTT通信部分使用自建服务器。系统结构框图如图1所示。

2    硬件设计

2.1    单片机主控模块

本设计使用的是STM32F103C8T6单片机。STM32F103系列单片机是ST公司使用ARM公司设计的Cortex-M3架构生产的32 bit单片机,其更接近计算机中的CPU,具有运行速度较快,稳定性强且价格较低等特点[1]。

2.2    电源模块

交流转直流电源模块采用SM-PLG06A-4 W型开关电源模块,该模块支持85~264 V交流输入,输出直流电压5 V、电流800 mA,最高输出功率4 W足以带动插座定时系统的全部组件。本设计在电源电路中添加了多级滤波电容,提高了电源的稳定性。在输入端火线处添加5 A/AC250 V的保险丝,作用是在电源模块出现问题时及时熔断保护电路。使用AMS1117稳压器,将5 V直流稳压至3.3 V直流并为单片机供电。

2.3    显示模块

显示模块使用0.96寸128×64点阵的OLED显示屏,SCL为IIC通信中的时钟管脚,而SDA则是IIC通信中的数据管脚。使用IIC通信协议,STM32仅需两根线就能控制其显示。

2.4    继电器模块

参考文献[2]设计了继电器驱动电路。STM32通过PB1引腳控制继电器,输出高电平时继电器导通,低电平时继电器断开,从而实现弱电控制强电。在继电器处并联的发光二极管可以起到显示继电器状态的作用[3],继电器接通则LED发光,反之LED熄灭。

2.5    Wi-Fi模块

插座定时系统是通过ESP8266 Wi-Fi模块输出高低电平给STM32,STM32收到高电平时接通继电器,反之继电器断开。

2.6    按键模块

使用4个独立按键与STM32单片机的IO口PA0~PA3相连,按键为低电平触发,当按下与单片机IO口相连的按键时该IO口将接地,即向单片机输入低电平信号。通过编程实现定时时间设定的功能。

按下一次按键K1则定时1 min,类似地按键K2是定时10 min,按键K3对应定时60 min,定时方式为累加。按键K4的作用是将定时时间清零。插座定时系统处于定时状态且定时时间不为0时将接通继电器。系统电路原理图如图2所示。

3    软件设计

3.1    服务器端搭建

Wi-Fi模块和小程序与服务器通信的方式采用了MQTT协议,它是客户端与服务器之间基于消息发布及订阅的传输协议。

本设计中服务器端安装的操作系统为CentOS7.6,为便于调试,在服务器安全组中放行全部端口。微信小程序连接MQTT服务器需要通过Web Socket协议。首先需要搭建Nginx环境,接着安装EMQ公司的MQTT软件。安装完成后设置Nginx代理MQTT的Web Socket的端口号8083,至此MQTT服务器搭建完成。

3.2    主程序设计

在STM32单片机中首先运行OLED显示屏和定时器的初始化,初始化完成后OLED屏幕会点亮。接着进入循环,先扫描独立按键,如果有按键按下则进行相应的操作,例如开启定时;接着判断ESP8266 Wi-Fi模块输出的电平,高电平接通继电器,低电平断开继电器。Wi-Fi模块输出的电平判断在按键扫描之后进行,因此通过按键定时且定时时间不为0时不能通过Wi-Fi模块关闭继电器,仅在按键定时时间为0时可通过Wi-Fi模块远程控制。OLED显示通电状态,若使用按键定时,还会显示定时时间,最后返回按键扫描循环。系统流程图如图3所示。

3.3    微信小程序设计

本系统中微信小程序的作用接近于一个MQTT的客户端,简化了收发消息的过程。正因如此,只需记下相应的消息模板和订阅的主题,即可使用任何能收发MQTT消息的程序实现定时插座远程控制,包括但不限于PC端、Android端、iOS端[4]。

3.4    Wi-Fi模块程序设计

ESP8266 Wi-Fi模块中运行的程序流程如下:在接通电源后先进行初始化。初始完成后扫描附近的Wi-Fi,在发现已存储的Wi-Fi后建立连接,如果未发现已存储的Wi-Fi,延时1 s后重复连接Wi-Fi的步骤。Wi-Fi连接完成后与MQTT服务器建立连接,如果连接失败,重复尝试,MQTT服务器连接成功后订阅MQTT主题。

4    整体调试

将插座定时系统接通电源,待Wi-Fi模块连接上Wi-Fi后开始调试。先按下K1,OLED屏幕显示定时1 min,继电器接通,负载LED灯点亮。1 min后继电器断开,负载LED灯熄灭。在微信小程序端点击接通电源按钮,负载LED灯点亮,小程序端的电源图标从空心变成实心。点击关闭电源按钮,负载LED灯熄灭,小程序端的电源图标从实心变成空心。在小程序端选择定时1 min,其效果同点击接通电源按钮,1 min后效果同点击关闭电源按钮。至此,系统整体调试成功。

设计的插座定时系统实物图如图4所示。

5    结语

本插座定时系统采用STM32F103C8T6,单片机通过编程控制继电器模块实现控制插座的供电。通过按键设置定时时间,也可通过微信小程序远程调整插座电源状态或设置定时时间,并用OLED屏幕显示插座电源状态和定时时间等信息。经过调试,插座定时系统运行正常,具有操作简单的特点。

[参考文献]

[1] MA M,HUANG B,WANG B,et al.Development of an energy-

efficient smart socket based on STM32F103[J]. Applied Sciences,2018,8(11):2276-2290.

[2] 林炳炎,廖华平,杨坚,等.基于智能插座的家居系统[J].微型机与应用,2014,33(22):27-29.

[3] 蒋宏杰.智能家居控制系统软硬件设计与实现[D].昆明:云南大学,2017.

[4] 顾新萍.基于微信小程序的智能家居控制系统设计与实现[D].青岛:青岛大学,2019.

收稿日期:2020-07-06

作者简介:朱俊涛(1997—),男,江苏苏州人,研究方向:信号处理、单片机技术。

通信作者:郭莉莉(1986—),女,江苏邳州人,博士研究生,讲师,研究方向:信号处理、协作通信。