【项目】基于STM32F103C8T6的四足爬行机器人设计与实现(源码工程)
👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。
【项目】基于STM32F103C8T6的四足爬行机器人设计与实现(源码工程)
目录
- 【项目】基于STM32F103C8T6的四足爬行机器人设计与实现(源码工程)
- 一、项目介绍
- 二、项目设计过程
- 2.1 结构设计
- 2.2 电源设计
- 2.3 STM32F103C8T6的开发
- 2.4 ESP32-CAM开发
- 2.5 Flet应用开发
- 三、机器人步态规划
- 四、项目搭建及部署
- 4.1 MQTT服务器的部署以及服务器图像接收的配置
- 4.2 STM32开发环境
- 4.3 ESP32-CAM开发环境
- 4.4 Flet应用开发环境
- 4.5 模块接线图
- 五、项目总结
一、项目介绍
本设计使用STM32F103C8T6作为主控,结合ESP32-CAM与MQTT,实现实时图像回传以及远程控制。

实物图
在机器人的控制上使用了云端控制和本地控制两种方案。其中由Flet编写的移动端App能够通过MQTT协议与安装在服务器的EMQX进行通信,经云端传输的命令由ESP32-CAM接收后通过USART2传递给单片机,单片机就可以根据该命令控制模块,让机器人做出对应的动作。而ESP32-CAM拍摄的视频流则会实时上传至服务器,由服务器上部署的Nodejs Server接收后,通过网页呈现出来,至此实现了云端控制的全过程。
而本地控制则由Microdot来实现,在连接上由ESP32-CAM发出的热点之后,通过访问指定IP来访问本地控制面板。点击网页上的按钮就能够控制ESP32-CAM, ESP32-CAM通过串口向单片机发送命令。而由ESP32-CAM回传的图像流则会通过WIFI,实时显示在本地控制面板的上方。

系统结构图
仓库内包含了本项目所需的所有代码,其中还包括机器人的3D建模文件:
| 文件名 | 说明 |
|---|---|
| 1、FreeCAD_Projects | 机器人3D建模工程文件 |
| 2、HAL_C8T6 | 开发STM32的工程文件 |
| 3、Fletapp | 开发Flet应用的工程文件 |
| 4、ESP32-CAM | 开发ESP32-CAM的Python代码以及前端代码 |
| 5、CAM_Server | 服务器上负责ESP32-CAM图像接收的Nodejs代码 |
| 6、Other | 包含Gerber文件和BOM表等文件 |

二、项目设计过程
2.1 结构设计
四足爬行机器人的结构设计则使用了开源软件FreeCAD进行设计。结合MG90S舵机的尺寸,在腿部设计了凹槽与螺丝安装孔。机体中间预留电池安装孔,在关键位置还设计了螺丝孔,使结构更加牢固,方便后期的安装。

3D模型图
建模完成后使用切片软件对模型进行切片,并将切片结果导入至3D打印机当中进行打印。填充密度为0.1mm,层厚0.2mm,挤出头温度设定为210℃。打印材料则选择了直径为1.75mm的PLA材料。电源板上预留了螺丝孔以安装尼龙柱,各个功能模块由万用板电路连接后通过尼龙柱堆叠在机体上方,方便快速装卸和调试。

2.2 电源设计
四足爬行机器人的电源模块选用了TI的TPS5430,在设计参考了【电赛模块】TPS5430正负电源输出模块。电源模块上分别设计了三路电源,分别为舵机以及主控与功能模块进行供电。

原理图


电源板3D渲染图
2.3 STM32F103C8T6的开发
在机器人上电后,首先初始化功能模块以及相关外设,同时初始化FreeRTOS,之后的任务就转交给FreeRTOS进行调度。在收到来自USART2的命令之前,单片机执行默认任务。在默认任务里,机器人始终保持停止状态,等待用户发送的命令。在USART2接收到命令后,单片机会进入串口中断程序,并在中断程序内判断该指令的具体含义,通过指令内容来执行对应的任务。

程序流程图
当USART2收到来自ESP32-CAM发送的信息时,单片机会执行USART2的中断函数,在中断函数内,对接收到的信息进行判断。首先在代码中创建一个数组以设置缓冲区,结合HAL库函数将接收到的数据存在缓冲区当中,之后匹配缓冲区内的内容来判断是否是对应的命令。
在代码中先判断当前机器人所执行的任务是否是当前已经被激活的任务,如果是则直接跳过,避免了任务被重复激活而导致单片机死机。在判断任务没有被重复激活之后,通过事件位来触发机器人的动作任务。在动作任务被触发后,根据任务标志执行对应的任务内容。
匹配到对应的任务内容后,开始执行对应的代码。先在OLED上显示当前的任务状态,之后执行对应的动作函数,至此完成了任务流程。任务在被激活后会反复执行,直到被新的指令打断。
⚠注意:项目中还包括了STM32对OLED12864、HC-SR04超声波模块、PCA9685舵机驱动模块的驱动实现。关于驱动原理可以根据项目代码可看出,这里不再过多赘述,可自行下载项目代码查看。
2.4 ESP32-CAM开发
ESP32-CAM在烧录MicoroPython固件后使用Arduino Lab for MicroPython开发,相关的MicroPython固件也可在本仓库中获取。
Microdot是一个极小的Python Web框架,专为资源受限的系统设计,例如微控制器以及嵌入式系统,适合运行在MicroPython之上。在本文的设计中,利用Microdot与ESP32-CAM支持WIFI的特性,在ESP32-CAM上搭建一个小型的Web服务器,实现用户与机器人之间的交互。

ESP32-CAM程序流程图
ESP32-CAM在上电之后,会自行执行内部的程序。程序会在一开始初始化摄像头设备,并启动AP热点以等待用户连接。待用户连接到由ESP32-CAM发出的AP热点后,在浏览器中访问192.168.4.1,即可进入模式选择网页。这里的前端网页也是以文件的形式保存在ESP32-CAM当中的,因此整个连接过程完全在本地执行。


“模式选择”界面
以本地控制为例,用户选择“本地控制”后,向ESP32-CAM发送Get请求。ESP32-CAM在接收到指令后,返回本地控制面板的网页。在本地控制网页当中就可以直接看到由ESP32-CAM拍摄的图像流画面。画面下方则为机器人的控制按钮,即前进、后退、左转、右转。当用户按下按钮后,按钮中间会出现信息提示,告诉用户当前按钮按下的功能以及按钮的状态。

“本地控制面板”界面
在用户按下按钮后,同样会以Get请求的形式向ESP32-CAM发送命令,ESP32-CAM在接收到指令后,直接在串口输出命令,同时串口连接在STM32的USART2上。至此实现了用户对机器人的控制。
若用户选择的是AP配网,同样是以get请求的方式向ESP32-CAM发送数据,ESP32-CAM则向用户返回配网页面。在配网页面内,用户则需要输入WIFI名称和密码。由于ESP32-CAM只支持2.4G,因此用户在连接时需要注意连接的WIFI频段是否是2.4GHz的。

“WIFI设置”界面
在用户提交信息之后,跳转至确认界面,这一设计为用户提供了一个修改的机会,如果之前填写的信息有误,用户可返回修改,若信息确认无误,则点击确认按钮提交至ESP32-CAM。

“提交成功”界面
在ESP32-CAM接收到来自用户侧发送的WIFI信息后,则执行连接WIFI热点的代码,在连接WIFI的同时断开与用户的连接,同时连接至在代码中已经设置好的MQTT服务器,至此完成本地AP配网以及云端连接的流程。
在机器人上电后,首先初始化功能模块以及相关外设,同时初始化FreeRTOS,之后的任务就转交给FreeRTOS进行调度。在收到来自USART2的命令之前,单片机执行默认任务。在默认任务里,机器人始终保持停止状态,等待用户发送的命令。在USART2接收到命令后,单片机会进入串口中断程序,并在中断程序内判断该指令的具体含义,通过指令内容来执行对应的任务。

2.5 Flet应用开发
Flet是一种基于Python的应用框架,允许开发者使用Python语言构建Web、桌面以及移动端应用程序,其灵感源于Google的Flutter。Flet的设计非常轻量,并且支持多种平台,具有一套代码多端使用的跨平台特性。基于Python语言构建使得应用程序更容易维护,同时社区提供了丰富的控件,可以轻松构建用户界面。

Flet应用界面
App主要分为“说明”页面与“控制”页面两个部分。“说明”页面的作用是向用户简要介绍App的使用方法,包括机器人的控制方法以及配网流程。“控制”页面则为用户提供控制界面,同时将云端获取到的视频流在界面中显示。
当用户选择“控制”按钮后,App会按照程序中的设置,连接到设置好的IP地址、端口以及订阅的Topic,连接至EMQX服务器。页面中的视频则以WebView控件的形式,将网页上的图像流显示在页面当中。
当用户按下按钮后,App则通过网络,向EMQX平台发送命令,由于ESP32-CAM和App都连接到了服务器并且订阅了相同的Topic,因此在App发送信息的同时,ESP32-CAM也能从云服务器收到消息。在ESP32-CAM收到命令后,则通过串口,将命令转发至STM32,触发串口中断并执行对应的任务。至此完成由用户端经云服务到机器人的控制流程。
三、机器人步态规划
机器人行进动作可拆分为三个状态,这里以前进动作为例:
- 动作①:机器人将左右前肢与身体平行,后肢与身体呈135°夹角,四只脚垂直于地面,为接下来迈步做准备。
- 动作②:机器人的左前脚与右后脚同时抬高45°,之后左前肢与右后肢同时向前45°,最后左前脚与右后脚同时落下。
- 动作③:机器人的左后脚与右前脚同时抬高45°,之后左后肢与右前肢同时向前迈出45°,左前肢与右后肢同时向后45°最后左后脚与右前脚同时落下。
通过不断重复动作组,机器人能够实现四肢往返交替前进,而后退动作则是前进动作的镜像。

前进、后退步态示意图
机器人的转体动作同样可分为三个部分,以左转动作为例:
- 动作①:机器人将左右前肢与身体平行,后肢与身体呈135°夹角,四只脚垂直于地面,为接下来迈步做准备。
- 动作②:左后脚与右前脚向上抬起45°,之后左后肢与右前肢先向逆时针移动45°后左后脚与右前脚落下。左前脚与右后脚抬起45°,右后肢逆时针移动45°后左前脚和右后脚落下。
- 动作③:机器人将左后肢、右前肢和右后肢同时顺时针转45°,完成一次转体动作。
右转动作与左转相同,仅需将关节的旋转角度修改为逆时针即可。

左转、右转步态示意图
四、项目搭建及部署
4.1 MQTT服务器的部署以及服务器图像接收的配置
本项目使用EMQX作为MQTT服务器,其功能非常强大,可参考EMQX官网进行部署。依托阿里云的轻量应用服务器,利用1panel linux运维面板快速安装应用。在1panel面板中找到应用市场,搜索EMQX并点击安装。服务器就会自动给执行命令,从Docker镜像仓库拉取镜像并自动部署。之后在阿里云的服务器管理界面开放对应的端口,可自行选择使用域名解析后访问。待安装完成后,直接在浏览器中访问域名即可进入EMQX的控制面板。

EMQX面板

同样是使用1panel linux运维面板,先将本仓库当中“CAM_Server”文件夹中的代码上传至服务器的文件目录当中。在运维面板的菜单中找到网站->运行环境,选择“node.js”,之后点击“创建运行环境”。

创建运行环境
记得到云服务器/运维面板的防火墙开启对应的端口哦!😊
4.2 STM32开发环境
STM32使用HAL库进行开发,用STMCubeMX建立基础工程,与CLion配合开发。关于环境的搭建教程网上已经有很多教程指导了,这里就不再赘述。clone本仓库代码后,直接使用Clion打开“HAL_C8T6”文件夹即可使用。
4.3 ESP32-CAM开发环境
下载完前文提到的Arduino Lab for MicroPython IDE之后,打开IDE并将ESP32-CAM连接电脑。在IDE内连接对应的串口,将本仓库代码中“ESP32-CAM”文件夹内的文件烧录到ESP-CAM当中。
在“main.py”当中,如下地方需要自行修改为自己的服务器信息:

接收图像的服务器信息

MQTT服务器信息

4.4 Flet应用开发环境
Flet应用由于使用Python语言,所以使用PyCharm IDE进行开发。Flet具体的环境搭建可以参考Flet官方文档。同样的,在clone本仓库的代码后,直接使用PyCharm IDE打开项目中的“Fletapp”文件夹即可使用。
在“mqtt.py”当中,如下地方需要自行修改为自己的服务器信息:

MQTT服务器信息
在应用的开发过程中,由于编译出的APK文件一直不能够正常工作,因此就就尝试使用了Dev分支的SDK版本,以下是版本信息:

Flet应用版本信息
4.5 模块接线图
在搞定软件后,将各个模块与STM32连接,以下是模块连接图:

模块连接图
至此,应该能够将这个小机器人造出来啦~😎
五、项目总结
- 电源模块的设计仍然存在缺陷:虽然电源模块能够正常工作且输出电压,但是在设计过程当中仅仅考虑到了功能性,没有充分考虑到安全性。PCB电路的裸露容易导致线路因误触发生短路,会对电源模块乃至整个系统都造成安全威胁。可以考虑添加保险丝,可防止电源短路时产生的大电流导致的电路烧毁。同时还需要添加防反接/防倒灌二极管,以此来避免电源芯片的烧毁。
- 舵机的选取以及机器人的结构与姿态问题:由于在设计之初没有考虑到电池的重量,导致在实际运行时MG90S无法轻松支撑起机器人的重量。在行进过程中,由于机器人的重心不稳定导致前进与后退的任务都不是按照正常的直线轨迹行进。也有可能是因为3D打印机的误差较大,导致实际打印出来的结构体都存在一定偏移,最终导致了机器人的重心不稳与受力不均。
- App的优化:虽然App能够实现基础功能,但是仍然存在一系列的问题,例如App在使用完成后,必须清除缓存数据才能再次使用,否则打开之后屏幕会一直处于白屏状态,无法正常使用。同时App的控制界面没有实现自适应设备,一旦使用平板打开就会导致画面留有大量留白。在按下按钮后,按钮上方的画面也会随着页面同步刷新,影响使用。


相关文章:
【项目】基于STM32F103C8T6的四足爬行机器人设计与实现(源码工程)
👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 【项目】基于STM32F103C8T6的四足爬行机器人设计与…...
[代码调试]安装Text2Image(stable diffusion)模型环境的踩坑记录
文章目录 一、xFormers版本问题1、先确认下自己torch版本所对应的cuda版本2.安装对应版本(1) 到对应官网下载包本地安装(2)代码安装 二、attn_mask尺寸错误三、diffusers四、Huggingface 配置基于stable diffusion预训练模型的环境,记录踩坑记录 一、xFormers版本问…...
使用DeepSeek+本地知识库,尝试从0到1搭建高度定制化工作流(自动化篇)
7.5. 配图生成 目的:由于小红书发布文章要求图文格式,因此在生成文案的基础上,我们还需要生成图文搭配文案进行发布。 原实现思路: 起初我打算使用deepseek的文生图模型Janus进行本地部署生成,参考博客:De…...
理解三种哈希算法:MD5、CRC、SHA256
0、背景 哈希算法是一类重要的算法,用于将任意长度的数据映射为固定长度的哈希值。哈希算法广泛应用于数据完整性校验、密码学、数字签名等领域。本文将详细介绍三种常见的哈希算法:MD5、CRC 和 SHA256,并探讨它们的原理、特点及应用场景。 …...
机器学习基本篇
文章目录 1 基本概念2 基本流程2.0 数据获取2.1 预处理2.1.0 认识数据认识问题2.1.1 不平衡标签的处理a.随机过采样方法 ROS,random over-samplingb. SMOTE synthetic minority Over-Sampling Technique2.2 缺失值处理2.3 数据清洗2.3.0离散特征编码2.3.1 连续特征处理归一化标…...
#渗透测试#批量漏洞挖掘#Apache Log4j反序列化命令执行漏洞
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。 目录 Apache Log4j反序列化命令执行漏洞 一、…...
python常用库整理
Python常用库众多,涵盖了数据分析、科学计算、机器学习、Web开发、游戏开发、自然语言处理、图像处理、自动化测试等多个领域。以下是一些常用的Python库及其主要用途: 数据分析与科学计算 NumPy:用于科学计算的基础库,支持大型…...
SQL数据处理函数全解析
1. 引言 1.1 SQL简介 SQL(Structured Query Language)是用于管理和操作关系型数据库的标准语言。它允许用户查询、插入、更新和删除数据库中的数据。SQL的强大之处在于其内置的函数库,这些函数可以帮助我们更高效地处理数据。 1.2 数据处理函数的重要性 数据处理函数在S…...
Python解决“反应物浓度”问题
Python解决“反应物浓度”问题 问题描述测试样例解题思路代码 问题描述 在一个神秘的实验室里,科学家小Z正在研究一种特殊的化学反应。她有一个名为 reactant 的初始物质,其起始值为 0。为了推动实验进展,小Z设计了一系列操作,这…...
HTTP FTP SMTP TELNET 应用协议
1. 标准和非标准的应用协议 标准应用协议: 由标准化组织(如 IETF,Internet Engineering Task Force)制定和维护,具有广泛的通用性和互操作性。这些协议遵循严格的规范和标准,不同的实现之间可以很好地进行…...
百度搜索全面接入DeepSeek-R1满血版:AI与搜索的全新融合
不等了,就是现在!百度搜索全量接入DeepSeek-R1满血版 百度搜索已正式全量接入DeepSeek-R1满血版,在宣布“将接入”仅过了24小时后。 就在宣布“将接入”仅24小时后,百度搜索 已正式全量接入 DeepSeek-R1满血版!得益于…...
《DeepSeek技术:开启工业互联网低成本开发新时代》
在工业互联网蓬勃发展的当下,企业数字化转型的需求日益迫切。然而,高昂的应用开发成本却如同拦路虎,阻碍着众多企业的前进步伐。此时,DeepSeek技术的出现,为工业互联网应用开发带来了新曙光,凭借其独特优势…...
深入浅出TypedArray:网络数据处理、WebGPU与加密实战
JavaScript的TypedArray是现代Web开发中处理二进制数据的利器。本文将结合网络数据传输、WebGPU编程和简单加密算法三个实战场景,带你领略TypedArray的强大能力。 一、TypedArray基础认知 TypedArray家族包括Int8Array、Uint16Array、Float32Array等11种视图类型&a…...
nordic(nrf52832、nrf52840)如何使用SES(SEGGER Embedded Studio)编辑编译工程?
nordic官方例程中一般都会给出好几个不同的编译环境供用户选择,一般是 keil工程、armgcc工程、IAR工程、ses工程等。 一、segger embedded studio如何添加工程.h头文件? 1)首先打开options 2)下拉选中common 3)找到common下的Pre…...
LabVIEW利用CANopen的Batch SDO写入
本示例展示了如何通过CANopen协议向设备写入Batch SDO(批量服务数据对象)。Batch SDO允许用户在一次操作中配置多个参数,适用于设备的批量配置和参数设置。此方法能够简化多个参数的写入过程,提高设备管理效率。 主要步骤…...
P11071 「QMSOI R1」 Distorted Fate Solution
Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1,a2,⋯,an),有 m m m 个操作分两种: modify ( l , r , x ) \operatorname{modify}(l,r,x) modify(l,r,x):对每个 i ∈ [ l , r ] i \in [l,r] i∈…...
WebSocket在分布式环境中的局限性及解决方案
WebSocket 在分布式环境中存在一些局限性,特别是当系统需要扩展多个服务实例时,单个 WebSocket 连接的管理和消息推送就变得比较复杂。因此,必须采取一些额外的措施来确保 WebSocket 能在多个服务实例之间正确工作。 WebSocket 在分布式环境…...
Flutter 跳转后不允许返回
如果在 Flutter 中使用 Navigator.pushNamed(context, /),默认情况下它会将新的页面压入栈中,这样用户可以按返回键返回上一页。但如果你不想让用户返回,而是直接跳转到 / 并清除导航栈,可以使用 pushReplacementNamed 或 pushNam…...
spconv 安装测试
pip install spconv 报错: File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1736, in _wrapped_call_impl return self._call_impl(*args, **kwargs) File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/mod…...
关于es6-module的语法
ES6(ECMAScript 2015)引入了模块化的概念,旨在使 JavaScript 更加模块化、可维护和可重用。ES6 模块允许我们在不同的文件中组织和管理代码,使得不同模块之间的依赖关系更加清晰。 1. 导出(Export) 1.1 命…...
python旅游推荐系统+爬虫+可视化(协同过滤算法)
✅️基于用户的协同过滤算法 ✅️有后台管理 ✅️2w多数据集 这个旅游数据分析推荐系统采用了Python语言、Django框架、MySQL数据库、requests库进行网络爬虫开发、机器学习中的协同过滤算法、ECharts数据可视化技术,以实现从网站抓取旅游数据、个性化推荐和直观展…...
【弹性计算】IaaS 和 PaaS 类计算产品
《弹性计算产品》系列,共包含以下文章: 云服务器:实例、存储、网络、镜像、快照容器、裸金属云上运维IaaS 和 PaaS 类计算产品 😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀…...
视频转序列帧
视频转序列帧 介绍操作总结 介绍 这篇文章不是单独讲视频转序列帧所有的方法,这里是针对我后面要做序列帧动画优化的一个工具篇幅。这里我用的premiere Pro 2020下面会讲方法简称pr。 操作 打开pr点击新建项目 输入名称点击确认 将需要转换的视频导入到媒体浏览…...
大模型应用怎么学习,在哪里实现开发:Dify、AnyThingLLM、LangFlow
大模型应用怎么学习,在哪里实现开发 目录 大模型应用怎么学习,在哪里实现开发Dify、AnyThingLLM、LangFlow的官网地址及使用方法DifyAnyThingLLMLangFlowDify、AnyThingLLM、LangFlow是什么怎么使用DifyAnyThingLLMLangFlowDify、AnyThingLLM、LangFlow名字的含义Dify、AnyTh…...
LLM有哪些可控超参数
LLM有哪些可控超参数 目录 LLM有哪些可控超参数生成控制类采样相关类推理优化类惩罚类其他类计算资源与批量处理类上下文与Token相关类内存相关类生成控制类 以流式返回对话响应:指模型在生成回复时,是否以逐字或逐句的流式方式返回给用户,而不是等全部生成完再返回,能提升…...
C++共享指针实战
需求: 有三个类,分别是A,B, R。在B类里new 了一个R的智能指针, 这个R的生命周期和B相同。同时A类也存了一个B中存放关于R的智能指针。B销毁同时A指向R的指针也失效,并调用R的析构函数,如何实现 #include <iostream…...
算法分析—— 《归并排序》
《排序数组》 题目描述: 给你一个整数数组 nums,请你将该数组升序排列。 你必须在 不使用任何内置函数 的情况下解决问题,时间复杂度为 O(nlog(n)),并且空间复杂度尽可能小。 示例 1: 输入:nums [5,2…...
SpringBoot启动时报错:cannot use an unresolved DNS server address: I:53
报错如下: 2025-02-17 13:59:41.374 [main] ERROR org.springframework.boot.SpringApplication:835 - Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name mySwaggerResourceProvider def…...
AI进展不止于基准:深度解析Grok 3的局限
基准测试长期以来一直是AI评估的基石,但任何认真的AI科学家都知道它们是可以被“游戏化”的。 我曾经详细写过这个问题,甚至LMsys也不得不调整其盲测格式——将Grok 3用不同的标签代替,而不仅仅是隐藏品牌——以减少品牌偏见。 高能力AI,尤其是像GPT-4级别的模型,或那些依…...
物联网技术赋能预测性维护的深度剖析与前景展望
一、引言 1.1 研究背景与意义 随着信息技术的飞速发展,物联网技术已逐渐渗透到各个行业领域,成为推动产业变革和创新的重要力量。物联网通过将各种设备、物品与互联网连接,实现数据的采集、传输和交互,为各行业带来了前所未有的智能化和自动化水平提升。在工业领域,设备…...

