尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

IoT-For-Beginners 制造与食品加工篇:用 Custom Vision、IoT 设备与 Azure IoT Edge 构建水果品质检测系统

发布时间:2026/9/15 20:27:14

资讯中心
01
ARTICLE

IoT-For-Beginners 制造与食品加工篇:用 Custom Vision、IoT 设备与 Azure IoT Edge 构建水果品质检测系统

IoT-For-Beginners 制造与食品加工篇:用 Custom Vision、IoT 设备与 Azure IoT Edge 构建水果品质检测系统
IoT-For-Beginners 制造与食品加工篇用 Custom Vision、IoT 设备与 Azure IoT Edge 构建水果品质检测系统【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners本文基于 IoT-For-Beginners 仓库「制造与加工」专题4-manufacturing整理。食品在到达中央集散地或加工厂后并不会直接运往超市而是要经过分拣、质检等多道工序。本专题的 4 节课将带你完整走一遍「训练图片分类模型 → 从 IoT 设备调用云端模型 → 将模型部署到边缘设备Azure IoT Edge→ 用传感器触发检测」的端到端闭环最终落地为一个可用于食品加工厂的水果品质检测原型系统。读完本文你将掌握图片分类Image Classification与迁移学习Transfer Learning的基本原理、Azure Custom Vision 从建资源到发布迭代的完整流程、在树莓派 / Wio Terminal / 虚拟 IoT 设备上拍照并调用分类 API 的代码写法以及边缘计算与云计算在延迟、成本、隐私上的权衡取舍。为什么食品分拣需要 IoT 与 AI过去农产品分拣几乎完全依赖人工田间采摘时只摘成熟果实工厂里果实沿传送带移动员工手工挑出碰伤或腐烂的果实。这种方式效率低、劳动强度大且成本高昂——人工是农业生产中最大的成本之一。更现代化的方案开始依赖 IoT。最早的一批分拣设备如 Weco 的色选机使用光学传感器检测农产品品质例如把绿色番茄挑出并废弃它们可以部署在农场自身的收割机上也可以部署在加工厂内。随着人工智能AI与机器学习ML的进步这类机器变得更聪明ML 模型可以区分果实与石头、泥土、昆虫等异物还能识别果实品质不仅限于碰伤还包括病害或作物问题的早期迹象。ML 模型指的是在数据集上对机器学习软件进行训练后的输出产物。例如你可以训练一个模型区分熟番茄与生番茄然后用它对新图片做推理判断番茄是否成熟。本专题的 4 节课正是围绕这条主线展开训练水果品质检测器从 IoT 设备检查水果品质在边缘端运行水果检测器用传感器触发水果品质检测 本专题课程会使用一些云资源。如果你没有完成项目中所有课程请务必参考 clean-up.md 清理你的项目避免持续产生费用。课程一训练水果品质检测器课程一的核心是理解「机器学习下的图片分类」并用 Azure Custom Vision 训练自己的分类器。用 AI 与 ML 分拣食品的背景并非所有作物都会均匀成熟。例如番茄在大部分可采收时藤上仍可能有青果。虽然提前采收是浪费但对农民来说用机器一次性采收全部果实、之后再处理未熟果实往往更便宜、更方便。自动化采收的出现把分拣环节从田间转移到了工厂食品在长长的传送带上移动成队的人工逐一挑出不合格品。第一代分拣机器则在收割机或加工厂内使用光学传感器识别颜色通过控制执行器杠杆或气流把青番茄推入废料箱让红番茄继续沿传送带网络前进。最新一代分拣机则引入 AI/ML用训练好的模型区分好果与坏果——不仅靠红绿这样明显的颜色差异还能识别病害或碰伤带来的细微外观差异。传统编程 vs 机器学习理解模型与预测传统编程是「输入数据 算法 → 输出结果」。机器学习正好相反你先有数据与已知输出机器学习算法从数据中学习产出被称为机器学习模型machine learning model的产物之后用新输入数据得到新输出。算法从数据中学习的过程称为训练training输入数据与已知输出合称训练数据training data。模型输出的结果称为预测predictions。预测不是二值答案而是概率分布。例如模型对一张香蕉图预测ripe的概率 99.7%、unripe概率 0.3%代码取概率最高者判定为熟香蕉。用于识别图像的这类模型称为图片分类器image classifier给它打标签的图片它按标签对新图片分类。 这是极大简化ML 还存在无监督学习等其他训练方式。想深入了解可参考 ML for beginners 24 课课程。迁移学习用少量图片训练高质量分类器要训练一个好的图片分类器通常需要数百万张图片。但实践表明只要模型已经在数百万/数十亿张杂项图片上训练过就可以通过迁移学习transfer learning用少量图片重训并获得不错效果——即把已有模型学到的「形状、颜色、纹理识别能力」迁移到新数据上。就像儿童形状书认识了半圆、矩形和三角形就能根据组合识别帆船或猫。分类器识别形状迁移学习教会它什么组合是船、是猫——或是一根熟香蕉。训练这些模型需要大量算力通常依赖 GPU。通过云端你可以在需要时租用带 GPU 的强算力计算机。用 Azure Custom Vision 训练分类器Custom Vision是云端训练图片分类器的工具只需少量图片即可训练。你可以通过 Web 门户、Web API 或 SDK 上传图片为每张图打上标签tag然后训练、测试、发布模型版本通过 Web API 或 SDK 访问。Custom Vision 属于微软认知服务Cognitive Services家族提供免费层F0。 每个分类最少可用 5 张图片训练但多多益善至少 30 张效果更佳。免费层足够创建模型、训练并用于开发其限额见 Custom Vision Limits and quotas 文档。任务创建认知服务资源首先用 Azure CLI 在资源组fruit-quality-detector中创建两个认知服务资源一个用于训练一个用于预测。# 创建 Custom Vision 训练资源F0 为免费层--yes 表示同意认知服务条款 az cognitiveservices account create --name fruit-quality-detector-training \ --resource-group fruit-quality-detector \ --kind CustomVision.Training \ --sku F0 \ --yes \ --location location# 创建 Custom Vision 预测资源 az cognitiveservices account create --name fruit-quality-detector-prediction \ --resource-group fruit-quality-detector \ --kind CustomVision.Prediction \ --sku F0 \ --yes \ --location locationlocation替换为创建资源组时使用的区域若你的账号已在任何认知服务上使用过免费层训练资源改用S0SKU。任务创建图片分类项目在 CustomVision.ai 登录创建新项目并命名为fruit-quality-detector务必选择刚才创建的fruit-quality-detector-training资源项目类型选Classification分类、分类类型选Multiclass多分类、域Domain选Food食物。任务训练分类器准备多张好品质与坏品质的水果图片并打上ripe熟与unripe生标签。图片注意事项理想情况下每张图只有果实本身背景保持一致或丰富多样且背景中不要出现只与「熟/生」强相关的物品。仓库中便提到了一个著名反例某皮肤癌分类器对恶性痣几乎 100% 准确实际上学到的却是识别照片中的尺子用于测量大小而非痣本身。分类器运行分辨率很低Custom Vision 可接收最大 10240x10240 的训练/预测图但实际以 227x227 训练与推理大图会被缩小因此被分类物体要占图片的较大比例。每类至少 5 张训练图、尽量更多另留几张用于测试。图片应为 PNG 或 JPEG小于 6MBiPhone 拍摄的高分辨率 HEIC 需要转换与缩小。熟与生的图片数量应大致相当。仓库 1-train-fruit-detector/images 下提供了熟香蕉training/ripe与生香蕉training/unripe的示例图片每类 25 张左右以及测试用图片testing/ripe、testing/unripe可以直接用来练习。上传并打标签后选择Quick Training快速训练训练。训练需要几分钟。测试分类器训练完成后用之前预留的测试图片不要用训练图在门户的 Quick Test 中测试观察每个标签的概率输出。例如仓库示例中生香蕉被预测为unripe98.9%、ripe1.1%。重训分类器分类器基于概率做预测它并不真正「理解」图片内容。如果测试结果不理想可以用预测出错的图片重训每次 Quick Test 的图片与结果都会被保存使用正确标签后重新训练即可。课程二从 IoT 设备检查水果品质训练好模型后下一步是把它用起来用摄像头传感器拍照把图片发到云端分类。摄像头传感器基础摄像头传感器是能连接 IoT 设备的相机可拍静态图或流视频有的返回原始图像数据有的压缩为 JPEG/PNG 文件。IoT 摄像头通常更小、分辨率更低但也有能比肩旗舰手机的高分辨率产品以及可换镜头、多摄、红外热像、UV 相机等。大多数摄像头传感器中每个像素是一个光电二极管镜头把图像聚焦到传感器上数百万光电二极管记录落在各自位置的光并转成像素数据。这类图像传感器称为有源像素传感器APS最流行的是互补金属氧化物半导体传感器CMOS。摄像头通常通过 SPI 等协议连接图片数据远大于温度传感器返回的单个数值并以数字方式发送图像数据。✅ 想一想微控制器硬件上图片尺寸会带来哪些限制用 IoT 设备拍照按对应硬件指南操作仓库内对应文档Arduino / Wio Terminalwio-terminal-camera.md单板计算机 / 树莓派pi-camera.md单板计算机 / 虚拟设备virtual-device-camera.md仓库代码示例code-camera/virtual-iot-device展示了用 CounterFit 模拟摄像头拍照的过程from counterfit_connection import CounterFitConnection CounterFitConnection.init(127.0.0.1, 5000) import io from counterfit_shims_picamera import PiCamera camera PiCamera() camera.resolution (640, 480) camera.rotation 0 image io.BytesIO() camera.capture(image, jpeg) image.seek(0) with open(image.jpg, wb) as image_file: image_file.write(image.read())树莓派版本code-camera/pi则直接使用picamera库其余逻辑一致。发布模型迭代Iteration与发布每次训练模型都会产生一个新的迭代iteration用来跟踪不同数据集上训练出的版本。门户 Performance 页可看到迭代列表Quick Test 时也可切换迭代对比结果。满意某个迭代后将其发布Publish外部应用即可调用。发布步骤打开 Custom Vision 门户 → 进入fruit-quality-detector项目 → Performance 页 → 选中最新迭代 → 点Publish→ 预测资源选fruit-quality-detector-prediction→ 发布。随后点击Prediction URL复制「If you have an image file」部分的 URL形如下面并复制Prediction-Key调用时必须携带的密钥未携带的请求会被拒绝https://location.api.cognitive.microsoft.com/customvision/v3.0/Prediction/id/classify/iterations/Iteration2/image从 IoT 设备调用分类 API仓库的完整示例code-classify/pi 与 code-classify/virtual-iot-device使用 Python SDK 调用分类import io import time from picamera import PiCamera from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient from msrest.authentication import ApiKeyCredentials camera PiCamera() camera.resolution (640, 480) camera.rotation 0 time.sleep(2) image io.BytesIO() camera.capture(image, jpeg) image.seek(0) with open(image.jpg, wb) as image_file: image_file.write(image.read()) prediction_url prediction_url prediction_key prediction key parts prediction_url.split(/) endpoint https:// parts[2] project_id parts[6] iteration_name parts[9] prediction_credentials ApiKeyCredentials(in_headers{Prediction-key: prediction_key}) predictor CustomVisionPredictionClient(endpoint, prediction_credentials) image.seek(0) results predictor.classify_image(project_id, iteration_name, image) for prediction in results.predictions: print(f{prediction.tag_name}:\t{prediction.probability * 100:.2f}%)注意代码从 Prediction URL 中解析出endpointURL 的 host 部分、project_id第 7 段与iteration_name第 10 段因此只需替换prediction_url与prediction key两处即可。虚拟设备版本code-classify/virtual-iot-device在此基础上增加了CounterFitConnection.init(127.0.0.1, 5000)的模拟连接初始化。用设备实拍图改进模型设备拍摄的图片与训练图片往往存在差异树莓派 Camera 拍的图比 iPhone 拍的更糊、色彩更暗、对比更低。要获得最好结果训练数据应尽量接近预测时的真实图片。改进流程用 IoT 设备分类多张熟/生水果图 → 在门户 Predictions 页用这些图片重训模型 → 若图片与原训练图差异过大可在 Training Images 页删除原图 → 训练新迭代并发布 → 更新代码中的 endpoint URL 重跑 → 反复迭代直到满意。课程三在边缘端运行水果检测器上一课把图片通过互联网发到云端分类这需要时间、花钱还可能带来隐私问题。课程三介绍如何在边缘edge——即运行在你自有网络上的 IoT 设备——运行 ML 模型。边缘计算 vs 云计算边缘计算把处理放到离数据产生地最近的地方你的内网而不是云端。此前课程都是设备采集数据 → 云端分析serverless 函数或 AI 模型。边缘计算则把部分云服务搬到与 IoT 设备同网的计算机上只在必要时与云通信。例如在边缘设备上运行 AI 模型分析水果成熟度只把「熟果数量 vs 生果数量」这类统计结果回传云端。优点速度——对时间敏感的数据在同一网络内处理无需跨互联网调用内网速度远高于互联网连接数据路径更短。参考欧洲发往美国云服务的数据仅跨大西洋光缆就至少 28ms还不含光电转换与中间路由时间。同时更少的网络流量降低了带宽拥塞风险。远程可用性——在连接有限或完全无连接、或持续连接成本过高的场景如人道主义灾区、发展中地区依然可用。更低成本——在边缘完成采集、存储、分析与动作触发减少云服务用量。近期也出现了专为边缘 AI 设计的低价硬件如不到 100 美元的 NVIDIA Jetson Nano。隐私与安全——数据留在内网不传云端分析后也不必长期存储大幅降低数据泄露风险尤其适合医疗数据、安防监控画面。隔离不安全设备——已知有安全缺陷的设备可接入独立网络由边缘网关设备统一管理出入数据流。支持不兼容设备——只能用 HTTP 或仅有蓝牙的设备无法直连 IoT Hub 时可由 IoT Edge 设备充当网关转发消息。缺点规模与灵活性——云可实时增删服务器应对需求边缘扩容需要人工加设备。可靠性与韧性——云在多地多服务器提供冗余与灾备边缘要达到同等冗余需要大量投资与配置。维护——云服务商的系统维护与更新由厂商负责。实践中 IoT 系统通常混合使用云与边缘按系统、客户与维护者需求各取所长。Azure IoT Edge 与容器Azure IoT Edge是帮助你把工作负载从云搬到边缘的服务把一台设备设置为边缘设备从云端向其部署代码。它内置于 IoT Hub可用同一服务管理边缘设备享有同等安全级别。部署到 IoT Edge 的软件称为模块modules默认运行与 IoT Hub 通信的edgeAgent与edgeHub模块图片分类器作为附加模块部署。IoT Edge 从**容器container**运行代码——自包含、与主机其他应用隔离的应用程序通过开放端口对外提供服务。Custom Vision 导出的分类器可以容器形式直接跑在设备上或通过 IoT Edge 部署容器运行后使用与云端相同的 REST API只是端点指向运行容器的边缘设备。注册并设置 IoT Edge 设备在fruit-quality-detector资源组创建 IoT Hub名称基于fruit-quality-detector取唯一值。注册边缘设备区别在于--edge-enabled标志az iot hub device-identity create --edge-enabled \ --device-id fruit-quality-detector-edge \ --hub-name hub_name获取设备连接字符串az iot hub device-identity connection-string show --device-id fruit-quality-detector-edge \ --output table \ --hub-name hub_name安装并启动 IoT Edge 运行时。注意IoT Edge 运行时只运行 Linux 容器。树莓派Raspberry Pi OS 是 Debian Linux 变体或 Linux 计算机可直接安装Windows 需在 Linux 虚拟机中安装macOS 可在云端创建装有 IoT Edge 的 Linux VM参见 vm-iotedge.md。导出模型Food compact 域在边缘运行分类器需要把它从 Custom Vision 导出。Custom Vision 可生成标准模型与紧凑模型compact——后者通过多种技术压缩体积使其可下载部署到 IoT 设备。创建项目时用的Food域有标准版与紧凑版两种。操作门户 → Settings⚙→ Domains 选Food (compact)→ Export Capabilities 确保选了Basic platforms (Tensorflow, CoreML, ONNX, ...)→ Save Changes → 重新训练Quick training→ Performance 页找到用紧凑域训练的最新迭代 →Export→ 选DockerFileLinux 计算机 / Windows / VM 上运行 IoT Edge选Linux版树莓派上运行 IoT Edge选ARM (Raspberry Pi 3)版。导出后下载 zip 并解压。构建容器并推送到容器注册中心下载的 zip 中包含 DockerFile构建容器的方法与应用代码容器内托管 Custom Vision 模型并暴露 REST API。需要把容器构建并推送到容器注册中心在线存放容器的地方IoT Edge 再从注册中心拉取并部署。本课使用Azure Container Registry非免费服务用完后务必按 clean-up.md 清理。 若在与 IoT Edge 设备不同的机器上构建容器需要自行安装 DockerIoT Edge 安装过程中已自带 Docker。创建容器注册中心并配置凭据# 创建名称仅限字母数字需全局唯一建议基于 fruitqualitydetector az acr create --resource-group fruit-quality-detector \ --sku Basic \ --name Container registry name # 登录 az acr login --name Container registry name # 开启 admin 模式以便生成密码 az acr update --admin-enabled true \ --name Container registry name # 生成密码并记录 PASSWORD 值 az acr credential renew --password-name password \ --output table \ --name Container registry name在解压目录内构建并打标签# 树莓派用 linux/armhf其他平台用 linux/amd64 # 若就在 IoT Edge 设备本机运行可省略 --platform默认当前平台 docker build --platform platform -t Container registry name.azurecr.io/classifier:v1 .构建完成后推送并验证docker push Container registry name.azurecr.io/classifier:v1 az acr repository list --output table \ --name Container registry name Linux 或 Raspberry Pi OS 上执行 docker 命令可能需加sudo。仓库中的构建日志显示Custom Vision 导出的容器基于python:3.7-slim镜像内部安装numpy~1.17.5、tensorflow~2.0.2、flask~1.1.2、pillow~7.2.0与mscviplib并把app复制到/app作为工作目录用 Flask 在容器内起一个托管模型的 HTTP 服务。部署容器deployment manifest部署需要定义部署清单deployment manifest——列出将部署到边缘设备的模块的 JSON 文档。仓库提供了完整示例 deployment.json其中关键配置项$edgeAgent.properties.desiredruntime.type为dockerruntime.settings.minDockerVersion为v1.25registryCredentials.ClassifierRegistry填写容器注册中心的username、password、address注册中心名.azurecr.io供边缘设备拉取私有镜像systemModulesedgeAgent镜像mcr.microsoft.com/azureiotedge-agent:1.1edgeHub镜像mcr.microsoft.com/azureiotedge-hub:1.1并映射 5671/8883/443 端口modules.ImageClassifier镜像为注册中心名.azurecr.io/classifier:v1status为running、restartPolicy为alwayscreateOptions暴露 80 端口并绑定到宿主 80 端口。$edgeHub.properties.desiredroutes.upstream为FROM /messages/* INTO $upstreamstoreAndForwardConfiguration.timeToLiveSecs为7200离线缓存转发时长单位秒。把deployment.json中三处Container registry nameImageClassifier模块一处、registryCredentials两处与Container registry password替换为实际值然后下发az iot edge set-modules --device-id fruit-quality-detector-edge \ --content deployment.json \ --hub-name hub_name验证分类器运行连接边缘设备树莓派用 SSHVM 用ssh adminUsernameIP address或 DNS 名然后# 查看模块状态应看到 ImageClassifier / edgeAgent / edgeHub 均为 running iotedge list # 查看 ImageClassifier 模块日志确认模型与标签加载成功、Flask 服务监听 0.0.0.0:80 iotedge logs ImageClassifier 可能需加sudo。日志中会出现 TensorFlow 初始化信息、Loading model...Success!、Loading labels...2 found. Success!以及Running on http://0.0.0.0:80/。测试分类器无需 Prediction-Key因为不经过 Azure 资源安全性由内网配置保证curl --location \ --request POST http://IP address or name/image \ --header Content-Type: image/png \ --data-binary file_Name返回结果与云端 API 同构例如{ created: 2021-07-05T21:44:39.573181, id: , iteration: , predictions: [ { boundingBox: null, probability: 0.9995615482330322, tagId: , tagName: ripe }, { boundingBox: null, probability: 0.0004384400090202689, tagId: , tagName: unripe } ], project: }使用边缘分类器与模型重训的取舍设备侧调用边缘分类器的指南Wio Terminal、树莓派 / 虚拟设备。需要留意IoT Edge 上的分类器与 Custom Vision 项目不连通Predictions 页看不到边缘分类过的图片——这是预期行为图片没有出网隐私与离线能力的优势代价是模型改进需要另想办法保存图片并人工重新标注、重训。课程四用传感器触发水果品质检测最后一个课程把视野拉高到系统架构层面设计一个端到端的水果品质控制原型。复杂 IoT 应用架构things / insights / actionsIoT 应用由许多组件组成可抽象为things物发送数据产生insights洞察洞察驱动actions动作去改进业务或流程。例如发动机thing发送温度数据数据被用来评估发动机是否按预期运行insight据此主动安排维护优先级action。参考架构reference architecture是可参考的示例架构Things从传感器采集数据的设备可配合边缘服务如图片分类器解读数据数据发往 IoT 服务Insights来自 serverless 应用或对存储数据的分析Actions下发给设备的命令或供人决策的数据可视化。本专题到目前为止用到的组件对应关系设备代码采集传感器数据、用 Custom Vision云端与边缘分析图像数据发往 IoT HubThings用 Azure Functions 响应 IoT Hub 消息、把数据存入 Azure Storage 供后续分析Insights基于云端决策控制执行器、用 Azure Maps 可视化数据Actions。设计系统架构时还要持续考虑数据与安全设备收发什么数据如何保护如何控制设备与云服务的访问权限设计水果品质控制系统设想为加工厂设计水果品质检测系统果实沿传送带到来目前员工人工检查并移除未熟果实。你要构建的系统应做到果实到达时被检测到 → 拍照并用边缘运行的 AI 模型检查 → 结果发送云端存储 → 若未熟则发出通知以便移除。| | | | - | - | |Things| 检测传送带上果实的检测器拍照并分类的摄像头运行分类器的边缘设备通知未熟果实的设备 | |Insights| 决定检查果实成熟度存储成熟度分类结果判断是否需要告警未熟果实 | |Actions| 发送命令让设备拍照并用图片分类器检查发送命令让设备告警未熟果实 |原型参考架构的通信流程对应 fruit-quality-detector-message-flow.png带接近传感器的 IoT 设备检测到果实到达 → 发消息上云云端 serverless 应用发命令让另一设备拍照并分类带摄像头的 IoT 设备拍照并交给边缘运行的图片分类器结果回传云端云端 serverless 应用存储结果后续统计未熟果占比若未熟则发命令让带 LED 的设备告警。 整个应用也可实现为单设备内置启动分类与控制 LED 的全部逻辑只用 IoT Hub 统计未熟数量与配置设备。本课拆分为多设备是为了演示大规模 IoT 应用的架构概念。用接近传感器触发检测触发方式之一是用接近传感器测量果实是否到达传送带上的正确位置。接近传感器通常发射一束电磁辐射激光或红外光检测物体反射回来的辐射根据发射与反射之间的时间计算距离。智能手机在通话时贴近耳朵会自动熄屏就是接近传感器的典型应用。按对应硬件指南接线与编程Wio Terminal、树莓派、虚拟设备。明确定义消息数据原型中多个组件互相通信接近传感器把距离发给 IoT HubIoT Hub 给摄像头设备发拍照命令图片分类结果发回 IoT HubIoT Hub 向 LED 设备发告警命令。开发前先定义好消息结构能避免大量调试时间——例如温度字段用temperature还是temp{ temperature: 20.7 }还要考虑单位°C 还是 °F并保证单位在云端保持一致。对于果实检测系统需要思考距离测量在哪端做决策是设备判断「果实够近了」再发消息触发分类还是设备只发距离数据、由云端决定两种方案各有取舍云端决策需要发送多条距离测量值消息太多会增加 IoT Hub 成本、带宽占用工厂可能有数百万设备并拖慢设备设备端决策需要提供配置手段来微调设备。没有标准答案作为 IoT 开发者需要理解所构建的系统、使用方式与检测的数据。用开发设备模拟多个 IoT 设备树莓派 / 虚拟硬件单板计算机可同时运行多个应用因此可以为每个「IoT 设备」各写一个 Python 文件在多个终端会话中分别运行。注意某些硬件在被多个并发应用访问时可能不工作。微控制器无法同时运行多个应用必须把所有逻辑放进单个应用。建议为每个 IoT 设备建一个或多个类如DistanceSensor、ClassifierCamera、LEDController各自带setup与loop方法供主流程调用在单一位置处理命令并按需分发给对应设备类主loop中规划各设备时序——例如某设备需每 10 秒处理、另一设备每 1 秒处理则主 loop 用 1 秒延时并用计数器在第 10 次时触发慢速设备并复位。走向生产原型是最终生产系统的基础生产化时的差异包括加固组件使用能耐受工厂噪声、高温、振动与压力的硬件内部通信部分组件直接通信、避免绕道云端只把需存储的数据发往云端取决于工厂布局可采用直连或通过网关设备在边缘运行部分 IoT 服务配置选项每个工厂与场景不同硬件需可配置——例如不同果实触发分类的距离不同应通过云端如设备孪生 device twin配置而非硬编码自动移除果实用自动化设备取代告警 LED 来移除未熟果实。总结与延伸至此你已经走完 IoT-For-Beginners「制造与加工」专题的完整链路图片分类与迁移学习原理 → Azure Custom Vision 训练/测试/重训 → 摄像头传感器与设备拍照 → 发布迭代并通过 SDK 调用分类 API → 边缘计算取舍 → Azure IoT Edge 注册、部署容器化模型并用 CURL 验证 → 接近传感器触发 → things/insights/actions 架构设计与多设备模拟。你可以把本文涉及的 4-manufacturing 目录下的 README、代码code-camera、code-classify、code-deployment与部署清单当作离线参考资料随时查阅。 本专题完成后记得清理云资源清理方法见 clean-up.md。课程中的图文速记sketchnotes位于 sketchnotes对应 lesson-15 至 lesson-18可作为快速复习材料。【免费下载链接】IoT-For-Beginners12 Weeks, 24 Lessons, IoT for All!项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。