跳过主要内容

AN-CM-273通过蓝牙控制RGB LED颜色

内容

术语和定义

CNT.柜台
FSM.有限状态机
发光二极管发光二极管
LUT查找表
PWM.脉冲宽度调制
RGB红绿蓝

工具书类

有关文件和软件,请访问:

//www.xmece.com/configurable-mixed-signal

下载我们的免费GreenPAK设计软件[1]打开.gp文件[1],并查看所提出的电路设计。使用GreenPAK开发工具[3.]在几分钟内将设计冻结到您自己的定制IC中。yabo国际娱乐对话框半导体提供完整的应用程序笔记库[4],包括设计实例,以及对Dialog IC的功能和模块的解释。

  1. GreenPAK Designer软件,软件下载和用户指南,对话框半导体yabo国际娱乐
  2. AN-CM-通过Bluetooth.gp控制RGB LED颜色,GreenPAK设计文件,对话框yabo国际娱乐
  3. GreenPAK开发工具GreenPAK开发工具网页,对话框yabo国际娱乐
  4. GreenPAK应用笔记GreenPAK应用笔记网页,Dialog半导体yabo国际娱乐
  5. SLG46620V.,数据表,对话框半导体yabo国际娱乐
  6. AN-CM-225智能LED调光器通过蓝牙控制,应用笔记,对话框半导体yabo国际娱乐

介绍

智能灯泡最近一直在普及,并且稳步成为智能家居工具包的关键部分。智能灯泡使用户能够通过用户智能手机上的特殊应用来控制光线;灯泡可以打开和关闭,可以从应用程序接口更改颜色。在该项目中,我们建立了一个智能灯泡控制器,可以通过蓝牙从手动按钮或移动应用程序控制。要为此项目添加一些Flair,我们已添加一些功能,允许用户从应用程序界面中包含的颜色列表中选择照明颜色。它还可以激活“自动混合”以产生颜色效果,并每半秒更改照明。用户可以使用PWM功能创建自己的颜色混合,该功能也可用作三种基本颜色的调光器(红色,绿色,蓝色)。我们还将外部按钮添加到电路,以便用户可以切换到手动模式并从外部按钮更改浅色。

此申请包括两个部分;这GreenPAK设计和Android应用程序设计。的GreenPAK设计基于使用UART接口进行通信。选择UART是因为大多数蓝牙模块以及大多数其他外围设备(如WIFI模块)都支持它。因此GreenPAK设计可用于许多连接类型。

为了构建这个项目,我们将使用SLG46620 IC,一个蓝牙模块,和一个RGB LED。
GreenPAKIC将成为本项目的控制核心;它从蓝牙模块和/或外部按钮接收数据,然后开始所需的程序以显示正确的照明。
它还生成PWM信号并将其输出到LED。图1下面是方框图。

图1:框图

GreenPAK本项目中使用的设备在一个IC中包含SPI连接接口、PWM块、FSM和许多其他有用的附加块。它还具有体积小、能耗低的特点。这将使制造商能够使用单个IC构建小型实用电路,因此相比之下,生产成本将降至最低类似的系统。

在这个项目中,我们控制一个RGB LED。为了使项目商业可行,系统可能需要通过连接许多LED并联和使用适当的晶体管来增加亮度水平;电源电路也需要考虑。

该项目已实施和审查;您可以观看项目的视频,显示电路的深入行为。

GreenPak设计

GreenPAK该设计由UART接收机、PWM单元和控制单元组成。

UART接收者

首先,我们需要建立蓝牙模块。大多数蓝牙ic支持UART协议进行通信。UART是通用异步接收/发送器的缩写。UART可以在并行和串行格式之间来回转换数据。它包括一个串行到并行的接收机和一个并行到串行的转换器,两者都是单独的时钟。

蓝牙模块接收到的数据会发送到我们的GreenPAK设备。PIN10的空闲状态高。发送的每个字符都以逻辑低启动位开始,然后是可配置的数据比特数和一个或多个逻辑高停止位。

UART发送器发送1个起始位,8个数据位和一个停止位。通常,UART蓝牙模块的默认波特率为9600.我们将从蓝牙IC发送数据字节到GreenPAKSLG46620 SPI的块。

自从GreenPAKSPI块没有START或STOP位控制,我们将使用这些位来启用和禁用SPI时钟信号(SCLK)。当Pin10进入低电平时,我们知道我们收到了一个START位,所以我们使用PDLY下降边缘检测器来识别通信的开始。下降沿检测器时钟DFF0,使SCLK信号时钟SPI块。

我们的波特率是9600比特每秒,所以SCLK周期需要是1/9600 = 104µs。因此,我们将OSC频率设置为2MHz,并使用CNT0作为分频器。

2 MHz-1 = 0.5µs

(104µs/0.5µs)-1=207

因此,我们希望CNT0计数器值为207。为了确保不丢失任何数据,我们需要将SPI时钟延迟半个时钟周期,以便SPI块在适当的时间进行计时。我们通过使用CNT6、2位LUT1和OSC块的外部时钟来实现这一点。CNT6的输出在DF后52µs才会变高F0被计时,这是我们104µs SCLK周期的一半。当CNT6为高电平时,2位LUT1和栅极允许2MHz OSC信号进入外部CLK0输入,其输出连接到CNT0。

图2:系统图

脉宽调制单元

使用PWM0和相关的时钟脉冲发生器(CNT8 / DLY8)产生PWM信号。由于脉冲宽度是用户可控的,因此我们使用FSM0(可以连接到PWM0)来计算用户数据。

在SLG46620中,8位FSM1可以与PWM1和PWM2一起使用。蓝牙模块必须连接,这意味着必须使用SPI并行输出。SPI并行输出位0 ~ 7与DCMP1、DMCP2、LF OSC CLK的OUT1和OUT0混合。PWM0从16位FSM0中获取输出。如果不加以改变,就会导致脉宽过载。将计数器值限制在8位,增加另一个FSM;FSM1被用作指针,用来知道计数器何时达到0或255。采用FSM0产生PWM脉冲。FSM0和FSM1必须同步。由于两个FSMs都有预置的时钟选项,CNT1和CNT3被用作介质,将CLK传递给两个FSMs。 The two counters are set to the same value, which is 25 for this app note. We can alter the rate of change of the PWM value by changing these counter values.

通过信号'+'和' - '增加和减少FSM的值,该信号来自SPI并联输出。

图3:PWM单元设计

控制单位

在控制单元内,从蓝牙模块到SPI并联输出的接收字节,然后将其传递给相关的功能。首先,将检查PWM CS1和PWM CS2输出,看看是否已激活PWM模式。如果它被激活,则它将通过LUT4,LUT6和LUT7确定哪个通道将输出PWM。

LUT9,LUT11和LUT14负责检查其他两个LED的状态。LUT10,LUT12和LUT13检查手动按钮是否被激活。如果手动模式处于活动状态,则RGB输出根据D0,D1,D2输出状态操作,每次按下颜色按钮时会发生变化。它随着来自CNT9的上升沿而变化,它被用作上升沿替补。

引脚20被配置为输入,用于在手动和蓝牙控制之间切换。

如果手动模式被禁用而自动混频器模式被激活,那么颜色每500ms改变一次,上升边缘来自CNT7。4位LUT1用于防止D0 D1 D2的'000'状态,因为这种状态导致在自动混音模式下灯关闭。

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

图4:系统图

DFF1,DFF2和DFF3用于构建3位二进制计数器。计数器值随着在自动混音器模式中通过P14的CNT7脉冲而增加,或者在手动模式下从来自颜色按钮(PIN3)的信号。

Android应用程序

在本节中,我们将构建一个Android应用程序,该应用程序将监控和显示用户的控件选择。该界面由两部分组成:第一部分包含一组具有预定义颜色的按钮,因此当按下其中任何一个按钮时,相同颜色的LED将点亮。第二部分(混合方块)为用户创建混合颜色。

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

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

我们使用麻省理工学院应用程序发明人网站创建了这个应用程序。它是一个允许在没有使用图形软件模块的情况下构建Android应用程序的网站。亚博国际官网平台网址

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

图5:应用程序界面

用户界面中的按钮链接到软件命令:应用程序将通过蓝牙发送的所有命令都是字节格式的,每个位负责特定的功能。
表1控件发送的命令帧的形式GreenPAK

表1:位帧表示
少量

B0

B1

B2

B3

B4

B5

B6

B7

作用

红色的

绿

蓝色的

增加

减少

PWM CS1

PWM CS2

组合按钮

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

表2:命令位表示
按钮
字节发送
十进制代表
离开
00000000
0
红色的
10000000
1
绿
01000000
2
黄色
11000000
3.
蓝色的
00100000.
4
品红色的
10100000
5
青色
01100000
6
白色的
11100000
7

位B3和B4包含“+”和“-”命令,负责增加和减少脉冲宽度。按下按钮时,位值为1,松开按钮时,位值为0。

B5和B6位负责选择PWM信号将通过的引脚(颜色):这些位的颜色名称如所示表3.最后一位B7负责激活自动混音器。

表:PWM通道选择位
PWM CS1
PWM CS2
脉宽调制,

0

0

无效的

1

0

红色的

0

1

绿

1

1

蓝色的

图6图7演示将按钮与负责发送前面值的编程块链接的过程。

要观看应用程序的完整设计,您可以使用项目文件下载附加的文件“.Aia”并在主站点内打开它。

图6:按钮编程模块
图7:发送“+”和“-”命令帧

图8下面是顶级电路图

图8:电路图

结果

一个工作的RGB LED控制器的视频,通过手动和蓝牙控制,附在这个应用说明。控制器测试成功,颜色混合,以及其他功能,显示工作适当。

结论

在本文中,智能灯泡电路是由安卓应用程序无线控制的GreenPAK该项目中使用的IC还有助于缩短并将几个基本组件缩短并将光控其光控制成一个小型IC。