APP下载

基于涂鸦IoT的智能灯光控制系统

2022-07-21沈珊瑚

物联网技术 2022年7期
关键词:灯带涂鸦灯光

邓 超,沈珊瑚

(杭州师范大学 信息科学与技术学院,浙江 杭州 311121)

0 引 言

现如今,许多城市都安装了氛围彩灯,如写字楼外墙的大型灯光幕墙、道路旁的节日彩灯等。这些彩灯丰富了人们的生活,但是传统灯光控制系统的诸多缺陷也同时暴露出来,如不能实现远程控制,需要在现场对灯光设备进行调节,这些都使灯光控制系统不够智能和灵活;并且大多采用的是能耗不是很理想的灯源,对能源的消耗比较大。当前倡导节能减排的呼声愈来愈高,未来的灯光控制一定会朝着更加智能和节能的方向发展。现在嵌入式技术已经极大地改变了人们的日常生活,生活中无不充斥着嵌入式开发的产品,小到手腕上佩戴的智能手表、运动手环,大到常见的家用电器,如冰箱、空调、洗衣机等;随着互联网技术的飞速发展,云计算、大数据等新技术还可以为物联网终端设备提供可靠的数据存储和计算功能。据此,本文设计并实现了一个可以对灯光设备进行远程控制的系统。

1 系统设计

本灯光控制系统使用涂鸦公司提供的WiFi模块WB3S与MCU通过USART串口进行通信,模块可以通过WiFi将灯光的状态数据上传至涂鸦云平台,当涂鸦云平台检测到有数据变化时便会向绑定了此设备的手机推送灯光的状态信息,手机上便可以显示此时灯光的亮度和色彩等参数。需要对当前灯光设备进行调节时,用户可通过手机APP将对应的控制信号上传至涂鸦云平台,再由涂鸦云平台定期推送数据到绑定的设备上,之后通过对数据帧的解析得到需要控制的变量和值,利用MCU输出相应的控制信号对灯带进行控制。系统总体框架如图1所示。

图1 系统框架

本系统所用到的模块和资源主要包括以下几种:

(1)灯光设备:本系统使用的是型号为WS2812系列的灯带。WS2812系列LED是一种内部集成了控制电路和发光电路且可单点外控的LED发光装置,每个元件就是一个发光的基本单位,构成一个像素点;其内部集成了R、G、B三种颜色的LED灯珠,还有一个带有数据锁存和整形功能的控制电路。此灯带采用单线归零码作为驱动信号,每位归零码的高低电平持续时间见表1所列。每个元件在Din信号输入端接收控制设备发送的单线归零码控制信号,读取出其中的数据后将自身的数据锁存起来;之后将后续的信号经过整形电路整形后从Dout信号输出引脚发送给下一个元件,从而保证可以实现多个灯珠的级联控制。

表1 WS2812B归零码规则

(2)WiFi模块:本系统使用的是涂鸦智能公司提供的WiFi模块,此模块内部集成了WiFi协议相关的库函数,使用串口与外部进行通信,实现了透传的功能。同时此模块还提供了WiFi通信中较为常见的Smart配网模式和AP配网模式。如图2所示,涂鸦模块在初始化完成后会根据不同的配网模式做出不同行为。处于AP配网模式时模块会作为一个热点,手机可以连接这个热点并将设备所处环境中可用的WiFi信息发送给模块;处于Smart配网模式下的模块需要不断监听当前环境中的所有数据包,这就需要手机不断向当前网络环境中发送可用的WiFi信息。当模块通过以上两种方式中的任意一种接收到WiFi信息后会通过此信息登录此WiFi路由器,登录成功并连接上WiFi后涂鸦模块会自动连接涂鸦云平台。至此涂鸦WiFi模块的配置全部完成。

图2 涂鸦模块配网过程

(3)涂鸦云:是由涂鸦智能公司开发的云端数据平台,有存储数据和推送消息的功能;它不仅可以接收来自WiFi模块的状态信息,还可以接收来自手机的控制信息,并将对应的信息发送给对应的终端设备,实现状态的可读和可控,如图3所示。

图3 状态和控制数据流动示意图

2 系统关键技术

2.1 LED灯带驱动的实现

本系统使用的WS2812B灯带的驱动信号是单线的归零码信号,需要达到纳秒级别的精度;经过实验测试发现,采用传统的I/O翻转输出或定时器输出时,都会因调用系统资源过多导致时序不符合灯带归零码的需求,进而无法控制。然而,STM32芯片内部的SPI通信功能可以达到较高的电平翻转速度,只需对SPI发送的数据进行一定的设计即可模拟归零码的波形。通过查询STM32F103系列芯片的数据手册得知,SPI是挂载在APB2时钟总线上的,最高频率为72 MHz,将其进行八分频,得到9 MHz,即相邻两位之间时间差为1/9 MHz=111.11 ns,将此频率作为采样频率,设置数据宽度为8位,经过计算发送的数据为5位1和3位0,恰好可以表示归零码的1码。

设计了一个以灯带LED灯珠个数为长度的数组,每次需要刷新数据时,先对数组中的每一个元素进行赋值计算;准备好这个数组后通过DMA的方式直接将数组中的数据搬运到SPI发送的缓冲区中,SPI便可以按照数据依次进行发送,模拟出归零码的波形。

2.2 色彩空间转换的实现

本系统采用的WS2812B灯带的控制信号是24位的RGB数据,而涂鸦模块向接口提供的是HSV数据,这就需要对两种颜色空间的变量进行转换。在本系统中使用如下公式将HSV颜色转换为RGB颜色,以实现对灯带的控制。

2.3 灯带遥控的实现

涂鸦智能公司除了提供WiFi模块外,还提供了相应的SDK包,内部封装了涂鸦模块数据帧的封包和解包库函数,并向上层调用者提供了不同控制操作的接口。在接收到对应的控制信号时便可以调用对应的接口函数实现对应的功能。

涂鸦SDK执行顺序如图4所示。程序运行时需要在main函数的while(1)循环中不断调用wifi_uart_service函数,此函数会继续调用data_handle函数,在此函数中判断接收到的串口数据帧的类型,如心跳包、产品信息、WiFi工作状态、命令下发和状态上报。如果是命令下发的数据帧便会继续调用data_point_handle函数,此函数会对一些异常条件进行判断。如果数据正常,则会进入dp_download_handle函数中,此函数对具体的数据点调用了不同的处理函数,如开关处理的指令就会调用dp_download_switch_led_handle函数,用户需要在这个函数中编写自己的逻辑代码,当开关布尔值为0时,关闭所有灯光;布尔值为1时,打开所有灯光,并且默认颜色为白光。

图4 涂鸦SDK执行顺序

对于彩灯的色彩数据需要进行一定的处理,因为模块发送的是HSV色彩空间的色彩数据,且为ASCII码的形式。先将ASCII码转换为十六进制的形式,如果为0x30至0x39之间的数据,即为字符0至9,转换为十六进制的0x00至0x09;如果为0x41至0x46,即字符A至F,转换为十六进制的0x0A至0x0F;如果为0x61至0x66,即字符a至f,也转换为十六进制的0x0A至0x0F,忽略了数据的大小写字符问题。涂鸦串口协议规定了HSV三个分量的范围分别是0~360、0~1 000和0~1 000,但是转换公式中S和V的范围是0~1,所以需要将S和V两个分量归一化到0~1,分别除以1 000即可得到。得到归一化的HSV三个分量后就可以调用HSV与RGB颜色空间的转换函数进行转换,之后根据转换后的RGB值为数组的每一位进行赋值,再启动SPI发送,将颜色数据发送给每一位LED灯珠。

3 系统性能实验与分析

3.1 网络连接测试

保证WiFi连接的高效可靠是实现后续控制的基础,也是本系统的核心功能,关系到之后的控制命令和状态信息能否顺利传输。

3.1.1 配网功能测试

首先需要为设备建立一个信号质量良好的WiFi环境,同时打开手机上的涂鸦APP,打开自动搜索功能,将设备上电。此时系统上的LED灯会短暂闪烁,表示此时处于AP配网模式;接下来手机端提示已找到设备,将WiFi的账号和口令填入对话框中,等待涂鸦模块连接好路由器并登录涂鸦云后,可观察到LED灯处于常亮的状态,表示涂鸦模块已经完成了登录涂鸦云的步骤,同时手机端也会显示出控制面板。

3.1.2 断电重连测试

涂鸦WiFi模块内部有存储数据的内存空间,可以将上次配置好的WiFi信息保存下来,在断电后重新上电时会自动使用内存中的WiFi信息去连接。

在模块已经配置好WiFi连接后断开系统的电源线,等待一段时间后重新连接电源线,此时LED灯还是处于熄灭的状态,稍等片刻后LED灯会常亮,表示已经完成了连接路由器和登录涂鸦云的步骤,之后操控手机APP面板,也可以控制灯光设备的状态。

3.2 灯光控制功能测试

在涂鸦模块连接好WiFi的状态下,点击手机APP面板上的开关,如图5所示,灯光亮起,再次点击开关,灯光熄灭,同时手机面板上的图标状态也会同步切换为关闭的样式;点击不同颜色的按钮,灯光会切换为对应的颜色,手机面板同样会切换为对应颜色的状态;调整灯光亮度的进度条,灯光会随之变亮或变暗。

图5 手机涂鸦APP控制界面

4 结 语

本文针对当前灯光控制设备的智能化程度不高及能耗较高问题,对现有灯光控制设备进行调查分析,研究了当前WiFi通信的实现方案;利用能耗相对较低的LED型光源及涂鸦智能公司推出的WiFi模块,使用STM32F103C8T6作为主控芯片,并将控制数据和状态数据交给涂鸦云数据平台进行管理和推送,从而设计了一种可以远程遥控灯光设备的系统。经过实验测试,通信效果良好,实现了远程控制功能。

猜你喜欢

灯带涂鸦灯光
水中灯光秀
电路状态展示教具制作
今晚的灯光亮了天
创意涂鸦
来一场灯光派对
创意涂鸦
隐形灯带点亮家的光芒
涂鸦等
奇妙光涂鸦