基于 STM32 的智能插座设计

(整期优先)网络出版时间:2020-05-07
/ 4

基于 STM32 的智能插座设计

周德尚

(南京理工大学紫金学院 210046 )

摘要智能插座主要应用于智能家居的大平台中,不知道大家有没有羡慕一些发达国家拍摄的科幻电影的那种超智能,超人性化的大别墅以前或许只是想象,但智能插座的设计让梦想照进了现实,智能插座的成功研发和投入使用,完美的解决了千家万户用电隐患的问题,把火灾几率降到了最低。本文介绍了关于智能插座的软硬件设计开发,红外控制插座的闭合,红外控制插座定时功能,温度警报功能的实现原理。

关键词 stm32 红外线控制 定时开关

1 引言

华夏五千年,从前的我们很难想象现如今的社会会被一张“无形的大网”网住。这张网,网住了我们的吃的、喝的、用的、娱乐的等所有方面。有一种很有趣的现象,无论你是学生党,上班族,还是家里蹲,好像都会接触到两样东西。第一个就是用电插座;第二个就是容易让人上头的现代的一种用于高速计算的电子设备。两者相结合,在人类发达的智慧改造下,智能插座孕育而生。从起源来讲,它就是用那种电子设备做出来的插座。

智能插座主要应用于智能家居的大平台中,不知道大家有没有羡慕一些发达国家拍摄的科幻电影的那种超智能,超人性化的大别墅以前或许只是想象,但智能插座的设计让梦想照进了现实,智能插座的成功研发和投入使用,完美的解决了千家万户用电隐患的问题,把火灾几率降到了最低。本文介绍了关于智能插座的软硬件设计开发,红外控制插座的闭合,红外控制插座定时功能,温度警报功能的实现原理。

文章所运用的是STM32F103C8T6的单片机系统,负载一个红外控制接收器和遥控器,用于遥控器远程控制整个智能插座系统。一个1路5V版本兼容3.3V带光耦隔离的继电器模块,用于控制插座的开关。一个DS18B20的测温模块,一个高电平触发的有源蜂鸣器模块,两个模块可以实现负载电器运行出现高温时,实现高温报警的功能。

2 智能插座的目前处境以及发展现状

在互联网没有发展的时代,按照国际标准,传统的插座可以分为多种类型,其中既包括民用、工业用的插座,也包括防水、电源插座,还包括移动式、固定式等类型的插座。后来,物联网引领新时代,插座中开始接入电脑控制芯片,接入无线通讯传输协议芯片,智能插座由此诞生。

智能插座作为智能家居中举足轻重的角色,最早在1984年由某发达国家建造的世界史上第一栋智能建筑提出概念,该国家电子工业协会在四年后拟定了首个能够很适用各家各户住宅的电气设计标准;我国进入上世纪90年代末期后,有关标准也进行了制定。知名企业公司董事长宣布的“维也纳计划”,该方案在某些程度上很好的解决了中国数字生活家电的问题,为中国后来的智慧城市发展奠定了夯实的一步。21世纪初期的中国并不对智能家居这个新概念抱有多大希望,国内甚至在十年内都没人愿意去品尝这块大蛋糕。直到2014年,BroadLink公司的崛起,眼红了一大堆国内企业家。渐渐的,“米家”等其他称呼的涌现,让社会都开始感受智能生活带来的便捷。推动了中国往智能化现代,智慧城市的规划的大跨步!当前市场随着过多企业的加入,智能插座的开发与应用越来越广泛,就连叫法都五花八门:无线插座、智能接线板、WiFi插座等等不计其数。然后市场上的智能插座主要有如下几种:

定时智能插座。这种插座的主要优点在于能够很好的帮助用户节省一些不必要的用电,完美的实现低碳生活,节能。

遥控控制智能插座。该类型的插座系统组成中,肯定存在接收装置,无论是红外遥控,无线遥控还是声控,都能够帮助用户进行远程控制。

计量智能插座。这种插座可以满足客户随时想知道家用电器的用电消耗量,家用电器的正常额定功率,电压电流等数值,便于观察家电的用损情况。

综上所述,现如今的智能插座,多着重于控制方面,产品功能过于单一,不能够完美的适用于整个智能家居系统中来,我国对于智能插座的研究和设计还有待提高。

3 智能插座的设计理念

基于STM32的智能插座设计是基于单片机开发系统的一种硬件设计,主要实现的功能既要满足智能化设计,也应该能够简单的运用到智能家居的系统中,在选择的操作系统时,32的单片机可能很好的进行硬件的搭设,以及软件的烧写与仿真。附录A即为单片机的原理图。从命名的方式上来说,比如STM32F103C8T6。STM32,值得是产品系列是基于ARM的32位微控制器;F指的是产品类型,表示通用;103是增强型,与101的基本型、102的USB基本型和105或107的互联型有着明显区别。关于产品引脚数量的区分,共分为五种,分别是:T、C、R、V、Z,其中T对应了36个引脚数量,C对应了48个引脚数量,R对应了64个引脚数量,V对应了100个引脚数量,Z对应了144个引脚数量,每个系统自带的闪存存储器的容量由引脚数量后一位决定,在闪存存储器中,其有七种对应的容量,其中4对应16K字节的闪存存储器,6对应的是32K字节,8对应的是65K字节;B、C、D、E类指的是字节数为128、256、384、512的闪存存储器;最后两位对应一个是封装类型,另一个是温度范围。T类封装也就是LQFP类型的封装,温度范围在-40℃~80℃。所以整个系统的功能主要如下:

3.1 控制功能

5eb3a616d2b17_html_5e1b405a5cfc4ab4.png
外控制系统通常由两个部分组成,一个部分负责发送,另一个是用来接收。发送端是借助单片机,对准备发送的二进制信号编码进行调制,使其成为连续性的脉冲串信号,借助红外发射管,完成红外信号的发射。接收端完成对红外信号的接收后,还需要对信号进行进一步的方法和检测,并进行信号解调,调出遥控编码脉冲。通常情况下,其具有一定的干扰性。为了降低干扰因素,所采用的红外接收头一般为LS1838B,其能接受红外信号的频率为38kHz,周期约26μs,且星界比高,可靠性较强。能够在接收信号的同时对信号进行放大和整形,得到TTL 电平的编码信号,之后再将这些信号传送到单片机,经过单片机的解码,进而实现其控制功能。

整个原理中最少不了的就是关于红外系统的编码和解码过程,原理如下:

1) 二进制信号的调制

在二进制信号的调制过程中,二进制信号经过编码后,借助单片机来调制成有一定频率的剪短脉冲串,频率为38kHz,这一脉冲串相当于用二进制信号的编码与频率为38kHz 的脉冲信号相乘得到的结果,在经过调制后,用于红外发射二极管的信号发送。

红外的接收需要先进行解调,这一过程需要借助红外接收管完成。基本的工作过程表现如下:在接收到调制信号时输出高电平;没有接收到信号时输出的电平为低电平,为调制的逆向步骤。(图解调)

作为一体化集成的红外接收器件,LS0038可以直接性的输出经过调解之后的信号,包括高电平信号和低电平信号。

2)借助 PPM 编码方式进行红外遥控芯片的发射,按下发射器按键的同时能够发射出一组 108ms 的编码脉冲遥控编码脉冲的组成包括以下几个部分:第一个是前导码,第二个是16位的地址码,包括8位地址码及其反码,第三个是16为的操作码,包括8位操作码及其反码。在检验用户码的过程中,遥控器对设备的控制是一对一的过程,从而降低了不同设备之间在动作上发生互相干扰的现象。反码主要是用来检测编码的接收是否存在错误,提高系统的稳定性。前导码作为遥控码的起始,主要由两部分组成,一个是 9ms 的高电平,另一个是4. 5ms 的低电平,为数据的接收做准备,形成准备脉冲。二进制的“0”和“1”分别由脉宽为 0. 56ms 、周期为 1. 12ms 的组合、脉宽为 1. 68ms 、周期为 2. 24ms 的组合来表示。

单片机采用的是外部中断 INT0 管脚和红外接收头的信号线相连,以沿触发方式为中断方式。通过对中断的间隔时间科学计算,进而对前导码和二进制的“1”、“0”码进行区分,并提取8位操作码,在数码管上加以呈现。红外接收头输出的原始遥控数据信号与发射端相反,即如果发射端的原始信号为低电平,那么接收头的输出即为低电平。

代码实现。

函数名称:初始化红外控制系统

函数作用:函数的作用旨在初始化整个红外系统,并且在初始化的同时,能够使能PORTB时钟、使能TIM4时钟、初始化GPIO8端口。关于代码设计的步骤之中,最先开展的步骤是设置计数器的自动重装值,同时将最大溢出设定成10ms。其后开展的步骤是设置预分频器,将其参数设置为1M,设置计数间隔时间,设置时钟分割。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_SetBits(GPIOB,GPIO_Pin_8);

TIM_TimeBaseStructure.TIM_Period = 10000;

TIM_TimeBaseStructure.TIM_Prescaler =(72-1);

TIM_TimeBaseStructure.TIM_Clockpision = TIM_CKD_p1;

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

3.2 定时功能

32单片机的系统存在着多种定时器,具体可以分为以下几种:

最为主要的是通用定时器(TIMx)。该定时器以通用定时器的名称存在,就是由于其能够被广泛应用各种场合的优势,它能够符合16位自动装载计数器的构成,其中,驱动的主体是可编程预分频器。在各种场合之中,最为突出的应用为测量输入信号的脉冲长度与描绘输出波形。TIMx的主要功能也比较全面。

首先,是16自动装载计数器,能够形成上、下、上下方位的功能,顾名思义就是能够自己自动的装载我们想计数的功能;

其次,指的是一种16为可编程预分频器,这也是定时器的基本定义内容,其主要意义就在于能够实时修改;

最后,通用定时器具备输入捕获、单脉冲模式输出、PWM生成以及输出比较四个独立的通道;

以上就是通用定时器能够在系统中实现的功能。

通用定时器在软件设计是需求的结构体代码:

typedef struct

{

u8 Year; u8 Month;

u8 Day; u8 Hour;

u8 Minute; u8 Second;

}Time_struct;

3.3 报警功能

(1)系统采用的测温模块为DS18B20数字温度计。之所以选择这款DS18B20测温模块是因为考虑到在进行测温实验是需要多点能力,目的是为了能够是分布式温度在检测的过程中能够简单方便操作,便于系统实验的多次5eb3a616d2b17_html_52aaffd549a2c468.png
应用试行。再者就是DS18B20模块不需要衔接外部元件,可以直接采用数据线或者杜邦线连接开发板施行供电,在做小规模实验时,减少用电隐患。

上图所呈现的是DS18B20测温模块的引脚说明,引脚的简单设计也是我选择这款测温模块的原因之一。

(2)蜂鸣器作为单片机常用的一种模块,其主要功能是类似于音响,该模块的实质就是一种电子讯响器,其结构为一体化的结构。通常情况下,在电路之中,蜂鸣器是由字母表示为“H”或者“HA”。蜂鸣器的设计较为简便,利用代码便可以完成,也能够展现出多种音乐,其音调丰富多样。比如:流水声,国歌声等。通过笔者的了解,现阶段蜂鸣器共有两种,包括压电式蜂鸣器与电磁式蜂鸣器。关于蜂鸣器的简单介绍可分为以下几点:

应用场景。市场的蜂鸣器多用于我们操作的计算机系统中,在我们所打印的打印机、复印机里面也包含蜂鸣器模块,在一些类似于报警器和电话机等一些通电的那些产品中也有包含,其功能旨在作为发声器件。

结构原理。

其一,压电式蜂鸣器,其结构主要由包括压电蜂鸣片、共鸣箱、多谐振荡器以及阻抗匹配器四部分构成。该蜂鸣器工作的实质是,当电流电压输入信号被多谐振荡器感应到之后,会发生起振,并且输出1.5-2.5kHZ的音频信号供给阻抗匹配器接收,当阻抗接受到信号时,阻抗就会开始工作,推动压电蜂鸣片发声。这样的一个流程就构成了压电式蜂鸣器的整个工作系统。

另外一种电磁式蜂鸣器相对于另一种结构来说有着明显的不同。该蜂鸣器的本质是经过电源导通之后,会使得电磁线圈在振荡器所产生的音频信号电流中产生一定的变化,通过导电来产生磁场,在该结果的作用之下,使得线圈与磁铁通过作用力对振动膜片形成一种的影响,形成了一种很有周期规律的振动发声。电磁式蜂鸣器的整个发声原理多采用物理磁场的作用,是一种能够可以简单设计并实验的发声系统。

有源蜂鸣器与无源蜂鸣器。在区分有源和无缘时,最直观的感受就是个子不同。有源蜂鸣器的高度对比与无源蜂鸣器时,前者的高度较高一些。其次,有缘蜂鸣器在其针脚的地方并不存在电路板,而且该部分被黑胶所包裹,无缘蜂鸣器的针脚处与有源蜂鸣器存在不同,绿色的电路板更为明显。再者,测试的方式也可以选择万用表电阻档Rxl档进行。分别利用黑表笔与红表笔在蜂鸣器的“+”处连接,在另一弓脚进行多次接触,此时只有无源蜂鸣器会触发咔咔的声音,此时的电阻一般为8Ω或者16Ω。而有源蜂鸣器会发出持续性的声音,同时电阻会在100Ω以上。有源蜂鸣器与无源蜂鸣器在接触电源方面也存在不同,前者直接连接额定电源就能够持续的发出声音;而后者需要在连接音频输出电路后才能够发出声音,其原理就像电磁扬声器。

代码实现。

void BEEP_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_ResetBits(GPIOB,GPIO_Pin_7);

}

代码中首先完成了将初始化PB8作为输出口,且输出口使能。在代码中实现使能GPIOB端口时钟,设置蜂鸣器的播放速度为50MHZ。最终实现在整个智能插座系统中,由于插座口功率过载产生火灾之前,线路加热引起DS18B20检测温度失衡,触发蜂鸣器报警功能。

(3)代码实现

复位DS18B20之后,当系统需要验证测温模块是否存在时,就需要检测代码来实现并反馈给系统。

u8 retry=0;

DS18B20_IO_IN();//SET PA0 INPUT else retry=0;

while (DS18B20_DQ_IN&&retry<200) while (!DS18B20_DQ_IN&&retry<240)

{ retry++; delay_us(1); }; { retry++; delay_us(1); };

if(retry>=200)return 1; if(retry>=240)return 1; return 0;

4 总结

本文介绍了大体通过STM32研究设计的智能插座系统,得出了明显的效果,使得红外遥控插座的简单开关与定时开关、高温报警功能得以实现,在整个基于STM32的智能插座设计过程中,系统实现了红外遥控器控制插座的开关,遥控器可以设置定时时间以达到定时开关的功能,并且系统还保留了温度过载报警功能,嵌入的蜂鸣器和测温模块可以很好的实现报警功能。

由于在设计系统过程中,因为单片机的负载限制,所有的模块连接到单片机上会有电压不足的问题,接入过多的杜邦线会使系统显得杂乱不堪,为了结果杂乱、拖沓的问题,我将其他不是单片机自带的模块都嵌入在另一块板子上,这样既解决了电压负荷,又解决了杂乱的问题。

通过智能插座拓展物联网的未来,使得未来的发展向着智能化的方向转变,为未来世界创造一个科幻的目标,构造一个奇妙的未来。

参考文献

[1]林嘉,刘炳全,邱小群.基于单片机的智能插座设计[J].现代信息科技,2019,3(13):44-46.

[2]张醒.人工智能在智能插座中的运用[J].科技创新与应用,2019(33):167-168.

[3]张本裕,李昌奇.基于无线网络的智能插座设计[J].工业控制计算机,2019,32(09):133-134.

[4]张高境,刘馨雨,郑百灵,等.基于树莓派的智能家居系统[J].居舍,2019(25):178+22.