历史上的今天
返回首页

历史上的今天

今天是:2024年12月22日(星期日)

2021年12月22日 | 通过蓝牙控制RGB LED颜色

2021-12-22 来源:EEWORLD

智能灯越来越受欢迎,并且正在稳步成为智能家居的关键部分。智能灯使用户能够通过智能手机上的应用程序控制灯光,可以在APP界面打开和关闭灯,也可以调节颜色。在本文中,我们将介绍一个如何实现智能灯控制器的项目,可以手动按钮或用移动APP通过蓝牙进行控制。为了给这个项目增加一些特色,我们添加了一些功能,允许用户从APP界面中包含的颜色列表中选择照明颜色。还可以激活“自动混合”以产生彩色效果,也可以每半秒改变一次灯光。用户可以使用PWM功能创建自己的颜色混合,该功能也可以用作三种基本颜色(红色、绿色、蓝色)的调光器。我们还在电路中添加了外部按钮,以便用户可以切换到手动模式并通过外部按钮调换灯光颜色。


本文由两部分组成:GreenPAK™设计和安卓应用程序设计。GreenPAK设计基于使用UART接口进行通信。选择UART是因为大多数蓝牙模块以及大多数其他外设(例如Wi-Fi模块)都支持它。 因此,GreenPAK设计可用于多种连接类型。


为了创建这个项目,我们将使用SLG46620 GreenPAK IC、一个蓝牙模块和一个RGB LED。


GreenPAK IC将是该项目的控制核心:它从蓝牙模块和/或外部按钮接收数据,然后开始所需的程序来显示正确的照明。它还生成PWM信号并将其输出到LED。下面的图1展示了功能框图。


image.png?imageView2/2/w/550

图1:框图


该项目中使用的GreenPAK器件在单颗IC中包含了一个SPI连接接口、PWM功能块、FSM和许多其他有用的附加功能块。它还具有体积小、能耗低的特点。这使得制造商能用单个IC构建小型实用电路,从而降低生产成本。


在这个项目中,我们将控制一个RGB LED。为了使该项目具有商用可行性,系统可能需要通过并联多个LED并使用适当的晶体管来提高亮度等级;电源电路也需要考虑。我们对该项目完成了实现和检验。


GreenPAK设计


在GreenPAK Designer软件中实现的设计由UART接收器、PWM单元和控制单元组成。


a) UART接收器


首先,我们需要设置蓝牙模块。大多数蓝牙IC支持UART协议进行通信。UART是通用异步收发传输器,可以将数据在并行和串行格式之间相互转换。它包括一个串行到并行接收器,和一个并行到串行转换器,它们都单独计时。


蓝牙模块中接收到的数据将传输到GreenPAK器件。Pin10的空闲状态为高(HIGH)。发送的每个字符都以逻辑“低起始位(Low Start bit)”开头,然后是可配置数量的数据位(bit)和一个或多个逻辑“高停止位(High Stop bit)”。


UART发送器发送1个低起始位(Low Start bit)、8个数据位(bit)和1个高停止位(High Stop bit)。通常,蓝牙模块的UART默认波特率为9600。我们将从蓝牙IC发送数据字节到GreenPAK。


由于GreenPAK SPI功能块没有低起始位(Low Start bit)或高停止位(High Stop bit)控制,我们将使用这些位(bit)来启用和禁用SPI时钟信号(SCLK)。当Pin10变低(LOW)时,我们知道我们收到了一个低起始位(Low Start bit),因此我们使用GreenPAK 内部的PDLY配置为下降沿检测器来识别通信的开始。该下降沿检测器为GreenPAK 内部的DFF0提供触发时钟,从而启用SCLK信号为GreenPAK SPI功能块提供时钟。


我们将波特率设定为每秒9600 bit/s,对应SCLK周期为1/9600 = 104 µs。因此我们将OSC频率设置为2MHz,并使用GreenPAK内部的CNT0配置为分频器。为了使接收到的时钟周期是104 µs,需要将CNT0计数值设定为2818。


参照图2中GreenPAK内部的可配置单元图示,为了确保不丢失任何数据,我们需要将SPI时钟延迟半个时钟周期,以便SPI功能块在正确的时间被计时。我们通过使用CNT6、2-bit LUT1和OSC功能块的外部时钟来实现这一点。CNT6的输出直到DFF0被计时后52 µs才会变高,是该SPI的SCLK周期104 µs的一半。当CNT6为高(HIGH)的时侯,配置为与门的2-bit LUT1允许时钟信号(CLK Begin)进入OSC 的EXT. CLK0输入,其输出时钟信号连接到CNT0的CLK端子。


image.png?imageView2/2/w/550

图2:系统电路框图


b) PWM功能单元


参照图3中GreenPAK内部的可配置单元图示,PWM信号是使用PWM0和相应时钟脉冲发生器(CNT8/DLY8)生成的。由于脉冲宽度是用户可控的,我们使用FSM0(可以连接到PWM0)来统计用户数据。


在SLG46620中,8-bit FSM1可以与PWM1和PWM2结合使用。需要连接蓝牙模块,即必须使用SPI并行输出模块。SPI并行输出模块的bit 0~7与DCMP1、DMCP2和LF OSC CLK的OUT1和OUT0组合。PWM0从16-bit FSM0获得其输出。如果不改变,这会导致脉冲宽度过载。为了将计数器值限制在8位(bits),我们添加了另一个FSM:FSM1用作提示计数器达到0或255的提示器。FSM0用于生成 PWM脉冲,因此FSM0和FSM1必须同步。由于两个FSM都有预设的时钟选项,因此CNT1和CNT3用作将CLK传递给两个FSM的中间分频媒介。这两个计数器设置为相同的值,在本文中为25。我们可以通过改变这些计数器值来改变PWM值的变化率。


FSM的值由来自SPI并行输出模块的信号“+”和“-”来增加和减少。


image.png?imageView2/2/w/550

图3:PWM单元设计


c) 控制单元


参照图4中GreenPAK内部的可配置单元图示,在控制单元内,接收到的字节是从蓝牙模块获取到SPI并行输出,然后传递给相关的功能模块。首先,将检查PWM CS1和PWM CS2输出,查看PWM模式是否被激活。如果它被激活,它将决定通过LUT4、LUT6和LUT7中的哪个通道输出PWM。


LUT9、LUT11和LUT14负责检查其他两个LED的状态。LUT10、LUT12和LUT13检查手动按钮是否被激活。如果手动模式处于开启状态,则RGB将根据D0、D1、D2输出状态运行,每次按下颜色按钮时,这些输出状态会改变。它随着来自CNT7的上升沿而变化,CNT7用作上升沿信号的去抖动功能。


Pin 20配置为输入,用于在手动控制模式和蓝牙控制模式之间切换。


如果禁用手动模式并开启自动混合模式,则颜色每500毫秒改变一次,上升沿来自CNT7。4-bit LUT1 用于防止D0 D1 D2处于“000”状态,因为该状态会导致灯在自动混合模式时关闭。


如果手动模式、PWM模式和自动混合模式未启用,则红色、绿色和蓝色SPI命令流向引脚12、13和14,这些引脚配置为输出,并连接到外部RGB LED。


image.png?imageView2/2/w/550

图4:系统电路框图


DFF6、DFF7和DFF8用于构建3-bit二进制计数器。计数器值随着CNT7脉冲增加,并在MUXs' (GreenPAK逻辑单元LUT10、LUT12、LUT13)的输入端产生不同的D0,D1,D2逻辑组合。


安卓应用程序


在本节中,我们将创建一个安卓应用程序,它将监测和显示用户的控件选择。界面由两部分组成:第一部分包含一组具有预定义颜色的按钮,因此当按下这些按钮中的任意一个时,相应颜色的LED会亮起。第二部分(MIX方块)为用户创建混合颜色。


在第一部分,用户选择他们希望PWM信号通过的LED引脚;PWM信号一次只能传递到一个引脚。下面的列表在PWM模式期间逻辑地控制其他两种颜色的开/关。


自动混合按钮负责运行自动换灯光模式,每半秒换一次灯光。MIX部分包含两个复选框列表,用户可以决定将哪两种颜色混合在一起。


我们使用MIT App Inventor网站创建了该应用程序。该网站允许用户在没有任何软件经验的情况下,使用图形软件块创建安卓应用程序。


我们最初设计的图形界面添加了一组负责显示预定义颜色的按钮,我们还添加了两个复选框列表,每个列表有3个元素;每个元素都在其单独的框中显示,如图5所示。


image.png?imageView2/2/w/550

图5:App界面


用户界面中的按钮与软件命令相关联:应用程序通过蓝牙发送的所有命令都是以字节格式,每一个bit负责特定的功能。


表1显示了发送到GreenPAK的命令帧的形式。


image.png?imageView2/2/w/550

表1:bit帧表示


前三个bit:B0、B1和B2将通过预定义颜色的按钮在直接控制模式下保持RGB LED的状态。因此,当单击其中任意一个按钮时,将发送该按钮的相应值,如表2所示。


image.png?imageView2/2/w/550

表2:命令bit表示


B3和B4 bit控制“+”和“-”命令,它们负责增加和减少脉冲宽度。按下按钮时bit值为1,松开按钮时bit值为0。


B5和B6 bit负责选择PWM信号将通过的引脚(颜色):这些bit的颜色指定如表3所示。最后一个bit B7负责激活自动混合功能。


image.png?imageView2/2/w/550

表3:PWM通道选择bit


图6和图7展示了将按钮与负责发送以上值的编程块链接的过程。


image.png?imageView2/2/w/550

图6:按钮的编程块


image.png?imageView2/2/w/550

图7:发送“+”和“-”命令帧


下方图8为顶层电路图。


image.png?imageView2/2/w/550

图8:电路图


控制器已测试成功,颜色混合以及其他功能均显示正常工作。


结论


在本文中,我们创建了一个由安卓应用程序进行无线控制的智能灯电路。该项目中使用的GreenPAK IC有助于将几个用于控制灯光的基本组件集成到一个小型IC中。


推荐阅读

史海拾趣

Ferroperm公司的发展小趣事

Ferroperm公司非常重视产品的品质管理。他们建立了严格的质量管理体系,从原材料采购到产品生产、检测等各个环节都实行严格的质量控制。同时,Ferroperm还注重持续改进,不断引进先进的生产设备和检测技术,提高产品的质量和性能。这种对品质的执着追求使得Ferroperm的产品在市场上获得了良好的口碑和信誉。

Franel Corp公司的发展小趣事

法勒公司始终将技术创新视为企业发展的核心驱动力。在中国市场,法勒不断推出适应本土需求的新产品和解决方案,如非接触供电系统、智能故障诊断系统等。这些创新技术不仅提升了物流设备的智能化水平,还为客户带来了更高的效率和更低的运行成本。法勒的技术创新不仅赢得了市场的广泛认可,也推动了整个物流装备行业的技术进步和产业升级。

CUI Inc.公司的发展小趣事

CUI Inc.一直坚信,与客户的紧密合作是其成功的关键。因此,公司始终致力于与客户发展协作性伙伴关系。通过深入了解客户的需求和反馈,CUI不断优化其产品和服务,以满足客户的期望。这种以客户为中心的经营理念不仅赢得了客户的忠诚和支持,还为CUI带来了持续的业务增长和市场份额的扩大。

这些故事只是CUI Inc.在电子行业中发展起来的一部分可能情况。实际上,CUI的发展可能涉及更多的战略决策、市场变化和技术突破。如果需要更具体、详细的故事,建议查阅相关的行业报告、公司年报或新闻资讯。

Electronic公司的发展小趣事

华为,作为中国的科技巨头,其在电子行业的发展历程中展现出了强大的技术实力和全球视野。华为在通信领域取得了多项技术突破,如5G技术的领先和智能手机拍照技术的创新。同时,华为还积极拓展全球市场,与全球运营商建立了广泛的合作关系。然而,面对国际市场的复杂环境和竞争压力,华为也面临着诸多挑战和不确定性。

Dexter Research Center Inc公司的发展小趣事

随着业务的不断发展,Dexter开始积极拓展市场。公司首先将目光投向了国内市场,通过深入了解客户需求,提供定制化的解决方案,成功占领了国内市场的一定份额。随后,Dexter又将目光转向了国际市场。通过参加国际展会、拓展海外销售渠道等方式,Dexter成功打入了欧美、亚洲等多个国家和地区的市场。全球化战略为Dexter带来了更广阔的发展空间和市场机遇。

Avasem公司的发展小趣事

Avasem公司深知人才是企业发展的核心驱动力。因此,公司一直致力于构建良好的人才培养机制和企业文化。Avasem公司注重员工的个人成长和职业发展,提供丰富的培训和学习机会,鼓励员工不断学习和创新。同时,公司还倡导开放、包容和协作的企业文化,为员工创造一个积极、健康的工作环境。这种以人为本的管理理念不仅吸引了大量优秀人才加入公司,还激发了员工的创新精神和团队凝聚力,为公司的持续发展提供了有力保障。

问答坊 | AI 解惑

上传一本Keil C实例教程

一共5个PDF文档。 [ 本帖最后由 lycdl 于 2008-7-10 12:16 编辑 ]…

查看全部问答>

单片机常用子程序

本帖最后由 paulhyde 于 2014-9-15 09:28 编辑 很多的常用模块程序,希望对初学者还说有一定的帮助,更容易上手~~  …

查看全部问答>

嵌入式通信设备开发

通过介绍二层交换机、7信令分析仪、ATM信元收发卡和GSM信令测试仪等真正的通信设备的开发来说明MPC8260在通信设备开发过程,市面上非常少见。 辅以大量代码、分析和注释,使读者很快能进行嵌入式通信设备的开发。信令分析仪动辄几万,有的甚至几十 ...…

查看全部问答>

各位高手,最近在做一个大型PC软件移植到WINCE平台的项目,请教几个问题!

公司项目需要,最近一直在准备将公司原来的PC平台的一个软件移植到WINCE5.0下,由于软件很大,今天移植了一个模块,发现原来软件需要的winbase.h里的_lopen()函数在Wince的相应库里面没有实现,还有就是PC平台的setupapi.h在Wince平台下没有找到这 ...…

查看全部问答>

stc下载线用不了

stc单片机xtal2和xtal1为什么没有电压…

查看全部问答>

简单的创意——年发电量4720万千瓦

一个简单的想法,可以存储不少能量   2月25日消息,桥梁始终暴露在自然环境下,经受着各种气候条件和天气状况的考验。令人感到不解的是,一直以来人们未曾想过借助这些巨大的人造结构利用生态友好型天然能源。现在,意大利设计师提出了建造 ...…

查看全部问答>

TI赠送的28035和28027的开发板原理图(controlsuite中找不到的)

TI赠送的28035和28027的开发板原理图(controlsuite中找不到的)    …

查看全部问答>

富士通DIY家庭物联网整合帖(未完)

这几天开始最后的整合,我首先从厨房的部分开始的,因为厨房的做的比较完善,这里感谢下。根据他的修改说明,对电路进行相应的修改。但是复位电路没有按照他的要求进行修改。插上LAUCHPAD的调试线,通电下载。果然错误来了(如下图,估计很多同学都 ...…

查看全部问答>

第二周beaglebone试用开发板芯片测试单桨时发现是假了

板子做好一段时间了之前没怎么理会它上的全性能测试M3 M4 系列它是兼优了无刷电机projcet的所以就没多大理会 结果今天应用它下载单桨测试程序是发现有问题老提示。。警告提示但我们买的芯片的型号是没问题的啊但想起以前我们遇到的问题一想起我觉的 ...…

查看全部问答>

提问+自己做的16*16点阵亮度不均应该怎么解决

自己diy的一个16*16的点阵,使用4个595级联 可是为什么亮度不均 ,如果 明显哪一行点亮的点越多哪一行就暗   上图!  虽然年快过去了0.0 …

查看全部问答>