0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用Android应用程序进行智能灯泡的无线控制方案

电子设计 来源:Dialog半导体 作者:Anas Ajaj 2021-04-07 17:01 次阅读

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

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

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

o4YBAGBtc5uACTP6AABxTvUAEws866.png

图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变为LOW时,我们知道我们已经收到一个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 AND门允许2MHz OSC信号进入EXT。CLK0输入,其输出连接到CNT0。

pIYBAGBtc6yAd0zJAAETxCWurrs807.png

图2:系统图

b)PWM单元

使用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必须同步。由于两个FSM都有预设的时钟选项,因此CNT1和CNT3用作将CLK传递给两个FSM的中介。这两个计数器被设置为相同的值,对于本文来说是25。我们可以通过更改这些计数器值来更改PWM值的变化率。

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

pIYBAGBtc7uABdn-AACc2WPqhc8019.png

图3:PWM单元设计

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

LUT9,LUT11和LUT14负责检查其他两个LED的状态。LUT10,LUT12和LUT13检查“手动”按钮是否已激活。如果启用了“手动”模式,则RGB输出将根据D0,D1,D2输出状态进行操作,每次按“颜色”按钮都会更改这些状态​​。它随着来自CNT9的上升沿而变化,CNT9用作上升沿去抖动器。

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

如果禁用了手动模式并激活了自动混频器模式,则颜色每500毫秒更改一次,且上升沿来自CNT7。4位LUT1用于防止D0 D1 D2处于'000'状态,因为这种状态会导致在自动混频器模式下灯熄灭。

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

pIYBAGBtc8iAeLbyAAFPgITYm7U743.png

图4:系统图

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

Android应用程式

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

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

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

我们使用MIT应用程序发明者网站构建了该应用程序。该站点允许您在没有使用图形软件模块的软件经验的情况下构建Android应用程序。

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

pIYBAGBtc9aAYFE8AAB3k5Iuknc863.png

图5:应用程序界面

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

pIYBAGBtc-KAWTU0AAA8ERPhnfk979.png

表1:位帧表示

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

pIYBAGBtc-6AENLxAACQUtuFahE263.png

表2:命令位代表

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

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

pIYBAGBtc_mAUsovAAA8_TZ3Xn4642.png

表3:PWM通道选择位

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

o4YBAGBtdASAdJk9AAHwXHoko3g890.png

图6:按钮编程块

o4YBAGBtdBWAE2AMAAFoueg1MW4199.png

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

下面的图8显示了顶层电路图

o4YBAGBtdCSAYwLXAACDVvlid3s789.png

图8:电路图

该控制器已经过成功测试,并且颜色混合以及其他功能都可以正常工作。

结论

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

编辑:hfy

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

    关注

    10

    文章

    662

    浏览量

    45098
  • 计数器
    +关注

    关注

    32

    文章

    2118

    浏览量

    92850
  • 智能家居
    +关注

    关注

    1911

    文章

    9128

    浏览量

    179129
  • uart
    +关注

    关注

    22

    文章

    1154

    浏览量

    99814
  • 智能灯泡
    +关注

    关注

    5

    文章

    76

    浏览量

    35566
收藏 人收藏

    评论

    相关推荐

    灵感智能灯具家庭控制

    ` LINGAN智能灯具家庭控制  该灯泡方案基于TI CC2530芯片研发,它使用智能手机APP跟遥控器操控,同时支持苹果IOS及
    发表于 02-03 09:44

    智能灯具家庭控制方案

    `灵感智能灯具家庭控制  该灯泡方案基于TI CC2530芯片研发,它使用智能手机APP跟遥控器操控,同时支持苹果IOS及
    发表于 02-18 10:07

    zigbee控制方案!

    `LINGAN智能灯具家庭控制  该灯泡方案基于TI CC2530芯片研发,它使用智能手机APP跟遥控器操控,同时支持苹果IOS及
    发表于 02-26 13:45

    Android应用程序的耗电量如何控制

    如何才能降低Android应用程序的耗电量呢?今天再一次回顾了一下09年Google IO大会Jeffrey Sharkey的演讲(Coding for Life — Battery Life, That Is),与大家一起分享有效控制
    发表于 07-18 08:31

    采用Android和WIFI的智能家居实现方案

    针对传统智能家居系统存在的操作复杂、可移动性差、升级维护成本高等缺点,本文提出了一种基于Android智能家居系统的设计和实现方案。采用了具有An
    发表于 08-08 07:28

    Android应用程序通过JNI控制LED的流程概述

    Android应用程序通过JNI控制LED
    发表于 09-16 08:08

    求基于Cortex-M3与Android智能家居控制系统解决方案

    【摘要】本文提出了一种基于Cortex-M3与Android智能家居控制系统解决方案。系统采用智能手机作为
    发表于 08-05 07:57

    无法在Nanoleaf Android应用程序上找到OTBR怎么解决?

    的 E26 智能灯泡。但是我无法在我的 Nanoleaf Android 应用程序上找到 OTBR。 我需要 OTBR 方面的任何证书吗?
    发表于 06-08 08:23

    如何通过Android应用程序控制LED灯

    它实际上是通过一个定制的Android应用程序控制的,你可以使用智能手机改变LED灯的颜色,也可以控制亮度。
    的头像 发表于 04-10 16:14 1.1w次阅读

    为什么智能灯泡也会容易受到网络黑客的攻击

    智能灯泡——比如来自Signify公司(原飞利浦照明,世界上最大的照明公司,2018年3月改名Signify)的飞利浦hue——可以对智能手机app和其他无线
    的头像 发表于 03-15 12:57 2575次阅读

    STM32智能小车的试用Android应用程序包免费下载

    本文档的主要内容详细介绍的是STM32智能小车的试用Android应用程序包免费下载
    发表于 03-19 16:03 17次下载
    STM32<b class='flag-5'>智能</b>小车的试用<b class='flag-5'>Android</b><b class='flag-5'>应用程序</b>包免费下载

    Linux上运行Android应用程序方案

    目前Android上的应用已经非常丰富,一些应用非常不错。想在Linux上使用安卓应用吗,想在Linux上玩Android游戏吗,这里有几个不错的方案,但效果最好的选项是Anbox,这是一个非常有用的工具,无需仿真即可在Linu
    发表于 07-13 14:23 2283次阅读
    Linux上运行<b class='flag-5'>Android</b><b class='flag-5'>应用程序</b>的<b class='flag-5'>方案</b>

    Android应用程序控制的机器人车

    电子发烧友网站提供《Android应用程序控制的机器人车.zip》资料免费下载
    发表于 11-08 15:38 0次下载
    <b class='flag-5'>Android</b><b class='flag-5'>应用程序控制</b>的机器人车

    Android应用程序控制16x2 LCD

    电子发烧友网站提供《从Android应用程序控制16x2 LCD.zip》资料免费下载
    发表于 11-14 11:17 0次下载
    从<b class='flag-5'>Android</b><b class='flag-5'>应用程序控制</b>16x2 LCD

    Android手机应用程序控制调频收音机的创建

    电子发烧友网站提供《用Android手机应用程序控制调频收音机的创建.zip》资料免费下载
    发表于 06-12 09:36 4次下载
    用<b class='flag-5'>Android</b>手机<b class='flag-5'>应用程序</b>来<b class='flag-5'>控制</b>调频收音机的创建