通过 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
- 打开您的 Recipe Editor
- 点击“Imaging Setup”
- 找到 Trigger Mode 并将其设置为 "Manual"
- 点击 Save
为什么要用 Manual? 这会让摄像头在等待您的远程命令,而不是自动拍摄。
1.2 找到您的 Recipe Number
- 在 Recipe Editor 中查看浏览器地址栏
- 在
/recipe/
之后找到数字(例如:如果 URL 显示/recipe/10
,您的 recipe 编号就是 10) - 记下这个数字 - 待会儿会用到
步骤 2:打开 Flow Builder
2.1 进入 Node-RED
- 在 Recipe Editor 中,点击 "IO Block"
- 点击 "Configure IO"
2.2 从头开始
如果画布上看到其他节点,也没关系 - 我们会把新的触发流并排添加在它们旁边。
让我们开始吧!
步骤 3:MQTT 触发的简单秘诀
你需要了解的一切是:摄像头进行远程拍照需要两条快速消息。
- 第一条消息: "Hey camera, get ready for a remote command"
- 第二条消息: "Now take a picture!"
3.1 将这 5 个节点拖到画布上
从左侧面板,将它们拖到主区域:
- Inject(来自 Input 部分) - 这是你的“触发按钮”
- Change(来自 Function 部分) - 用于消息 1
- Delay(来自 Function 部分) - 两条消息之间的微小暂停
- Change(来自 Function 部分) - 用于消息 2
- MQTT Out(来自 Network 部分) - 向摄像头发送消息
第4步:配置你的节点
4.1 设置触发按钮
- 双击 Inject 节点
- 将名称改为 "Remote Trigger"
- 点击 "Done"
4.2 设置消息 1(Get Ready 命令)
- 双击 第一个 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(Take Picture 命令)
- 双击 第二个 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
│
└──→ 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 应用,并在端口 1883 上连接到相机的 IP 地址,然后:
- 发送第一条消息:
- 主题( Topic):
stream_mode/set
- 消息( Message):
HMI_MODE
- 主题( Topic):
- 稍等片刻后再发送第二条消息:
- 主题( Topic):
hmi/[YOUR_RECIPE_NUMBER]/capture_mode
- 消息( Message):
single
- 主题( Topic):
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 端到端测试
完整工作流验证:
Test | Action | Expected Result | Status |
---|---|---|---|
Manual trigger | 点击注入按钮 | 图像已捕获并处理 | ☐ |
HMI 模式激活 | 检查相机状态 | 相机切换至 HMI 模式 | ☐ |
Inspection execution | 验证处理 | 调试输出显示检测结果 | ☐ |
External trigger | 发送 MQTT 命令 | 远程触发工作 | ☐ |
8.2 性能验证
监控以下指标:
- Trigger response time: 从 MQTT 消息到图像捕获
- Processing duration: 完成检测所需时间
- Result delivery: 调试输出时序
- System reliability: 多次测试中的一致触发
8.3 生产就绪
在投入生产前:
- 使用实际部件和检测条件进行测试
- 验证与外部系统的集成
- 确认 MQTT 通信的网络可靠性
- 记录触发主题和消息格式
Step 9: 快速故障排除
无法工作?以下是最常见的修复方法:
9.1 相机不拍照
Problem | Quick Fix |
---|---|
点击触发时无响应 | 请在 'Take Picture' 节点中确认配方编号是否正确 |
相机已拍摄图像但未进行检测 | 确保您的配方处于活动状态且已训练有模型 |
触发有时有效 | 在 Imaging Setup 中将触发设置为 Manual |
9.2 MQTT 问题
Problem | Quick 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”按钮的平板电脑供操作员使用
- 生产监控:中央系统协调多台相机
可能性是无穷的 — 一切都始于你刚刚构建的简单系统!