智能家居之旅(7):HomeAssistant开发板的RGB颜色

2024-07-18 安信可科技 微信公众号
开发板,Ai-M61,安信可科技 开发板,Ai-M61,安信可科技 开发板,Ai-M61,安信可科技 开发板,Ai-M61,安信可科技

hello,有谁还记得之前小美的视频?当时做了一个RGB灯,并且说了 RGB的一些开发过程。所以说RGB实体很早之前就已经开发好了,只是一直没有写帖子介绍它的用法。今天就给大家介绍一下 RGB 彩灯怎么上HomeAssistant,然后控制Ai-M61开发板的 RGB 灯的颜色,感觉这个项目用来控制家里的灯条就挺不错的。

彩灯实体创建

1.彩灯实体资源启用

彩灯实体在 HomeAssistant 上描述为 Light,HomeAssistant-C 上默认也是不开启的,所以需要在 homeAssistantDevConfig.h 当中把 #define CONFIG_ENTITY_ENABLE_LIGHT 的值置 1:

2.Light 实体创建

彩灯(Light)实体的创建位置和其他实体一样,就是在 MQTT 连接成功的事件里面,这里就不多说了,需要说明的是,彩灯实体会比其他实体多很多的控制主题,有开关、亮度、颜色等等。HomeAssistant-C 中,默认只给开关功能提供默认的主题,所以在创建实体的时候,除了 name、unique_id 参数之外,还需要给颜色控制灯主题赋值参数,例如:


static ha_lh_entity_t rgb_light = {

                .name = "彩灯",

                .unique_id = "light_rgb01",

                .rgb.rgb_command_topic = "light_rgb01/set",

                .rgb.rgb_state_topic = "light_rgb01/state",

            };

            homeAssistant_device_add_entity(CONFIG_HA_ENTITY_LIGHT, &rgb_light);


HA 设备显示

获取 HomeAssistant 的控制指令在 HomeAssistant-C 当中,暂时定义好了 Light 的三个控制事件:

HA_EVENT_MQTT_COMMAND_LIGHT_SWITCH,//light 灯的开关事件
HA_EVENT_MQTT_COMMAND_LIGHT_RGB_UPDATE,//light 灯的 RGB 颜色下发事件
HA_EVENT_MQTT_COMMAND_LIGHT_BRIGHTNESS,//light 灯的亮度数据下发事件


在这里只对 

HA_EVENT_MQTT_COMMAND_LIGHT_SWITCH 和 HA_EVENT_MQTT_COMMAND_LIGHT_RGB_UPDATE 这两个事件来控制 RGB,在 HomeAssistant 事件回调函数当中(这里的函数名为:ha_event_cb),添加以下内容:


case HA_EVENT_MQTT_COMMAND_LIGHT_SWITCH:

            break;

        case HA_EVENT_MQTT_COMMAND_LIGHT_RGB_UPDATE:

            break;


1.读取 HA 的开关控制命令

HomeAssistant 平台的下发开关控制之后,会触发 HA_EVENT_MQTT_COMMAND_LIGHT_SWITCH 事件,所以在 

HA_EVENT_MQTT_COMMAND_LIGHT_SWITCH 下,打印开关信息,实现有开关下发就输出信息,然后返回当前开关状态:


case HA_EVENT_MQTT_COMMAND_LIGHT_SWITCH:


LOG_I("<<<<<<<<<<   HA_EVENT_MQTT_COMMAND_LIGHT_SWITCH %s", ha_dev->entity_light->command_light->light_state?"ON":"OFF");

homeAssistant_device_send_entity_state(CONFIG_HA_ENTITY_LIGHT, ha_dev->entity_light->command_light, ha_dev->entity_light->command_light->light_state);

break;


2.读取 HA 的颜色更新命令

同样的,HomeAssistant 平台设置颜色时,会触发 HA_EVENT_MQTT_COMMAND_LIGHT_RGB_UPDATE 事件,这时就需要在这个事件当中获取颜色 RGB 的颜色值,在这个事件下添加以下内容,把颜色 R,G,B 的值打印出来并同步给 HA:


case HA_EVENT_MQTT_COMMAND_LIGHT_RGB_UPDATE:

             LOG_I("<<<<<<<<<<   HA_EVENT_MQTT_COMMAND_LIGHT_RGB_UPDATE,RGB=%d,%d,%d", ha_dev->entity_light->command_light->rgb.red, ha_dev->entity_light->command_light->rgb.green, ha_dev->entity_light->command_light->rgb.blue);

            // device_rgb_update_color(ha_dev->entity_light->command_light->rgb.red, ha_dev->entity_light->command_light->rgb.green, ha_dev->entity_light->command_light->rgb.blue);

            homeAssistant_device_send_entity_state(CONFIG_HA_ENTITY_LIGHT, ha_dev->entity_light->command_light, ha_dev->entity_light->command_light->light_state);

            break;


验证结果

控制 RGB

开发板上的 RGB 是直接由引脚控制,想要实现颜色调节的话,就需要开启 PWM 控制,通过控制红绿蓝三基色来实现调色。先要把控制 RGB 的引脚启动 PWM 功能,先看一下 Ai-M61 开发板 RGB 的接线情况:

1.初始化 RGB 引脚

已经知道引脚配置之后,直接在主函数当中初始化 RGB 引脚,在初始化阶段添加以下代码


struct bflb_device_s* gpio;


    gpio = bflb_device_get_by_name("gpio");

    bflb_gpio_init(gpio, 12, GPIO_FUNC_PWM0 | GPIO_ALTERNATE | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_1);

    bflb_gpio_init(gpio, 14, GPIO_FUNC_PWM0 | GPIO_ALTERNATE | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_1);

    bflb_gpio_init(gpio, 15, GPIO_FUNC_PWM0 | GPIO_ALTERNATE | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_1);


    pwm = bflb_device_get_by_name("pwm_v2_0");

    //100Hz

    struct bflb_pwm_v2_config_s cfg = {

        .clk_source = BFLB_SYSTEM_XCLK ,

        .clk_div = 40,

        .period = 1000,

    };


    bflb_pwm_v2_init(pwm, &cfg);

    bflb_pwm_v2_channel_positive_start(pwm, PWM_CH0);

    bflb_pwm_v2_channel_positive_start(pwm, PWM_CH2);

    bflb_pwm_v2_channel_positive_start(pwm, PWM_CH3);

    bflb_pwm_v2_start(pwm);


2.调色函数

因为 R,G,B 的值最高只有 255,对应 PWM 占空比 100%,所以我们在调色的时候,就需要把目标颜色的 RGB 值计算出相对性的占空比,然后赋值给 PWM 占空比控制函数。因为我们使用的 PWM 的频率是 1KHz,所以我们在计算占空比的时候,需要 乘以 1000,因为我们就能达到下面这个函数:


void device_rgb_update_color(uint8_t red, uint8_t green, uint8_t blue)

{

    uint16_t color_red_period = 1000*red/255;

    uint16_t color_green_period = 1000*green/255;

    uint16_t color_blue_period = 1000*blue/255;

    bflb_pwm_v2_stop(pwm);

    bflb_pwm_v2_channel_set_threshold(pwm, PWM_CH0, 0, color_red_period);

    bflb_pwm_v2_channel_set_threshold(pwm, PWM_CH2, 0, color_green_period);

    bflb_pwm_v2_channel_set_threshold(pwm, PWM_CH3, 0, color_blue_period);

    bflb_pwm_v2_start(pwm);


}

使用这个函数的时候,只需要把 R,G,B 三个数值按顺序赋值就行了。


3.RGB 的亮灭

有了调色的函数之后,灭掉所有灯,只需要把颜色值全部设置成 0,亮的时候,就把 R,G,B 重新赋值就行了:


//控制RGB

            if (!ha_dev->entity_light->command_light->light_state) {

                device_rgb_update_color(0, 0, 0);

            }

            else {

                if (ha_dev->entity_light->command_light!=NULL)

                    device_rgb_update_color(ha_dev->entity_light->command_light->rgb.red, ha_dev->entity_light->command_light->rgb.green, ha_dev->entity_light->command_light->rgb.blue);

            }


验证结果

因为默认 PWM 为 0,所以烧录之后,灯不会亮,需要设置一下颜色,灯才会亮。

4.设置颜色

设置颜色就更简单了,只需要把 R,G,B 值传

给 device_rgb_update_color 函数就行。


case HA_EVENT_MQTT_COMMAND_LIGHT_RGB_UPDATE:

            LOG_I("<<<<<<<<<<   HA_EVENT_MQTT_COMMAND_LIGHT_RGB_UPDATE,RGB=%d,%d,%d", ha_dev->entity_light->command_light->rgb.red, ha_dev->entity_light->command_light->rgb.green, ha_dev->entity_light->command_light->rgb.blue);

            // device_rgb_update_color(ha_dev->entity_light->command_light->rgb.red, ha_dev->entity_light->command_light->rgb.green, ha_dev->entity_light->command_light->rgb.blue);

            homeAssistant_device_send_entity_state(CONFIG_HA_ENTITY_LIGHT, ha_dev->entity_light->command_light, ha_dev->entity_light->command_light->light_state);

            device_rgb_update_color(ha_dev->entity_light->command_light->rgb.red, ha_dev->entity_light->command_light->rgb.green, ha_dev->entity_light->command_light->rgb.blue);

            break;


验证结果

总结

本帖子的内容稍微有点跳了,这要求大家需要熟悉 HomeAssistant-C 库RGB 实体还有一些功能需要完善,比如添加 RGB 设置的默认主题,后面再给大家介绍。

授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 0

本文由中国颜值的半壁江山转载自安信可科技 微信公众号,原文标题为:智能家居之旅(7):HomeAssistant开发板的RGB颜色,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关研发服务和供应服务

评论

   |   

提交评论

全部评论(0

暂无评论

相关推荐

Ai-BS21系列烧录指导——开发板or模组

本篇以Ai-BS21-32S_Kit为例指导烧录固件,这是由深圳市安信可科技有限公司开发的蓝牙星闪开发板。该模块核心处理器芯片Hi2821是一款高集成2.4GHzSoCBLE&SLE芯片,支持BLE5.4/SLE1.0,集成RF电路,RF包含功率放大器PA、低噪声放大器、TX/RXSwitch、集成电源管理等模块,支持1M/2M/4M3种带宽,最大支持12Mbit/s速率。

2024-06-24 -  设计经验 代理服务 技术支持 批量订货

打卡​智能家居之旅(5):Ai-WB2 使用HomeAssistant-C库接入HomeAssistant

之前所有写的《智能家居之旅》帖子代码都是基于Ai-M61来开发的,不少大佬跟我反馈说:Ai-M61/62只用来连接MQTT太浪费资源了,Ai-WB2更具性价比!我觉得有道理,所以昨天就把HomeAssistant-C 给做了一次大改,提升了耦合性,目前仓库的master分支也可以支持Ai-WB2了,现在,跟着我来试试吧!

2024-07-22 -  设计经验 代理服务 技术支持 批量订货

用Ai-WB2开发板做智能家居全彩LED小夜灯

介绍用Ai-WB2开发板做智能家居全彩LED小夜灯的方法及技术要求。

2024-11-22 -  设计经验 代理服务 技术支持 批量订货

低能耗、低时延、快速度,星闪开发板Ai-BS21-32S-Kit更多场景应用,邀您一起来探索!

万众期待的星闪开发板上架了!Ai-BS21-32S-Kit 低延迟,高效率!话不多说!先回顾下基本参数信息。

2024-06-23 -  产品 代理服务 技术支持 批量订货

安信可AiPi-BW-LEDC小安派基于瑞昱BW20设计,带有灯带控制程序

这次带来的小安派是基于安信可最新发布的BW20-12F模组设计的AiPi-BW-LEDC。BW20-12F是基于瑞昱RTL8711芯片设计的模组(2.4G+5.8G双频WiFi模块,自带BLE5.0蓝牙,可支持Wi-Fi Mesh 组网),BW20系列的SDK是开源的,大家有需要可以在github上获取SDK进行二次开发。AiPi-BW-LEDC中开发了一个灯带控制程序,可以对灯带进行控制和调节。

2024-11-30 -  产品 代理服务 技术支持 批量订货

【IC】安信可最新发布Ai-M61和Ai-M62两款WiFi 6+BLE5.3+X模组,最高主频可达320M

通过长期细致深入的研发设计及反复打磨,安信可重磅新品WiFi 6+BLE5.3+X模组——Ai-M61和Ai-M62两款系列模组惊艳亮相,力求为用户带来性能和体验的全面提升!Ai-M61&Ai-M62系列分别搭载BL618、BL616芯片作为处理器,支持Wi-Fi 802.11b/g/n/ax协议和BLE 5.3协议以及丰富的外围接口。

2023-04-04 -  新产品 代理服务 技术支持 批量订货

高性能开发板Ai-M61-32S-Kit助力Wi-Fi6+BLE5.3模组

Ai-M61-32S-Kit是针对Ai-M61-32S模组设计的开发板。Ai-M61-32S是由深圳市安信可科技有限公司开发的Wi-Fi6+BLE5.3模组,该模组搭载BL618芯片作为核心处理器,支持Wi-Fi 802.11b/g/n/ax协议和BLE协议,支持Thread协议。

2024-06-22 -  产品 代理服务 技术支持 批量订货

星闪开发板or模组烧录指导

Ai-BS21-32S_Kit是由安信可科技开发的蓝牙星闪开发板。该模块核心处理器芯片Hi2821是一款高集成2.4GHzSoCBLE&SLE芯片,支持BLE5.4/SLE1.0,集成RF电路,RF包含功率放大器PA、低噪声放大器、TX/RXSwitch、集成电源管理等模块,支持1M/2M/4M3种带宽,最大支持12Mbit/s速率。

2024-06-21 -  设计经验 代理服务 技术支持 批量订货

Ra-09系列开发板入门教程,标准LoRaWAN协议对接国外 TTN LoRaWAN 开源服务器

本文章将说明如何在TTN中创建应用与节点设备,配置安信可Ra-09模块连接至TTN服务,实现数据发送与接收。

2024-11-19 -  设计经验 代理服务 技术支持 批量订货

安信可星闪开发板与西门子PLC通信的应用探索

星闪技术作为一项中国原生的、具有竞争力的近距离无线通信技术,通过技术创新和标准体系建设,打破了传统蓝牙和Wi-Fi在特定应用领域的一些局限性,为物联网、车联网、工业互联网等场景带来了更高性能、更安全、更具成本效益的无线连接解决方案。随着相关产品的不断推出和生态系统的持续完善,星闪技术有望在全球范围内产生深远影响,成为未来短距离无线通信领域的重要力量。

2024-06-24 -  设计经验 代理服务 技术支持 批量订货

安信可推出基于Ai-M61-32S的屏幕驱动开发板,支持2.8/3.5寸等30Pin SPI显示屏

小安派-DSL(AiPi-DSL) 是安信可开源团队专门为 Ai-M61-32S 设计的一款屏幕驱动开发板,支持 2.8/3.5 寸等 30Pin SPI 显示屏、2.4 寸及 1.28 寸等 18Pin SPI 显示屏。

2023-07-13 -  原厂动态 代理服务 技术支持 批量订货

零基础开发小安派-Eyes-S1【入门篇】——工程文件架构

AiPi-Eyes-S1是安信可开源团队为Ai-M61-32S模组设计的开发板,支持WiFi6和BLE5.3,具备丰富的外设接口。开发板集成了多种接口,包括SPI屏幕、DVP摄像头、ES8388音频编解码器,并预留TF卡座和USB接口。开发资源包括入门教程、工程文件说明和烧录配置文件,适合初学者快速上手。

2024-11-15 -  设计经验 代理服务 技术支持 批量订货

打开智能家居之旅(3):Ai-M61/M62 接入HomeAssistant 实现点灯

上一篇我们介绍了MQTT设备如何接入HomeAssistant,这一篇就给大家讲一下Ai-M61/M62 开发板或者模组怎么通过编程来接入HomeAssistant。这次的帖子会从开发环境搭建开始讲,一直到HomeAssistant 控制Ai-M61-Kit 开发板的蓝灯,会有点长,请耐心看完。

2024-07-21 -  设计经验 代理服务 技术支持 批量订货

NodeMCU-8266 规格书

型号- NODEMCU-8266,ESP8266

2020.04.23  - 安信可科技  - 数据手册  - V1.2 代理服务 技术支持 批量订货 查看更多版本

【外设移植】基于AI-WB2-32S开发板的SG90舵机控制案例

介绍Ai-WB2模组驱动舵机控制(SG90)的技术要求和方案。

2024-11-05 -  应用方案 代理服务 技术支持 批量订货
展开更多

电子商城

查看更多

品牌:安信可科技

品类:LoRa开发板

价格:¥44.1000

现货: 0

品牌:安信可科技

品类:LoRa开发板

价格:¥44.1000

现货: 0

品牌:安信可科技

品类:wifi开发板

价格:¥39.2000

现货: 0

品牌:安信可科技

品类:wifi开发板

价格:¥24.5000

现货: 0

品牌:安信可科技

品类:wifi开发板

价格:¥23.1000

现货: 0

品牌:安信可科技

品类:语音开发板

价格:¥33.6000

现货: 0

品牌:安信可科技

品类:wifi开发板

价格:¥41.3000

现货: 0

品牌:安信可科技

品类:wifi开发板

价格:¥24.0800

现货: 0

品牌:安信可科技

品类:wifi开发板

价格:¥24.5000

现货: 0

品牌:安信可科技

品类:蓝牙开发板

价格:¥23.5200

现货: 0

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

品牌:RENESAS

品类:开发板

价格:¥259.1316

现货:48

品牌:RENESAS

品类:开发板

价格:¥4,100.0000

现货:20

品牌:迅为

品类:开发板

价格:¥378.2000

现货:15

品牌:RENESAS

品类:开发板

价格:¥5,052.4560

现货:8

品牌:RENESAS

品类:EVALUATION BOARD

价格:¥9,620.4300

现货:7

品牌:RENESAS

品类:开发工具

价格:¥19.9940

现货:7

品牌:RENESAS

品类:DEMO BOARD

价格:¥634.3680

现货:7

品牌:华普微电子

品类:开发板

价格:¥200.0000

现货:5

品牌:RENESAS

品类:开发板

价格:¥2,200.0000

现货:5

品牌:RENESAS

品类:开发板

价格:¥4,000.0000

现货:5

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

服务

查看更多

FR4/高频高速PCB加工

可加工PCB板层数1~40,最小线宽/间距内层: 2.5/3mil (H/H OZ base copper);最小线宽/间距外层: 3/3mil (H/H OZ base copper);成品交货尺寸范围:10 * 10mm~570 * 1200mm。板厚范围:0.4mm-10mm。支持通孔板、HDI板、柔性板、刚柔结合板打样、小批量及批量生产。

最小起订量: 1 提交需求>

PCB快板打样定制

可加工PCB层数:1-30层;板材类型:FR4板/铝基板/铜基板/刚扰结合板/FPC板/高精密板/Rogers高频板;成品尺寸:5*5mm~53*84cm;板厚:0.1~5.0mm。

最小起订量: 1 提交需求>

查看更多

授权代理品牌:接插件及结构件

查看更多

授权代理品牌:部件、组件及配件

查看更多

授权代理品牌:电源及模块

查看更多

授权代理品牌:电子材料

查看更多

授权代理品牌:仪器仪表及测试配组件

查看更多

授权代理品牌:电工工具及材料

查看更多

授权代理品牌:机械电子元件

查看更多

授权代理品牌:加工与定制

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面