Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread
IOT
星火1号_spark_星火一号_开发板
【24嵌入式设计大赛】基于RT-Thread火星一号华为云平台储能监测管理系统
发布于 2024-08-31 12:54:30 浏览:733
订阅该版
[tocm] # 基于RT-Thread火星一号华为云平台储能监测管理系统 ## 目录: 1. 简介 2. 板卡介绍 3. 作品介绍 4. 技术架构 5. 业务流程 6. 功能介绍 7. 软件部分 8. 视频 9. 总结 ## 正文: #### 简介 * 储能产品一般重量偏重不便于移动,只有专业人员到现场才能确认到故障信息以及处理解决,基于此类问题该监测控制系统则可以实现云端下发控制,实时监测电池运行状态,单体信息等。 * 该项目创新的将BMS全部信息同步到云端可实时监控,并且带有专业的数字大屏展示重要电池信息,使储能系统运作更加稳定、高效。此外该项目储能监测系统是一款通过CAN/485连接BMS控制板将储能系统中数据实时上报Iot云服务器,通过OBS桶存储为CSV文件数据,通过脚本中解析转发的json数据为可视化DLV中图形显示。Iot云物模型数据则可以监测储能系统运行状态,以及下发json字段控制系统。 #### 板卡介绍: * 星火1号主控选用了目前行业中比较常用且学习门槛较低的STM32F407,性能强劲、功能丰富,完全能够满足嵌入式入门的需求。此开发板不仅具有众多的板载资源(Flash存储、WIFI通信、多个传感器),还支持丰富的扩展接口,让您轻松实现各种复杂的应用场景。 * 板卡特性: * Flash:1024KB * SRAM:196KB (包括 64KB 的 CCM) * 8MB NorFlash * SD 卡座;STlink * RW007 SPI 高速 WIFI * USB * RS485 * CAN ** 具体外设接口如下,本项目中我们使用到:wifi连接网络、温湿度传感器、485接入BMS控制板等外设 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/a70ca9039a1b2a077380f139966c8e66.png.webp) #### 作品简介: * 该项目是通过CAN/485协议接入到BMS模块,实时获取电池单体、电池充放电电流电压、温度传感器数据等,计算soc、故障预警等情况通过mqtt协议上报华为iot云服务器。之后将字段转发存储以csv文件在对象存储服务OBS中,DLV大屏便可以访问到字段,编写显示脚本展示成图像化大屏效果 * 该作品主要适用于家庭储能设备以及工业上储能集装箱,针对这类储能产品不便移动,配置以及遇到故障报警都需要专业人士去到现场处理解决,十分不便。基于此类问题,于是设计了该储能监测控制系统,用户可通过数字化大屏实时查看报警、故障、单体、SOC等一系列数据。可以通过iot云端操作下发配置字段,比如强制控制继电器开合,配置修改充放电量和报警阈值等,后期也可以使用小程序或app对接iot云来实现手机端的监测控制,极大提高了储能设备稳定性,对电能的利用实时监测,控制充放电以及调节充放阈值的方便也对电能充分利用得以提升,极大的节约了电能经济成本 * 板卡连接测试BMS板以及继电器等外设效果 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/d96fd1138b60907c25614189cd6c9ca9.png.webp) * 华为Iot云端物模型显示效果 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/20e9bd29dcdc053d83208dca3aa44cb7.png.webp) * 大屏展示效果 ![screenshot_DLV大屏显示.png](https://oss-club.rt-thread.org/uploads/20240831/39e99481b666260ee2465673724dfe8f.png.webp) #### 技术架构: * 整体架构:该系统由数据采集模块、数据传输、华为IoT云平台、DLV显示模块部分组成。其中主要软件主要是火星一号主控板应用,系统启动后数据采集上报和检测逻辑如图所示。 * 数据采集由BMS板完成采集单个电池电压数据,充放电电流温度等;传输采用MQTT轻量级物联网通信协议,确保数据的高效传输; * 华为云平台接收来自储能检测控制系统的数据,进行身份验证和数据校验,此外将接收到的数据存储在云数据库中,支持历史数据的查询和分析 * DLV主要负责实时监测储能设备的运行状态,包括电池电量、充放电状态、温度,用户可以通过网页或移动端应用查看储能设备的运行状态、故障报警和性能分析等信息 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/5628fd525043d76a43664e154d52abcf.png.webp) #### 业务流程: * 1、设备端采用火星一号主控板通过CAN/485接口获取电池数据,并通过4G或wifi联网后使用mqtt协议上报云端;同时订阅云端消息,若是switch字段则控制更新输出继电器状态;同时具有监测判断压差、温差、soc过低故障等工作状态预警的能力 * 2、Iot云服务器搜集设备端上报的电池信息数据,用户可以直接查看云端字段;也可以通过下发字段值控制设备端运行状态;Iot云会将部分重要数据存储OBS,转发到DLV大屏显示;此外也可以通过手机app或者小程序订阅到Iot服务器来实现手机上实时监测系统 * 3、数据存储服务用于存储重要字段数据,同时将json格式数据转发为csv格式给到DLV大屏 * 4、数据可视化DLV显示服务主要将储能系统的重要信息包括单体电压、温度、告警、故障、SOC、版本、最高最低单体等信息,通过js脚本将数值转化为对应UI的json数组,最后以图形化方式展现给用户 * 5、监管与运维主要是云日志的存储和方便专业人员查看,方便系统遇到故障时查阅。 * 该产品实现价值在于以大屏方式展示出储能系统运行状态以及重要信息;可以通过云端查看系统外设信息以及下发控制;此外还可以定制app或小程序对接IoT云服务器在手机端实时监测控制该系统 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/15cac719ea1b0cbdd9d8042e104402e2.png.webp) #### 功能介绍 * 基于储能检测控制系统实现了对储能系统的实时监测、数据分析和可视化展示。主要功能是通过将储能检测控制系统采集的数据上传至华为IoT云,利用云平台的强大计算和存储能力,实时展示储能设备的运行状态、性能指标和历史数据,帮助用户快速了解设备情况,做出及时决策。 在系统启动查看平台功能 * 华为Iot云平台 在登录云平台后在设备列表中可以看到在线设备,此项目中设备为bmsDevice ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/9afdedf73d98a686900bc73325cb8872.png.webp) 点击进入设备信息中可以看到上报信息,物模型数据显示更新,效果如下 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/505bc505bbb1021bd4900b684164363e.png.webp) 云端下发 下发数据采用json格式,比如我们下发设置switch开关全部为1,则火星一号板订阅到消息后会控制继电器的开合 ``` { "services": [{ "service_id": "solo_service", "properties": { "Switch1": "1", "Switch2": "1", "Switch3": "1", "Switch4": "1", "Switch5": "1", "Switch6": "1" } } ] } ``` 测试中在继电器端接入了12V电源 使用led接入到继电器开关端,看到继电器闭合 LED亮起 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/3905e11257a9d2d13e8f9a5a25618c05.png.webp) 数据转发,在转发规则中创建规则,测试连通性,这里只添加几个字段,不影响结果 ``` { "resource": "device.property", "event": "report", "event_time": "string", "notify_data": { "header": { "app_id": "d4922d8a-6c8e-4396-852c-164aefa6638f", "device_id": "d4922d8a-6c8e-4396-852c-164aefa6638f", "node_id": "ABC123456789", "product_id": "ABC123456789" }, "body": { "services": [ { "service_id": "string", "properties": { "sw_version": "2024072601", "hw_version": "2024072602", "soc": "0.98", "tempe": "24.3", "CellVolt1_1": "3781", "CellVolt1_2": "3782", "CellVolt1_3": "3783", "volt": "3785" }, "event_time": "string" } ] } } } ``` 测试提示OK ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/083155fb32bc4b6ea0a51912b770060f.png.webp) 在数据可视化面板添加我们转发的数据存储路径,以及必要的key信息 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/f05b9852cdc830735f6c6f31ecc1cd0f.png.webp) 当前数据字段还不能直接显示的DLV大屏,还需要创建数据转换器,该脚本采用JavaScript脚本,于是将我们需要显示的信息创建脚本以指定方式显示到大屏 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/d7f2e20bc8922715ec6ae9706d4204bb.png.webp) 最终DLV大屏显示数据介绍 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/228eec7657f6f71b60f1b63eee4ce572.png.webp) * 连接: https://console.huaweicloud.com/dlv/vision/share/?id=435063c06649473fb323398dcdceb31d&locale=zh-cn®ion=cn-north-4 #### 软件部分 * 软件上使用到aht10包主要用于采集板卡上的温湿度数据;cjson包用于将数据组包上报以及订阅消息解析;mqtt包用于对接云通讯;rw007的wifi包这些 applications中存放应用部分代码 mqtt_app中存放对接云应用逻辑,主要处理组包,订阅解析等业务逻辑 ![screenshot_1725078458249.jpg](https://oss-club.rt-thread.org/uploads/20240831/db5c74c30551d57df8763b16c3fea2e7.jpg.webp) 系统启动流程,开机后初始化外设以及wifi,随后尝试连接wifi,wifi连接状态ok的回调中连接华为iot云,连接ok的状态回调创建子线程,周期性上报数据。查看启动log如下 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/1f9dfad554c304afcf7d5d7d4058463a.png.webp) * 软件主要逻辑 电池的信息都封装到 _SystemDataStru 结构体中 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/0324716e23d4a1b3ae277398f0c5017e.png.webp) 使用m_ListKey列出物模型对应关系以及数据类型 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/6a9a04ef931d28484c794af9d99d6279.png.webp) 在main主线程启动后调用mq_start 创建连接华为Iot云服务器,部分逻辑代码如下 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/ea0316e800ba2ba4636cb169052e640e.png.webp) 属性上报逻辑主要在子线程中,周期为1s时间上报一次 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/818d307a41e933ca0ec21b9ad9a0ef39.png.webp) 在数据组json包时主要是放在IOTA_ReportBmsInfoPayload函数中处理,会根据St_ListIotKey结构中逐条添加,最后加上时间信息词条 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/91d1c0da1c868ab0e8a9e1436c502b89.png.webp) 时间信息添加到json下面词条 ``` rt_memset(strbuff, '\0', sizeof(strbuff)); char* p_timeStr = dev_datetime_get_time(); sprintf(strbuff, "%s", p_timeStr); cJSON_AddStringToObject(paras, "DateTime", strbuff); ``` 订阅消息则在TopicDataProcess中将数据逐条解析,更新到_SystemDataStru 结构体中字段,并发出通知,若switch状态有变化则控制继电器 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/954f2bdccfed47288f6318dc47d8c68b.png.webp) 必要的计算任务也放在子线程中,对电芯的单体电压、温度的最大值最小值以及各个最值电芯的位置查找,Soc计算等 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/22dd208c5c37bcb0f47eb33f81489c37.png.webp) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240831/3ad6f413256e665592f6add0b0edc5b6.png.webp) #### 视频 视频连接如下: https://www.bilibili.com/video/BV1jcnoewEDo/ #### 总结 * 该项目中服务器端操作较多,主要因为近期学习华为云的一些平台于是才做了此项目,运用了华为云Iot、桶OBS、DLV等,后面可加入ModelArts,做AI的预测,使得该项目有一定的提升空间 * STM32F407开发板外设资源较为丰富,必要的传感器以及工业接口485/can应有尽有,芯片性能也较强,可以根据不同项目以及数据量适当运用。 * 也很感激RT-Thread开源的支持,赠送了这么贵重的开发板。而且RT-Thread开发包非常丰富,后期可在工作或业余项目中使用到
5
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
小手凉凉
这家伙很懒,什么也没写!
文章
7
回答
2
被采纳
0
关注TA
发私信
相关文章
1
RT-THREAD在STM32H747平台上移植lwip
2
正点原子miniSTM32开发板读写sdcard
3
反馈rtt串口驱动对低功耗串口lpuart1不兼容的问题
4
Keil MDK 移植 RT-Thread Nano
5
RT1061/1052 带 RTT + LWIP和LPSPI,有什么坑要注意吗?
6
RT thread HID 如何收发数据
7
求一份基于RTT系统封装好的STM32F1系列的FLASH操作程序
8
RT-Thread修改项目名称之后不能下载
9
rt-studio编译c++
10
有木有移植rt-thread(nano)到riscv 32位MCU上
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
本月文章贡献
程序员阿伟
6
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部