一、項目背景介紹
會議室是辦公室里重要的場地,為決策,溝通,協(xié)調(diào)等提供了必要的工作場所。在會議室里有很多信息化的設備,為會議提供了各種高效而便利的環(huán)境。隨著數(shù)字科技的發(fā)展,信息溝通交流也愈發(fā)頻繁,會議室承載越來越多的功能。如:商業(yè)談判、學術交流、部門溝通、訪客接待等。作為各類信息高度集中的重要場所,智能辦公是不可或缺的一部分。
而很多會議室這些設備是由不同供應商提供,使得這些設備管理和使用分散和混亂。而智能會議室就是對傳統(tǒng)會議室進行改造升級,提供智能會議室整體解決方案,滿足用戶視頻會議,會議預約及會議室設備控制等需求,實現(xiàn)了智慧會議體驗,讓企業(yè)會議更加高效、智能。
本項目就是使用RA6M3-HMI開發(fā)板,結合溫濕度傳感器與串口通信,對會議室內(nèi)的燈光系統(tǒng),空調(diào),窗簾,音響,LED屏,視頻會議系統(tǒng)進行集中的控制和管理。通過本控制面板能夠控制會議室常用的設備和操作,通過智慧化的集成控制,大大提升會議室管理的便捷性,從而提升會議效率。
二、項目主要功能
智能會議室基于用戶會議智能化的需求,通過AIoT物聯(lián)網(wǎng)的方式,集成大數(shù)據(jù)與信息可視化,成功的解決了這項難題。免除會議沖突,提升管理效率的同時,帶來便捷化的高效率體驗,打造一個全新的智能會議室。
1、打造全新智能會議,高效化便捷化智能會議室
智能會議室控制面板聯(lián)動設備軟硬件一站式管控,通過控制LED顯示屏設置高端大氣的會議主題,無需敲門尋找會議室,在門口便可直觀看到本場會議信息資訊,解決會議尷尬沖突。
2.控制管理會議室設備
智能會議室控制面板除開基礎的線上會議預約功能外,系統(tǒng)還將整體設備聯(lián)動,從會議室的燈光、空調(diào)、窗簾、會議面板、會議中控集成化管控,從軟硬件層面上考慮會議室智能化的需求配置,并可定制化需求配置相對應的客制化系統(tǒng),打造全新的智能會議室。
會議開始前,聯(lián)動設備中控,即可設置提前打開辦公室空調(diào)、燈光、投影等設備
3、上場會議時間過長,無時間提醒,會議沖突很明顯。
智能會議室控制面板燈管控制基于情景模式,終端根據(jù)會議室使用狀態(tài),一鍵設定燈光組合和變換顏色,讓人一目了然。會議結束設備提醒,通過硬件聯(lián)動控制會議時間,提升會議效率。
三、RT-Thread開發(fā)概述
智能會議室控制面板軟件系統(tǒng)所使用的RA6M3HMI開發(fā)板,已經(jīng)支持RT-Therad系統(tǒng),這里就采用RT_thread實時操作系統(tǒng)開就發(fā)。圖形界面采用LVGL圖形庫,結合所開發(fā)會議業(yè)務邏輯部分以及數(shù)據(jù)采集與收發(fā),完成整個軟件開發(fā)。
其中RT-Thread開啟多個線程支持系統(tǒng)的運行,主要線程有:
LVGL UI線程,該線程你完成LVGL的圖形界面的顯示和交互,實現(xiàn)UI各個組件的顯示和人機交互時界面的繪制
傳感器數(shù)據(jù)采集,這里使用了單獨的線程管理傳感器,分別采集溫度和濕度傳感器的數(shù)據(jù)
數(shù)據(jù)處理線程,這里主要處理,實時時鐘,I2C的數(shù)據(jù)處理,以及對外控制與串口通信的數(shù)據(jù)處理
通過RT-Thread多線程的設計,完成UI顯示與數(shù)據(jù)采集,數(shù)據(jù)處理的異步執(zhí)行,達到系統(tǒng)既能夠快速響應用戶的操作交互響應,又能夠同步進行外部傳感器信息的采集與外部設計控制通信。
四、硬件架構設計
主控板RA6M3 HMI Board硬件配置為:
? RA6M3(R7FA6M3AH3CFB):Cortex-M4F 內(nèi)核,120Mhz 主頻,具有 2MB Flash/640KB RAM,集成 TFT 控制器、2D 加速器和 JPEG 解碼器。
? 4.3 寸 LCD (RGB 888)
? 板載仿真器
? 以太網(wǎng)
? RW007 (SPI 高速 WIFI)
? USB-Device
? TF Crad
? CAN
? 1 路麥克風,1 路揚聲器
? Arduino 擴展接口
? 2 路 PMOD 擴展接口
? 4 個按鍵:3 個用戶按鍵,一個復位按鍵
硬件上分別使用,串口 9,分別是在 P109 和 P110作為串口調(diào)試,通過調(diào)試器的虛擬串口與上 位機通訊。UART9 連接板載Uart轉USB 為日志輸出端口。控制面板與外部設備控制通訊使用另外一個串口 4, UART4串口位于 P205 和 P206在開發(fā)板 上也直接標出.
使用I2C串聯(lián) Hi-Spark IoT開發(fā)套件中的溫度與濕度傳感器,使用了I2C2位于P603, P604接口上的溫度與濕度數(shù)字傳感器板。
連接說明:
GPIO 名稱 Device 引腳
P205(UART TX) ARD_DIG_01 PC – COM RX
P206(UART RX) ARD_DIG_00 PC – COM TX
P603(I2C時鐘) ARD_DIG_04 SCL
P604(I2C數(shù)據(jù)) ARD_DIG_05 SDA
溫濕度I2C傳感器地址為:0x38,
五、軟件系統(tǒng)設計
軟件開發(fā)工具使用 KEIL5集成開發(fā)環(huán)境與 HMI開發(fā)支持包,Renesas RA Flexible Software Package(FSP) v3.5.0 瑞薩扳級配置包。
在HMI開發(fā)包內(nèi)帶有 RT-Thread軟件系統(tǒng),以及LVGL圖形庫。這里只要專注設計業(yè)務層的UI即可。
UI設計使用Squareline Studio 1.3.2版本,通過該軟件能夠快速構建軟件的UI布局以及相關的交互事件設計。
主UI設計采用三級切換界面形式,分別是1。首頁,顯示當前會議時間,以及房間的溫濕度數(shù)據(jù)。2控制頁面,設置對會議室中常用的對燈光,窗簾,音響,空調(diào),LED大屏與攝像設備的控制功能入口.3。設置主要設置預設的燈光場景方案,會議提醒定時,以及與會議室設備的通訊參數(shù)。
在Squareline能夠完成界面上所有的空間的布置與屬性的設置以及Event的設置,英文字體字庫的生成。在設計好界面可預覽查看界面的效果,確認無誤后,機可以使用導出生成LVGL的界面應用代碼,在導出時,注意設置工程的LVGL的版本以及模板。
因為在智慧會議室終端這個軟件里,需要顯示中文,因此需要設計中文的字庫,中文字庫使用 LVGLFontTool V0.4軟件來生成中文字庫,因為中文漢字數(shù)量比較多,如果把整個中文字庫全部生成,將造成ROM超出無法在RA6M3硬件上使用。因此這里把界面上以及軟件運行過程中所有會出現(xiàn)的中文文字單獨列出來,生成一個定制的字庫,這樣就小了許多,這個字庫一共260個漢字,完全夠本軟件使用。字體使用雅黑16號字體。
中文字體為了顯示美觀,使用了4級抗鋸齒,采用GB2312編碼,點擊生成代碼,既生成了雅黑中文漢字字庫,這個字庫加入到LVGL的字體庫中,使用時和其它字庫顯示文件一樣操作即可。
應用邏輯部分使用兩個個單獨的RT-Thread線程,一個完成定時的從I2C 上采集溫度濕度傳感器的數(shù)據(jù)和RTC時間數(shù)據(jù),實時的更新的界面上。另一個另一個線程完成UART串口通訊的數(shù)據(jù)處理,主要負責完成UI操作會議室功能時,把各個開關操作和量化操作轉換成開關數(shù)據(jù)和控制數(shù)據(jù)并格式化,按一定的協(xié)議發(fā)送到上位機去。同時接收上位機的反饋,將外部設備的狀態(tài)數(shù)據(jù)解析出來,反饋給應用的界面上。
六、軟件模塊實現(xiàn)
軟件實現(xiàn)使用 KEIL5集成工具來進行開發(fā),首先下載FSP3.5版本的配置文件以及,以及KEIL工具中所學要的DFP板級支持包,在KEIL的包管理中,選擇Renesas.RA_DFP.3.5.0,即可順利安裝支持包。再下載setup_fsp_v3_5_0_rasc_v2021-10.exe FSP 配置工具 和 RA6M3-HMI SDK模板包,其中模板不是必須的,沒有模板創(chuàng)建的工程師最小的公程,缺少很多必要的開發(fā)支持,這里建議使用 RA6M3-HMI SDK ,通過從模板中創(chuàng)建新工程,即可順利的添加入,許多現(xiàn)成的板上軟件,如WIFI網(wǎng)絡配置,SD 卡文件管理,RT-Thread操作系統(tǒng)系統(tǒng)管理,以及線程,事件,信號對象等的查看,和一個shell,能通過串口方便的操作板子。在RA6M3-HMISDK里有開發(fā)板出廠帶的應用的例程,方便快速學習和研究開發(fā)板的使用。
創(chuàng)建好工程之后,先選擇好FSP,取消默認的FSP設置,選擇3.5.0,這樣才能正確對該開發(fā)板進行配置,否則將無法配置正確。
選擇好FSP版本后,進入FSP配置面板,配置應用中所需的設備資源,這里將會調(diào)用瑞薩的FSP即靈活軟件配置工具,根據(jù)項目需要,這里添加一些必要連接設備和端口,如I2C,UART,UART調(diào)試,和其它一些感興趣的可以測試的IO設備,如GPIO,SPI,CAN等。這里不是打開的越多越好,打開的越多,造成系統(tǒng)資源的使用增多,使得應用開發(fā)時,會遇到如堆棧等不夠用的情況。
點擊FSP后,找到 Flex Software 下的RA Configure ,點擊啟動,即出現(xiàn)FSP配置界面
添加外設,因為硬件IO很多是多功能的復用,這里需要根據(jù)需求,并逐一配置各個設備的硬件端口,如名稱,地址,引腳等。
設置完畢后,點擊生成工程,即可生成配置好的工程代碼框架。
再把前面有SquareLine UI工程生成的LVGLUI導出目錄完整的移到board目錄下,
把APP的字體、圖片資源代碼移進去
再開發(fā)邏輯處理代碼,把便攜好的邏輯代碼放到 src 目錄下,并且加入到到工程目錄下
修改project 里的包含路徑,是得UI訪問LVGL的頭文件路徑正確:
/*
實時定時器時鐘實現(xiàn)
/
#include
#include
#include
#define DBG_LEVEL DBG_LOG
#define DBG_SECTION_NAME "rtc"
#include
#define RTC_NAME "rtc" / rt_hw_rtc_register("rtc") in rtc_drv.c*/
rt_sem_t rtc_init_sem = RT_NULL;
int user_rtc_init(void)
{
rt_err_t ret = RT_EOK;
time_t now;
rt_device_t device = RT_NULL;
/ 創(chuàng)建初始化完成信號量 /
rtc_init_sem = rt_sem_create("rtc init flag", 0, 0);
if(rtc_init_sem == RT_NULL)
{
rt_kprintf("rtc sem init failed!n");
return RT_ERROR;
}
/ 尋找設備 /
device = rt_device_find(RTC_NAME);
if (!device)
{
rt_kprintf("find %s failed!n", RTC_NAME);
return RT_ERROR;
}
/ 初始化RTC設備 /
if(rt_device_open(device, 0) != RT_EOK)
{
rt_kprintf("open %s failed!n", RTC_NAME);
return RT_ERROR;
}
/* 設置日期 /
ret = set_date(2023, 10, 5);
if (ret != RT_EOK)
{
rt_kprintf("set RTC date failedn");
return ret;
}
/ 設置時間 /
ret = set_time(23, 45, 00);
if (ret != RT_EOK)
{
rt_kprintf("set RTC time failedn");
return ret;
}
rt_sem_release(rtc_init_sem); //rt_sem_take
/ 獲取時間 */
now = time(RT_NULL);
rt_kprintf("RTC device init success,now time is %sn", ctime(&now));
return ret;
}
/ 使用裝置初始化 /
INIT_ENV_EXPORT(user_rtc_init);
static time_t now;
void user_alarm_callback(rt_alarm_t alarm, time_t timestamp)
{
now = time(RT_NULL);
rt_kprintf("The alarm clock rings, now time is %sn", ctime(&now));
rt_alarm_stop(alarm);
}
void alarm_test(void)
{
rt_kprintf("alarm_test ... n");
if(rt_sem_trytake(rtc_init_sem) != RT_EOK)
{
rt_kprintf("please init rtc firstn");
return ;
}
struct rt_alarm_setup setup;
struct rt_alarm * alarm = RT_NULL;
static time_t now;
struct tm p_tm;
if (alarm != RT_NULL)
return;
/*獲取當前時間戳,并把下一秒時間設置為鬧鐘時間 */
now = time(NULL) + 5;
gmtime_r(&now,&p_tm);
setup.flag = RT_ALARM_SECOND;
setup.wktime.tm_year = p_tm.tm_year;
setup.wktime.tm_mon = p_tm.tm_mon;
setup.wktime.tm_mday = p_tm.tm_mday;
setup.wktime.tm_wday = p_tm.tm_wday;
setup.wktime.tm_hour = p_tm.tm_hour;
setup.wktime.tm_min = p_tm.tm_min;
setup.wktime.tm_sec = p_tm.tm_sec;
alarm = rt_alarm_create(user_alarm_callback, &setup);
if(RT_NULL != alarm)
{
rt_alarm_start(alarm);
}
rt_sem_release(rtc_init_sem);
}
/ export msh cmd /
MSH_CMD_EXPORT(alarm_test,a alarm test);
修改完成后,再編譯工程,如果修改正確,編譯將會順利完成,生成了目標燒寫文件
點擊download按鈕,將會自動燒寫生成的文件進板子里,燒寫過程分別是:擦除,寫入,校驗,重啟
重啟后調(diào)試串口可以看到APP已經(jīng)成功的啟動運行起來,界面也顯示出來。
成功運行時的HMI-Board界面,經(jīng)過調(diào)試和測試基本達到了預設的目標,在調(diào)試中會發(fā)現(xiàn)因為界面圖片文件使用過多,此時會出現(xiàn)生成的文件超出flash的限制大小,因為RA6M3-HMI Board只有2M的Flash,因此對于復雜多層的UI還是難以承擔,一般采用減少UI圖片資源的使用,共用UI圖片,減少字體資源等方式。
-
以太網(wǎng)
+關注
關注
40文章
5555瀏覽量
174374 -
仿真器
+關注
關注
14文章
1031瀏覽量
84768 -
LED屏
+關注
關注
0文章
212瀏覽量
17288 -
串口通信
+關注
關注
34文章
1633瀏覽量
56437 -
溫濕度傳感器
+關注
關注
5文章
589瀏覽量
36263 -
RA6M3
+關注
關注
0文章
52瀏覽量
231
發(fā)布評論請先 登錄
AllJoyn核心應用教程:Base Services服務之控制面板
微軟或逐步移除Windows 10中的控制面板
微軟計劃隱藏Windows 10傳統(tǒng)的控制面板
win8控制面板在哪打開?

再見,控制面板,Win10系統(tǒng)終于取消控制面板

nvidia控制面板怎么設置

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

RA6M3 RT-Thread* LVGL HMI Board開發(fā)實踐指南-GPIO實踐

評論