# rgb_controller **Repository Path**: soonliao/rgb_controller ## Basic Information - **Project Name**: rgb_controller - **Description**: 基于星闪技术的氛围灯控制器作品旨在实现一款技术领先、功能强大的智能家居RGB氛围灯控制器。其核心将采用了先进的星闪(SparkLink)无线通信技术,该技术以其超低时延、高吞吐量和强抗干扰能力,确保了灯光控制的实时性和稳定性。通过星闪技术,控制器可以迅速响应用户的指令,实现毫秒级的RGB灯光调整,为用户带来极致的灯光体验。控制器不仅能根据用户需求实时调整灯光色彩与亮度,还能与其他智能家居设备无缝对 - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: fbb_ws63 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2024-07-13 - **Last Updated**: 2025-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于星闪技术的氛围灯控制器 ## 简介 本项目旨在实现一款技术领先的智能家居RGB氛围灯控制器。核心采用了先进的星闪(SparkLink)无线通信技术,具备超低时延、高吞吐量和强抗干扰能力,确保了灯光控制的实时性和稳定性。通过星闪技术,控制器能够迅速响应用户的指令,实现毫秒级的RGB灯光调整,为用户提供极致的灯光体验。此外,控制器不仅能够根据用户需求实时调整灯光色彩与亮度,还能与其他智能家居设备无缝对接,为现代生活增添便利与舒适。 ## 特点 1. 支持星闪(SparkLink)和Wi-Fi共存的方式实现设备控制。 2. 支持手势识别,通过无接触方式控制RGB灯光的颜色和亮度。 3. 移植FastLED库,支持更平滑的RGB灯光变化及多种颜色模式。 ## 应用场景介绍: ### 1. 家庭娱乐场景: 在家庭影院或客厅中,用户可以通过手势识别模块(如 PAJ7620U2)轻松控制氛围灯的亮度和颜色,营造出不同的观影氛围。例如,在观看恐怖电影时,氛围灯可以调整为暗淡的蓝色或红色,增强电影的沉浸感。 ### 2. 智能家居联动: 该氛围灯控制器可以与其他智能家居设备无缝对接,如智能音箱、智能电视等。用户可以通过语音指令或手机 APP 远程控制氛围灯,实现智能家居的联动控制,为现代生活增添无限便利与舒适。 ### 3. 商业展示场景: 在商场、展览馆等商业展示场所,氛围灯控制器可以根据展示内容或活动主题调整灯光效果,吸引顾客的注意力,提升展示效果。 ### 4. 个性化定制: 用户还可以根据自己的喜好和需求,自定义灯光效果,如设置特定的灯光颜色、亮度、变化模式等,满足个性化的照明需求。 ## 一、硬件说明 ### 1.1、PAJ7620U2 手势模块 PAJ7620U2 手势模块是一款功能强大的光学数组式传感器,凭借其出色的手势识别能力和接近检测功能,在多个领域得到了广泛应用。模块支持 9 种手势类型,包括上、下、左、右、前、后、顺时针旋转、逆时针旋转、挥动,并支持输出手势中断结果。本实验中作为 server 端(提供控制数据),通过其手势识别功能,实现智能家居 RGB 氛围灯控制器。 ![paj7620u2](./images/paj7620u2.png) [paj7620u2 规格书见 doc 目录](./doc/PAJ7620U2_spec.pdf),模块接线说明如下: **接线说明** | PAJ7620U2 | WE63 核心板/底板 | | ------------------------- | ------------------------------- | | VCC| 3.3V 或 5V| | GND| GND| | SDA| GPIO15(TXD1)| | SCL| GPIO16(RXD1)| | INT| GPIO10(A12)| 本案例中自行设计了 I2C 扩展板,如下图,如有需要可以下载[嘉立创 I2C 扩展板文件](https://gitee.com/soonliao/rgb_controller/blob/fbb_ws63/hw/ProProject_paj7620u2_2024-10-20.epro) ![paj7620u2_I2C_EXT](./images/3D_i2c_ext_2024-10-20.png) [paj7620u2 模块参考购买链接](https://detail.tmall.com/item.htm?id=674434332300&price=21.5&sourceType=item,item&suid=b4d3e32e-27bf-4513-9a2d-8e8b6f0dbd7b&shareUniqueId=27479325610&ut_sk=1.ZUpL7xnKDRwDAPsWIQ50kvlr_21646297_1720527607402.Copy.1&un=5ced882a9c13834b46e6040d6f65052e&share_crt_v=1&un_site=0&spm=a2159r.13376460.0.0&tbSocialPopKey=shareItem&sp_tk=SHNUUjNiVlVGUWQ=&cpp=1&shareurl=true&short_name=h.gS8Ueao3BZROARg&bxsign=scd1Adi3-5YQfQZPeXFFWSuaIUfHyuznvHUf4fonP_lsOJEd9GvKuruI-Gun7N_cM_8MTP8qX97gPN1PX_dDIxt5lPjCN2eEiWKfUsLmPRAA7j_GT4l_sBjyGNLhzcznqlE&tk=HsTR3bVUFQd&app=firefox&skuId=5003460521692) ### 1.2、SK9822LED 幻彩灯带 SK9822 LED 幻彩灯带双信号内置 IC 单点单控幻彩跑马灯带是一种集控制电路与发光电路于一体的嵌入式控制型 LED 光源产品,具有多项先进特性和广泛应用场景。 ![sk9822](./images/sk9822_led_strip.png) [sk9822 规格书见 doc 目录](./doc/sk9822_spec.pdf) ,本案例中 sk9822 灯带作为 client 端(接收数据),接线说明如下。 **接线说明** | SK9822 | WE63 核心板/底板 | | ---------------------- | ------------------------ | | 5V| 5V| | GND| GND| | CI| GPIO7/D10(CLK)| | DI| GPIO9/A9(DO)| [SK9822LED 幻彩灯带参考购买链接](https://item.taobao.com/item.htm?spm=a1z09.2.0.0.406e2e8dlQ27NT&id=676834168302&_u=dd10qgufaa7&skuId=4866008413317) 本案例中自行设计了 SK9822 扩展板,如下图,如有需要可以下载[嘉立创 SK9822 扩展板文件](https://gitee.com/soonliao/rgb_controller/blob/fbb_ws63/hw/ProProject_sk9822_2024-10-20.epro) ![SK9822_Board](./images/3D_sk9822_2024-10-20.png) ## 二、代码环境搭建 本实验在 Ubuntu20.04 环境下进行,需自行参考[WS63V100 SDK 开发环境搭建 用户指南.pdf](https://gitee.com/HiSpark/fbb_ws63/blob/master/docs/board/WS63V100%20SDK%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%20%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97.pdf)"1.2 搭建 Linux 开发环境"安装相关环境。支持以下两种下载方式,请按需使用: ### 2.1、代码下载方法一 此方法操作较为简单,无需额外修改,步骤如下 #### 2.1.1、个人仓库 fbb_ws63 代码下载 ubuntu 20.04 任意目录下 ``` git clone git@gitee.com:soonliao/fbb_ws63.git ``` #### 2.1.2、切换分支并初始化 submodule 执行以下命令切换到 fastled 分支并初始化 submodule ``` cd fbb_ws63 git checkout fastled git submodule update --init --recursive ``` 测试版本:ef2eb96994043561b950b93849f35c4a181c44da ### 2.2、代码下载方法二 #### 2.2.1、下载 fbb_ws63 仓库代码 下载 fbb_ws63 仓库代码,下载指令如下: ``` git clone git@gitee.com:HiSpark/fbb_ws63.git ``` 测试版本:1ab730a01314aa27438888e79148be21d64ba908 #### 2.2.2、下载 FastLED 仓库代码 下载已移植支持 hi3863 的第三方开源库 FastLED ,并切换到 fbb_hi3863 分支,指令如下: ``` cd fbb_ws63/src/open_source git clone git@gitee.com:soonliao/FastLED.git cd FastLED git checkout fbb_hi3863 ``` 测试版本:3f8808de611a4fe402e1420e6b052354ddcf26eb #### 2.2.3、拷贝 rgb_master 代码 将 vendor/other/demo/03_rgb_master 目录拷贝为 fbb_ws63/src/application/ws63/rgb_master 目录 ``` cd fbb_ws63/ cp -rf vendor/other/demo/03_rgb_master src/application/ws63/rgb_master ``` #### 2.2.4 增加 FastLED 编译支持 修改 fbb_ws63/src/open_source/CMakeLists.txt 增加 ``` add_subdirectory_if_exist(FastLED) ``` 修改 fbb_ws63/src/build/cmake/build_component.cmake 如以下 diff,解决 COMPONENT_CCFLAGS 无作用问题 ``` diff --git a/src/build/cmake/build_component.cmake b/src/build/cmake/build_component.cmake index f55e111..e9057f1 100755 --- a/src/build/cmake/build_component.cmake +++ b/src/build/cmake/build_component.cmake @@ -267,8 +267,11 @@ macro(build_component) endif() else() # one on rom. - + if(REWRITE_CCFLAGS STREQUAL true) + set(COMPILE_CCFLAGS ${COMPONENT_CCFLAGS}) + else() set(COMPILE_CCFLAGS ${ROM_CCFLAGS}) + endif() endif() check_if_closed_component(${COMPONENT_NAME}) ``` 修改 fbb_ws63/src/build/config/target_config/ws63/config.py 文件中如下位置增"FastLED" ``` 'ws63-liteos-app': { ...... 'ram_component': [ ...... "mqtt", "coap", "FastLED" ], } ``` #### 2.2.5 增加 rgb_master 编译支持 修改 fbb_ws63/src/application/Kconfig 增加 ``` osource application/ws63/rgb_master/Kconfig ``` 修改 fbb_ws63/src/application/ws63/CMakeLists.txt 增加 ``` add_subdirectory_if_exist(rgb_master) ``` 修改 fbb_ws63/src/build/config/target_config/ws63/config.py 文件中如下位置增"rgb_master" ``` 'ws63-liteos-app': { ...... 'ram_component': [ ...... "mqtt", "coap", "FastLED", "rgb_master" ], } ``` #### 2.2.6 增加 rgb_master 数据存储配置 1.middleware\chips\ws63\nv\nv_config\cfg\acore\app.json 文件"common":中添加以下字段 ``` , "rgb_master_wifi_info": { "key_id": "0x5101", "key_status": "alive", "structure_type": "rgb_master_wifi_info_t", "attributions": 1, "value": [ [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ] }, "rgb_master_on_off": { "key_id": "0x5102", "key_status": "alive", "structure_type": "uint8_t", "attributions": 1, "value": 0 }, "rgb_master_led_num": { "key_id": "0x5103", "key_status": "alive", "structure_type": "uint8_t", "attributions": 1, "value": 10 }, "rgb_master_brightness": { "key_id": "0x5104", "key_status": "alive", "structure_type": "uint8_t", "attributions": 1, "value": 100 }, "rgb_master_sence_id": { "key_id": "0x5105", "key_status": "alive", "structure_type": "uint8_t", "attributions": 1, "value": 0 }, "rgb_master_mode_id": { "key_id": "0x5106", "key_status": "alive", "structure_type": "uint8_t", "attributions": 1, "value": 0 } ``` 2.middleware\chips\ws63\nv\nv_config\include\nv_common_cfg.h 文件最后添加以下结构体 ``` /* rgb_master配网 ssid与密码 */ typedef struct { uint8_t ssid[WLAN_HILINK_SSID_LEN]; uint8_t password[WLAN_HILINK_PWD_LEN]; } rgb_master_wifi_info_t; ``` 以上修改可参考[0001-rgb-master-src-patch.patch](https://gitee.com/soonliao/rgb_controller/blob/fbb_ws63/fw/patch/0001-rgb-master-src-patch.patch) ## 三、如何编译 ### 3.1 编译 PAJ7620U2 手势模块 server 端固件,并烧录 server 端 进入 src 目录 ``` cd fbb_ws63/src ``` 如果编译了其他工程,请先执行以下指令清除 ``` rm -rf output ``` 输入如下指令配置 menuconfig ``` python3 build.py ws63-liteos-app menuconfig ``` 进入 Application 选择 Enable the RGB Master Sample.配置 ![rgb_master](./images/mc_rgb_master.png) 进入 Select SLE UART Type 选择 Enable SLE Paj7620U2 Server Sample.配置 ![paj7620u2](./images/mc_paj7620u2.png) ![paj7620u2_2](./images/mc_paj7620u2_2.png) 保存并退出,编译 ``` python build.py ws63-liteos-app -c ``` 将编译生成 fbb_ws63/src/output/ws63/fwpkg/ws63-liteos-app/ws63-liteos-app_all.fwpkg 烧录到连接 PAJ7620U2 手势模块的开发板 ### 3.2 编译 sk9822 灯带 client 端固件,并烧录 client 端 进入 src 目录 ``` cd fbb_ws63/src ``` 如果编译了其他工程,请先执行以下指令清除 ``` rm -rf output ``` 输入如下指令配置 menuconfig ``` python3 build.py ws63-liteos-app menuconfig ``` 进入 Application 选择 Enable the RGB Master Sample.配置 ![rgb_master](./images/mc_rgb_master.png) 进入 Select SLE UART Type 选择 Enable SLE Sk9822 Client Sample. 配置 ![sk9822](./images/mc_sk9822.png) ![sk9822_2](./images/mc_sk9822_2.png) 保存并退出,编译 ``` python build.py ws63-liteos-app -c ``` 将编译生成 fbb_ws63/src/output/ws63/fwpkg/ws63-liteos-app/ws63-liteos-app_all.fwpkg 烧录到连接 sk9822 灯带的开发板 ### 3.3 快速体验 也可烧录我个人仓库 fw 目录下的固件进行体验。 [SK9822LED 固件](https://gitee.com/soonliao/rgb_controller/blob/fbb_ws63/fw/sk9822_client/ws63-liteos-app_all.fwpkg) [PAJ7620U2 固件](https://gitee.com/soonliao/rgb_controller/blob/fbb_ws63/fw/paj7620u2_server/ws63-liteos-app_all.fwpkg) ## 四、运行结果 ### 4.1、手势控制 先重启 SK9822 client 后再重启paj7620u2 server,SLE 会自动连接,能实现从 paj7620u2 手势控制 SK9822 端的灯带亮度、变化模式、变化方向。 支持手势功能说明如下: 1)上下手势控制亮度调节 2)左右手势控制模式切换 3)前后手势控制灯带开关 4)顺时针逆时针手势切换场景 手势操控视频所示: [手势操控演示视频](https://gitee.com/soonliao/rgb_controller/blob/fbb_ws63/images/control_video.mp4) 灯光效果演示视频: [灯光演示视频](https://gitee.com/soonliao/rgb_controller/blob/fbb_ws63/images/led_sence.mp4) ### 4.2、SoftAP 配网及控制 SK9822 client 和 paj7620u2 server 端均支持通过 SotfAP 配网及控制 通过手机扫描 AP 如下图: ![手机扫描SoftAP](./images/SoftAP.jpg) 连接对应 AP 后,在浏览器输入 192.168.43.1 进入配网页面,可在页面进行开关、切换模式、切换场景、调节亮度、设置 LED 灯珠个数以及配置网络。(2024.10.20:SLE 配网和清除暂不支持) ![配网页面](./images/softAP_web_config.jpg) SK9822 端 SoftAP 状态 ![SK9822_SoftAP](./images/sk9822_SoftAP.jpg) PAJ7620U2 端 SoftAP 状态 ![SK9822_SoftAP](./images/paj7620u2_SoftAP.jpg) ### 4.3、通过 STA 控制及修改配置 在 SotfAP 状态配置正确网络信息后会自动重启并连接 Wifi,连接完成后在 OLED 显示屏上显示获取的 IP,也可通过这个 IP 进行控制 控制页面如下图: ![配网成功Web控制页](./images/web_config_page.jpg) SK9822 端 STA 连接状态 ![SK9822_SoftAP](./images/sk9822_STA.jpg) PAJ7620U2 端 STA 连接 状态 ![SK9822_SoftAP](./images/paj7620u2_STA.jpg) 4、设备支持断电记忆功能,重启后会自动连接上次配置的 WIFI,并恢复上次的 LED 状态。 ### 4.4、演示视频 基于星闪技术的氛围灯控制器演示视频 https://www.alipan.com/s/Qa5yrXNgkes 提取码: 847l