跳到主要内容

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

内容

术语和定义

CNT.计数器
FSM.有限状态机
领导发光二极管
附近地区查找表
PWM.脉冲宽度调制
RGB.红绿蓝

参考文献

有关文件及软件,请浏览:

https://www.dialog-seminile.com/configurable-mixed-signal.

下载我们的免费格林帕克软件设计师(1]打开.gp文件[1]并查看所提出的电路设计。使用格林帕克开发工具[3.]在几分钟内将设计冻结到您自己的定制IC中。雷竞技电竞平台对话框半导体提供完整的应用程序笔记库[4.]具有设计示例以及对话框IC中的功能和块的说明。

  1. GreenPAK设计软件,软件下载和用户指南,对话框半导体雷竞技电竞平台
  2. AN-CM-通过Bluetooth.gp控制RGB LED颜色,格林帕克设计文件,Dialog半导雷竞技电竞平台体
  3. GreenPAK开发工具格林帕克开发工具网页,对话半导体雷竞技电竞平台
  4. GreenPak应用笔记格林帕克应用笔记网页,对话框半导体雷竞技电竞平台
  5. SLG46620V.,数据表,对话框半导体雷竞技电竞平台
  6. AN-CM-225智能LED调光器通过蓝牙控制,应用笔记,对话框半导体雷竞技电竞平台

介绍

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

此申请包括两个部分;这格林帕克设计和Android应用设计。这格林帕克设计是基于使用UART接口进行通信。之所以选择UART,是因为大多数蓝牙模块都支持UART,其他外围设备也支持UART,比如WIFI模块。因此,格林帕克设计可用于许多连接类型。

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

图1:框图

格林帕克本项目中使用的器件在一个IC中包含了SPI连接接口、PWM块、FSM和许多其他有用的附加块,还具有体积小、能耗低的特点。这将使制造商能够使用单个集成电路构建一个小的实际电路,因此与类似系统相比,生产成本将最小化。

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

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

GreenPak设计

格林帕克设计包括UART接收器,PWM单元和控制单元。

UART接收者

首先,我们需要设置蓝牙模块。大多数蓝牙ICS支持UART协议进行通信。UART代表通用异步接收器/发射器。UART可以在并行和串行格式之间来回转换数据。它包括串行接收器和与串行转换器的平行于串行转换器分开时钟。

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

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

格林帕克SPI块没有启动或停止位控制,我们将使用这些位,而不是启用并禁用SPI时钟信号(SCLK)。当PIN10变低时,我们知道我们已经收到了一个开始位,因此我们使用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块的外部时钟来实现这一点。在DFF0后,CNT6的输出直到52µs才开始增加,这是104µs SCLK周期的一半。当CNT6为高时,2位LUT1 AND门允许2MHz的OSC信号进入EXT. CLK0输入,其输出连接到CNT0。

图2:系统图

PWM单元

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

在SLG46620中,8位FSM1可与PWM1和PWM2一起使用。必须连接蓝牙模块,这意味着必须使用SPI并联输出。使用DCMP1,DMCP2和LF OSC CLK的OUT1和OUT0 Muxed将SPI并联输出位0到7。PWM0从16位FSM0获得其输出。左侧未置换使其导致脉冲宽度过载。限制8位的计数器值另一个FSM;FSM1用作指针以知道计数器何时达到0或255. FSM0用于生成PWM脉冲。FSM0和FSM1必须同步。由于两个FSM都具有预设的时钟选项,因此CNT1和CNT3用作调解器以将CLK传递给两个FSM。这两个计数器设置为相同的值,这是此应用笔记的25个。 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被配置为输入,用于在手动和蓝牙控制之间切换。

如果禁用手动模式并激活自动混音器模式,则颜色会使用来自CNT7的上升沿更改每500ms。用于防止D0 D1 D2的4位LUT1用于防止“000”状态,因为该状态导致光在自动混频器模式期间关闭光。

如果手动模式,PWM模式,和自动混频器模式没有激活,那么红色,绿色和蓝色SPI命令流到引脚12,13和14,这被配置为输出,并连接到外部RGB LED。

图4:系统图

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

Android应用程序

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

在第一部分中,用户选择LED引脚,它们希望PWM信号通过;PWM信号一次只能传递到一个引脚。下列表在PWM模式下逻辑上打开/关闭其他两种颜色。

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

我们使用MIT App Inventor网站构建了应用程序。它是一个允许使用图形软件块的现有软件体验构建Android应用程序的网站。雷竞技安卓下载

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

图5:应用程序界面

用户界面中的按钮与软件命令相关联:应用程序通过蓝牙发送的所有命令都是字节格式的,每个比特负责特定的功能。
表格1显示发送到的命令框架的形式格林帕克

表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
PWM到

0.

0.

1

0.

红色的

0.

1

绿

1

1

蓝色

图6.图7.演示使用编程块链接按钮的过程,该块负责发送先前值。

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

图6:按钮编程块
图7:发送'+' & '-'命令帧

图8.下面显示了顶级电路图

图8:电路图

结果

通过手动和蓝牙控件的工作RGB LED控制器的视频连接到此应用笔记。控制器已成功进行测试,并将颜色混合以及其他特征一起显示适当地工作。

结论

在这篇文章中,一个智能灯泡电路由一个Android应用程序无线控制。这格林帕克该项目中使用的IC还有助于缩短并将几个基本组件缩短并将光控其光控制成一个小型IC。