APP下载

基于STM32智能台灯设计

2018-11-14武汉晴川学院

电子世界 2018年20期
关键词:灯珠台灯原理图

武汉晴川学院 方 洁 蔡 璇

本设计采用ARM架构的STM32F103C8T6芯片与蓝牙模块实现了一个能够通过蓝牙控制并拥有65级亮度控制的智能台灯。通过蓝牙或者按钮进行控制,使台灯具有4种照明模式:普通照明模式,手动调节照明亮度;感知照明模式,台灯的亮度会根据环境光的亮度变化而变化;睡眠模式,台灯会根据时间变得越来越暗;用户自定义模式,用户通过预设定好的一些指令来控制台灯的照明行为,从而实现更加丰富的照明功能。

引言:台灯是我们日常生活中必不可少的一种照明工具,在智能家居流行的时代,台灯的功能应该不仅仅只局限于照明。我们也可以将台灯加入物联网中,提供更加便利的现代生活。本次智能台灯设计主要围绕蓝牙模块的实现,通过台灯与其他蓝牙设备,例如手机的链接,提供更加智能的照明功能,通过蓝牙控制台灯的亮度与明灭,让人们在夜晚的时候不需要去寻找开关,只需要打开手机APP即可开灯,另外,台灯还具有多种照明模式,满足在不同条件下的照明需求,台灯的亮度会根据环境光照来自动调节,既可以节能,也能满足照明需求。当然还可以支持睡眠模式,台灯的亮度会渐暗,特别适合儿童对漆黑的恐惧感,也不会影响其睡眠质量。还有自定义的可编程照明功能,由用户来对台灯照明条件进行简单编程,满足用户的多种需求。希望此次设计的智能台灯能够完全融入人们的生活,为智能生活带来实惠、节能、高效的照明。

1 方案设计

1.1 简介

本台灯的方案设计使用4个按钮采用GPIO中断方式控制整个系统,分别是控制开关、亮度增加、亮度减少、模式选择。并采用USART串口方式来与蓝牙模块通信,蓝牙模块在进入“已链接”状态时,会进入透传模式(杜春雷.ARM体系结构与编程(第2版)[M].北京:清华大学出版社,2015.),让系统与其他智能设备通信。采用STM32自带的ADC转换器将光敏模块的输出电压转换为亮度信息,并控制照明系统的亮度。而照明亮度控制电路采用TLC5615芯片提供不同的亮度信号给照明模块,系统会使用

串口驱动TLC5615芯片,使TLC5615芯片输出不同的高低电压来控制照明模块的亮度。由于TLC5615芯片的输出电流有大小限制,直连照明模块会导致LED灯珠亮度不足,所以在照明模块中还加入了S8050三极管来驱动LED灯珠,达到高亮度的照明需求。

图1所示是本设计的总原理图,整个设计由6个部分组成,分别STM32核心板、光敏电阻模块、TLC5615 DAC转换器、照明模块、蓝牙模块与4个按钮组成的控制模块。

图1 设计总原理图

1.2 照明模块

考虑到照明模块故障需要随时更换,并且照明模块需要能够随时更换照明目标等需求,所以采用了照明模块与核心控制模块分离的形式。并且由于台灯用于阅读,作业等场景比较多,所以本课题选用了色温在2800-3300K的暖光LED灯珠。具体的灯珠参数如表1所示。

表1 照明LED灯珠参数

另外由于TLC5615有最大电流限制,不足以驱动LED灯珠,所以需要一个S8050三极管来驱动LED灯珠,将S8050的集电极接地,基极链接TLC5615的输出口,发射极链接LED灯珠负极,即可驱动LED灯珠(刘书生.蓝牙技术应用[M].辽宁:东北大学出版社,2011.)。图2所示是照明模块的原理图,将STM32输出的亮度信号的数字量通过TLC5615的数模转换,转换为模拟量,再通过三极管的放大,驱动LED灯珠的照明。这样就可以通过STM32控制灯珠的亮度。

1.3 按钮控制模块

在系统中我们加入了4个机械按钮,来保证在没有蓝牙设备的情况下控制照明功能,按钮控制模块通过STM32的4个IO口链接起来,并使用EXTI中断方式(华成英,童诗白.模拟电子技术基础[M].北京:高等教育出版社,2011.)处理按钮的信号。这4个按钮分别采用PB6,PB7,PB8,PB9四个IO口,并使用一个10K的上拉电阻(陈志旺.STM32嵌入式微控制器快速上手[M].北京:电子工业出版社,2012.),当按钮断开时为高电平,当按钮按下时会触发一个下降沿,所以采用上拉输入的方式初始化IO口,并启用EXTI的6,7,8,9线中断,触发方式为下降沿。

图2 照明模块原理图

图3 亮度模块原理图

图4 蓝牙模块原理图

1.4 亮度控制模块

图3所示是亮度控制模块原理图,由于STM32F103C8T6不支持DAC转换,所以在系统中的亮度控制是基于TLC5615数模转换芯片。TLC5615是采用串行总线的10位DAC转换芯片,由于采用串行总线方式,所以TLC5615的驱动程序要稍微复杂一些,但是能够节省很多IO口。

在本系统中,我们采用PA5,PA6,PA7口来驱动TLC5615,并为TLC5615提供5V的工作电压,参考电压为3.3V。

1.5 环境光感知模块

系统连接了一个采用光敏电阻的环境光感知的模块,该模块可以根据环境光的强度输出不同的电压大小,再通过STM32F-103C8T6的自带的ADC转换器即可将环境光量化成数字量。在本系统中,该模块位于照明模块的背面,可以防止照明模块的照明效果影响环境光的检测结果。

1.6 蓝牙通信模块

系统采用的蓝牙通信模块是基于CC2541蓝牙模块实现的,该蓝牙模块屏蔽了很多开发中不需要注意的细节,只需要将输入与输出与STM32F103C8T6连接,并供电即可使用,采用标准的UART的串口IO,不需要为蓝牙模块写复杂的驱动,极大的减轻了开发负担。

图4所示是蓝牙模块的连接图,将PA9口作为系统的发送端口,蓝牙模块的接受端口。PA10作为系统的接受端口,蓝牙模块的发送端口(陈志旺.STM32嵌入式微控制器快速上手[M].北京:电子工业出版社,2012.)。同时PA9,PA10又是STM32的USART1的TX与RX,所以直接采用STM32的USART1即可完成蓝牙通信。

1.7 消息总线设计

在本设计中,消息总线(Message Bus)是最核心的部分,所有的外部操作,蓝牙消息、按钮消息等都会被处理成系统能够理解的消息,并交给主程序中的消息处理部分,来对系统外设进行操作。消息总线共分为3个部分,消息池、消息队列、消息处理。

消息池是一种比较高级的内存维护模型,每次需要创建消息,都会从消息池中拿出一条空的消息。当有一条消息处理完成之后,将会初始化这条消息,放入消息池回收,供后续的使用。由于STM32使用的是比较低级的语言运行时,没有一个比较方便的内存分配与内存回收的机制。使用消息池来管理内存的使用,是十分符合STM32的特性的。

消息池又能分为3个部分,池管理、消息回收与消息初始化。在本系统中,消息中最为重要的是消息内容,是一段字符串,所以池管理需要首先在内存中分配固定数量的消息,与固定的字符串空间。在本系统中,在全局空间创建了128个消息,通过这固定的128个消息的回收利用实现无限消息的使用。消息回收将消息复位,以供下次使用,在这个过程中,会清除消息的字符串的全部内容,并且清楚使用标记,放入消息池。消息初始化是将消息的内容标记为正在使用,以免发生冲突。

消息池的实现难点主要在于,如何知道一个消息是否在被使用。在本系统中我们为消息加入了使用标记,当一个消息正在被处理时,这个使用标记将会为1,当为空闲状态的时候标记为0。通过这个标记来判断一个消息是否是在被使用。

2 测试

本设计支持按钮控制,因此需要对按钮控制进行测试,第一个按钮为开关按钮,控制台灯的亮灭,按一下该按钮能够是台灯在亮灭两种状态中切换。第二个按钮为提高台灯的亮度,每次调整一个挡位,只能在普通模式中使用。第三个按钮为降低台灯的亮度,每次调整一个挡位,只能在普通模式中使用。第四个按钮为切换台灯的运行模式,分别是普通模式、感知模式、睡眠模式、自定义模式。

蓝牙控制是本次设计的中心,蓝牙控制测试采用iOS上的Light-Blue程序进行串口通信与测试。经测试各个指令均能成功执行。

3 总结

本设计主要研究了一个可以通过蓝牙与其他智能设备控制的智能台灯,该智能台灯具有多个智能照明模式,这些照明模式已经可以满足日常生活的需要。特别是用户自编程模式,为了实现该模式,本设计采用了消息的设计,动态分配回收消息,都是非常值得研究与说明的部分,此外,关于消息的拓展与脚本化也是一个主要的课题。另外在具体硬件制作的期间,还遇到了一些问题,驱动TLC5615或者是IO口具有电流限制,需要使用三极管来驱动LED,还有使用适量的上拉电阻来拉起开关。

猜你喜欢

灯珠台灯原理图
图形化编程与炫彩多变的灯珠矩阵
LED 成品灯具中铝基板通用不同品牌3030-LED灯珠焊盘的设计
DIY书房小台灯
浅谈STM32核心板原理图设计
电路原理图自动布图系统的设计与实现
基于Protel DXP 2004层次原理图的设计
使用LED点光源实现均匀照明效果的要点探究
台灯的自述
两盏台灯辉映下的难忘岁月
ACME LED—ST1000/LED—ST2000灯具