一、項(xiàng)目背景介紹
會議室是辦公室里重要的場地,為決策,溝通,協(xié)調(diào)等提供了必要的工作場所。在會議室里有很多信息化的設(shè)備,為會議提供了各種高效而便利的環(huán)境。隨著數(shù)字科技的發(fā)展,信息溝通交流也愈發(fā)頻繁,會議室承載越來越多的功能。如:商業(yè)談判、學(xué)術(shù)交流、部門溝通、訪客接待等。作為各類信息高度集中的重要場所,智能辦公是不可或缺的一部分。
而很多會議室這些設(shè)備是由不同供應(yīng)商提供,使得這些設(shè)備管理和使用分散和混亂。而智能會議室就是對傳統(tǒng)會議室進(jìn)行改造升級,提供智能會議室整體解決方案,滿足用戶視頻會議,會議預(yù)約及會議室設(shè)備控制等需求,實(shí)現(xiàn)了智慧會議體驗(yàn),讓企業(yè)會議更加高效、智能。
本項(xiàng)目就是使用RA6M3-HMI開發(fā)板,結(jié)合溫濕度傳感器與串口通信,對會議室內(nèi)的燈光系統(tǒng),空調(diào),窗簾,音響,LED屏,視頻會議系統(tǒng)進(jìn)行集中的控制和管理。通過本控制面板能夠控制會議室常用的設(shè)備和操作,通過智慧化的集成控制,大大提升會議室管理的便捷性,從而提升會議效率。
二、項(xiàng)目主要功能
智能會議室基于用戶會議智能化的需求,通過AIoT物聯(lián)網(wǎng)的方式,集成大數(shù)據(jù)與信息可視化,成功的解決了這項(xiàng)難題。免除會議沖突,提升管理效率的同時(shí),帶來便捷化的高效率體驗(yàn),打造一個(gè)全新的智能會議室。
1、打造全新智能會議,高效化便捷化智能會議室
智能會議室控制面板聯(lián)動設(shè)備軟硬件一站式管控,通過控制LED顯示屏設(shè)置高端大氣的會議主題,無需敲門尋找會議室,在門口便可直觀看到本場會議信息資訊,解決會議尷尬沖突。
2.控制管理會議室設(shè)備
智能會議室控制面板除開基礎(chǔ)的線上會議預(yù)約功能外,系統(tǒng)還將整體設(shè)備聯(lián)動,從會議室的燈光、空調(diào)、窗簾、會議面板、會議中控集成化管控,從軟硬件層面上考慮會議室智能化的需求配置,并可定制化需求配置相對應(yīng)的客制化系統(tǒng),打造全新的智能會議室。
會議開始前,聯(lián)動設(shè)備中控,即可設(shè)置提前打開辦公室空調(diào)、燈光、投影等設(shè)備
3、上場會議時(shí)間過長,無時(shí)間提醒,會議沖突很明顯。
智能會議室控制面板燈管控制基于情景模式,終端根據(jù)會議室使用狀態(tài),一鍵設(shè)定燈光組合和變換顏色,讓人一目了然。會議結(jié)束設(shè)備提醒,通過硬件聯(lián)動控制會議時(shí)間,提升會議效率。
三、RT-Thread開發(fā)概述
智能會議室控制面板軟件系統(tǒng)所使用的RA6M3HMI開發(fā)板,已經(jīng)支持RT-Therad系統(tǒng),這里就采用RT_thread實(shí)時(shí)操作系統(tǒng)開就發(fā)。圖形界面采用LVGL圖形庫,結(jié)合所開發(fā)會議業(yè)務(wù)邏輯部分以及數(shù)據(jù)采集與收發(fā),完成整個(gè)軟件開發(fā)。
其中RT-Thread開啟多個(gè)線程支持系統(tǒng)的運(yùn)行,主要線程有:
LVGL UI線程,該線程你完成LVGL的圖形界面的顯示和交互,實(shí)現(xiàn)UI各個(gè)組件的顯示和人機(jī)交互時(shí)界面的繪制
傳感器數(shù)據(jù)采集,這里使用了單獨(dú)的線程管理傳感器,分別采集溫度和濕度傳感器的數(shù)據(jù)
數(shù)據(jù)處理線程,這里主要處理,實(shí)時(shí)時(shí)鐘,I2C的數(shù)據(jù)處理,以及對外控制與串口通信的數(shù)據(jù)處理
通過RT-Thread多線程的設(shè)計(jì),完成UI顯示與數(shù)據(jù)采集,數(shù)據(jù)處理的異步執(zhí)行,達(dá)到系統(tǒng)既能夠快速響應(yīng)用戶的操作交互響應(yīng),又能夠同步進(jìn)行外部傳感器信息的采集與外部設(shè)計(jì)控制通信。
四、硬件架構(gòu)設(shè)計(jì)
主控板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 路麥克風(fēng),1 路揚(yáng)聲器
? Arduino 擴(kuò)展接口
? 2 路 PMOD 擴(kuò)展接口
? 4 個(gè)按鍵:3 個(gè)用戶按鍵,一個(gè)復(fù)位按鍵
硬件上分別使用,串口 9,分別是在 P109 和 P110作為串口調(diào)試,通過調(diào)試器的虛擬串口與上 位機(jī)通訊。UART9 連接板載Uart轉(zhuǎn)USB 為日志輸出端口。控制面板與外部設(shè)備控制通訊使用另外一個(gè)串口 4, UART4串口位于 P205 和 P206在開發(fā)板 上也直接標(biāo)出.
使用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時(shí)鐘) ARD_DIG_04 SCL
P604(I2C數(shù)據(jù)) ARD_DIG_05 SDA
溫濕度I2C傳感器地址為:0x38,
五、軟件系統(tǒng)設(shè)計(jì)
軟件開發(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圖形庫。這里只要專注設(shè)計(jì)業(yè)務(wù)層的UI即可。
UI設(shè)計(jì)使用Squareline Studio 1.3.2版本,通過該軟件能夠快速構(gòu)建軟件的UI布局以及相關(guān)的交互事件設(shè)計(jì)。
主UI設(shè)計(jì)采用三級切換界面形式,分別是1。首頁,顯示當(dāng)前會議時(shí)間,以及房間的溫濕度數(shù)據(jù)。2控制頁面,設(shè)置對會議室中常用的對燈光,窗簾,音響,空調(diào),LED大屏與攝像設(shè)備的控制功能入口.3。設(shè)置主要設(shè)置預(yù)設(shè)的燈光場景方案,會議提醒定時(shí),以及與會議室設(shè)備的通訊參數(shù)。
在Squareline能夠完成界面上所有的空間的布置與屬性的設(shè)置以及Event的設(shè)置,英文字體字庫的生成。在設(shè)計(jì)好界面可預(yù)覽查看界面的效果,確認(rèn)無誤后,機(jī)可以使用導(dǎo)出生成LVGL的界面應(yīng)用代碼,在導(dǎo)出時(shí),注意設(shè)置工程的LVGL的版本以及模板。
因?yàn)樵谥腔蹠h室終端這個(gè)軟件里,需要顯示中文,因此需要設(shè)計(jì)中文的字庫,中文字庫使用 LVGLFontTool V0.4軟件來生成中文字庫,因?yàn)橹形臐h字?jǐn)?shù)量比較多,如果把整個(gè)中文字庫全部生成,將造成ROM超出無法在RA6M3硬件上使用。因此這里把界面上以及軟件運(yùn)行過程中所有會出現(xiàn)的中文文字單獨(dú)列出來,生成一個(gè)定制的字庫,這樣就小了許多,這個(gè)字庫一共260個(gè)漢字,完全夠本軟件使用。字體使用雅黑16號字體。
中文字體為了顯示美觀,使用了4級抗鋸齒,采用GB2312編碼,點(diǎn)擊生成代碼,既生成了雅黑中文漢字字庫,這個(gè)字庫加入到LVGL的字體庫中,使用時(shí)和其它字庫顯示文件一樣操作即可。
應(yīng)用邏輯部分使用兩個(gè)個(gè)單獨(dú)的RT-Thread線程,一個(gè)完成定時(shí)的從I2C 上采集溫度濕度傳感器的數(shù)據(jù)和RTC時(shí)間數(shù)據(jù),實(shí)時(shí)的更新的界面上。另一個(gè)另一個(gè)線程完成UART串口通訊的數(shù)據(jù)處理,主要負(fù)責(zé)完成UI操作會議室功能時(shí),把各個(gè)開關(guān)操作和量化操作轉(zhuǎn)換成開關(guān)數(shù)據(jù)和控制數(shù)據(jù)并格式化,按一定的協(xié)議發(fā)送到上位機(jī)去。同時(shí)接收上位機(jī)的反饋,將外部設(shè)備的狀態(tài)數(shù)據(jù)解析出來,反饋給應(yīng)用的界面上。
六、軟件模塊實(shí)現(xiàn)
軟件實(shí)現(xiàn)使用 KEIL5集成工具來進(jìn)行開發(fā),首先下載FSP3.5版本的配置文件以及,以及KEIL工具中所學(xué)要的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)絡(luò)配置,SD 卡文件管理,RT-Thread操作系統(tǒng)系統(tǒng)管理,以及線程,事件,信號對象等的查看,和一個(gè)shell,能通過串口方便的操作板子。在RA6M3-HMISDK里有開發(fā)板出廠帶的應(yīng)用的例程,方便快速學(xué)習(xí)和研究開發(fā)板的使用。
創(chuàng)建好工程之后,先選擇好FSP,取消默認(rèn)的FSP設(shè)置,選擇3.5.0,這樣才能正確對該開發(fā)板進(jìn)行配置,否則將無法配置正確。
選擇好FSP版本后,進(jìn)入FSP配置面板,配置應(yīng)用中所需的設(shè)備資源,這里將會調(diào)用瑞薩的FSP即靈活軟件配置工具,根據(jù)項(xiàng)目需要,這里添加一些必要連接設(shè)備和端口,如I2C,UART,UART調(diào)試,和其它一些感興趣的可以測試的IO設(shè)備,如GPIO,SPI,CAN等。這里不是打開的越多越好,打開的越多,造成系統(tǒng)資源的使用增多,使得應(yīng)用開發(fā)時(shí),會遇到如堆棧等不夠用的情況。
點(diǎn)擊FSP后,找到 Flex Software 下的RA Configure ,點(diǎn)擊啟動,即出現(xiàn)FSP配置界面
添加外設(shè),因?yàn)橛布蘒O很多是多功能的復(fù)用,這里需要根據(jù)需求,并逐一配置各個(gè)設(shè)備的硬件端口,如名稱,地址,引腳等。
設(shè)置完畢后,點(diǎn)擊生成工程,即可生成配置好的工程代碼框架。
再把前面有SquareLine UI工程生成的LVGLUI導(dǎo)出目錄完整的移到board目錄下,
把APP的字體、圖片資源代碼移進(jìn)去
再開發(fā)邏輯處理代碼,把便攜好的邏輯代碼放到 src 目錄下,并且加入到到工程目錄下
修改project 里的包含路徑,是得UI訪問LVGL的頭文件路徑正確:
/*
實(shí)時(shí)定時(shí)器時(shí)鐘實(shí)現(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;
}
/ 尋找設(shè)備 /
device = rt_device_find(RTC_NAME);
if (!device)
{
rt_kprintf("find %s failed!n", RTC_NAME);
return RT_ERROR;
}
/ 初始化RTC設(shè)備 /
if(rt_device_open(device, 0) != RT_EOK)
{
rt_kprintf("open %s failed!n", RTC_NAME);
return RT_ERROR;
}
/* 設(shè)置日期 /
ret = set_date(2023, 10, 5);
if (ret != RT_EOK)
{
rt_kprintf("set RTC date failedn");
return ret;
}
/ 設(shè)置時(shí)間 /
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
/ 獲取時(shí)間 */
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;
/*獲取當(dāng)前時(shí)間戳,并把下一秒時(shí)間設(shè)置為鬧鐘時(shí)間 */
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);
修改完成后,再編譯工程,如果修改正確,編譯將會順利完成,生成了目標(biāo)燒寫文件
點(diǎn)擊download按鈕,將會自動燒寫生成的文件進(jìn)板子里,燒寫過程分別是:擦除,寫入,校驗(yàn),重啟
重啟后調(diào)試串口可以看到APP已經(jīng)成功的啟動運(yùn)行起來,界面也顯示出來。
成功運(yùn)行時(shí)的HMI-Board界面,經(jīng)過調(diào)試和測試基本達(dá)到了預(yù)設(shè)的目標(biāo),在調(diào)試中會發(fā)現(xiàn)因?yàn)榻缑鎴D片文件使用過多,此時(shí)會出現(xiàn)生成的文件超出flash的限制大小,因?yàn)镽A6M3-HMI Board只有2M的Flash,因此對于復(fù)雜多層的UI還是難以承擔(dān),一般采用減少UI圖片資源的使用,共用UI圖片,減少字體資源等方式。
-
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5419瀏覽量
171598 -
仿真器
+關(guān)注
關(guān)注
14文章
1017瀏覽量
83721 -
LED屏
+關(guān)注
關(guān)注
0文章
208瀏覽量
16930 -
串口通信
+關(guān)注
關(guān)注
34文章
1624瀏覽量
55507 -
溫濕度傳感器
+關(guān)注
關(guān)注
5文章
579瀏覽量
35706 -
RA6M3
+關(guān)注
關(guān)注
0文章
52瀏覽量
110
發(fā)布評論請先 登錄
相關(guān)推薦
評論