在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

智能家居之旅(7):HomeAssistant開發板的RGB顏色

AIoT行業洞察 ? 來源:AIoT行業洞察 ? 作者:AIoT行業洞察 ? 2024-07-03 16:39 ? 次閱讀

hello,有誰還記得之前小美的視頻?當時做了一個RGB燈,并且說了 RGB的一些開發過程。所以說RGB實體很早之前就已經開發好了,只是一直沒有寫帖子介紹它的用法。今天就給大家介紹一下 RGB 彩燈怎么上HomeAssistant,然后控制Ai-M61開發板的 RGB 燈的顏色,感覺這個項目用來控制家里的燈條就挺不錯的。

wKgZomaFDkSAftXLABCGnGpLyrQ663.gif

彩燈實體創建

1.彩燈實體資源啟用

彩燈實體在 HomeAssistant 上描述為 Light,HomeAssistant-C 上默認也是不開啟的,所以需要在 homeAssistantDevConfig.h 當中把#define CONFIG_ENTITY_ENABLE_LIGHT的值置 1:

wKgaomaFDkSAf-z9AAAUWLY7XDU90.jpeg

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 設備顯示

wKgZomaFDkyAUegxAABen5rzpd472.jpeg

獲取 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;

wKgaomaFDkyAEZQiAACwjS6Vxkw84.jpeg

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;

驗證結果

wKgZomaFDlKAGNhOAABREG_yJPw53.jpeg

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;

驗證結果

wKgaomaFDlKAKxVgAABmhotp-4E55.jpeg

控制 RGB

開發板上的 RGB 是直接由引腳控制,想要實現顏色調節的話,就需要開啟 PWM 控制,通過控制紅綠藍三基色來實現調色。先要把控制 RGB 的引腳啟動 PWM 功能,先看一下 Ai-M61 開發板 RGB 的接線情況:

顏色GPIOPWM 通道紅燈IO12PWM0綠燈IO14PWM2藍燈IO15PWM3

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);

wKgZomaFDlSATHqyAADWSnqUmAg66.jpeg

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);

}

wKgaomaFDlSAcH-UAAB4hwFrkp059.jpeg

驗證結果

因為默認 PWM 為 0,所以燒錄之后,燈不會亮,需要設置一下顏色,燈才會亮。

wKgZomaFDlWAb7FoAAtKtvNdC_U288.gif

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;

wKgZomaFDlWAR6joAABdXVFHqf023.jpeg

驗證結果

wKgaomaFDlaAESmvAA8ylTPpDHA361.gif

總結

本帖子的內容稍微有點跳了,這要求大家需要熟悉 HomeAssistant-C 庫RGB 實體還有一些功能需要完善,比如添加 RGB 設置的默認主題,后面再給大家介紹。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • RGB
    RGB
    +關注

    關注

    4

    文章

    801

    瀏覽量

    58737
  • 智能家居
    +關注

    關注

    1930

    文章

    9612

    瀏覽量

    186544
收藏 人收藏

    評論

    相關推薦

    【貝啟科技BQ3568HM開源鴻蒙開發板深度試用報告】2 - 智能家居中控屏界面設計:打造便捷的家居控制體驗

    引言 上個帖子介紹了貝啟科技BQ3568HM開源鴻蒙開發板的簡單情況,今天進行正式的軟件開發。 在智能家居日益普及的今天,一個直觀、易用的中控屏界面對于用戶來說至關重要。今天,我將向大家介紹我所完成
    發表于 01-24 16:11

    瑞芯微開發板/主板Android配置APK默認開啟性能模式方法

    本文介紹瑞芯微開發板/主板Android配置APK默認開啟性能模式方法,開啟性能模式后,APK的CPU使用優先級會有所提高。觸覺智能RK3562開發板演示,搭載4核A53處理器,主頻高達2.0GHz;內置獨立1Tops算力NPU
    的頭像 發表于 01-17 15:32 ?203次閱讀
    瑞芯微<b class='flag-5'>開發板</b>/主板Android配置APK默認開啟性能模式方法

    用Ai-WB2開發板智能家居全彩LED小夜燈

    免費包郵開發板贈送!安信可藍牙5.2低功耗開發板免費申請啦_嗶哩嗶哩_bilibiliwww.bilibili.com/video/BV1UgSiY1EP9/?spm_id_from
    的頭像 發表于 11-13 14:03 ?282次閱讀
    用Ai-WB2<b class='flag-5'>開發板</b>做<b class='flag-5'>智能家居</b>全彩LED小夜燈

    智能家居之旅(15):HA傳感器采集主板低功耗設計的遭遇

    ):HomeAssistant-C傳感器實體使用方法 智能家居之旅7):HomeAssistant開發
    的頭像 發表于 09-05 10:27 ?443次閱讀
    <b class='flag-5'>智能家居</b><b class='flag-5'>之旅</b>(15):HA傳感器采集主板低功耗設計的遭遇

    嵌入式linux開發板芯片的工作原理

    嵌入式Linux開發板是一種基于Linux操作系統的嵌入式系統開發平臺,它廣泛應用于工業控制、智能家居智能交通、醫療設備等領域。 嵌入式Linux
    的頭像 發表于 09-02 09:07 ?482次閱讀

    linux開發板與樹莓派的區別

    定義和用途 Linux開發板:Linux開發板是一種基于Linux操作系統的嵌入式開發板,通常用于工業自動化、物聯網、智能家居等領域。 樹莓派:樹莓派(Raspberry Pi)是一種
    的頭像 發表于 08-30 15:34 ?1158次閱讀

    機智云ESP8266開發板RGB彩燈控件

    隨著智能家居技術的迅猛發展,RGB彩燈控件正逐漸成為現代家庭不可或缺的一部分。在這一潮流中,機智云(Gizwits)的ESP8266開發板RGB彩燈控件以其先進的物聯網技術和多樣化的燈
    的頭像 發表于 08-09 08:10 ?468次閱讀
    機智云ESP8266<b class='flag-5'>開發板</b><b class='flag-5'>RGB</b>彩燈控件

    如何用一塊免費的PCB完成2元USB小夜燈控制器?

    使用HomeAssistant-C庫接入HomeAssistant 智能家居之旅(6):HomeAssistant-C傳感器實體使用方法
    的頭像 發表于 07-30 10:33 ?356次閱讀
    如何用一塊免費的PCB<b class='flag-5'>板</b>完成2元USB小夜燈控制器?

    智能家居之旅(9):HomeAssistant 的開關實體具象化

    (????)??嗨,時隔一個月,又開始關于 HA 的帖子了,前期介紹了一些實體的使用方法,后面的帖子會結合相應的硬件介紹,把實體真正應用起來,方便各位小伙伴在家里自己做一個智能家居。 本文概要
    的頭像 發表于 07-08 16:50 ?462次閱讀
    <b class='flag-5'>智能家居</b><b class='flag-5'>之旅</b>(9):<b class='flag-5'>HomeAssistant</b> 的開關實體具象化

    智能家居之旅(3):Ai-M61/M62 接入HomeAssistant 實現點燈

    上一篇我們介紹了MQTT設備如何接入HomeAssistant(打卡智能家居之旅(2):設備接入HomeAssistant的方法),這一篇就給大家講一下Ai-M61/M62
    的頭像 發表于 06-07 10:07 ?686次閱讀
    <b class='flag-5'>智能家居</b><b class='flag-5'>之旅</b>(3):Ai-M61/M62 接入<b class='flag-5'>HomeAssistant</b> 實現點燈

    打卡智能家居之旅(2):設備接入HomeAssistant的方法

    上次我們在安裝HomeAssistant的時候(打卡智能家居學習之旅(1):了解HomeAssistant),順便把MQTT 集成安裝好了。 為什么要裝MQTT 集成呢?Wi-Fi 設
    的頭像 發表于 06-07 09:36 ?1753次閱讀
    打卡<b class='flag-5'>智能家居</b><b class='flag-5'>之旅</b>(2):設備接入<b class='flag-5'>HomeAssistant</b>的方法

    打卡智能家居學習之旅(1):了解HomeAssistant

    大家好,說起智能家居,大家會想到什么呢?小安的腦海里就出現了鋼鐵俠的家:有電子智能管家,能夠控制家里的燈、開關等所有電子電器,當人回家的時候自動開燈,并且已經按照設定好時間燒了熱水。 但是現實
    的頭像 發表于 05-21 09:07 ?655次閱讀
    打卡<b class='flag-5'>智能家居</b>學習<b class='flag-5'>之旅</b>(1):了解<b class='flag-5'>HomeAssistant</b>

    智能家居系統的開發-基于米爾瑞薩RZ/G2UL開發板

    本篇評測由電子工程世界的優秀評測者“Bruceou”提供。1、項目背景智能家居控制系統,是以智能家居系統為平臺,家居電器及家電設備為主要控制對象,利用綜合布線技術、網絡通信技術、自動控制系統、音頻
    的頭像 發表于 05-17 08:01 ?1155次閱讀
    <b class='flag-5'>智能家居</b>系統的<b class='flag-5'>開發</b>-基于米爾瑞薩RZ/G2UL<b class='flag-5'>開發板</b>

    【Longan Pi 3H 開發板試用連載體驗】基于 Longan Pi 3H 開發板完成智能家居控制小型項目

    和存儲空間顯示為4GB+32G,如圖 三、項目計劃 我的試用項目是基于 Longan Pi 3H 開發板完成智能家居控制小型項目目標如下: 通過 Longan Pi 3H 開發板實現模擬家庭設備控制(如
    發表于 04-02 22:37

    不想當智能手表游戲掌機MP4的開發板不是好86盒

    有道是,生活不易,多才多藝。 只是沒想到有一天連開發板也能適用這句話。 你以為它只是一個平平無奇的智能家居86盒。 但它必要時它也可以化身智能手表。 智能手表面板demo 或者是一個
    發表于 03-18 10:24
    主站蜘蛛池模板: 日本三级11k影院在线 | 色西西 | 成年女人免费看一级人体片 | 四虎影院永久网站 | 五月香婷婷 | 在线观看色视频网站 | 99视频在线永久免费观看 | 午夜寂寞在线一级观看免费 | 亚洲视频你懂的 | 国产成人a一区二区 | 日本欧美一区二区三区免费不卡 | yy4080午夜理论一级毛片 | 黄网站在线观看永久免费 | 狠狠se| 啪啪国产视频 | 欧美日韩性大片 | 亚洲精品91大神在线观看 | 欧美a网站| 黄色欧美视频 | 美女扒开尿口给男人捅 | 日本69xxⅹxxxxxx19| 拍拍拍美女黄色1000视频 | 欧美一级特黄aaaaaaa在线观看 | 性欧美性free| 夜夜操天天 | 禁网站在线观看免费视频 | 国产精品永久免费自在线观看 | 一级看片免费视频 | 分分操免费视频在线观看 | 99pao强力打造免费高清色 | 日韩爱爱 | 国产女人伦码一区二区三区不卡 | 制服丝袜中文字幕第一页 | 免费在线看a | 一卡二卡三卡四卡无卡在线 | 午夜国产高清精品一区免费 | 一级a级国产不卡毛片 | 男人的天堂一区二区视频在线观看 | 色射色 | 国产小视频在线免费观看 | 性欧美巨大 |