设计与开发

开关电源单片机控制 51单片机 ESP8266模块 APP控制继电器,物联网DIY入门新手指南

小编 2025-08-09 设计与开发 23 0

51单片机 ESP8266模块 APP控制继电器,物联网DIY入门新手指南

题目

大家好,超子能力有限,技术不高,有什么错误的地方,欢迎批评指正。超子之前写过一篇STM32单片机配合ESP8266的WiFi模块接入阿里云生活物联网平台的DIY实验,有小伙伴问我51单片机能不能实现,答案是能。那么今天超子就给大家介绍下51单片机的实现方法。

程序设计中,我们使用的软件是Keil集成开发环境,C语言编写。如果大家想要程序源码的话,可以私信我,超子不是专业的程序员,水平不高,大家不嫌弃就行。

一说到51单片机的型号那就太多了,因为我们要使用MQTT协议对接阿里云生活物联网平台,所以对RAM空间要求比较多,一些常见的型号比如89C51,89C52,因为RAM空间太少不能用,所以我们本次DIY程序设计使用的单片机型号是STC12LE5A60S2。

ESP8266模块是通过串口AT指令控制的那种,网上有很多,价格也比较便宜,非常适合我们做DIY。

虽然我们前面使用STM32单片机做了第一个DIY设计,但是考虑到有些小伙伴,没有看过,所以超子还是说的详细一点,把每一个步骤再重新走一遍。

图1

首先进入我们自己的阿里云生活物联网平台,然后创建项目,我们就创建一个51单片机DIY项目吧,以后所有51单片机相关的DIY设计,我们都加入到这个项目内。

图2

项目建立完毕后,可以在项目列表中,看到51单片机DIY项目,旁边的第一个DIY设计项目,是上次STM32单片机DIY设计时建立的。然后我们点击51单片机DIY项目,进入项目管理界面。

图3

接下来,我们需要创建新产品。

图4

产品名称就叫51单片机插座,大家也可以起自己喜欢的名字。然后所属品类选择电工照明下的插座。节点类型选择设备,不接入网关,因为ESP8266可以连接WiFi路由器,直接具备接云的能力,所以是直连设备,不需要网关。连网方式一定要注意,虽然ESP8266是WiFi模块,但是不能选择WiFi连网,因为我们使用的是通用的,AT指令控制的ESP8266,没有在阿里云生活物联网平台认证,不兼容阿里云生活物联网平台APP的配网协议,如果我们选择WiFi方式的话,配网过不去,程序设计就无法进行了。所以我们取个巧,使用蜂窝连接方式,跳过阿里云生活物联网平台APP的配网,我们可以用ESP8266模块自己的APP配网或是直接把WiFi的SSID以及密码写在程序里。然后数据格式选择JSON,不适用ID2认证,最后点击完成就行了。

图5

产品建立完成后,我们要先进行第1步的功能定义的设置,我们选择的是电工照明分类下的插座,所以阿里云生活物联网平台自动帮我们添加了电源开关的功能属性。所以这一步我们不需要做什么额外的设置,直接点击下一步:设备调试。

图6

我们新建设备的时候,为了跳过配网协议,所以故意选择了蜂窝的连接方式,所以我们随便选一个通过认证的模组就行,选哪个型号都不会影响我们的DIY设计。

图7

选好模组后,我们点击新增测试设备,每个产品下可以添加最多50个免费的测试设备,我们做DIY程序设计,50个足够我们用了。

图8

新增测试设备时,我们要输入设备名称,就叫D001吧,超子喜欢用这种编号命名设备,大家可以根据喜好自己设置设备名称,然后点击确定就行。

图9

然后会弹出激活凭证,也就是三元组信息,这个是登录阿里云生活物联网平台的认证信息,稍后我们修改51单片机C语言程序时要用到这些重要信息。然后我们点击下一步:人机交互。

图10

和使用STM32单片机做DIY设计时一样,我们使用阿里云生活物联网平台的公版APP,也就是云智能APP。我们打开上图中红圈所示的开关。

图11

然后我们点击未设置,选择一个界面。

图12

自己喜欢哪个,选一个就行,然后点击确认。

图13

然后页面下方,我们要配置APP功能,同STM32单片机DIY时一样,我们主要设置多语言管理,填写品牌名称,设备名称,产品编号等等,大家根据喜好自己填一个就。最下方我们看到了天猫精灵,插座是天猫精灵支持的品类,所以可以直接绑定天猫精灵的账号,用天猫精灵控制开关,非常方便。然后我们点击下一步:批量投产。

图14

我们勾选上充分了解的对勾,然后点击开发完成,到此我们整个项目的配置就算完成了,就下来我们要修改51单片机的程序了。

图15

首先看esp8266.c源文件,wifi_mode变量用于设置使用哪种方式进行配网,大家根据注释自行选择就行,如果选择0的话,SSID和密码要在esp8266.h头文件中设置。

图16

然后我们需要修改mqtt.h头文件中的6个字符串,最麻烦的就是第3个,也就是MQTT协议中CONNECT报文中的包含的密码信息。我们一个一个来,讲一下怎么修改。

我们先看第6个需要修改的字符串,服务器的域名,格式如下所示:

*.iot-as-mqtt.cn-shanghai.aliyuncs.com

我们把*号替换成我们自己设备的ProductKey,这个ProductKey就是我们新建设备时弹出的3元组信息,图9所示,以我新建的设备作为例子,我们修改一下,最终结果如下:

a1jWDQfzbVB.iot-as-mqtt.cn-shanghai.aliyuncs.com

然后看第4和第5个字符串, 都是Topic主题,第4个set是用来接收控制开关命令推送的Topic,我们需要订阅它,第5个post是用来往服务器上传数据的,这次的实验post不是关键点。那么这两个Topic再那找呢?看下图。

图17

测试设备点击红圈圈中的查看。

图18

然后在Topic列表下,可以看到post和set,根据自己设备的实际内容,修改程序中第4和第5个字符串即可。

接下来看第1个字符串,也就是MQTT协议中CONNECT报文中包含的客户端ID信息,格式如下:

*|securemode=3,signmethod=hmacsha1|

其中*号是设备名称,以我的设备为例,修改一下,结果如下:

D001|securemode=3,signmethod=hmacsha1|

然后再看第2个字符串,也就是MQTT协议中CONNECT报文中包含的用户名信息,格式如下:

*&#

其中*号是设备名称 ,#号是ProductKey,都是图9中的三元组信息,就以我的设备为例,修改一下,结果如下:

D001&a1jWDQfzbVB

最后再看最麻烦的第3个字符串,也就是MQTT协议中CONNECT报文中包含的密码信息,需要经过一步加密,我们先要构建待加密的明文字符串,格式如下:

clientId*deviceName*productKey#

其中*号是设备名称 ,#号是ProductKey,以我的设备为例,修改一下,结果如下:

clientIdD001deviceNameD001productKey a1jWDQfzbVB

加密用的秘钥是图9中,三元组信息里的DeviceSecret,我们网上找一个加密算法的网站。

图19

我们复制待加密的字符串和密钥的时候,一定要多检查,不要多空格,不要多回车,错一点加密后的结果都不会正确的,所以大家一定要小心。加密后的结果就是第3个字符串的内容,到此6个需要修改的字符串我们都修改完毕了,重新编译程序,下载到开发板就行了。然后我们再回到阿里云生活物联网平台。

图20

我们进入第3步,人机交互设置页面,我们点击红圈所示的内容,然后弹出页面,需要我们填写设备名称,以我的为例,填上D001,然后就可以生成我们需要的,添加设备的二维码,因为文章中不能出现二维码,所以超子就不展示了。到此我们本次51单片机的DIY程序设计,基本就完成了。

大家如果有什么想做的,或者有什么想法,都可以评论区留言告诉超子哦~~~

想要程序的小伙伴,可以举手哦~~~

基于单片机的双电源自动切换开关控制器

武彦飞,童峥嵘,邢文华,王俊峰

(天津理工大学 计算机与通信工程学院,天津 300384)

摘要 :设计了一种以STC单片机为核心的双电源自动转换开关控制器,具有自动检测、诊断和控制的功能。系统电源出现故障时,短时间内能够自动从故障电源切换到备用电源供电。给出了该控制器的硬件及软件设计方案。该控制器切换时间短且抗干扰性强,具有较高的可靠性。

0引言

随着社会科技的发展与进步,生活水平的日益提高,人们对电的依赖性逐渐加强,电力系统的连续可靠性成为保障正常生活的重要指标。特别是一些重要用电场所(医院、机场、大型生产线、银行等),电力系统出现故障时,如果不能及时供电,将会带来巨大损失[1]。自动转换开关(Automatic Transfer Switching Equipment,ATSE)便是为了确保供电连续而设计的。ATSE 由开关主体和其他必需的电器组成,设有监测电源电路对电源进行故障检测,并且能够自动将一个或几个负载电路从一个电源转换至另一个电源[2]。1992年在上海金茂大厦的设计中我国首次引入ATSE,此后在我国的建筑工程等领域,这种开关装置得到了普遍应用[3]。国际电工委员会标准将ATSE分为CB级和PC级。CB级ATSE结构复杂、体积大、切换时间长且可靠性较差,故随着ATSE技术的不断进步,其应用领域逐渐缩小。PC级ATSE结构简单、体积小、切换时间短且安全可靠,近年来逐渐占据了ATSE的主流市场[4]。

本文设计了一种以STC单片机为控制核心的双电源自动转换开关控制器。系统设有常用与备用两个电源,正常情况下常用电源供电;设有电压检测模块对常用、备用电源电压进行实时监测;设有单片机控制模块对采集电压进行处理与判断,并根据判断结果发出相应控制命令;设有电机与电闸切换模块响应单片机的控制命令,快速进行电源切换动作。当系统判断常用电源出现故障(如欠压、过压、断相)时,各模块协同运作,自动切换到备用电源供电;当系统判断常用电源恢复正常时,再自动切换回常用电源供电。STC单片机具有体积小、数据处理速度快、抗干扰性强和功耗低的特点[3],保障该控制器的有效性。相较于传统的以单片机为基础的双电源自动转换开关控制器,为了提高本控制器的抗干扰能力,在电压检测电路中加入光电隔离电路和滤波电路,有效隔离环境、电磁场等因素的干扰;软件采用C语言及其内核函数编程,语法灵活;用内部逻辑关系代替实际的硬件连接,避免大量中间连线的干扰,保障该控制器的可靠性。

1系统总体设计

系统主要由电压检测模块(常用电检测和备用电检测)、电机模块、电闸模块、按键控制模块以及故障报警模块组成,结构框图如图1所示。电源模块在常用电源与备用电源之间选择一路为单片机供电[5];电压检测模块

对常用电源与备用电源各个相的电压进行检测,检测结果作为采样值送入单片机。单片机对接收到的信号进行处理与判断,当检测出常用电源有任意一相电压信号不正常时,单片机对继电器与电机发出控制命令,使电机反转,备用电闸闭合,控制面板上备用电源指示灯亮,备用电源供电;当检测出常用电源恢复正常后,单片机对继电器与电机发出控制命令,使电机正转,备用电闸断开,常用电闸闭合,从备用电源切换到常用电源供电,控制面板上常用电源指示灯亮。同时设计故障报警模块和按键控制模块,便于及时进行故障检修以及人工切换电源。

系统实现的主要功能如表1所示。状态1表示继电器控制电机,保持常用电闸闭合,系统使用常用电源。状态2表示继电器控制电机,使备用电闸闭合,系统使用备用电源,系统向外报警,常用电故障。状态3表示继电器控制电机,保持常用电闸闭合,系统使用常用电源,系统向外报警,备用电源故障。状态4表示系统不工作。

2硬件设计

2.1实时电压检测

电压检测电路对常用电源与备用电源输入的三相交流电压(NA、NB、NC)进行检测,系统采集三相电压值作为常用电源与备用电源正常的标志。当检测到其中任何一相电压不正常时,表明电源发生故障。通过STC204D2单片机A/D模块编程把所采集到的信号模拟量转换为数字量,判断常用电源是否供电正常,进而控制继电器,驱动电机切换电源。在电压信号检测电路中加入光电耦合电路和滤波电路,增强控制器硬件抗干扰能力。

STC204D2单片机内部A/D转换采用均方根算法,电压的公式可以表示为:

式中:U为模拟量转换为数字量的电压值;T为采样时间;uL(t)为采样电压瞬时值。

由于采集到的都是不连续的点,所以将公式离散后进行数字化。离散后的公式为:

式中:N为每个周期的采样点个数;uLj为第j个电压采样值。

常用电源火线NA作为电源部分为系统供电,如图2所示。经过变压器后输出12 V交流电,在R2与R3之间进行分压。变压器输出为正电压时,NA点为正常分压;变压器输出为负电压时,由于二极管D1的钳位电压作用,NA将固定在-0.7 V。最终将检测值输出到单片机A14口。系统采集NA的值作为常用电正常的标志之一。

对图2电路进行仿真,NA点输出波形如图3所示。输入为220 V 50 Hz交流电,测得NA点电压值约为1.94 V。

常用电火线NB与NC一同检测,如图4所示。NB信号经过R4、R5、R6分压,经过第一个光电耦合器U1输出,作为第二个光电耦合器U2的集电极输入。其中C4的作用是使第二个光电耦合器输入电压稳定,C5与R10的作用是将信号转变为高电平输出给单片机。NB与NC间存在相位差,同时有电时NBC处能够检测到直流信号,最终输出给单片机A13口。NBC电压作为常用电的标志之一。

对图4电路进行仿真,第一个光电耦合器输出NB点与NBC点的输出波形如图5。第一个光电耦合器导通,输出电压降低,为C4充电,两个光电耦合器依次导通,为NBC逐渐充到高电平的电压,输入为220 V 50 Hz交流电,仿真得到NBC点电压值约为4.3 V。检测时间为0.2 s。

2.2常用、备用电源切换的硬件实现

系统存在常用、备用两路电源,各由一个电闸控制。两个电闸间设计一个由电机控制的切换装置,电机正转时, 图6电机控制电闸示意图

常用电闸闭合,常用电源供电。电机反转时,备用电闸闭合,备用电源供电,如图6。

单片机通过cont0、cont1、cont2三个端口控制继电器J3、J1、J2,实现电机供电选择、电机旋转方向选择的功能[6],最终控制电机进行常用、备用电源切换,如图7。cont2驱动J2在常用电与备用电之间选择一路电为电机供电;cont0驱动J3控制电机的正转与反转。若J2直接同时接入常用电与备用电,则切换时电流较大,容易产生火花,比较危险,故设计cont1驱动J1控制备用电的接入,在J2接入备用电之前对备用电进行断开处理,仅当常用电不正常需要备用电时再去接通。

3软件设计

软件设计部分包括显示程序与控制程序。显示程序用来显示检测到的实时电压值,供人工查询;控制程序用来实现单片机对继电器与电机的控制,完成常用、备用电源之间的转换。图8为控制程序流程图。软件程序采用C语言及其内部特定的内核函数编写,提高了程序运行效率;采用“指令冗余”技术,多编写单字节指令,在双字节、三字节指令后面加两条单字节指令NOP,增强了控制器软件抗干扰能力[7]。

首先,对单片机以及继电器进行初始化设置。然后,对常用电源电压值进行判断。如果常用电源三相电压值均正常,则继续对备用电源输入电压值进行判断:备用电源正常,重新初始化进行新一轮判断;备用电源不正常,则备用报警,持续检测备用电源直至其正常为止。如果常用电源有任一相电压不正常,则常用报警,备用合闸,使备用电源供电,之后持续对常用电源进行检测直至其恢复正常,备用断闸,常用合闸,常用电源重新供电,初始化进行新一轮判断。

系统软件与硬件相结合,经过调试后,能够使单片机双电源自动切换开关控制器正常运行,完成电源切换的功能。

对控制器进行测试,测试内容如下:

测试条件:常用电正常,然后断路(NA、NB、NC全为0 V),备用电正常。

测试结果:常用报警,备用电合闸,由备用电供电,切换时间约1 s。

结果分析:在信号采集阶段,图4中NB、NC经两个光电耦合在NBC处得到稳定电压值约用时0.2 s,电闸动作0.8 s。

4结论

本文设计了一种以单片机为核心的双电源自动转换开关控制器,并对其硬件与软件设计进行了深入讨论。该控制器的电压检测模块能够实时检测常用、备用电源的供电状况;系统能够自动判断电源出现的各种故障(如断相、欠压、过压等),并快速进行电源切换;控制面板能够显示当前供电状态供人工查询。与此同时,系统信号采集采用均方根算法,保证了数据的精确性与可靠性;软件编程采用C语言,语法灵活、运行速度快、效率高;在系统的硬件与软件设计中均采取了抗干扰措施,显著提高了控制器的可靠性。

参考文献

[1] 王舜尧,姚建军,王汝文.一种多功能双电源转换智能控制器[J].低压电器,2002(4) : 2931.

[2] GB/T14048.112008.低压开关设备和控制设备[S].2008.

[3] 陈众励.ATSE应用中需关注的几个问题[J].电气应用,2006(5):155157.

[4] 康洪富,张兴波.基于STC系列单片机的智能温度控制器设计[J].电子技术应用,2013,39(5):8688.

[5] 赵荣康.智能型双电源开关控制器的设计 [J].微型机与应用,2010,29(15):2224.

[6] 苏和,时述有.SSR控制的电动机正反转电路设计[J].电子技术应用,2009,35(12):6566.

[7] 杨开宇,柯慧,高印寒,等.智能压装力单片机测控系统的抗干扰设计[J].计算机测量与控制,2013,21(11):29262928.

相关问答

单片机开关电源 原理?

单片机开关电源是一种基于电磁感应原理的高效率电源,通过改变感应电动势实现电源输出电压的调节和稳定。它主要由交流输入端、整流电路、滤波电路、开关电路、...

单片机 程序:用一个 开关 按钮 控制 一个灯,按钮在上面灯恒亮(高...

sbitKEY=P1^0;//假设开关接IO1.0sbitLED=P1^1;//假设led接IO1.1voiddel...直接把电源接给单片机不太好,建议稍微改下电路那个可以用~~~...

单片机 自锁 开关 接法?

自锁开关一般用于电源处,一般电源并联滤波电容后直接串联紧锁开关,再串联到单片机的40引脚即可。自锁开关一般用于电源处,一般电源并联滤波电容后直接串联紧...

是否有用 单片机控制开关电源 改变输出电压的方法-ZOL问答

7条回答:【推荐答案】开关电源的电压,用51单片机来控制是无法实现的,当然,你可以通过AD转换来随意控制输出电压大小,但是这个电压驱动能力有限,不足以担当开关电...

单片机 自锁 开关 怎么和直流相连接?

你是想用自锁开关做单片机最小系统的电源开关吧?如果是的话,直流电源的负极和单片机最小系统的负极相连,正极接到自锁开关的常开触点A端,单片机最小系统的电...

单片机开关 元器件名称?

电源开关,复位开关,拨码开关等。7.MOS场效应管8.MES场效应管9.继电器:PELAY.LIB10.灯泡:LAMP11.运放:OPAMP12.数码管:DPY_7-SEG_DP(MI...

51 单片机开关 怎么找?

要找到51单片机的开关,首先需要确定你指的是什么类型的开关。51单片机通常有多个引脚,其中包括用于输入和输出的引脚。如果你想找到用于控制电源的开关,你可以...

单片机 如何 控制 直流12V 电源 的通断?

单片机可以通过控制继电器或晶体管开关,使其在需要的时候闭合或断开直流12V电源的通路。当单片机输出一个逻辑高电平信号时,通过继电器或晶体管,闭合电源通路...

如何设计一个以 单片机 为核心的继电器 控制 电路?

根据提问者的意思以单片机为核心控制继电器,不知提问者提出这个问题的真正目的是什么,若只是为了想要一块继电器板实现相应的功能,可以直接购买一块单片机继电...

单片机 驱动交流接触器的方法

[回答]在各种自动控制设备中,都存在一个低压的自动控制电路与高压电气电路的互相连接问题,一方面要使低压的电子电路的控制信号能够控制高压电气电路的执...

猜你喜欢