基于RA6M3-HMI-Board实现智能会议控制面板系统

电子说

1.3w人已加入

描述

一、项目背景介绍

会议室是办公室里重要的场地,为决策,沟通,协调等提供了必要的工作场所。在会议室里有很多信息化的设备,为会议提供了各种高效而便利的环境。随着数字科技的发展,信息沟通交流也愈发频繁,会议室承载越来越多的功能。如:商业谈判、学术交流、部门沟通、访客接待等。作为各类信息高度集中的重要场所,智能办公是不可或缺的一部分。

而很多会议室这些设备是由不同供应商提供,使得这些设备管理和使用分散和混乱。而智能会议室就是对传统会议室进行改造升级,提供智能会议室整体解决方案,满足用户视频会议,会议预约及会议室设备控制等需求,实现了智慧会议体验,让企业会议更加高效、智能。

本项目就是使用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图片,减少字体资源等方式。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分