通过 MQTT 触发
本教程演示如何使用简单的 MQTT 消息远程触发您的 OV80i 摄像头。只需几个步骤,您就能构建一个可以从网络任何位置捕获和处理图像的系统——无需复杂编程!
您将构建的内容: 一个简单的远程触发器,通过发送基础消息即可启动摄像头检测。
预计时间: 20-30 分钟
技能等级: 初学者
真实示例: 想象一下操作员平板上的一个按钮,能立即触发摄像头对零件进行检测——这正是我们要构建的,只不过用 MQTT 消息代替按钮。
先决条件
开始前,请确保您具备:
- 已连接并正常工作的 OV80i 摄像头
- 已设置并准备好的配方
- 已配置 MQTT 通信(如需帮助,请参阅“MQTT Communication Setup”指南)
您的摄像头触发模式必须在 Imaging Setup 中设置为 Manual ——这意味着摄像头将等待您的远程命令,而非自动拍摄。
为什么 MQTT 触发如此简单
OV80i 让远程触发变得轻松:
- 无需编程 ——只需拖拽并连接几个节点
- 即时响应 ——发送消息即可立即获得结果
- 消息可靠 ——MQTT 确保命令传达至摄像头
- 任何设备均可触发 ——平板、电脑、PLC 或传感器均可
适用场景: 远程检测控制、自动化生产线,或任何需要从远程位置触发摄像头的场合。
步骤 1:快速检查摄像头
1.1 设置摄像头为手动触发
- 进入您的 Recipe Editor
- 点击“Imaging Setup”
- 找到 Trigger Mode 并设置为“Manual”
- 点击保存
为何选择 Manual? 这告诉摄像头“等待我的命令”,而非自动拍摄。
1.2 查找您的配方编号
- 在 Recipe Editor 中查看浏览器地址栏
- 找到
/recipe/
后的数字(例如:URL 显示/recipe/10
,则配方编号为 10) - 记下该数字 ——稍后会用到
步骤 2:打开 Flow Builder
2.1 进入 Node-RED
- 在 Recipe Editor 中点击“IO Block”
- 点击“Configure IO”
2.2 从头开始
如果画布上已有其他节点,也没关系 ——我们将在旁边添加新的触发流程。
开始吧!
步骤 3:MQTT 触发的简单秘诀
您只需知道:摄像头需要两条快速消息来远程拍照。
- 第一条消息:“摄像头,准备接收远程命令”
- 第二条消息:“现在拍照!”
3.1 拖拽以下 5 个节点到画布
从左侧面板拖拽到主区域:
- Inject(输入部分)——作为“触发按钮”
- Change(函数部分)——用于消息 1
- Delay(函数部分)——消息间的短暂延迟
- Change(函数部分)——用于消息 2
- MQTT Out(网络部分)——发送消息到摄像头
步骤 4:配置节点
4.1 设置触发按钮
- 双击 Inject 节点
- 将名称改为“Remote Trigger”
- 点击“Done”
4.2 配置消息 1(准备命令)
- 双击第一个 Change 节点
- 将名称改为“Get Ready”
- 点击“Add”,选择“SET”
- 设置
msg.topic
为stream_mode/set
- 再次点击“Add”,选择“SET”
- 设置
msg.payload
为HMI_MODE
- 点击“Done”
作用: 告诉摄像头“准备接收远程命令”。
4.3 添加短暂延迟
- 双击 Delay 节点
- 设置延迟为 10 毫秒
- 点击“Done”
原因: 给摄像头一点时间准备。
4.4 配置消息 2(拍照命令)
- 双击第二个 Change 节点
- 将名称改为“Take Picture”
- 点击“Add”,选择“SET”
- 设置
msg.topic
为hmi/[YOUR_RECIPE_NUMBER]/capture_mode
- 将 [YOUR_RECIPE_NUMBER] 替换为您的实际编号(如
hmi/10/capture_mode
) - 再次点击“Add”,选择“SET”
- 设置
msg.payload
为single
- 点击“Done”
作用: 告诉摄像头“立即拍摄一张照片!”
4.5 配置消息发送节点
- 双击 MQTT Out 节点
- 选择您的 MQTT broker(应已配置)
- 将名称改为“Send to Camera”
- 点击“Done”
步骤 5:连接所有节点
有趣的部分来了! 现在将节点连接起来,形成流程。
5.1 建立连接
按以下方式连接节点:
- Remote Trigger → Get Ready → Send to Camera
- Remote Trigger → Delay → Take Picture → Send to Camera
示意图:
Remote Trigger ──→ Get Ready ──→ Send to Camera
│
└──→ Delay ──→ Take Picture ──→ Send to Camera
5.2 如何连接节点
- 点击并拖动节点右侧的小方块
- 将连线拖到下一个节点的左侧
- 您会看到一条灰色连线连接它们
步骤 6:测试远程触发
6.1 激活流程
- 点击右上角的红色“Deploy”按钮
- 应看到“Successfully deployed”提示
6.2 试用
- 将工件放置于摄像头前(用于测试)
- 点击“Remote Trigger”节点上的按钮
- 观察摄像头拍照!
成功标志:
- 摄像头 LED 短暂闪烁
- 听到检测处理声音
- 库中出现新图像
6.3 检查结果
进入 Library 页面 ——应看到带有最新时间戳的新图像。点击查看检测结果!
如果成功: 恭喜!您已远程触发摄像头。
如果失败: 请查看下方故障排除部分。
步骤 7:从其他设备使用(可选)
想用手机、平板或其他电脑触发? 操作如下:
7.1 使用任何 MQTT 应用
下载任意 MQTT 应用,连接摄像头 IP 地址的 1883 端口,然后:
- 发送第一条消息:
- Topic:
stream_mode/set
- Message:
HMI_MODE
- Topic:
- 稍等片刻,发送第二条消息:
- Topic:
hmi/[YOUR_RECIPE_NUMBER]/capture_mode
- Message:
single
- Topic:
7.2 命令行方式
适用于 Windows/Mac/Linux:
# 第一条消息
mosquitto_pub -h [CAMERA_IP] -t "stream_mode/set" -m "HMI_MODE"
# 第二条消息(将 10 替换为您的配方编号)
mosquitto_pub -h [CAMERA_IP] -t "hmi/10/capture_mode" -m "single"
完成! 您的摄像头将从网络任何位置拍照。
步骤 8:验证与测试
8.1 端到端测试
完整流程验证:
测试 | 操作 | 预期结果 | 状态 |
---|---|---|---|
手动触发 | 点击注入按钮 | 成功捕获并处理图像 | ☐ |
HMI 模式激活 | 检查摄像头状态 | 摄像头切换到 HMI 模式 | ☐ |
执行检测 | 验证处理过程 | 调试显示检测结果 | ☐ |
外部触发 | 发送 MQTT 命令 | 远程触发成功 | ☐ |
8.2 性能验证
监控以下指标:
- 触发响应时间: 从 MQTT 消息到图像捕获
- 处理时长: 完成检测所需时间
- 结果传递: 调试输出时间
- 系统可靠性: 多次测试触发稳定性
8.3 生产准备
投产前请:
- 使用实际工件和检测条件测试
- 验证与外部系统集成
- 确认 MQTT 通信网络可靠
- 记录触发主题和消息格式
步骤 9:快速故障排除
无法正常工作?以下是常见解决方案:
9.1 摄像头不拍照
问题 | 快速解决方案 |
---|---|
点击触发无反应 | 检查“Take Picture”节点中的配方编号是否正确 |
摄像头拍照但无检测 | 确认配方处于激活状态且有训练模型 |
触发偶尔有效 | 确认 Imaging Setup 中触发模式为 Manual |
9.2 MQTT 问题
问题 | 快速解决方案 |
---|---|
MQTT 节点显示红点 | 检查 MQTT broker 连接配置 |
Deploy 按钮灰显 | 先点击画布空白处,再尝试 Deploy |
节点无法连接 | 确保从节点右侧小方块拖动连线 |
仍有问题? 请再次确认 MQTT 通信配置正确(参见 MQTT Communication Setup 指南)。
您完成了!🎉
恭喜! 您已成功实现 OV80i 摄像头的远程控制。只需几次点击,您就构建了一个能够:
- 从网络任何位置触发检测
- 支持手机、平板、电脑等所有能发送 MQTT 消息的设备
- 与 PLC、传感器或自定义应用集成
- 通过不同配方编号扩展至多台摄像头
下一步?
基础功能已完成,您可以:
简单后续步骤
- 使用不同设备测试 MQTT 触发
- 为不同配方创建多个触发器
- 将此功能集成到生产流程中
高级应用
- 连接 PLC,实现自动化生产线控制
- 开发自定义应用,触发多台摄像头
- 添加结果转发,发送检测数据至其他系统
- 创建操作员仪表盘,集成触发按钮
真实案例
以下是其他用户如何使用 MQTT 触发的示例:
- 质量控制站: 操作员扫描条码,系统自动触发摄像头检测
- 输送线: 传感器检测到工件,自动触发检测
- 人工检测: 操作员使用带“检测”按钮的平板
- 生产监控: 中央系统协调多台摄像头工作
可能性无限 ——一切都从您刚刚构建的简单系统开始!