一、項目背景介紹
會議室是辦公室里重要的場地,為決策,溝通,協調等提供了必要的工作場所。在會議室里有很多信息化的設備,為會議提供了各種高效而便利的環境。隨著數字科技的發展,信息溝通交流也愈發頻繁,會議室承載越來越多的功能。如:商業談判、學術交流、部門溝通、訪客接待等。作為各類信息高度集中的重要場所,智能辦公是不可或缺的一部分。
而很多會議室這些設備是由不同供應商提供,使得這些設備管理和使用分散和混亂。而智能會議室就是對傳統會議室進行改造升級,提供智能會議室整體解決方案,滿足用戶視頻會議,會議預約及會議室設備控制等需求,實現了智慧會議體驗,讓企業會議更加高效、智能。
本項目就是使用RA6M3-HMI開發板,結合溫濕度傳感器與串口通信,對會議室內的燈光系統,空調,窗簾,音響,LED屏,視頻會議系統進行集中的控制和管理。通過本控制面板能夠控制會議室常用的設備和操作,通過智慧化的集成控制,大大提升會議室管理的便捷性,從而提升會議效率。
二、項目主要功能
智能會議室基于用戶會議智能化的需求,通過AIoT物聯網的方式,集成大數據與信息可視化,成功的解決了這項難題。免除會議沖突,提升管理效率的同時,帶來便捷化的高效率體驗,打造一個全新的智能會議室。
1、打造全新智能會議,高效化便捷化智能會議室
智能會議室控制面板聯動設備軟硬件一站式管控,通過控制LED顯示屏設置高端大氣的會議主題,無需敲門尋找會議室,在門口便可直觀看到本場會議信息資訊,解決會議尷尬沖突。
2.控制管理會議室設備
智能會議室控制面板除開基礎的線上會議預約功能外,系統還將整體設備聯動,從會議室的燈光、空調、窗簾、會議面板、會議中控集成化管控,從軟硬件層面上考慮會議室智能化的需求配置,并可定制化需求配置相對應的客制化系統,打造全新的智能會議室。
會議開始前,聯動設備中控,即可設置提前打開辦公室空調、燈光、投影等設備
3、上場會議時間過長,無時間提醒,會議沖突很明顯。
智能會議室控制面板燈管控制基于情景模式,終端根據會議室使用狀態,一鍵設定燈光組合和變換顏色,讓人一目了然。會議結束設備提醒,通過硬件聯動控制會議時間,提升會議效率。
三、RT-Thread開發概述
智能會議室控制面板軟件系統所使用的RA6M3HMI開發板,已經支持RT-Therad系統,這里就采用RT_thread實時操作系統開就發。圖形界面采用LVGL圖形庫,結合所開發會議業務邏輯部分以及數據采集與收發,完成整個軟件開發。
其中RT-Thread開啟多個線程支持系統的運行,主要線程有:
LVGL UI線程,該線程你完成LVGL的圖形界面的顯示和交互,實現UI各個組件的顯示和人機交互時界面的繪制
傳感器數據采集,這里使用了單獨的線程管理傳感器,分別采集溫度和濕度傳感器的數據
數據處理線程,這里主要處理,實時時鐘,I2C的數據處理,以及對外控制與串口通信的數據處理
通過RT-Thread多線程的設計,完成UI顯示與數據采集,數據處理的異步執行,達到系統既能夠快速響應用戶的操作交互響應,又能夠同步進行外部傳感器信息的采集與外部設計控制通信。
四、硬件架構設計
主控板RA6M3 HMI Board硬件配置為:
? RA6M3(R7FA6M3AH3CFB):Cortex-M4F 內核,120Mhz 主頻,具有 2MB Flash/640KB RAM,集成 TFT 控制器、2D 加速器和 JPEG 解碼器。
? 4.3 寸 LCD (RGB 888)
? 板載仿真器
? 以太網
? RW007 (SPI 高速 WIFI)
? USB-Device
? TF Crad
? CAN
? 1 路麥克風,1 路揚聲器
? Arduino 擴展接口
? 2 路 PMOD 擴展接口
? 4 個按鍵:3 個用戶按鍵,一個復位按鍵
硬件上分別使用,串口 9,分別是在 P109 和 P110作為串口調試,通過調試器的虛擬串口與上 位機通訊。UART9 連接板載Uart轉USB 為日志輸出端口。控制面板與外部設備控制通訊使用另外一個串口 4, UART4串口位于 P205 和 P206在開發板 上也直接標出.
使用I2C串聯 Hi-Spark IoT開發套件中的溫度與濕度傳感器,使用了I2C2位于P603, P604接口上的溫度與濕度數字傳感器板。
連接說明:
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數據) ARD_DIG_05 SDA
溫濕度I2C傳感器地址為:0x38,
五、軟件系統設計
軟件開發工具使用 KEIL5集成開發環境與 HMI開發支持包,Renesas RA Flexible Software Package(FSP) v3.5.0 瑞薩扳級配置包。
在HMI開發包內帶有 RT-Thread軟件系統,以及LVGL圖形庫。這里只要專注設計業務層的UI即可。
UI設計使用Squareline Studio 1.3.2版本,通過該軟件能夠快速構建軟件的UI布局以及相關的交互事件設計。
主UI設計采用三級切換界面形式,分別是1。首頁,顯示當前會議時間,以及房間的溫濕度數據。2控制頁面,設置對會議室中常用的對燈光,窗簾,音響,空調,LED大屏與攝像設備的控制功能入口.3。設置主要設置預設的燈光場景方案,會議提醒定時,以及與會議室設備的通訊參數。
在Squareline能夠完成界面上所有的空間的布置與屬性的設置以及Event的設置,英文字體字庫的生成。在設計好界面可預覽查看界面的效果,確認無誤后,機可以使用導出生成LVGL的界面應用代碼,在導出時,注意設置工程的LVGL的版本以及模板。
因為在智慧會議室終端這個軟件里,需要顯示中文,因此需要設計中文的字庫,中文字庫使用 LVGLFontTool V0.4軟件來生成中文字庫,因為中文漢字數量比較多,如果把整個中文字庫全部生成,將造成ROM超出無法在RA6M3硬件上使用。因此這里把界面上以及軟件運行過程中所有會出現的中文文字單獨列出來,生成一個定制的字庫,這樣就小了許多,這個字庫一共260個漢字,完全夠本軟件使用。字體使用雅黑16號字體。
中文字體為了顯示美觀,使用了4級抗鋸齒,采用GB2312編碼,點擊生成代碼,既生成了雅黑中文漢字字庫,這個字庫加入到LVGL的字體庫中,使用時和其它字庫顯示文件一樣操作即可。
應用邏輯部分使用兩個個單獨的RT-Thread線程,一個完成定時的從I2C 上采集溫度濕度傳感器的數據和RTC時間數據,實時的更新的界面上。另一個另一個線程完成UART串口通訊的數據處理,主要負責完成UI操作會議室功能時,把各個開關操作和量化操作轉換成開關數據和控制數據并格式化,按一定的協議發送到上位機去。同時接收上位機的反饋,將外部設備的狀態數據解析出來,反饋給應用的界面上。
六、軟件模塊實現
軟件實現使用 KEIL5集成工具來進行開發,首先下載FSP3.5版本的配置文件以及,以及KEIL工具中所學要的DFP板級支持包,在KEIL的包管理中,選擇Renesas.RA_DFP.3.5.0,即可順利安裝支持包。再下載setup_fsp_v3_5_0_rasc_v2021-10.exe FSP 配置工具 和 RA6M3-HMI SDK模板包,其中模板不是必須的,沒有模板創建的工程師最小的公程,缺少很多必要的開發支持,這里建議使用 RA6M3-HMI SDK ,通過從模板中創建新工程,即可順利的添加入,許多現成的板上軟件,如WIFI網絡配置,SD 卡文件管理,RT-Thread操作系統系統管理,以及線程,事件,信號對象等的查看,和一個shell,能通過串口方便的操作板子。在RA6M3-HMISDK里有開發板出廠帶的應用的例程,方便快速學習和研究開發板的使用。
創建好工程之后,先選擇好FSP,取消默認的FSP設置,選擇3.5.0,這樣才能正確對該開發板進行配置,否則將無法配置正確。
選擇好FSP版本后,進入FSP配置面板,配置應用中所需的設備資源,這里將會調用瑞薩的FSP即靈活軟件配置工具,根據項目需要,這里添加一些必要連接設備和端口,如I2C,UART,UART調試,和其它一些感興趣的可以測試的IO設備,如GPIO,SPI,CAN等。這里不是打開的越多越好,打開的越多,造成系統資源的使用增多,使得應用開發時,會遇到如堆棧等不夠用的情況。
點擊FSP后,找到 Flex Software 下的RA Configure ,點擊啟動,即出現FSP配置界面
添加外設,因為硬件IO很多是多功能的復用,這里需要根據需求,并逐一配置各個設備的硬件端口,如名稱,地址,引腳等。
設置完畢后,點擊生成工程,即可生成配置好的工程代碼框架。
再把前面有SquareLine UI工程生成的LVGLUI導出目錄完整的移到board目錄下,
把APP的字體、圖片資源代碼移進去
再開發邏輯處理代碼,把便攜好的邏輯代碼放到 src 目錄下,并且加入到到工程目錄下
修改project 里的包含路徑,是得UI訪問LVGL的頭文件路徑正確:
/*
實時定時器時鐘實現
/
#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;
/ 創建初始化完成信號量 /
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按鈕,將會自動燒寫生成的文件進板子里,燒寫過程分別是:擦除,寫入,校驗,重啟
重啟后調試串口可以看到APP已經成功的啟動運行起來,界面也顯示出來。
成功運行時的HMI-Board界面,經過調試和測試基本達到了預設的目標,在調試中會發現因為界面圖片文件使用過多,此時會出現生成的文件超出flash的限制大小,因為RA6M3-HMI Board只有2M的Flash,因此對于復雜多層的UI還是難以承擔,一般采用減少UI圖片資源的使用,共用UI圖片,減少字體資源等方式。
-
以太網
+關注
關注
40文章
5374瀏覽量
171104 -
仿真器
+關注
關注
14文章
1016瀏覽量
83633 -
LED屏
+關注
關注
0文章
208瀏覽量
16899 -
串口通信
+關注
關注
34文章
1620瀏覽量
55424 -
溫濕度傳感器
+關注
關注
5文章
574瀏覽量
35665 -
RA6M3
+關注
關注
0文章
52瀏覽量
102
發布評論請先 登錄
相關推薦
評論