项目说明
楼宇照明在日常生活举足轻重,楼宇照明控制系统在一定程度上实现对能源的节约及便利管理者的使用和控制。本次设计以STM32F103C8T6为核心处理器,红外线传感器与光敏电阻传感器模块作为检测装置,用于检测光照强度及人员经过情况;继电器作为控制装置,通过继电器状态改变实现自动控制;ESP8266无线通信模块作为通信装置,实现远程通信功能,将相关数据上传至云平台,并且接收云平台下发控制命令。照明系统可通过传感器检测、单片机系统控制、终端控制三种方式进行,且终端可以对相关信息实现监控功能。传感器检测方面,在光照强度较弱的情况下,若检测到有人经过,自动开启灯光照明,并延时熄灭。
实物图:
一、绪论
1.1 研究背景
当今社会飞速发展,投入生产生活的能源与日俱增,为实现可持续发展,我国倡导绿色发展理念。每个建筑物中都有大量的照明工具,楼宇照明作为日常生活中必不可少的一部分,为我们的生活提供许多便利,然而在提供便利的同时,其消耗的能源也是巨大的。传统照明方式一般采取定时开关或人工手动开关灯光的方式,灯具彻夜保持工作状态依然会消耗大量能源,并且减少灯具的使用寿命。在恶劣天气下,若管理者疏忽,则业主照明需求无法及时满足,在浪费能源的同时也为管理者工作和业主使用带来不必要的麻烦。
1.2 研究意义
使用楼宇智能照明系统可以最大化实现灯光方面节能减排,利用最少的能源保证要求的照明水平。所以在控制时,只需要在每个照明回路的开关上安装一个节点控制器就可以了。这样既可以满足建筑物中各种照明需求,又能节约能源。
智能照明控制系统依据当前环境光照强度进行判断,在光照较弱的情况下,通过传感器检测人员经过情况进行自动开关灯控制,实现“人来灯亮,人走灯灭”最大限度减少能源消耗。另外在主控制器设置控制按钮,管理者可以通过按钮控制灯光亮灭;与此同时,管理者也可以通过网页实现对灯光照明情况的监控,并可以实现对每层楼灯光的控制,对于管理方面更为快捷高效。
1.4 研究内容
本次设计完成楼宇照明系统设计,能够实现灯光自动照明以及远程控制,该系统以STM32F103C8T6单片机为核心处理器,在光照情况较弱时,利用传感器检测是否由人员经过,从而实现对楼层照明灯光控制,以求实现照明系统的高效性及节省能源。无线通信模块可以实现对照明系统工作情况的远程检测和控制,方便管理者工作。
具体工作如下:
(1)使用继电器作为照明系统的控制开关,实现对照明系统的自动控制;
(2)当传感器检测到人员经过时,照明系统自动开启,并延时熄灭;
(3)利用光敏电阻判断环境光照情况,确定自动照明控制系统是否开启;
(4)管理者可在终端监控不同楼层小灯的亮灭情况;
(5)管理者可以在终端控制不同楼层小灯分别亮灭。
二、系统方案设计
本课题基于STM32微处理器平台,实现对楼宇照明系统进行不同楼层经过人员检测、自动控制以及远程监控与控制等功能。在系统设计中,实现微处理器系统电路、信息检测电路、远程通信电路、继电器控制电路、按键控制电路以及电源电路等系统硬件设计,并对检测人员、控制、监控等功能进行代码化编程,实现系统软件设计。包括以下几部分:
(1)微控制器:楼宇智能照明系统采用STM32F103C8T6作为控制核心;
(2)信息检测模块:使用光敏电阻传感器模块实现对光照强度阈值限制,并在低于阈值(即光照强度较弱)的情况下,使用红外线传感器作为对人员经过检测工具;
(3)自动控制模块:利用继电器作为自动控制开关,根据红外线传感器输入信号进行判断,控制继电器的吸合实现对灯光的自动控制;
(4)按键电路:单片机模拟主控制台,通过按键控制可以实现模拟主控制台手动开关灯功能;
(5)无线通信模块:使用esp8266作为无线通信模块,连接至云平台上传数据、下发命令实现对灯光远程控制以及监控功能。
整体设计框图如图所示:
2.1 微控制器方案选择
微控制器是该楼宇照明系统的控制核心,在设计中有两种方案选择,分别是STC89C52与STM32F103C8T6。
STC89C52单片机是一个低功耗芯片内置8KB闪存,可以存储程序代码,具有32个IO管脚,支持串口、定时器、计数器、中断等功能,具备2个16位定时器与6个中断源、2级优先级,具有双工串行通信接口。
STM32F103C8T6芯片是意法半导体有限公司出品的一款基于ARM Cortex -M内核的32位的微控制器,具有64kB的内存容量,包括多个UART、SPI、I2C接口以及USB2.0全速设备接口,16位或32位定时器、看门狗定时器等。工作电压为2.0~3.6V。本次设计中,对于中断数量需求较大,与STC89C52芯片相比,STM32F103C8T6性能好,处理速度快,外围功能丰富强大,对于系统需求更能满足,因此综上所述,选择STM32F103C8T6作为主控芯片。
2.2 信息检测模块方案选择
- 信息采集模块主要实现在光照较弱环境下检测人体并输入信号,进而控制继电器工作功能。
对于光照检测模块有两种方案,分别是光敏电阻传感器模块与GY30光照强度传感器模块。光敏电阻传感器模块可以通过电位器调节检测光线亮度阈值,GY30光照强度传感器可以检测相当精确的光照值。结合实际考虑以及用户需求,光敏电阻传感器模块更为方便在实际使用中由用户改变所需光照阈值,且此设计对光照精确度要求较小,光敏电阻传感器足够满足设计需求。结合以上分析,选择光敏电阻传感器作为光照检测模块。 - 对于检测是否有人通过有以下两种方案可供选择,分别是红外线传感器以及声音传感器。使用红外线传感器作为人体检测信息采集,对环境光线的适应能力强,产品体积小、使用简单、功耗小、响应快、精度高、性能稳定、可以长期稳定可靠工作,并且可以手动调节阈值,方便改变检测需求。HCSR501为常见用于检测人体的红外线传感器,且该传感器模块具备检测到人员离开后,输出电平延时改变功能,满足“人来灯亮,人走延时熄灭”设计理念。但考虑其最小检测范围为3米,在调试与展示过程中难以展示效果,使用红外避障传感器模拟该传感器完成设计。
- 声音传感器通过检测周围声音强度,但传统声控灯若声音强度设定值偏低,易造成一个楼层经过人,所有楼层灯全部亮;
2.3 WiFi模块选择
- Wifi通信电路有以下两种芯片进行选择,ESP8266芯片和ESP32芯片。
ESP8266芯片是一款集成MCU芯片,将内存、计数器、接口、驱动等整合在单一芯片上,单核处理,运行频率为80MHZ。ESP32芯片为双核处理,同时支持WiFi和蓝牙通信。
本次设计主要考虑实现远距离通信,并且相较于ESP32而言,ESP8266价格更便宜且上市时间长,在软件方面会得到更多的支持,在使用上会更加方便兼容,因此选择ESP8266芯片作为WiFi通信芯片使用。
2.4 终端显示
使用WiFi进行无线通信,对应终端显示选择如下:
利用云平台接收数据,实现对不同楼层小灯亮灭情况的监控,并通过云平台发送数据,实现控制灯的亮灭。云平台可以实现实时控制监测,考虑使用方便以及直观性,选择云平台进行照明情况的显示以及远程控制。
对于显示和控制页面分为APP和网页,APP需要下载软件且考虑手机端与电脑端是否兼容,而网页则可点击网址即可打开并进行相关操作。考虑使用便利性,选择网页作为页面。
2.5 WiFi无线通信实现方法
本次设计实现远程通信,将WiFi模块连接至路由器或热点进行联网,使用OneNET云平台建立产品,通过MQTT协议连接至云平台。将ESP8266与STM32F103C8T6串口2(PA2与PA3)建立串口通信,通过AT指令与MQTT数据包上传实现WiFi的无线通信。
相关连接建立需要云平台产品设备ID、鉴权信息、产品ID等信息。同时本次设计需要可视化视图用于显示不同楼层灯光照明情况并且实现对不同楼层灯光照明的控制,设计可视化视图包括按钮、文本等区域,设定相关命令以及返回值,实现数据的上传与下发。
三、系统硬件电路图设计
3.1 整体电路图设计
电路部分包括电源电路、预留电源与GND部分、稳压电路、上电指示灯、按键电路、串口调试电路、单片机最小系统、WiFi通信电路、继电器控制电路、传感器检测电路、LED控制电路。
3.2 主控制器设计
STM32F103C8T6最小系统由晶振电路、电源电路、时钟电路、启动配置电路、复位电路以及调试电路组成。
STM32F103C8T6最小系统主频72MHz,具有3.3V稳压芯片,最大可提供800mA电流,具备预留USB通讯功能、复位按键,具有BOOT选择端口,电源指示灯与功能指示灯,预留串口接口及32768Hz晶振。
设计中试穿PA2、PA3串口2进行无线串口通信,PA9、PA10串口1用于程序下载以及调试。功能指示灯连接至PC13用于无线连接成功提醒,以及在调试过程中作为现象指示灯。
3.3 电源电路设计
本次设计使用器件工作电压分别为5V以及3.3V,在电源电路选择上使用5V外部电源供电,搭配稳压模块AMS1117,使电压降至3.3V供模块使用。
3.4 红外线传感器电路设计
上文中已说明,由于HCSR501由于检测范围过大,无法进行演示,故使用红外避障传感器模拟该传感器,两者在检测结果均通过高低电平输出判断,且工作电压以及接口相同,在实际应用中可替换。
红外避障传感器作为人体检测信息采集,有两个红外管,分别是发送管和接收管,特点是对环境光线的适应能力强,干扰较小,便于安装等。红外避障传感器引脚上有VCC、GND、OUT三个引脚。其工作原理是红外光线发射管发射红外光线,红外光线接收管接收红外光线,当没有接收到返回的红外光线时,OUT引脚输出高电平,当接收到返回的红外光线时,OUT引脚输出低电平。当传感器模块检测到障碍物或者有物体靠近时,其模块的指示灯会亮起,同时OUT引脚会变低电平。因模块是非接触式传感器,所以具有响应快,精度高等特点。
基于连接的红外传感器检测器,向主控制器发送关于设备工作状态的信号,继而使继电器控制电路完成相应功能。
利用三个红外线传感器作为不同楼层人员经过情况检测,采集数据供系统判断,进行开关灯状态改变。
三个红外线传感器输出端口分别与PB0、PB1、PB3连接,将检测结果输入至单片机内,用于后续继电器闭合状态判断。
3.5 光敏电阻传感器电路设计
光敏电阻传感器指的是利用光敏元件将光信号转换为电信号的传感器,敏感波长在可见光波长附近,可以根据光线的明暗变化,输出电信号,再将电信号放大处理。
当光照强度超过阈值时,传感器输出低电平,而当光照强度低于阈值时,输出高电平。
本设计中,光敏电阻传感器用作对当前环境光照情况的判断,避免在楼宇当前光照条件满足业主正常使用时开启灯光,造成不必要的能源浪费。由于整个楼宇光照水平相近,在设计中仅使用一个光敏电阻传感器作为对整个楼宇的光照水平判断,节约IO口的使用,提高效率。
光敏电阻传感器分别接3.3V电源、GND以及PA9。
3.6 继电器控制电路设计
继电器是一种电控制器件,具有输入回路和输出回路之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。
使用继电器作为控制开关,LED灯作模拟楼道灯光。继电器为常开状态,当传感器检测人员经过或手动控制LED变为亮时,继电器闭合,LED变为亮;其余时刻继电器断开,LED为灭的状态。
每个继电器控制电路连接到主控制器,以接收关于设备状态的信息。如果从主机向从机发送任何信号,则根据接收到的数据执行相关操作。
继电器模块内部线圈分别与5V电源、GND、单片机输出端口相连。输出端的公用接口连接5V驱动电源,常开端口与LED电源端口连接。
3.7 无线通信电路设计
ESP8266专为移动设备,可穿戴电子产品和物联应用设计,可以通过AT指令配置,和单片机上的串口进行通信,利用WiFi进行数据传输。
设计中,利用AT指令连接手机热点,访问网址,实现WiFi模块与云平台的通信。
由于实际工作中,各灯光设备相距距离较远,无法通过WiFi分别对各个灯光设备实现通信。因此,STM32主控制器通过有线连接与灯光设备相连接,通过控制继电器,实现电流通断,在主控制器实现对各个灯光设备控制;再将STM32连接到云平台,云平台与主控制器进行通信,实现远程控制和监控功能。
云平台用于显示灯光的亮灭状态;也可以从云平台设备发送信号,以便可以远程控制它。该应用程序可以通过 MQTT协议与主控制器通信。
ESP8266的VCC引脚接3.3V工作电源,GND引脚接地,TX与RX分别与STM32的串口2的RX、TX连接,RST引脚与PA1连接,用于ESP8266每次工作初始化时复位。
3.8 按键控制电路
通过设置按键,控制继电器吸合和断开,实现对灯光亮灭的控制,模拟实现主控制器对灯光设备控制。
3.9 LED显示电路
使用三个5V供电的LED灯模拟楼道灯光,USB底座作为接口连接LED。LED电源输入端口连接至继电器的常开端口,当继电器吸合时,电路导通,LED亮。
四、系统软件设计
4.1 整体软件设计流程图
本次设计软件流程共分为三个部分,分别是WiFi通信部分,传感器部分,按键部分,三者均通过控制继电器状态实现对LED的控制。
设计分为上位机与下位机两部分,上位机实现数据的显示以及控制命令发送;下位机实现系统对LED的自动控制以及按键控制功能。
当硬件通电并连接热点后,连接至OneNET云平台产品,产品设可视化视图,并生成网页,用户可通过网页上按键控制下发命令,经程序解析后转换为对继电器状态的控制,实现控制功能;三个继电器状态打包为数据,每隔5s(OneNET最低刷新速率)上传至云平台,并在可视化视图文字显示部分展示。以上内容与光照强度及是否检测有人无关。
同时,光敏电阻传感器检测光照强度,当低于设定阈值时,若红外线传感器检测有人经过,控制继电器吸合,并持续至检测到无人后延时8s,实现“人来灯亮,人走延时熄灭”功能。
按键部分主要对输出至继电器端口的状态取反,实现主控制器控制功能,与光照强度及是否检测有人无关。
相关程序使用keil编写,flymcu烧录,使用C语言实现。
以下为整体软件设计流程图。
4.2 上位机通信设计
4.2.1 ESP8266初始化设计
ESP8266与单片机串口2进行串口通信。TX、RX分别与PA3、PA2连接用于串口通信,VCC接3.3V工作电压,GND接地,RST引脚接PA1用作复位功能。
ESP8266初始化,首先需要对串口2的PA2和PA3进行初始化设置,将PA1连接的RST引脚低电平复位,再将其设为高电平工作状态。接下来发送AT指令完成模式设置、DHCP功能打开,连接热点,与网址建立TCP连接等工作。
Station为客户端模式,即ESP8266可以连接至热点或路由器,然后通过其访问网络,发送或获取信息。
以下为ESP8266初始化程序流程图。
4.2.2 单片机与云平台通信设计
首先需完成ESP8266+STM32+OneNET云平台建立通信。通过OneNET云平台建立的产品ID、设备ID、鉴权信息,协议名等信息整合至MQTT数据包,使用AT+CIPSEND指令上传,建立连接。
关于数据上传云平台,需要将需上传数据整合为数组形式,集中发送。设定云平台数据源名称分别为LED1,LED2,LED3,当数据上传至云平台后,相应显示部分根据数据源数值显示对于内容,从而实现对数据的上传及显示,实现监控LED状态功能。
当数据返回值为1,即继电器状态为1,显示部分为灯x亮(x表示灯的序号);数据返回值为0,即继电器状态为0,显示部分为灯x灭。数据返回值设定在云平台可视化视图中创建。
关于命令下发程序,以控制LED1亮为例,命令内容为“LED1:1”,控制LED1灭命令内容为“LED1:0”。
命令下发通过可视化视图中的按键部分完成。
根据命令下发内容,首先判断平台是否返回数据,通过搜索IPD字头以及帧尾进行判断,若收到返回数据,返回数值为原数据,若为收到,返回值为空。获取平台返回数据后,搜索帧尾,若找到则将其中数字部分字符转换为数值形式,并判断命令中是否具有关键词LED1、LED2、LED3,若有,则匹配关键词至相应继电器状态中,实现对继电器的控制。
以下为数据下发流程图。
4.3 按键控制电路
按键控制设置中断方式为下降沿触发。读取输出至继电器的端口状态,当按下按键时,根据if条件语句判断,若端口输出为0,则继电器状态改为1;若输出为1,则继电器状态改为0,改变LED显示状态。
4.4 传感器检测电路设计
传感器检测电路主要包括光照强度检测电路以及红外线检测电路。
主要逻辑为当光照强度低于阈值,若红外线传感器检测到人,则继电器吸合,直至红外线传感器检测至人离开,延时8s,继电器断开。
光照强度低于阈值时,输出为1;高于阈值时,输出为0。使用while()函数,当光照强度低于阈值时才可以进行下一步程序。
继电器输入为1时,吸合,LED为亮,继电器输入为0时,断开,LED灭。
红外线传感器检测到人时输出为0,未检测到人时输出为1。使用中断函数,下降沿触发,检测到人中断开启,继电器状态变为1。使用while()函数,当检测到人员离开后方可进行下一步程序,即定时器开启,延时8s后继电器状态改为0。
设计中定时器用于模拟HCSR501模块延时改变电平功能,在实际使用中可删除定时器部分函数。
五、系统调试
5.1 ESP8266模块调试
将ESP8266模块与电脑连接,利用AT指令集查看该模块是否可以正常工作。由于设计采用MQTT协议,不能直接使用原始AT指令集直接连接至云平台产品,因此烧录MQTT固件库,但烧录后发现AT指令无法正常使用,查找相关资料后发现设计中原始固件库可以满足设计需求,因此烧录回原始固件库,并将ESP8266与STM32连接,利用编程语言实现对云平台产品的连接。
下图为AT指令调试结果,能够实现连接热点功能,手机端显示该连接设备。
5.2 云平台调试
5.2.1 准备工作
首先登入OneNET云平台,选择多协议接入中的MQTT协议,建立产品,并生成相关设备ID、鉴权信息、产品ID。以上信息在程序连接云平台以及建立数据源中需要用到[。
下图为创建的OneNET产品。
下图为设计的可视化视图,可以实现对不同楼层灯光的监控和控制。由于权限问题,按钮只能起控制作用,无法根据返回数值改变相应状态,因此设置显示文字用于显示LED状态。可视化视图可以发布,生成网址,手机端和电脑端点击网址即可进入控制页面。
依据上文中软件流程设计的连接云平台,实现STM32+ESP8266+OneNET平台连接,串口通信部分显示“连接成功”,云平台部分显示“在线”状态。
5.2.2 实现数据上传
设置显示部分数据源为AAAA,根据keil编程上传AAAA对于数据为2。文字部分显示内容返回值设定为,当返回数据为1时,显示内容为“1”,返回数据为其他时,显示内容为“2”。当前数据源值为2,因此显示部分为“2”。
实现这一功能时,由于对数据类型不熟悉,导致程序中数据类型错误,一直无法实现数据上传。查找相关资料后选择正确的数据类型,完成上传。
实现根据上传数据改变文字显示内容过程,由于最初数据源格式错误,未设定数据源格式,导致无法根据上传数据改变内容,查找相关资料,根据资料内容完成数据源格式创建,实现该功能。
5.3 红外线传感器模块调试
红外线传感器在检测到人后,指示灯亮,同时输出低电平,当为检测到人时输出为高电平。因此在设计中使用下降沿触发中断,当中断触发,串口输出“有人来”。
调试过程中以一个传感器为例,以下为调试现象。
5.4 光敏电阻传感器模块调试
因此,在调试该模块过程中,利用串口通信显示现象。首先对光照低于阈值时输出高电平进行调试,程序代码为输出低于阈值,单片机系统板PC13亮,此时光敏电阻传感器模块指示灯灭,且串口输出“光照弱”。现象如下图所示。
接下来将光照强度与红外线检测结合,当光照强度低于阈值时,判断是否有人经过,若有人经过,则输出“光照低于阈值 低于光照有人来”,此时模块现象为,光敏电阻传感器指示灯灭,红外线传感器指示灯亮,现象如下图所示。
5.5 整体调试
5.5.1 照明系统自动控制
起初使用delay延时函数实现延时功能,但在延时期间,其他指令无法响应,倘若另一红外传感器检测到人或云平台下发命令,单片机无法响应。因此使用定时器进行延时功能。
实际使用中,HCSR501红外热释电自带检测到人后延时改变输出电平功能,自带延时功能,且考虑STM32F103C8T6中定时器数量未必满足实际所需,综合以上,该延时功能仅在设计中为模拟红外热释电传感器使用,实际中可以去除。
下图为光照强度超过阈值,但红外线传感器检测到人,根据程序逻辑,此时LED应为灭的状态。现象如图。
下图为光照强度低于阈值,且红外线传感器检测到人,此时LED为亮。
5.5.2 按键实现灯光开关
下图可视化视图未下发命令,且光照强度超过阈值,此时LED为亮,状态由按键控制,且网页上对于LED2状态文字为“灯2亮”。
图5.16 按键控制LED状态
5.5.3 云平台控制灯光和监控
由于权限设置,该可视化视图中按钮仅能做命令下发功能,无法根据数据源返回数据改变相应状态。
可视化视图控制LED1按钮按下,对应继电器状态变为1,LED亮。此时光照强度超过阈值,因此该现象为云平台下发命令控制,且由图中可见,对应LED状态显示为“灯1亮”现象如下。
六、结 论
系统以STM32F103C8T6作为核心芯片,应用串口通信、中断、定时器等功能,利用WIFI进行无线通信,传感器进行检测,继电器实现自动开关功能,实现楼宇照明控制系统设计。
设计结合实际住宅、办公楼情况,以光照强度作为是否开启灯光标准,在低于设定光照强度阈值时,红外线传感器监测到人即开启灯光。同时设计在终端以及主控制器设置控制灯光按钮,对管理者而言更加方便,可以更好应对特殊情况。终端网页对于使用者而言更加方便,可以随时点击网址查看,网页上显示灯光的状态,实现监控功能。
设计内容从实际出发考虑,具备实用性,同时考虑节能环保,实现设计的基本功能,但设计内容仍存在不足,在节能性上可以对供电方式加以完善,例如太阳能供电。
附件:PCB截图实物图
希望你喜欢这个项目,并在构建过程中找到乐趣!如果你有任何问题或需要帮助,欢迎在评论区交流。
作者:Svan.
注意:本博文为不得在未经本人同意进行转载或者二次创作,违者必究!!!
博客主页:https://blog.csdn.net/weixin_51141489,需要源码或相关资料实物的友友请关注、点赞,私信吧!