TobudOS(TencentOS tiny)LoRaWAN 开发入门指南:从 P-NUCLEO-LRWAN3 套件到腾讯云 IoT Explorer 全流程实战

📅 发布时间:2026/10/13 0:38:55
TobudOS(TencentOS tiny)LoRaWAN 开发入门指南:从 P-NUCLEO-LRWAN3 套件到腾讯云 IoT Explorer 全流程实战
【免费下载链接】TobudOSTobudOS 是面向物联网领域开发的实时操作系统早期版本基于腾讯自研的物联网操作系统TencentOS Tiny2020年由腾讯捐赠到开放原子开源基金会进行孵化2023年正式更名为TobudOSTobudOS具有低功耗低资源占用模块化安全可靠等特点可有效提升物联网终端产品开发效率提供精简的 RTOS 内核内核组件可裁剪可配置可快速移植到多种主流 MCU (如 STM32 全系列) 及模组芯片上。而且基于 RTOS 内核提供了丰富的物联网组件内部集成主流物联网协议栈如 CoAP/MQTT/TLS/DTLS/LoRaWAN/NB-IoT 等可助力物联网终端设备及业务快速接入物联网云平台。项目地址https://gitcode.com/openatomfoundation/TobudOS点击查看免费下载本篇指南以 ST P-NUCLEO-LRWAN3 开发套件为载体完整讲解如何在 TobudOS原 TencentOS tiny上搭建 LoRaWAN 节点与网关的开发环境、运行基础内核实验并通过 AT 框架驱动 RHF76 LoRaWAN 模组将一台 LoRa 温湿度传感器接入腾讯云物联网开发平台IoT Explorer。读完本文你将掌握 LoRaWAN 节点/网关的硬件构成、MDK 开发环境搭建、设备数据解析脚本的编写与模拟测试以及设备在线调试的完整闭环操作。1. ST P-NUCLEO-LRWAN3 套件简介P-NUCLEO-LRWAN3 是一套完整的 LoRaWAN 评估套件同时包含网关和节点用于评估 LoRaWAN 网络。使用该套件用户可以轻松搭建 LPWAN 网络学习 LoRaWAN 技术并了解如何在自有应用程序中使用 LoRaWAN。LoRa 网关套件由 ST Nucleo-F746ZG 底板和瑞兴恒方基于 Semtech SX1301 的 LRWAN_GS 模块组成。ST Nucleo LoRa 节点套件由 LRWAN_NS1 扩展板和 ST Nucleo-L073 底板组成。LRWAN_NS1 扩展板集成瑞兴恒方的 RHF0M003 LoRaWAN 模组并集成了4 个 I2C 传感器件温湿度传感器 HTS221气压传感器 LPS22HB3 轴磁力传感器 LIS3MDL6 轴姿态传感器 LSM6DS3。说明当前仓库中LoRaWAN 例程所驱动的模组为瑞兴恒方RHF76见 devices/rhf76_lora/RHF76.h它属于同一 RHF0M 系列 LoRaWAN 模组通过串口 AT 指令与 MCU 交互。文档中节点所用 RHF0M003 与例程所用 RHF76 的 AT 指令集一致均可直接套用下文 4.4 节的节点例程。2. LoRaWAN 节点硬件详解2.1 NUCLEO-L073RZ基于 Cortex-M0 的评估板NUCLEO-L073RZ 基于 NUCLEO 64 公版 PCB 设计可以方便地更换 ST 的其它 64 PIN MCU。主要特性LQFP64 封装的 STM32-L073RZT6 MCU20KB SRAM、192KB Flash、6KB data EEPROM两种扩展接口Arduino UNO 扩展接口、STM32 MORPHO 扩展接口板载 ST-LINK/V2-1 调试/编程器灵活的供电方式选择板载 3 个 LEDLD1、LD3 指示工作状态LD2 为用户可编程 LED两个按键复位键与用户可编程按键USB 重枚举能力支持 VCP、MSD、DEBUG 功能支持大量 IDE 开发环境。对应 Cortex-M0 内核的 TobudOS 移植代码位于 arch/arm/arm-v6m 与 arch/arm/arm-v7m/cortex-m0说明该内核系列在 TobudOS 中被完整支持。2.2 LRWAN_NS1 扩展板硬件1扩展板接口兼容 Arduino UNO 接口。2扩展板同一个 I2C 端口上挂载了 4 个 I2C 传感器HTS221、LPS22HB、LIS3MDL、LSM6DS3原理图分别见 nucleo_extend_hts221.png、nucleo_extend_lps22hb.png、nucleo_extend_lis3mdl.png、nucleo_extend_lsm6ds3.png。3LoRaWAN 通信模组电路原理图见 nucleo_extend_lora_module.png模组通过 UART 与 MCU 通信由 MCU 侧 AT 框架统一管理。3. LoRaWAN 节点软件开发环境准备3.1 MDK 软件介绍与安装MDKRealView MDK / MDK-ARM是 ARM 公司基于 uVision 界面推出的嵌入式软件开发工具面向 ARM7、ARM9、Cortex-M 系列处理器。MDK 包含工业标准的 Keil C 编译器、宏汇编器、调试器、实时内核等组件支持所有基于 ARM 的设备。安装要点从 Keil 官网下载 MDK 软件版本最好是 5.24 及以上教程以 5.24 版本为例双击安装文件一路 Next勾选I agree同意安装协议选择安装路径默认或自建目录均可填写用户信息后继续 Next等待安装完成点击 Finish特别提示必须输入正版 License 激活 MDK 软件进入 License Management 导入 License。3.2 Pack 安装安装完 MDK 后需要安装开发套件中单片机型号对应的 Pack本例为 STM32L0 系列对应Keil.STM32L0xx_DFP.2.0.0.pack。两种方式方式一离线从官网 Pack 下载页面下载对应.pack文件后直接安装方式二在线打开 MDK 的 Pack Installer 界面选择STM32L0xxPack点击 Install 在线安装。安装完成后重启 MDK 即可使用。3.3 ST-Link 驱动安装开发板选用 ST 公司的 ST-Link V2 仿真器进行程序烧写与仿真从 ST 官网下载 ST-Link 驱动stsw-link009驱动分两种32 位系统安装dpinst_x8664 位系统安装dpinst_amd64运行对应驱动安装安装路径尽量保持默认将 ST-Link 通过 USB 连接电脑打开设备管理器看到对应设备即表示驱动安装成功。两点提醒不同 Windows 版本的设备名称和所在设备管理器栏目可能不一样例如 WIN10 下显示为STM32 STLINK若设备名称旁显示黄色感叹号请右键设备名称选择更新驱动程序。3.4 MDK 工程配置仿真器设置驱动安装成功后在 MDK 中配置程序烧写与仿真环境点击工程配置按钮进入工程配置界面选择Debug选项进入仿真器设置界面下拉仿真器列表选择ST-Link Debugger并勾选右侧Use点击Settings进入 ST-Link V2 配置界面开发板程序烧录方式为 SW因此Unit 选择 ST-Link/V2、Port 选择 SW并确认右侧框内检测出 SW 设备点击确认保存配置。3.5 串口调试助手的使用串口调试助手如 sscom5.13.1为免安装软件解压即可使用。操作步骤打开电脑设备管理器在端口列表查看 PC 与开发板连接的端口号示例中为 COM6在串口工具中选择对应端口开发板程序波特率设置为115200因此串口工具中选择 115200 波特率。4. TobudOS 基础内核实验HelloWorld4.1 打开与编译工程TobudOS原 TencentOS tiny官方开源仓库源码根目录为TobudOS/。当前仓库中hello_world 示例源码位于 examples/hello_world/hello_world.c对应的板级 KEIL 工程可参考 board/BearPi_STM32L431RC/KEIL/hello_world 等目录。该示例创建了两个 TencentOS tiny 任务交替运行打印消息void task1_entry(void *arg) { while (1) { printf(###I am task1\r\n); tos_task_delay(2000); } } void task2_entry(void *arg) { while (1) { printf(***I am task2\r\n); tos_task_delay(1000); } } void application_entry(void *arg) { tos_task_create(task1, task1, task1_entry, NULL, 3, task1_stk, TASK1_STK_SIZE, 0); tos_task_create(task2, task2, task2_entry, NULL, 3, task2_stk, TASK2_STK_SIZE, 0); }打开工程后展开工程导航中的 examples 目录即可看到源码。点击 MDK 工具栏编译按钮Rebuild All编译整个工程。4.2 下载与运行先配置下载环境进入 Debug 设置选择 ST-Link Debugger并将 Flash Download 配置为对应的 STM32L0 器件算法编译完成后点击工具栏LOAD按钮下载程序连接好串口在 PC 串口助手中即可看到两个任务交替运行、打印消息并完成计数输出形式类似###I am task1 ***I am task2 ***I am task2 ###I am task1 ...task1 每 2 秒打印一次task2 每 1 秒打印一次符合tos_task_delay的延时设定。更多 TobudOS 基础内核的使用可参考内核开发指南doc/04.Development_Manual.md 与 SDK 文档doc/05.SDK_Manual.md。5. 使用 AT 框架驱动 LoRaWAN 节点对接腾讯云 IoT Explorer本节实验场景一台 LoRa 温湿度传感器接入物联网开发平台通过平台远程查看传感器的温度、湿度并可远程配置传感器的上报周期。整体链路为LoRa 节点(RHF76 模组) ⇄ LoRa 网关(LRWAN_GS) ⇄ 腾讯云物联网开发平台 AT 框架驱动 UDP 透传 控制台/数据解析5.1 控制台操作LoRa 节点创建项目和产品登录物联网开发平台控制台选择【新建项目】填写项目基本信息后保存项目名称输入LoRa 温湿度传感器演示或其他名称项目描述按实际需求填写项目新建成功后即可新建产品。新建产品进入项目产品列表页单击【新建产品】填写产品基本信息产品名称输入温湿度传感器或其他名称产品类型选择温湿度传感器认证方式选择密钥认证通信方式选择LoRaWAN产品新建成功后可在产品列表页查看该产品。创建数据模板单击产品名称进入产品配置页在【自定义功能】下单击【新建功能】自定义产品功能。本示例需要 3 个属性与 examples/LoRaWAN/lora_demo.c 头部注释中的数据模板一一对应类型名称标识符(Token)数据类型读写属性propertytemperaturetemperatureinteger只读range: [-100, 155]unit: centigradepropertyhumidityhumidityinteger只读range: [0, 100]unit: %propertyreport_periodperiodinteger读写range: [0, 3600]unit: second配置 LoRaWAN 参数在设备开发页面中按需调整 LoRaWAN 参数配置本示例使用默认的OTAA入网配置。设备数据解析LoRa 类资源受限设备不适合直接传输 JSON 格式数据因此平台提供设备数据解析能力将设备原始数据字节流转化为产品 JSON 数据。设备数据协议设备上行数据共 4 字节第 1 字节为温度第 2 字节为相对湿度第 3、4 字节为上报周期单位秒设备下行数据为 2 字节上报周期单位秒。上行数据解析脚本主函数为RawToProtocol入参为fPort设备上报的 LoRaWAN 协议数据的 FPort 字段和bytesFRMPayload 字段出参为产品数据模板协议格式的对象function RawToProtocol(fPort, bytes) { var data { method: report, clientToken: new Date(), params: {}, }; data.params.temperature bytes[0]; data.params.humidity bytes[1]; data.params.period bytes[2] | (bytes[3] 8); return data; }这段脚本与节点端 examples/LoRaWAN/lora_demo.c 中dev_data_t的打包顺序完全对应——节点将temperature、humidity各占 1 字节、period占 2 字节小端序列化后经tos_lora_module_send上报。下行数据解析脚本主函数为ProtocolToRaw入参为产品数据模板协议格式的对象出参为至少 3 个字节的数组第 1 字节下发给设备的 LoRaWAN 协议数据的 FPort 字段第 2 字节MType0 表示 Unconfirmed Data Down1 表示 Confirmed Data Down第 3 字节起FRMPayload 字段。function ProtocolToRaw(obj) { var data new Array(); data[0] 5; // fport5 data[1] 0; // unconfirmed mode data[2] obj.params.period 0x00ff; data[3] (obj.params.period 8) 0x00ff; return data; }脚本模拟测试在数据解析页面下方的模拟调试工具中验证脚本。上行消息设备原始数据0x113DB80B转为数组为[17, 69, 30, 0]对应温度 17、湿度 69、周期 30 秒bytes[2] | (bytes[3] 8) 30填入上行数据编辑框后单击【运行】右侧即可查看解析结果下行消息填入{params: {period: 15}}验证下行解析输出为 4 字节数组[5, 0, 15, 0]fport5、非确认模式、period 小端两字节。数据解析脚本配置界面如下图所示创建测试设备在设备调试页面单击【新建设备】设备名设为dev001。DevEUI 等信息可从 LoRa 节点开发板背面贴纸上获取。5.2 控制台操作LoRa 网关登录物联网开发平台控制台选择上文对应的项目在左侧工具列表中选择【服务中心】【LoRa 网关管理】进入 LoRa 网关管理页面选择【添加网关】填写网关基本信息网关名称本示例填写 GW1GwEUI网关唯一 ID。本例根据 ST NUCLEO LoRa GW 背部的 MAC 地址将 6 字节 MAC 地址的中间补足0xffff得到是否公开选择是表示社区开发者可在社区网络查看该网关并可通过该网关进行 LoRa 节点接入选择否则仅用户自己能查看该网关网关新建成功后可在网关列表页查看 GW1。5.3 LoRa 网关实物操作硬件连接整个系统由 LRWAN_GS_LF1 网关网关模组 STM32F746 Nucleo 核心板、5V 适配器和电脑组成使用 5V 适配器通过 USB 线连接到网关模组的 Micro USB 接口为整个网关供电Nucleo 核心板上的 Micro USB 口非以太网口一侧通过 USB 线连接 PC实现虚拟串口功能网关开发板通过网线连接上一级路由器的 LAN 口通过 DHCP 方式连接以太网。串口准备硬件连接成功后打开 PC 设备管理器查看网关对应串口请确保已安装 ST-Link 驱动打开串口工具并配置端口号示例为 COM5、波特率 115200然后打开串口。配置修改按上图完成硬件连接和系统搭建配置服务器地址本示例设置为腾讯云物联网开发平台的 LoRa 服务器地址接入域名loragw.things.qcloud.com接入端口 1700ATPKTFWDloragw.things.qcloud.com,1700,1700配置频率计划调整频点信息到 486.3MHz ~ 487.7MHz指令需要逐条发送ATCH0,486.3,A ATCH1,486.5,A ATCH2,486.7,A ATCH3,486.9,A ATCH4,487.1,B ATCH5,487.3,B ATCH6,487.5,B ATCH7,487.7,B ATCH8,OFF ATCH9,OFF其他指令ATlogon打开网关日志ATEUI查询网关 ID。运行通过ATReset复位网关开始服务器连接。从串口日志查看LORAWAN SERVER: loragw.things.qcloud.com表明服务器地址修改成功。Ethernet started DHCP IP: 192.168.3.249 Downlink UDP Connected Uplink UDP Connected表明网关 DHCP 入网成功网络连接正常。5.4 LoRa 节点实物操作Step 1下载 LoRaWAN 例程当前仓库中LoRaWAN 示例源码位于 examples/LoRaWAN/lora_demo.c 与 examples/LoRaWAN/lora_demo.h对应板级 KEIL 工程可参考 board/TencentOS_tiny_EVB_MX_Plus/KEIL/lorawan 等目录。示例工程包含 STM32L073 外设驱动、TobudOS 内核、AT 框架、RHF76 LoRaWAN 模组驱动与 LoRaWAN 示例案例。Step 2代码修改1修改 examples/LoRaWAN/lora_demo.c 中的入网参数填入节点对应的DevEUI 和 AppKEY可从 LoRa 节点开发板背面贴纸获取tos_lora_module_join_otaa(8cf957200000f806, 8cf957200000f8061b39aaaaad204a72);2修改 devices/rhf76_lora/RHF76.h 中的信道设置宏。文档示例原计划使用 80~87 信道#define RHF76_ATCMD_SET_CHANNEL atchnum,80-87\r\n注意当前仓库的 RHF76.h 中该宏默认已是atchnum,80-87\r\n如你的模组需要其它信道区间按需调整即可。Step 3编译单击 MDK 工具栏【Rebuild All】编译整个工程。Step 4下载单击 MDK 工具栏【Download】下载编译好的固件。查看运行结果节点下载好固件后会自动重启运行从串口即可查看设备运行日志看到如下日志即说明 LoRa 节点已经通过网关成功入网---JOIN: Network joined ---JOIN: NetID 000035 DevAddr 6B:CC:9B:5D从源码角度看这段入网流程由 devices/rhf76_lora/RHF76.c 中的rhf76_join_otaa()完成依次执行设置 LWOTAA 模式ATMODELWOTAA、写入 DevEUIATIDdeveui,...、写入 AppKeyATKEYappkey,...等待 2 秒后发送ATjoin并期望回显JOIN: Network joined。5.5 查看设备状态保持 LoRa 节点和 LoRa 网关为运行状态进入【控制台】【产品开发】【设备调试】可查看到设备dev001单击【调试】进入设备详情页单击【设备属性】可查询设备上报到开发平台的最新数据及历史数据设备属性的最新值显示设备上报的最新数据设备属性的更新时间显示数据的更新时间单击【查看】可查看某个属性的历史上报数据。5.6 查看设备通信日志单击【设备日志】可查询该设备某段时间范围内的所有上下行数据上行设备端上报到开发平台的数据下行从开发平台下发到设备的数据。5.7 在线调试远程修改上报周期LoRa 节点成功连接平台后在控制台【设备调试】列表单击【调试】进入在线调试将上报周期设置为 15 秒单击【发送】查看 LoRa 节点串口日志可看到已成功接收下发的数据。注意本示例的 LoRa 节点是LoRaWAN Class A 类设备这类设备不会立即收到下行数据需要在节点有数据上行后服务器才会向该设备下发数据。因此在 LoRa 节点上报数据之后才能看到下发的周期调整命令。节点串口会显示如下日志表示下发指令已成功到达设备端rhf76_incoming_data_process 4: 0F00 len: 2 data[0]: 15 data[1]: 0 report_period: 156. 从源码理解 AT 框架与 LoRaWAN 模组驱动6.1 模组驱动统一抽象lora_module_tTobudOS 通过 net/lora_module_wrapper/lora_module_wrapper.h 定义了 LoRa 模组驱动的统一接口lora_module_t屏蔽不同 LoRa 模组的差异typedef struct lora_module_st { int (*init)(void); int (*join_otaa)(const char *deveui, const char *appkey); int (*join_abp)(const char *deveui, const char *devaddr, const char *nwkskey, const char *appskey); int (*send)(const void *buf, size_t len); int (*send_unconfirmed)(const void *buf, size_t len); int (*close)(void); lora_recv_callback_t recv_callback; } lora_module_t;devices/rhf76_lora/RHF76.c 中RHF76 模组通过lora_module_rhf76这个结构体实例接入该框架rhf76_lora_init()完成三件事int rhf76_lora_init(hal_uart_port_t uart_port) { tos_at_init(uart_port, rhf76_at_event, sizeof(rhf76_at_event) / sizeof(rhf76_at_event[0])); tos_stopwatch_delay_ms(1000); tos_lora_module_register(lora_module_rhf76); tos_lora_module_init(); }tos_at_init()初始化 AT 框架并注册事件表tos_lora_module_register()注册 RHF76 模组驱动tos_lora_module_init()调用rhf76_init()依次执行退出低功耗、复位、设置 Class A、设置 CN470 频段、设置信道、关闭 ADR、设置非确认消息重发次数等初始化序列对应 RHF76.c 中的rhf76_init()。6.2 应用层调用链在 examples/LoRaWAN/lora_demo.c 的application_entry()中应用只需 4 行代码即可完成整个 LoRaWAN 业务rhf76_lora_init(HAL_UART_PORT_1); tos_lora_module_recvcb_register(recv_callback); tos_lora_module_join_otaa(8cf957200000fa57, 8cf957233333fa572059eeeeed204a72); while (1) { /* 采集并打包温度、湿度、周期 */ dev_data_wrapper.u.dev_data.temperature temperature / 10; dev_data_wrapper.u.dev_data.humidity humidity / 10; dev_data_wrapper.u.dev_data.period report_period; tos_lora_module_send(dev_data_wrapper.u.serialize, sizeof(dev_data_t)); tos_task_delay(report_period * 1000); }tos_lora_module_recvcb_register()注册下行数据回调recv_callback其解析逻辑与 5.1 节的下行协议一致单字节则report_period data[0]两字节则report_period data[0] | (data[1] 8)tos_lora_module_send()内部调用rhf76_send()将 4 字节业务数据转为十六进制 ASCII 字符串通过ATCMSGHEX...发送并等待CMSGHEX: ACK Received回显确认节点按report_period秒周期循环上报实现平台远程修改上报周期的闭环。6.3 AT 事件驱动下行数据的接收AT 框架见 net/at/include/tos_at.h维护一个事件表模组主动上报的 URC 消息会触发对应回调。RHF76 的接收事件注册为at_event_t rhf76_at_event[] { { CMSGHEX: PORT:, rhf76_incoming_data_process }, { MSGHEX: PORT:, rhf76_incoming_data_process } };rhf76_incoming_data_process()从串口读取引号包裹的十六进制数据转换为字节流后回调到recv_callback最终落到report_period的更新上。这也是 5.7 节在线调试中rhf76_incoming_data_process 4: 0F00日志的来源0F00即 period15 的小端两字节。6.4 更多 LoRaWAN 工程参考仓库中还提供了多种基于 RHF76/RHF0M 模组的 LoRaWAN 工程变体可作进一步参考board/TencentOS_tiny_EVB_MX_Plus/BSP/LoRaWAN/lora_demo.c在 LoRaWAN 上报基础上叠加了 shell 交互与消息队列发送失败连续超过 10 次会触发系统复位重连board/TencentOS_tiny_EVB_LX/BSP/LoRaWAN/lora_demo.cRISC-V 平台EVB_LX的对应版本board/TencentOS_Tiny_EVB_STM32WL/KEIL/lorawan基于 STM32WLE5单芯片集成 Cortex-M4 与 SX126x IP的 LoRaWANOpenCPU方案即 MCU 与射频集成在同一芯片内其快速入门文档见 doc/26.TencentOS_tiny_EVB_WL_Quick_Start.md。7. 常见问题排查节点始终无法入网未出现JOIN: Network joined检查 DevEUI/AppKey 是否与节点背面贴纸一致、控制台设备是否为 OTAA 入网方式、网关是否已入网且服务器地址配置正确、节点信道atchnum,80-87是否与网关频点486.3MHz ~ 487.7MHz匹配。控制台下发后节点收不到数据LoRaWAN Class A 设备只能在上行后的接收窗口收下行数据请先确认节点有数据上报串口可见CMSGHEX: ACK Received再在控制台发送下行指令。串口无输出确认串口工具端口号与波特率115200正确ST-Link 驱动已安装且设备管理器无黄色感叹号。编译报器件型号错误确认已安装对应 MCU 的 PackSTM32L0 系列对应Keil.STM32L0xx_DFP并在 MDK Options for Target 中正确选择 Device。赞分享【免费下载链接】TobudOSTobudOS 是面向物联网领域开发的实时操作系统早期版本基于腾讯自研的物联网操作系统TencentOS Tiny2020年由腾讯捐赠到开放原子开源基金会进行孵化2023年正式更名为TobudOSTobudOS具有低功耗低资源占用模块化安全可靠等特点可有效提升物联网终端产品开发效率提供精简的 RTOS 内核内核组件可裁剪可配置可快速移植到多种主流 MCU (如 STM32 全系列) 及模组芯片上。而且基于 RTOS 内核提供了丰富的物联网组件内部集成主流物联网协议栈如 CoAP/MQTT/TLS/DTLS/LoRaWAN/NB-IoT 等可助力物联网终端设备及业务快速接入物联网云平台。项目地址https://gitcode.com/openatomfoundation/TobudOS点击查看免费下载相关推荐TobudOSTencentOS TinyCH32V307 RISC-V 开发板入门与腾讯云 IoT Explorer 对接实战指南TobudOSTencentOS TinyCH32V307 RISC V 开发板入门与腾讯云 IoT Explorer 对接实战指南 本文是 CH32V_E基于 STM32G0 与 TencentOS Tiny 的物联网智能灯实战腾讯云 IoT Explorer 全流程接入指南基于 STM32G0 与 TencentOS Tiny 的物联网智能灯实战腾讯云 IoT Explorer 全流程接入指南 本篇技术指南围绕 TobudOSOfficeCLI 股票图实战用 chartTypestock 在 PowerPoint 中生成 HLC 与 OHLC 图表OfficeCLI 股票图实战用 chartTypestock 在 PowerPoint 中生成 HLC 与 OHLC 图表 本文以 OfficeCLI 仓创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考