精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內(nèi)不再提示

基于HMI-Board的智能宿舍空調(diào)管理系統(tǒng)設計案例

冬至子 ? 來源:qianmo ? 作者:qianmo ? 2023-07-31 14:57 ? 次閱讀

概述

為解決寢室空調(diào)總是忘關(guān)的問題,基于HMI-Board設計了一款智能空調(diào)管理器,可通過onenet指令下發(fā)實現(xiàn)遠程關(guān)閉空調(diào)。

設計思路

HMI-Board使用板載RW-007WiFi模塊,通過MQTT協(xié)議連接Onenet平臺,上報當前狀態(tài)信息,接收并解析Onenet平臺的下發(fā)指令。客戶端進入Onenet云平臺,可查閱HMI-Board上報數(shù)據(jù)流,也可通過MQTT指令下發(fā),遠程控制空調(diào)和其他設備。

開發(fā)環(huán)境

  • RT-Thread Studio
  • RA Smart Configurator
  • HMI-Board開發(fā)板
    設計過程
    本次設計的主要功能可分為兩個部分。

1.紅外數(shù)據(jù)的編解碼:

為獲取紅外指令的編碼數(shù)據(jù)并解析,臨時自制了一款示波器,通過該示波器采集了如下波形數(shù)據(jù):

1.jpg

通過該波形數(shù)據(jù),分析遙控器紅外編碼協(xié)議,并通過紅外發(fā)射管將紅外遙控數(shù)據(jù)復現(xiàn)。

最初使用的正點原子的F407開發(fā)板,搭配RT-Thread Studio的infrared軟件包進行紅外遙控數(shù)據(jù)的復現(xiàn)工作,通過修改NEC相關(guān)代碼,使之適配RTT的HWTIMER和PWM設備驅(qū)動框架。并最終調(diào)試通過。

在移植到HMI-Board開發(fā)板時,發(fā)現(xiàn)Renesas的底層設備驅(qū)動代碼與RTT設備驅(qū)動框架的對接工作任務量有點兒大。時間有限,為盡快完成設計,使用了Renesas的PWM的底層驅(qū)動函數(shù)搭配阻塞延時的方式,最終實現(xiàn)紅外數(shù)據(jù)的復現(xiàn)。

2.Onenet下發(fā)指令的接收與解析

Onenet下發(fā)指令的接收,使用了RTT提供的命令接受回調(diào)函數(shù)”onenet_set_cmd_rsp_cb”,在該函數(shù)內(nèi)通過查詢的方式將接收的字符數(shù)據(jù)與本地指令庫進行比對,并執(zhí)行相應操作。

工程代碼

上電自動連接網(wǎng)絡

#define WLAN_SSID "test_ssid"
#define WLAN_PASSWORD "12345678"
rt_wlan_connect(WLAN_SSID, WLAN_PASSWORD);//連接WiFi熱點
初始化MQTT,并連接Onenet平臺
onenet_mqtt_init();//MQTT初始化
onenet_upload_cycle();//開啟MQTT定時上傳
onenet_set_cmd_rsp_cb(onenet_cmd_rsp_cb);//開啟命令接收回調(diào)
紅外遙控數(shù)據(jù)編碼
//紅外發(fā)送數(shù)據(jù)裝載
static rt_size_t infrared_send(struct ir_raw_data* data, rt_size_t size)
{
rt_size_t send_size;
for (send_size = 0; send_size < size; send_size++)
{
infrared_send_buf[send_size] = (data[send_size].level<<28) + (data[send_size].us);
}
infrared_send_buf[size] = 0x5A5A5A5A;
return send_size;
}
#define CARRIER_WAVE 0xA
#define IDLE_SIGNAL 0xB
#define NO_SIGNAL 0x0
//紅外遙控數(shù)據(jù)編碼
static rt_err_t ir_decoder_write(void)
{
rt_uint32_t data_buff_1,data_buff_2;
data_buff_1 = (0x8050040A);
/* guidance code /
write_raw_data[0].level = CARRIER_WAVE;
write_raw_data[0].us = 9000;
write_raw_data[1].level = IDLE_SIGNAL;
write_raw_data[1].us = 4500;
for (rt_uint8_t index = 0; index < 64; index += 2)
{
if (((data_buff_1 << (index / 2)) & 0x80000000)) /
Logic 1 /
{
write_raw_data[2 + index].level = CARRIER_WAVE;
write_raw_data[2 + index].us = 646;
write_raw_data[2 + index + 1].level = IDLE_SIGNAL;
write_raw_data[2 + index + 1].us = 1643;
}
else /
Logic 0 /
{
write_raw_data[2 + index].level = CARRIER_WAVE;
write_raw_data[2 + index].us = 646;
write_raw_data[2 + index + 1].level = IDLE_SIGNAL;
write_raw_data[2 + index + 1].us = 516;
}
}
write_raw_data[66+0].level = CARRIER_WAVE;
write_raw_data[66+0].us = 646;
write_raw_data[66+1].level = IDLE_SIGNAL;
write_raw_data[66+1].us = 516;
write_raw_data[66+2].level = CARRIER_WAVE;
write_raw_data[66+2].us = 646;
write_raw_data[66+3].level = IDLE_SIGNAL;
write_raw_data[66+3].us = 1643;
write_raw_data[66+4].level = CARRIER_WAVE;
write_raw_data[66+4].us = 646;
write_raw_data[66+5].level = IDLE_SIGNAL;
write_raw_data[66+5].us = 516;
/
connect code /
write_raw_data[72].level = CARRIER_WAVE;
write_raw_data[72].us = 646;
write_raw_data[73].level = IDLE_SIGNAL;
write_raw_data[73].us = 20000;
data_buff_2 = (0x0004000E);
for (rt_uint8_t index = 0; index < 64; index += 2)
{
if (((data_buff_2 << (index / 2)) & 0x80000000)) /
Logic 1 /
{
write_raw_data[74 + index].level = CARRIER_WAVE;
write_raw_data[74 + index].us = 560;
write_raw_data[74 + index + 1].level = IDLE_SIGNAL;
write_raw_data[74 + index + 1].us = 1690;
}
else /
Logic 0 /
{
write_raw_data[74 + index].level = CARRIER_WAVE;
write_raw_data[74 + index].us = 560;
write_raw_data[74 + index + 1].level = IDLE_SIGNAL;
write_raw_data[74 + index + 1].us = 560;
}
}
/
epilog code /
write_raw_data[138].level = CARRIER_WAVE;
write_raw_data[138].us = 646;
write_raw_data[139].level = IDLE_SIGNAL;
write_raw_data[139].us = 43580;
infrared_send(write_raw_data, 140);
LOG_D("data_buff_1:0x8050040A data_buff_2:0x0004000En");
// rt_kprintf("data_buff_1:0x8050040A data_buff_2:0x0004000En");
// rt_thread_mdelay(200);
return RT_EOK;
}
紅外編碼數(shù)據(jù)發(fā)送
//紅外編碼數(shù)據(jù)發(fā)送
rt_err_t ir_send_data(void)
{
LOG_D("ir_send_startn");
for (rt_size_t i = 0;i<210;i++)
{
if ((infrared_send_buf[i] != 0x5A5A5A5A))/
Determine if it is a stop bit /
{
R_GPT_Stop(&g_timer2_ctrl);
if ((infrared_send_buf[i] & 0xF0000000) == 0xA0000000) /
Determine if it is a carrier signal /
{
R_GPT_Start(&g_timer2_ctrl);
}
rt_hw_us_delay(infrared_send_buf[i] & 0x0FFFFFFF);
}
else
{
R_GPT_Stop(&g_timer2_ctrl);
rt_kprintf("nir_send_ok!n");
return RT_EOK;
}
}
rt_kprintf("nir_send_error!n");
return RT_ERROR;
}
Onenet指令接收與解析
/
onenet mqtt command response callback function */
//static void onenet_cmd_rsp_cb(uint8_t *recv_data, size_t recv_size, uint8_t **resp_data, size_t *resp_size)
//#define LED_PIN BSP_IO_PORT_02_PIN_09
void onenet_cmd_rsp_cb(uint8_t *recv_data, size_t recv_size, uint8_t **resp_data, size_t *resp_size)
{
char res_buf[] = { "cmd is received!n" };
char my_res_buf[] = { "?????????" };//接收指令數(shù)據(jù)
LOG_D("recv data is %.*sn", recv_size, recv_data);
// LOG_D("%sn",recv_data);
// LOG_D("recv_size:%d,strlen:%dn",recv_size,strlen(recv_data));
strncpy(my_res_buf,recv_data,recv_size);
LOG_D("my_res_buf:%sn",my_res_buf);
const char *led0_on = "led0_on";
const char *led0_off = "led0_off";
const char *led1_on = "led1_on";
const char *led1_off = "led1_off";
const char *air_on = "air_on";
const char air_off = "air_off";
if(!strcmp(my_res_buf,led0_on)){rt_pin_write(0x0209, PIN_LOW);}
if(!strcmp(my_res_buf,led0_off)){rt_pin_write(0x0209, PIN_HIGH);}
if(!strcmp(my_res_buf,led1_on)){rt_pin_write(0x020A, PIN_LOW);}
if(!strcmp(my_res_buf,led1_off)){rt_pin_write(0x020A, PIN_HIGH);}
if(!strcmp(my_res_buf,air_on)){rt_pin_write(0x020A, PIN_LOW);}
if(!strcmp(my_res_buf,air_off)){ir_send_data();rt_pin_write(0x020A, PIN_LOW);}
/
user have to malloc memory for response data */
*resp_data = (uint8_t *) ONENET_MALLOC(strlen(res_buf));
strncpy((char *)*resp_data, res_buf, strlen(res_buf));
*resp_size = strlen(res_buf);
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 接收機
    +關(guān)注

    關(guān)注

    8

    文章

    1180

    瀏覽量

    53412
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1274

    瀏覽量

    39941
  • 紅外編解碼
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    4754
  • MQTT協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    97

    瀏覽量

    5352
  • HMI系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    1025
收藏 人收藏

    評論

    相關(guān)推薦

    HMI-Board開發(fā)板工程在添加新組件時LVGL組件會報錯的解決辦法

    在使用HMI-Board開發(fā)板開發(fā)lvgl的GUI界面設計時,可以直接在官方提供的lvgl的demo中開發(fā),這樣就可以省去lvgl最初的繁瑣配置步驟,這里真的要感謝官方,將最繁瑣的一步幫我們省去了,可以更加專注于LVGL的開發(fā)。
    的頭像 發(fā)表于 09-13 16:17 ?1462次閱讀
    <b class='flag-5'>HMI-Board</b>開發(fā)板工程在添加新組件時LVGL組件會報錯的解決辦法

    Renesas HMI Board挑戰(zhàn)賽—FSP工具使用

    RT-Thread和瑞薩推出的HMI-Board上的主控芯片型號為R7FA6M3AH3CFB。
    的頭像 發(fā)表于 11-22 11:32 ?1167次閱讀
    Renesas <b class='flag-5'>HMI</b> <b class='flag-5'>Board</b>挑戰(zhàn)賽—FSP工具使用

    使用DAPLink在對HMI-Board進行固件燒錄,棧溢出如何解決?

    使用DAPLink在對HMI-Board進行固件燒錄時,最初使用bin固件從0x000000處進行燒錄,但是燒錄到一半發(fā)現(xiàn)燒錯程序就將DAPLink拔出。但是隨后再使用之前可以成功燒錄的elf/hex等文件就報了棧溢出的錯誤。
    發(fā)表于 09-27 08:29

    宿舍娘_可以調(diào)情的宿舍管理系統(tǒng)

    ``在其他論壇看到的一個宿舍管理系統(tǒng),做得挺曖昧,很有意思,創(chuàng)意不錯。{:soso_e113:}亮點是語音對話,把宿舍YY成一個萌妹子來對待。``
    發(fā)表于 08-14 12:46

    【MiCOKit申請】智能宿舍學生管理系統(tǒng)

    申請理由:我是一名大三學生 現(xiàn)在的學校里邊硬件資源比較差 但堅持學習了51stn32 現(xiàn)在正在研究一個宿舍管理系統(tǒng) 我在這個項目里邊需要用到 安卓的系統(tǒng) 而且我們的開發(fā)板還有WiFi
    發(fā)表于 08-10 01:09

    基于機智云的智能宿舍系統(tǒng)設計

    摘 要:為了滿足大學生對智能宿舍的需求,設計了基于機智云的智能宿舍管理系統(tǒng)。該
    發(fā)表于 09-01 20:34

    基于DES加密算法的預付費空調(diào)管理系統(tǒng)設計

    針對目前空調(diào)管理性、智能化較差的問題設計了一種基于DES加密算法的預付費空調(diào)管理系統(tǒng)。該系統(tǒng)以AT89S52為主控芯片,通過RC522讀寫器
    發(fā)表于 11-23 10:49 ?1次下載
    基于DES加密算法的預付費<b class='flag-5'>空調(diào)管理</b><b class='flag-5'>系統(tǒng)</b>設計

    基于PLC的宿舍管理系統(tǒng)設計與實現(xiàn)

    為解決學生逃課滯留宿舍,僅靠人力難以監(jiān)督的問題,文章提出一種以學生課表為中心,基于PLC的宿舍管理系統(tǒng)。每間宿舍配備
    發(fā)表于 05-31 10:04 ?20次下載

    限量預售|2D加速、JPEG硬解、超高性價比M4芯片,您的圖形評估利器——HMI-Board來啦!

    能力。依托于瑞薩高性能芯片 RA6M3 及 RT-Thread 軟件生態(tài),HMI Board 不僅硬件性能強勁,同時軟件生態(tài)豐富,助力開發(fā)者快速開發(fā)出 GUI 智能硬件產(chǎn)品。 HMI-Boar
    的頭像 發(fā)表于 05-16 05:45 ?1288次閱讀
    限量預售|2D加速、JPEG硬解、超高性價比M4芯片,您的圖形評估利器——<b class='flag-5'>HMI-Board</b>來啦!

    聯(lián)合發(fā)布 | 2D加速、JPEG硬解、超高性價比M4芯片,您的圖形評估利器——HMI-Board來啦!

    MCU RA6M3 及RT-Thread軟件生態(tài),HMI Board不僅硬件性能強勁,同時軟件生態(tài)豐富,助力開發(fā)者快速開發(fā)出GUI智能硬件產(chǎn)品。 HMI-Board搭載2M Flash
    的頭像 發(fā)表于 05-19 15:15 ?1459次閱讀
    聯(lián)合發(fā)布 | 2D加速、JPEG硬解、超高性價比M4芯片,您的圖形評估利器——<b class='flag-5'>HMI-Board</b>來啦!

    怎么解決HMI-Board在調(diào)試4bitSDHI掛載文件系統(tǒng)失敗的問題呢?

    這兩天在學習使用HMI-Board的SDHI功能,在掛載文件系統(tǒng)時遇到了開發(fā)實踐指南中提到掛載文件系統(tǒng)失敗的問題,根據(jù)開發(fā)實踐指南中的方法能夠解決1bit位SDHI掛載文件系統(tǒng)失敗的問
    的頭像 發(fā)表于 08-07 14:53 ?659次閱讀
    怎么解決<b class='flag-5'>HMI-Board</b>在調(diào)試4bitSDHI掛載文件<b class='flag-5'>系統(tǒng)</b>失敗的問題呢?

    瑞薩RA6M3 HMI-Board Video Demo 上手指南

    高性能芯片 RA6M3 及 RT-Thread 和 LVGL 軟件生態(tài),HMI Board 不僅硬件性能強勁,同時軟件生態(tài)豐富,助力開發(fā)者快速開發(fā)出 GUI 智能硬件產(chǎn)品。 本示例開源鏈接: https
    的頭像 發(fā)表于 09-15 18:25 ?1658次閱讀
    瑞薩RA6M3 <b class='flag-5'>HMI-Board</b> Video Demo 上手指南

    【直播預告】HMI-Board Windows32

    三晚,我們有幸邀請到了本次大賽的一等獎得主,他將與我們分享他的作品——HMI-Board智能終端桌面。 直播信息 直播主題 HMI-Board?Windows32 直播時間 11月15日?2030 直播
    的頭像 發(fā)表于 11-14 18:20 ?463次閱讀
    【直播預告】<b class='flag-5'>HMI-Board</b> Windows32

    空調(diào)管溫傳感器壞了的表現(xiàn)有哪些

    空調(diào)管溫傳感器是用來監(jiān)測空調(diào)系統(tǒng)的冷凝器和蒸發(fā)器的溫度的重要組件。當空調(diào)管溫傳感器出現(xiàn)故障時,會影響空調(diào)的運行效果,并可能導致
    的頭像 發(fā)表于 01-16 14:58 ?5138次閱讀

    空調(diào)管系統(tǒng)可解決的問題有哪些?

    空調(diào)管系統(tǒng)概覽是對全局的數(shù)據(jù)情況進行統(tǒng)覽,包括接入設備統(tǒng)計、運行時長統(tǒng)計、用電統(tǒng)計等、右側(cè)可以靈活配置,嵌入3D場景,以實際場景標注空調(diào)位置,展示具體數(shù)據(jù) 。
    的頭像 發(fā)表于 03-05 10:57 ?781次閱讀
    <b class='flag-5'>空調(diào)管</b>控<b class='flag-5'>系統(tǒng)</b>可解決的問題有哪些?