张启龙 陈湘萍
摘 要:为了改善传统台灯功能单一,与当前家电的智能化、人性化和低碳设计相悖的问题,设计了基于STM32实时操作系统的多功能智能台灯。本设计采用意法半导体的Cotex-M3核心微控制器STM32作为主控制器,通过硬件电路的构建以及相应软件程序的编写,实现智能台灯的自动亮灭、智能调光、纠正坐姿、打电话等功能,使得台灯更护眼,更节能,更加智能化。实验结果表明,所设计的智能台灯具有良好的实时性,稳定性强,满足设计要求。
关键词: 智能台灯;STM32;智能调光;纠正坐姿;打电话
文章编号: 2095-2163(2019)03-0151-06 中图分类号: TP273.5 文献标志码: A
0 引 言
随着全球变暖和能源危机的加剧,绿色节能的观念已经深入人心,追求节能产品也成为一种潮流[1]。因此,智能台灯的概念就这样应运而生。
但是,现有灯具不但功能单一,而且还严重浪费资源,因而难以满足人们的智能化生活需求;同时,近视眼人数逐年增加,究其原因就在于使用台灯方法不得当,不论太亮、或是太暗,视力都会受到一定影响[2-4]。若在台灯下长期驼背躬身学习或者工作,也可能会造成腰椎和颈椎疾病;目前市场上出现的各型灯具,大都价格昂贵,而且未能解决以上弊端。基于此,本设计选择STM32F103C8T6单片机作为主控芯片,利用红外传感模块、距离检测模块(Distance detection module)、环境光感知模块[5]、电话通讯模块、LED照明模块等外围设备随着外部光线的变化自动改变或熄灭光强度。而且,为了弥补传统台灯功能单一的缺点,本款台灯增加了智能护眼、坐姿提醒[6]和电话呼叫等功能。对此,本文拟展开如下研究论述。
1 硬件设计
1.1 系统结构设计[7-8]
本文以STM32F103C8T6单片机主控模块为核心,以红外传感检测模块、距离检测模块、环境光感知模块(Ambient light perception module)等外围设备构成的控制系统设计,该系统的整体框架结构如图1所示。
系统整体设计电路如图2所示。在图2中,红外传感模块用于检测台灯周围是否有人,实现人来灯亮、人离开灯熄灭功能;距离检测模块与报警模块协同,实现纠正坐姿功能;环境光感知模块用于检测外部光强,实现智能调光功能;故障按钮模块与通讯模块协同,实现拨打电话功能。
1.2 STM32F103C8T6单片机主控模块设计
控制模块选择单片机作为主控制模块。本文中选用了STM32F103C8T6单片机[9-12]。这是32位基于ARM的CortexTM-M3微控制器,其功能多样,不仅可以对传感器采集到的信息进行接收、甚至处理,还可以控制固化设备的功率。经过市场调研,同时结合本系统的设计要求,因而将其选为该系统的核心芯片。STM32F103C8T6单片机主控最小系统原理电路设计如图3所示。
1.3 红外传感模块设计[13-14]
本模块采用SD02型热释电人体红外传感器作为自动控制台灯亮灭模块,因为其具有高灵敏度,高可靠性特点。组成框图如图4所示。
1.4 距离检测模块设计
本模块采用超声波测距,且具有指向性强、抗干扰能力强等特点。其原理框图如图5所示。
1.5 环境光感知模块设计[15]
本模块采用光敏二极管感知。参考相关信息,探讨得到光敏电阻、光电二极管、光电晶体管的主要参数,详见表1。
1.6 蜂鸣器报警模块设计
本模块采用了型号为TMB12A05电磁式5 V一体耐高温有源蜂鸣器,且具有耐高温、环保等特点。该模块的输入电路设计如图6所示。
1.7 电话通讯模块设计[16-18]
本模块主要由GSM网络的SIM900A芯片进行控制。SIM900A是一款工业级双频GSM / GPRS模块,可实现SMS(SMS)、传真信息传输,甚至低功耗的语音。SIM900A工作频段双频GSM/GPRS90/1 800 MHz,配有1.8/3 V SIM卡,内嵌TCP/IP协议,支持TCP/UDP通信,支持FTP/HTTP服务。SIM900A的工作电压范围为3.3~4.8 V,瞬时电流高达2 A。因此,供电能力不应低于2 A,并且应在VBAT引脚附近使用不小于100 μF的鉭电容。SIM900A具有全功能UART,支持1 200~115 200 bps的通信速率(具有自动波特率检测功能),并支持AT命令集。本次研究模块的设计流程如图7所示。
1.8 LED灯照明模块设计
为了试验的方便,本模块采用3颗小的指示灯代替LED灯。本次设计模块的输入电路如图9所示。
2 软件设计
2.1 软件设计的思想
模块化设计思想,即先分后总的思想,具体操作办法是分别调试每个硬件模块,继而协调每个模块的程序的方法。软件设计结构如图9所示。
2.2 系统程序流程设计
台灯亮灭的控制时间是利用定时器来调控,触发信号则由单片机的IO口来发送控制。对于联网的控制采用SIM900A。软件采用STM32CubeMX[19-21]进行初始化,keil5进行软件的开发。系统总设计流程如图10所示。
2.3 STM32F103C8T6工作状态判断程序代码设计
STM32F103C8T6工作状态判断程序代码主函数设计可表述如下。
int main(void)
{
u16 ADC_Value;
char str1[]="ATE1\\r\\n";
char str2[]="AT+COLP=1\\r\\n";
char str3[]="ATD15761697691;\\r\\n";
u16 adcnum;
int bobao_delay;
int num=0;
int OFF_FLAG=0;
u16 count = 0;
u8 close_flag=0;
u8 open=0,close=0;
u8 key = 0;
u8 hongwai;
SystemInit();
delay_init();//延时函数初始化
Initial_UART1(115200);
ADC1_Init();
Key_Init();//按键初始化
TIM1_Init(); //light初始化
while(1)
{
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1) //人体红外,开关灯
{
ADC_RegularChannelConfig(ADC1,ADC_Channel_8,1,ADC_SampleTime_239Cycles5 )
ADC_SoftwareStartConvCmd(ADC1, ENABLE);//使能指定的ADC1的軟件转换启动功能
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
ADC_Value=ADC_GetConversionValue(ADC1);//返回最近一次ADC1规则组的转换结果
delay_ms(200); // 延时
TIM_SetCompare1(TIM1,ADC_Value);
}
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0)//灯灭
{
BEEP_OFF;
TIM_SetCompare1(TIM1,0);
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_12)==0)
{
UART1_Put_String(str1);
delay_ms(300);
UART1_Put_String(str2);
delay_ms(300);
UART1_Put_String(str3);
delay_ms(500);
delay_ms(500);
delay_ms(500);
delay_ms(500);
delay_ms(500);
delay_ms(500);
delay_ms(500);
delay_ms(500);
delay_ms(500);
TIM_SetCompare1(TIM1,1000);
delay_ms(500);
delay_ms(500);
delay_ms(500);
delay_ms(500);
delay_ms(500);
TIM_SetCompare1(TIM1,0);
}
}
}
}
3 系统工作过程及工作效果
3.1 系统工作过程
台灯通电后,每个模块都会初始化。为了防止台灯自动化控制功能出现故障,本设计为此量身定制了一个故障按钮模块。在台灯接通电源之后,随即按下故障按钮,假若台灯出现故障,则点亮的台灯就不能启用自动断电功能,这时台灯主人将会接到由台灯处自动拨打的电话提示,主人就可以给台灯断电,从而达到了节能环保的功效。对如上工作过程可描述为:首先,通电后,按下故障按钮,当人靠近台灯时,台灯就会点亮,而且还能根据周围环境的亮度来自动调节台灯灯光的亮度,这就可以保护人的眼睛,防止近视;其次,人坐在台灯前学习,假若离台灯太近,内置蜂鸣器就会报警,提醒人纠正坐姿,防止近视和防止人驼背;最后,当人起身离开台灯20 s后,台灯就自动断电,从而达到了节能设计目的。
3.2 系统工作效果
在通电状态下,电源指示灯处于低电平状态;程序开始运行。首先,当台灯感应到人的到来时,台灯自动点亮。当人离开时,台灯不会感知人体信号,经过20 s的延迟,台灯自动熄灭,达到节能的目的;其次,智能台灯可以根据当前周围环境, 自动调节出最适合的光照强度, 达到了保护视力的目的;此外在台灯旁边安装超声测距传感器, 当人体离台灯的距离过近时, 智能台灯触发语音提醒模块, 提醒学生调整距离, 矫正坐姿, 防止近视和颈椎病的发生;最后,按下故障按钮,假若台灯出现故障,则亮着的台灯就不能实现自动断电功能,这时台灯主人就会接到台灯打来的电话提示,主人就可以给台灯断电,从而达到了节能环保的功效。上述工作命令的实际效果图即如图11所示。
图11(a)为人来灯亮、人走灯灭效果图,图11(b)为环境光感知的灯光亮暗效果图,左图中光敏电阻裸露,右图中光敏电阻被严严实实地盖住;图11(c)为台灯自动控制系统出现故障,人走灯不灭,打电话提醒断电的效果图。
4 结束语
本设计以STM32F103C8T6单片机为核心制作了一款智能台灯。该台灯不仅具有自动照明功能,还具有人走20 s后自动断电功能;同时也可以根据房间光线,实现自动调光功能;当人坐在台灯前学习,假若离台灯太近,蜂鸣器报警模块就会报警,提醒人纠正坐姿,防止近视和人驼背;此外,还可以自动拨打主人电话,提醒所有者关闭电源功能,从而节能。经过室内环境条件下设计的物体实验测试,初步测试结果表明,智能台灯能够有效实现指令的准确识别,完全满足设计目的和要求。设计成本适中,可直接应用于智能家居和推广。
参考文献
[1]马国强,辛永田,连梦想,等. 一种智能台灯的设计与开发[J]. 物联网技术,2018,8(1):93-95.
[2]张红燕,谢俊秉,王平莲. 基于51单片机的儿童智能台灯的设计[J]. 电子制作, 2018(2):6-7,58.
[3]梁计锋,刘瑞妮,尤国强. 智能护眼台灯电路的设计[J]. 电子设计工程,2015,23(20):155-157.
[4]田军委,肖清林,张波,等. 智能护眼台灯设计[J]. 电子设计工程,2015,23(17):161-163.
[5]GUO Jiaxu,LONG Ling. The intelligent desk lamp designed for special populations[J]. Applied Mechanics and Materials, 2014, 571-572:980-984.
[6]黄金发,杨咸阳. 智能台灯设计[J]. 包装工程,2017(16):266.
[7]程安宁,王晋,尚相荣. 白光LED的PWM驱动方式分析[J]. 电子设计工程. 2010,18(2):109-111.
[8]宋斌,袁庆庆,杨娜. 基于STM32的智能台灯系统设計[J]. 电子测量技术,2017,40(6):67-71,75.
[9]YUAN Zhonghu, XU Manyang, QI Xiaoxuan. The bearing vibration signal collecting system based on STM32F103C8T6[J]. Advanced Materials Research, 2014, 971-973:1376-1379.
[10]傅智河,苗军林,范宜标,等. 基于STM32F103C8T6多功能健康测试腕表的设计与实现[J]. 赤峰学院学报(自然科学版),2016, 32(18):9-11.
[11]LIN Xueyan, CHEN Binwei. A research about acquisition and transmission of the water meter's image based on STM32[J]. Advanced Materials Research, 2014, 1037:187-190.
[12]王东,莫先. 基于 STM32和 HC-SR501智能家居的智能照明系统设计[J]. 重庆理工大学学报(自然科学),2016,30(6):135-142.
[13]郁有文,常健,程继红. 传感器原理及工程应用[M]. 4版. 西安:西安电子科技大学出版社, 2015.
[14]张洪润. 传感器技术大全[M]. 北京:北京航空航天大学出版社, 2007.
[15]尹俊,金三梅,李康,等. 基于光电传感器的智能灯控系统的设计[J]. 电子技术, 2011,38(10):45-46.
[16]李楠,张华卫. 基于单片机和SIM900A的智能家居控制系统研究[J]. 自动化与仪器仪表,2017(3):187-189.
[17]霍涛,贾振堂. 基于STM32和SIM900A的无线通信模块设计与实现[J]. 电子设计工程,2014,22(17):106-110,114.
[18]LI Min. The design of SMS alarm system on CORTEX M3 + SIM900A[C]//2016 International Conference on Robots & Intelligent System. Zhangjiajie, China: IEEE, 2016:436-439.
[19]罗瑶,魏忠义,朱磊,等. STM32CubeMX的高速USB通信模块设计[J]. 单片机与嵌入式系统应用,2017(9):46-48,54.
[20]杨红波,朱磊,张博,等. STM32的W5500以太网通信模块快速实现方法[J]. 单片机与嵌入式系统应用,2018,18(8):11-16.
[21]XU Pengcheng, LI Xiaobo. Combined embedded development method of MATLAB and STM32CubeMX[J]. Microcontrollers & Embedded Systems, 2016(10):14-16.