随着物联网技术的飞速发展,越来越多的生活场景变得越来越智能,网联化、智能化越来越成为主旋律。
值此之际,RT-Thread 和 瑞萨电子共同举办 智能家居网络开发:RA6M3 HMI Board 以太网+GUI技术实践 线下培训。
这次培训融合了很多物联网相关的知识,以太网ETH,MQTT协议,LVGL图像化界面和RTOS多任务开发,RT Thread Studio软件和生态高质量、高复用和高平台性的软件工具链将这四者综合起来,让开发者可以快速的上手物联网开发
下面我们先来介绍MCU,瑞萨RA6M3属于RA6系列微控制器,这个系列是瑞萨电子推出的高性能微控制器,主要针对物联网和工业应用。你想要的详细介绍,来啦!
如下图所示,RA系列目前主要有以下四个系列:
本次使用的开发板是RT-Thread联合瑞萨推出的高性价比图形评估套件,取代传统的HMI+主控板硬件,一套硬件即可实现HMI+IOT+控制的全套能力。依托于瑞萨高性能芯片和RT-Thread软件生态,HMI Board不仅硬件性能强劲,同时软件生态丰富,主力开发者快速开发出GUI硬件产品。淘宝链接:https://item.taobao.com/item.htm?abbucket=6&id=721524271628&ns=1&skuId=5190654114275&spm=a21n57.1.0.0.7427523cJCmd89
开发板硬件配置如下图所示:
RT-Thread Studio是一个基于RT-Thread操作系统的一站式开发环境。RT-Thread,作为一个开源的实时操作系统(RTOS),在嵌入式领域非常受欢迎。那么RT-Thread Studio具体是什么样的,我们一探究竟:
上面我们介绍了本次培训的主要应用的软件和硬件,下面是我们本次培训所需要的软件按照和参考资料:
RT-Thread Studio下载链接:https://download_redirect.rt-thread.org/download/studio/RT-Thread_Studio_2.2.7-setup-x86_64.exe
SquareLine Studio下载链接:https://static.squareline.io/downloads/SquareLine_Studio_Windows_v1_3_2.zip
MQTTX 下载链接:https://packages.emqx.net/MQTTX/v1.9.6/MQTTX-Setup-1.9.6-x64.exe
项目代码链接:hmi-board-eth-monitor
**项目参考教程:**https://docs.qq.com/doc/DY0FIWFVuTEpORlNn?login_t=1705968438854
**开发工具:**RT-Thread Studio/Keil MDK5(固件开发、编译),SquareLine Studio(LVGL UI设计工具)
**Demo代码:**链接:https://pan.baidu.com/s/1XdJvCTmsO8IjTumSQm_R-g 提取码:gxlj
编译成功
下载代码:
要理解MQTT协议,首先让我们了解为什么会开发MQTT。在1999年之前,石油和天然气行业面临着从油气管道到SCADA系统的数据交换的大问题。石油和天然气行业,尤其是油井和管道,通常位于非常偏远的地方,要从仪器和RTU获取数据到SCADA系统非常困难。为了获取数据,我们有诸如串行通信、卫星、低带宽无线电波系统等选项。但由于偏远的位置和网络带宽问题,我们无法及时获取数据,即使能获取到,响应也非常糟糕。因此,工程师Andy Stanford-Clerk和Allen Nipper在1999年开发并发明了MQTT,以解决所有这些问题。MQTT是一种适用于低成本、低带宽或不稳定连接的协议。现在,通过MQTT协议,你可以快速有效地从所有偏远地点使用低带宽获取数据。
让我们借助一个简单的日常生活例子来理解MQTT协议。以YouTube为例,YouTube的工作原理与MQTT协议类似。比如说,它自动化学院的YouTube频道,有超过3700万个YouTube频道。因为你订阅了我的YouTube频道,所以每当我发布视频时,你肯定会在YouTube首页上得到更新。你还会看到更多来自你已订阅频道的视频推荐。因此,YouTube是基于发布和订阅机制工作的。我们将通过这个例子来简单理解MQTT概念。MQTT协议或消息队列遥测协议是基于发布和订阅机制工作的。MQTT有一个我们称之为MQTT代理或服务器的东西。MQTT代理是MQTT协议的核心,它负责接收所有消息,过滤这些消息,决定谁对它们感兴趣,然后将这些消息发布给所有订阅的客户端。因此,你现在看到的是我们的MQTT代理或服务器。
让我们理解使用MQTT协议的好处。MQTT协议的美妙之处在于它支持不可靠的网络,它有可靠的消息传递,你可以将这些协议扩展到数百万个设备,并启用安全功能,它轻巧且高效。
#include
#include
#include
#include
#include
#include "mqttclient.h"
static void sub_topic_handle1(void* client, message_data_t* msg)
{
(void) client;
KAWAII_MQTT_LOG_I("-----------------------------------------------------------------------------------");
KAWAII_MQTT_LOG_I("%s:%d %s()...\ntopic: %s\nmessage:%s", __FILE__, __LINE__, __FUNCTION__, msg->topic_name, (char*)msg->message->payload);
KAWAII_MQTT_LOG_I("-----------------------------------------------------------------------------------");
}
static int mqtt_publish_handle1(mqtt_client_t *client)
{
mqtt_message_t msg;
memset(&msg, 0, sizeof(msg));
msg.qos = QOS0;
msg.payload = (void *)"this is a kawaii mqtt test ...";
return mqtt_publish(client, "pub5323", &msg);
}
static char cid[64] = { 0 };
static void kawaii_mqtt_demo(void *parameter)
{
mqtt_client_t *client = NULL;
rt_thread_delay(6000);
mqtt_log_init();
client = mqtt_lease();
rt_snprintf(cid, sizeof(cid), "rtthread-5323", rt_tick_get());
mqtt_set_host(client, "broker.emqx.io");
mqtt_set_port(client, "1883");
mqtt_set_user_name(client, "RT-Thread");
mqtt_set_password(client, "012345678");
mqtt_set_client_id(client, cid);
mqtt_set_clean_session(client, 1);
KAWAII_MQTT_LOG_I("The ID of the Kawaii client is: %s ",cid);
mqtt_connect(client);
mqtt_subscribe(client, "sub5323", QOS0, sub_topic_handle1);
while (1) {
mqtt_publish_handle1(client);
mqtt_sleep_ms(4 * 1000);
}
}
int ka_mqtt(void)
{
rt_thread_t tid_mqtt;
tid_mqtt = rt_thread_create("kawaii_demo", kawaii_mqtt_demo, RT_NULL, 2048, 17, 10);
if (tid_mqtt == RT_NULL) {
return -RT_ERROR;
}
rt_thread_startup(tid_mqtt);
return RT_EOK;
}
MSH_CMD_EXPORT(ka_mqtt, Kawaii MQTT client test program);
**注意:**订阅和发布的topic需要和开发板上的topic保持一致(sub/pub+手机号后四位)
{
"temp": 23,
"humi": 20,
"lux": 120
}
开发板串口终端接收到此消息,并打印:
LVGL在2016年左右诞生了。它最初是作为一个简单的GUI库开始的,目标是提供轻量级、易于使用的界面解决方案。随着时间的推移,LVGL逐渐发展成为一个功能丰富、高度可定制的图形库,支持各种显示和输入设备,变得越来越流行。
优点:
1、打开RT-Thread Studio 选择导入:
Squareline Studio是一个专门为嵌入式设备设计的用户界面开发工具。它旨在简化嵌入式UI的设计和开发流程。如果你是一名嵌入式开发新手,那么使用Squareline Studio来开发UI就像是找到了一把开启嵌入式界面大门的钥匙。下面是一些关于使用Squareline Studio的要点:
直观的图形设计界面:
组件丰富:
预览功能:
代码生成:
自定义样式:
跨平台兼容:
易于学习:
使用Squareline Studio开发UI,对于嵌入式开发新手来说,是一个既省时又高效的选择。它不仅让UI设计变得简单,而且通过自动生成代码,大大降低了开发的复杂度。简而言之,Squareline Studio就像是嵌入式UI设计的“魔法棒”,让原本复杂的过程变得简单有趣!
**实践指导可以参考:**https://docs.qq.com/doc/DY0FIWFVuTEpORlNn?login_t=1705968438854
下图是我在培训时自己的做的UI界面,做好的样式可以直接下载到开发板上面
通过上述的动手编程,体会到RT-Thread作为一个开源实时操作系统,在物联网、MQTT、以太网以及LVGL这些领域的表现可以说是既专业又用户友好。
总体来说,RT-Thread在物联网、MQTT、以太网和LVGL图形库方面对新手非常友好。它通过提供集成的解决方案、丰富的文档、社区支持以及简单易用的API,大大降低了新手入门的门槛。对于刚入门的嵌入式开发者来说,使用RT-Thread就像是有了一个全面且易懂的导师,让整个学习过程变得更加轻松和愉快。