《通过蓝牙控制RGB LED颜色.docx》由会员分享,可在线阅读,更多相关《通过蓝牙控制RGB LED颜色.docx(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、通过蓝牙控制RGBLED颜色智能灯越来越受欢迎,并且正在稳步成为智能家居的关键部分。智能灯使用户能够通过智能手机上的应用程序控制灯光,能够在APP界面打开和关闭灯,可以以调节颜色。在本文中,我们将介绍一个怎样实现智能灯控制器的项目,能够手动按钮或用移动APP通过蓝牙进行控制。为了给这个项目增加一些特色,我们添加了一些功能,允许用户从APP界面中包含的颜色列表中选择照明颜色。还能够激活“自动混合以产生彩色效果,可以以每半秒改变一次灯光。用户能够使用PWM功能创立本人的颜色混合,该功能可以以用作三种基本颜色红色、绿色、蓝色的调光器。我们还在电路中添加了外部按钮,以便用户能够切换到手动形式并通过外部
2、按钮调换灯光颜色。本文由两部分组成:GreenPAK设计和安卓应用程序设计。GreenPAK设计基于使用UART接口进行通信。选择UART是由于大多数蓝牙模块以及大多数其他外设例如Wi-Fi模块都支持它。因而,GreenPAK设计可用于多种连接类型。为了创立这个项目,我们将使用SLG46620GreenPAKIC、一个蓝牙模块和一个RGBLED。GreenPAKIC将是该项目的控制核心:它从蓝牙模块和/或外部按钮接收数据,然后开场所需的程序来显示正确的照明。它还生成PWM信号并将其输出到LED。下面的图1展示了功能框图。图1:框图该项目中使用的GreenPAK器件在单颗IC中包含了一个SPI连
3、接接口、PWM功能块、FSM和很多其他有用的附加功能块。它还具有体积小、能耗低的特点。这使得制造商能用单个IC构建小型实用电路,进而降低生产成本。在这个项目中,我们将控制一个RGBLED。为了使该项目具有商用可行性,系统可能需要通过并联多个LED并使用适当的晶体管来提高亮度等级;电源电路也需要考虑。我们对该项目完成了实现和检验。GreenPAK设计在GreenPAKDesigner软件中实现的设计由UART接收器、PWM单元和控制单元组成。a)UART接收器首先,我们需要设置蓝牙模块。大多数蓝牙IC支持UART协议进行通信。UART是通用异步收发传输器,能够将数据在并行和串行格式之间互相转换。
4、它包括一个串行到并行接收器,和一个并行到串行转换器,它们都单独计时。蓝牙模块中接收到的数据将传输到GreenPAK器件。Pin10的空闲状态为高HIGH。发送的每个字符都以逻辑“低起始位LowStartbit开始,然后是可配置数量的数据位bit和一个或多个逻辑“高停止位HighStopbit。UART发送器发送1个低起始位LowStartbit、8个数据位bit和1个高停止位HighStopbit。通常,蓝牙模块的UART默认波特率为9600。我们将从蓝牙IC发送数据字节到GreenPAK。由于GreenPAKSPI功能块没有低起始位LowStartbit或高停止位HighStopbit控制,
5、我们将使用这些位bit来启用和禁用SPI时钟信号SCLK。当Pin10变低LOW时,我们知道我们收到了一个低起始位LowStartbit,因而我们使用GreenPAK内部的PDLY配置为下降沿检测器来识别通信的开场。该下降沿检测器为GreenPAK内部的DFF0提供触发时钟,进而启用SCLK信号为GreenPAKSPI功能块提供时钟。我们将波特率设定为每秒9600bit/s,对应SCLK周期为1/9600=104s。因而我们将OSC频率设置为2MHz,并使用GreenPAK内部的CNT0配置为分频器。为了使接收到的时钟周期是104s,需要将CNT0计数值设定为2818。参照图2中GreenPA
6、K内部的可配置单元图示,为了确保不丢失任何数据,我们需要将SPI时钟延迟半个时钟周期,以便SPI功能块在正确的时间被计时。我们通过使用CNT6、2-bitLUT1和OSC功能块的外部时钟来实现这一点。CNT6的输出直到DFF0被计时后52s才会变高,是该SPI的SCLK周期104s的一半。当CNT6为高HIGH的时侯,配置为与门的2-bitLUT1允许时钟信号CLKBegin进入OSC的EXT.CLK0输入,其输出时钟信号连接到CNT0的CLK端子。图2:系统电路框图b)PWM功能单元参照图3中GreenPAK内部的可配置单元图示,PWM信号是使用PWM0和相应时钟脉冲发生器CNT8/DLY8
7、生成的。由于脉冲宽度是用户可控的,我们使用FSM0能够连接到PWM0来统计用户数据。在SLG46620中,8-bitFSM1能够与PWM1和PWM2结合使用。需要连接蓝牙模块,即必须使用SPI并行输出模块。SPI并行输出模块的bit07与DCMP1、DMCP2和LFOSCCLK的OUT1和OUT0组合。PWM0从16-bitFSM0获得其输出。假如不改变,这会导致脉冲宽度过载。为了将计数器值限制在8位bits,我们添加了另一个FSM:FSM1用作提示计数器到达0或255的提示器。FSM0用于生成PWM脉冲,因而FSM0和FSM1必须同步。由于两个FSM都有预设的时钟选项,因而CNT1和CNT3
8、用作将CLK传递给两个FSM的中间分频媒介。这两个计数器设置为一样的值,在本文中为25。我们能够通过改变这些计数器值来改变PWM值的变化率。FSM的值来历自SPI并行输出模块的信号“+和“-来增加和减少。图3:PWM单元设计c)控制单元参照图4中GreenPAK内部的可配置单元图示,在控制单元内,接收到的字节是从蓝牙模块获取到SPI并行输出,然后传递给相关的功能模块。首先,将检查PWMCS1和PWMCS2输出,查看PWM形式能否被激活。假如它被激活,它将决定通过LUT4、LUT6和LUT7中的哪个通道输出PWM。LUT9、LUT11和LUT14负责检查其他两个LED的状态。LUT10、LUT1
9、2和LUT13检查手动按钮能否被激活。假如手动形式处于开启状态,则RGB将根据D0、D1、D2输出状态运行,每次按下颜色按钮时,这些输出状态会改变。它随着来自CNT7的上升沿而变化,CNT7用作上升沿信号的去抖动功能。Pin20配置为输入,用于在手动控制形式和蓝牙控制形式之间切换。假如禁用手动形式并开启自动混合形式,则颜色每500毫秒改变一次,上升沿来自CNT7。4-bitLUT1用于防止D0D1D2处于“000状态,由于该状态会导致灯在自动混合形式时关闭。假如手动形式、PWM形式和自动混合形式未启用,则红色、绿色和蓝色SPI命令流向引脚12、13和14,这些引脚配置为输出,并连接到外部RGB
10、LED。图4:系统电路框图DFF6、DFF7和DFF8用于构建3-bit二进制计数器。计数器值随着CNT7脉冲增加,并在MUXsGreenPAK逻辑单元LUT10、LUT12、LUT13的输入端产生不同的D0,D1,D2逻辑组合。安卓应用程序在本节中,我们将创立一个安卓应用程序,它将监测和显示用户的控件选择。界面由两部分组成:第一部分包含一组具有预定义颜色的按钮,因而当按下这些按钮中的任意一个时,相应颜色的LED会亮起。第二部分MIX方块为用户创立混合颜色。在第一部分,用户选择他们希望PWM信号通过的LED引脚;PWM信号一次只能传递到一个引脚。下面的列表在PWM形式期间逻辑地控制其他两种颜色
11、的开/关。自动混合按钮负责运行自动换灯光形式,每半秒换一次灯光。MIX部分包含两个复选框列表,用户能够决定将哪两种颜色混合在一起。我们使用MITAppInventor网站创立了该应用程序。该网站允许用户在没有任何软件经历的情况下,使用图形软件块创立安卓应用程序。我们最初设计的图形界面添加了一组负责显示预定义颜色的按钮,我们还添加了两个复选框列表,每个列表有3个元素;每个元素都在其单独的框中显示,如图5所示。图5:App界面用户界面中的按钮与软件命令相关联:应用程序通过蓝牙发送的所有命令都是以字节格式,每一个bit负责特定的功能。表1显示了发送到GreenPAK的命令帧的形式。表1:bit帧表示
12、前三个bit:B0、B1和B2将通过预定义颜色的按钮在直接控制形式下保持RGBLED的状态。因而,当单击其中任意一个按钮时,将发送该按钮的相应值,如表2所示。表2:命令bit表示B3和B4bit控制“+和“-命令,它们负责增加和减少脉冲宽度。按下按钮时bit值为1,松开按钮时bit值为0。B5和B6bit负责选择PWM信号将通过的引脚颜色:这些bit的颜色指定如表3所示。最后一个bitB7负责激活自动混合功能。表3:PWM通道选择bit图6和图7展示了将按钮与负责发送以上值的编程块链接的经过。图6:按钮的编程块图7:发送“+和“-命令帧下方图8为顶层电路图。图8:电路图控制器已测试成功,颜色混合以及其他功能均显示正常工作。结论在本文中,我们创立了一个由安卓应用程序进行无线控制的智能灯电路。该项目中使用的GreenPAKIC有助于将几个用于控制灯光的基本组件集成到一个小型IC中。