通过蓝牙控制 RGB LED 颜色

电子说

1.2w人已加入

描述

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

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

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

RGB

图 1:框图

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

在这个项目中,我们将控制一个 RGB LED。为了使该项目具有商业可行性,系统可能需要通过并联多个 LED 并使用适当的晶体管来提高亮度水平;还需要考虑电源电路。该项目得到实施和审查。

GreenPAK 设计

在 GreenPAK Designer 软件中实现的设计由 UART 接收器、PWM 单元和控制单元组成(整个设计文件可以在这里找到)

a) UART 接收器

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

蓝牙模块中接收到的数据将传输到我们的 GreenPAK 设备。Pin10 的空闲状态为高电平。发送的每个字符都以逻辑低开始位开始,然后是可配置数量的数据位和一个或多个逻辑高停止位。

UART 发送器发送 1 个 START 位、8 个数据位和 1 个 STOP 位。通常,UART 蓝牙模块的默认波特率为 9600。我们将从蓝牙 IC 发送数据字节到 GreenPAK。SLG46620 的 SPI 模块。

由于 GreenPAK SPI 模块没有 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 的输出直到 DFF0 计时后 52 µs 才会变高,这是我们 104 µs SCLK 周期的一半。当 CNT6 为高电平时,2 位 LUT1 与门允许 2MHz OSC 信号进入 EXT。CLK0 输入,其输出连接到 CNT0。

RGB

图 2:系统图

b) PWM 单元

PWM 信号是使用 PWM0 和相关时钟脉冲发生器 (CNT8/DLY8) 生成的。由于脉冲宽度是用户可控的,我们使用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 必须同步。由于两个 FSM 都有预设的时钟选项,因此 CNT1 和 CNT3 用作中介将 CLK 传递给两个 FSM。这两个计数器设置为相同的值,本文为 25。我们可以通过改变这些计数器值来改变 PWM 值的变化率。

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

RGB

图 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 配置为输入,用于在手动和蓝牙控制之间切换。

如果禁用手动模式并激活自动混频器模式,则颜色每 500 毫秒改变一次,上升沿来自 CNT7。4 位 LUT1 用于防止 D0 D1 D2 处于“000”状态,因为此状态会导致灯在自动混音器模式期间关闭。

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

RGB

图 4:系统图

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

安卓应用

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

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

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

我们使用 MIT 应用程序发明者网站构建了该应用程序。这是一个允许使用图形软件块构建 Android 应用程序而无需先前软件经验的站点。

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

RGB

图 5:应用程序界面

用户界面中的按钮与软件命令相关联:应用程序将通过蓝牙发送的所有命令都是字节格式,每一位负责特定的功能。
表 1 显示了发送到 GreenPAK 的命令帧的形式。

RGB

表 1:位帧表示

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

RGB

表 2:命令位代表

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

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

RGB

表 3:PWM 通道选择位

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

RGB

图 6:按钮的编程块

RGB

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

下图8为顶层电路图

RGB

图 8:电路图

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

结论

在本文中,构建了一个智能灯泡电路,由 Android 应用程序进行无线控制。该项目中使用的 GreenPAK CMIC 还有助于将几个用于光控制的基本组件缩短并嵌入到一个小型 IC 中。

Dialog Semiconductor 的 Anas Ajaj

审核编辑 黄昊宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分