跳到主要内容

通过 MQTT 触发

This tutorial shows you how to remotely trigger your OV20i camera using simple MQTT messages. In just a few steps, you'll have a system that can capture and process images from anywhere on your network - no complex programming required!

What You'll Build: A simple remote trigger that lets you start camera inspections by sending a basic message over your network.

Estimated Time: 20-30 分钟

Skill Level: Beginner

Real Example: Imagine a button on an operator's tablet that instantly triggers the camera to inspect a part - that's exactly what we're building, but using MQTT messages instead of buttons.

Prerequisites

Before starting, make sure you have:

  • OV20i 摄像头已连接并正常工作
  • 一个配方(recipe)已设置并准备就绪
  • MQTT 通信配置完成(如需要,请参阅 "MQTT Communication Setup" 指南)
备注

Your camera trigger must be set to Manual in Imaging Setup - this tells the camera to wait for your remote commands instead of capturing automatically.

为什么 MQTT 触发很简单

OV20i 让远程触发变得简单:

  • 无需编码 - 只需拖拽并连接少量节点
  • 立即工作 - 发送消息,立即获得结果
  • 消息可靠性 - MQTT 确保指令能到达摄像头
  • 任意设备都能触发 - 平板、计算机、PLC 或传感器

理想用途: 远程检测控制、自动化生产线,或任何需要从其他位置触发摄像头的情景。

步骤 1:快速摄像头检查

1.1 将摄像头触发设置为 Manual

  1. 打开您的 Recipe Editor
  2. 点击“Imaging Setup”
  3. 找到 Trigger Mode 并将其设置为 "Manual"
  4. 点击 Save

为什么要用 Manual? 这会让摄像头在等待您的远程命令,而不是自动拍摄。

1.2 找到您的 Recipe Number

  1. 在 Recipe Editor 中查看浏览器地址栏
  2. /recipe/ 之后找到数字(例如:如果 URL 显示 /recipe/10,您的 recipe 编号就是 10)
  3. 记下这个数字 - 待会儿会用到

image.png

步骤 2:打开 Flow Builder

2.1 进入 Node-RED

  1. 在 Recipe Editor 中,点击 "IO Block"
  2. 点击 "Configure IO"

2.2 从头开始

如果画布上看到其他节点,也没关系 - 我们会把新的触发流并排添加在它们旁边。

让我们开始吧!

步骤 3:MQTT 触发的简单秘诀

你需要了解的一切是:摄像头进行远程拍照需要两条快速消息。

  1. 第一条消息: "Hey camera, get ready for a remote command"
  2. 第二条消息: "Now take a picture!"

3.1 将这 5 个节点拖到画布上

从左侧面板,将它们拖到主区域:

  1. Inject(来自 Input 部分) - 这是你的“触发按钮”
  2. Change(来自 Function 部分) - 用于消息 1
  3. Delay(来自 Function 部分) - 两条消息之间的微小暂停
  4. Change(来自 Function 部分) - 用于消息 2
  5. MQTT Out(来自 Network 部分) - 向摄像头发送消息

image.png

第4步:配置你的节点

4.1 设置触发按钮

  1. 双击 Inject 节点
  2. 将名称改为 "Remote Trigger"
  3. 点击 "Done"

4.2 设置消息 1(Get Ready 命令)

  1. 双击 第一个 Change 节点
  2. 将名称改为 "Get Ready"
  3. 点击 "Add" 并选择 "SET"
  4. msg.topic 设置为 stream_mode/set
  5. 再次点击 "Add" 并选择 "SET"
  6. msg.payload 设置为 HMI_MODE
  7. 点击 "Done"

功能说明: 指示相机为远程命令做好准备。

image.png

4.3 添加一个小延迟

  1. 双击 Delay 节点
  2. 将延迟设置为 10 毫秒
  3. 点击 "Done"

原因? 仅让相机有一个短暂的就绪时间。

4.4 设置消息 2(Take Picture 命令)

  1. 双击 第二个 Change 节点
  2. 将名称改为 "Take Picture"
  3. 点击 "Add" 并选择 "SET"
  4. msg.topic 设置为 hmi/[YOUR_RECIPE_NUMBER]/capture_mode
  5. 将 [YOUR_RECIPE_NUMBER] 替换为你的实际数字(如 hmi/10/capture_mode
  6. 再次点击 "Add" 并选择 "SET"
  7. msg.payload 设置为 single
  8. 点击 "Done"

功能说明: 指示相机“现在拍一张照片!”

image.png

4.5 设置消息发送者

  1. 双击 MQTT Out 节点
  2. 选择你的 MQTT broker(应已配置)
  3. 将名称改为 "Send to Camera"
  4. 点击 "Done"

第5步:将所有内容连接在一起

这部分很有趣! 现在将你的节点连接起来以创建流程。

5.1 进行连线

按如下方式在节点之间绘制连线:

  1. 远程触发 → 就绪 → 发送到相机
  2. 远程触发 → 延迟 → 拍照 → 发送到相机

可视化指南:

Remote Trigger ──→ Get Ready ──→ Send to Camera

└──→ Delay ──→ Take Picture ──→ Send to Camera

5.2 如何连接节点

  1. 从节点右侧的小方块点击并拖动
  2. 将连线拖放到下一个节点的左侧
  3. 你将看到一条灰色连线将它们连接起来

第6步:测试你的远程触发

6.1 激活你的流程

  1. 点击右上角的红色“Deploy”按钮
  2. 你应该看到“Successfully deployed”的消息

6.2 试用

  1. 在相机前放置一个部件进行测试
  2. 点击你在“Remote Trigger”节点上的按钮
  3. 观看相机拍照!

成功标志:

  • 相机 LED 短暂闪烁
  • 你会听到检测处理正在进行
  • 新图像出现在你的库中

6.3 查看结果

前往你的 Library 页面 - 你应该看到带有最近时间戳的新图像。点击它以查看检测结果!

如果成功: 恭喜!你刚刚实现了对相机的远程触发。

如果没有: 请查看下方的故障排除部分。

第7步:从其他设备使用(可选)

想要从手机、平板或其他电脑触发? 方法如下:

7.1 来自任意 MQTT 应用

下载任意 MQTT 应用,并在端口 1883 上连接到相机的 IP 地址,然后:

  1. 发送第一条消息:
    • 主题( Topic): stream_mode/set
    • 消息( Message): HMI_MODE
  2. 稍等片刻后再发送第二条消息:
    • 主题( Topic): hmi/[YOUR_RECIPE_NUMBER]/capture_mode
    • 消息( Message): single

7.2 从命令行

On Windows/Mac/Linux:

# First message
mosquitto_pub -h [CAMERA_IP] -t "stream_mode/set" -m "HMI_MODE"

# Second message (replace 10 with your recipe number)
mosquitto_pub -h [CAMERA_IP] -t "hmi/10/capture_mode" -m "single"

That's it! 您的相机将能够在网络上的任意位置拍摄图像。

Step 8: 验证与测试

8.1 端到端测试

完整工作流验证:

TestActionExpected ResultStatus
Manual trigger点击注入按钮图像已捕获并处理
HMI 模式激活检查相机状态相机切换至 HMI 模式
Inspection execution验证处理调试输出显示检测结果
External trigger发送 MQTT 命令远程触发工作

8.2 性能验证

监控以下指标:

  • Trigger response time: 从 MQTT 消息到图像捕获
  • Processing duration: 完成检测所需时间
  • Result delivery: 调试输出时序
  • System reliability: 多次测试中的一致触发

8.3 生产就绪

在投入生产前:

  1. 使用实际部件和检测条件进行测试
  2. 验证与外部系统的集成
  3. 确认 MQTT 通信的网络可靠性
  4. 记录触发主题和消息格式

Step 9: 快速故障排除

无法工作?以下是最常见的修复方法:

9.1 相机不拍照

ProblemQuick Fix
点击触发时无响应请在 'Take Picture' 节点中确认配方编号是否正确
相机已拍摄图像但未进行检测确保您的配方处于活动状态且已训练有模型
触发有时有效在 Imaging Setup 中将触发设置为 Manual

9.2 MQTT 问题

ProblemQuick Fix
MQTT 节点上的红点在您的设置中检查 MQTT broker 的连接
Deploy 按钮为灰色不可用先在画布上任意位置单击,然后再尝试 Deploy
节点无法连接确保从右侧的小正方形开始拖动
备注

仍然卡住? 请再次确认 MQTT 通信设置正确(请参阅 MQTT Communication Setup 指南)。

You Did It! 🎉

恭喜! 您现在可以远程控制 OV20i 相机。只需几次点击,您就构建了一个能够实现以下功能的系统:

  • 在网络上的任意位置触发检测
  • 可在手机、平板、计算机等设备上工作——任何能够发送 MQTT 消息的设备
  • 与其他系统集成,如 PLC、传感器或自定义应用
  • 通过使用不同的配方编号实现对多台相机的扩展

What's Next?

现在基础已就绪,您可以:

Easy Next Steps

  • 通过 MQTT 应用在不同设备上进行测试
  • 为不同的配方创建多个触发器
  • 将此加入您的生产工作流程

高级想法

  • 连接到 PLCs 以实现自动化生产线
  • 构建自定义应用程序,触发多台相机
  • 添加结果转发,将检查数据发送到其他位置
  • 创建操作员仪表板,带有触发按钮

现实世界示例

以下是其他人如何使用 MQTT 触发:

  • 质量控制站:操作员扫描条码,系统触发相机检测
  • 传送线:传感器检测到部件,自动触发检测
  • 手动检验:带有简单“Inspect”按钮的平板电脑供操作员使用
  • 生产监控:中央系统协调多台相机

可能性是无穷的 — 一切都始于你刚刚构建的简单系统!

🔗 相关链接