AI 人体检测与 Meshtastic 通知
介绍
本演示展示了一个边缘 AI 远程监控解决方案,将 reCamera 与 Meshtastic LoRa Mesh 网络集成。通过利用 reCamera 的端侧推理能力,本地 YOLO11n 模型可以识别人类目标并直接触发 GPIO 信号。该物理信号会促使一个 XIAO ESP32S3 节点在 Meshtastic 网络中广播一条 “Human detected” 告警。该架构支持集成多台 reCamera 和多个 Meshtastic 节点,以实现大范围覆盖。
硬件准备
| Seeed Studio reCamera HQ PoE 8GB/64GB | XIAO ESP32S3 & Wio-SX1262 Kit for Meshtastic & LoRa | Wio Tracker L1(Pro) |
|---|---|---|
![]() | ![]() | ![]() |
搭建演示
为了实现本演示,我们需要分别配置 reCamera 和两个 Mesh 节点。首先,在 reCamera 上运行一个 C++ 程序,当检测到人时会触发 GPIO 信号。随后,我们需要将 Meshtastic 固件烧录到第一个 Mesh 节点上,使其能够监测该 GPIO 信号,并在信号被触发时向 Meshtastic 网络发送消息。广播的消息会被第二个 Mesh 节点接收;最后,将手机通过蓝牙连接到第二个 Mesh 节点,即可在手机上查看发送的消息。
reCamera 配置
请确保你所拥有的 reCamera 底板是 PoE 版本,因为只有 PoE 版本的 reCamera 才具备 GPIO 接口。关于 reCamera 标准版与 PoE 版之间的差异,请参考 reCamera 2002(w) 8GB/64GB Hardware Specification 和 reCamera HQ PoE 8GB/64GB Hardware Specification。
如果你购买的是 reCamera 的 PoE 版本 - reCamera HQ PoE 8GB/64GB,可以直接使用它来复现本演示。
如果你购买的是 reCamera 标准版 - reCamera 2002(w) 8GB/64GB,则需要额外购买一块 PoE 底板 - reCamera Base Board PoE,并将其安装到 reCamera 上,以替换原有的标准底板。
下面的配置目的是在 reCamera 上部署一个目标检测应用。通过停止默认的 Node-RED 服务,使 reCamera 能够运行一个名为 model_detector 的专用 C++ 可执行程序。
该配置使用 YOLO11n 模型(基于 COCO 数据集训练)来执行实时边缘计算。
最终目标是让 reCamera 能够自主检测特定目标(本例中为人)。一旦检测到目标,系统会通过将 GPIO 490 拉高到 High 电平来触发硬件信号。该硬件触发信号作为与 XIAO ESP32S3 + Wio SX1262 Meshtastic 节点通信的桥梁。
暴露 GPIO 引脚
为了暴露 reCamera PoE 底板上的 GPIO 引脚,我们需要拧下底板的螺丝并取下外壳。然后,你会在底板上看到一个 6 针连接器。我们将使用该连接器上的 GPIO 490 和 GND。关于底板上此类 6 针连接器等接口的更多信息,请参考 reCamera Base Board with PoE Hardware Specification。

接下来,从 reCamera 包装中取出下图所示的延长线。这根线为 MX1.25-Dupont,6P,6Color:Red-Black-Yellow-Green-Blue-White wire。

将该线连接到底板上。最终连接效果应如图所示。GPIO 490 连接到绿色线,而 GND 连接到黑色线。

登录 reCamera
首先,按照本教程将 reCamera 升级到最新的 0.2.2 版本:reCamera OS UPgrade Tutorial 如果你的版本已经是 0.2.2,则可以跳过此步骤。
由于 reCamera 的摄像头资源是独占的,默认运行的 Node-RED 及相关 AI 服务会长时间占用底层图像驱动。如果在这些服务运行时直接启动 C++ 目标检测程序,会导致多个进程之间发生冲突,从而使 C++ 程序因无法正常访问摄像头而启动失败。
因此,我们需要通过 SSH 访问 reCamera,以确保在关闭 Web 服务后仍然可以远程控制设备;随后,通过 SSH 在 reCamera 终端中执行命令,停止 Node-RED 等后台进程,从而释放摄像头的占用,并为 model_detector 程序清理必要的硬件访问路径。
建立 SSH 连接
使用 MobaXTerm 等工具通过 SSH 登录 reCamera。默认 IP:通常为 192.168.42.1
- 登录后,建议切换到
/userdata/目录,因为该目录通常用于存放用户数据和模型。
停止 Node-RED 相关服务
由于 reCamera 上默认运行的 Node-RED 服务会占用大量系统资源,在运行 C++ 演示程序之前,必须执行以下三条命令来停止它:
sudo /etc/init.d/S03node-red stop
sudo /etc/init.d/S91sscma-node stop
sudo /etc/init.d/S93sscma-supervisor stop

上传模型与固件
使用 MobaXTerm 的文件传输功能(左侧文件面板中的上传图标),将以下文件上传到 /home/recamera/ 目录。
已编译固件:例如 model_detector
量化模型:例如 yolo11n_cv181x_int8.cvimodel
这里的 model_detector 是一个可执行文件。它是通过配置 reCamera SDK 并对 C++ 源码进行交叉编译生成的。该程序的逻辑如下:使用上传的 yolo.cvimodel 检测画面中是否存在人。如果检测到人,reCamera PoE 底板上的 GPIO 490 将被设置为 High;否则保持 Low。
由于搭建交叉编译环境相对复杂,我们已为你提供预编译好的可执行文件。你只需下载并上传到 reCamera 即可使用。Compiled C++ Model Detector Code
关于模型文件,它是一个基于 COCO 数据集训练的 YOLO11n 检测模型,包含 80 个类别,可识别人、车辆等常见日常物体。同样地,我们提供了下载链接,你无需自行训练或转换模型。下载后可直接上传到 reCamera。reCamera Yolo Models

建议具备嵌入式系统经验的用户修改源码并进行交叉编译。如果你有兴趣进一步探索,请参考相关文档。
授权并运行
在终端中,首先进入你上传已编译固件和量化模型的文件夹。然后为固件添加执行权限并启动检测程序。
chmod +x model_detector
为了便于可视化展示,model_detector 程序集成了 UDP 视频流功能。只要 reCamera 与电脑处于同一局域网(LAN)中,就可以在 reCamera 上运行该程序的同时,在电脑上执行 udp_receiver.py 脚本,实现实时预览。
该 UDP 流仅用于本地监控和演示(一个“额外”功能)。由于 LoRa 技术在物理带宽上的限制,Meshtastic 网络不支持也无法实现视频流传输。实际在 Mesh 网络中传输的数据仅限于诸如 “Human detected” 之类的轻量级文本告警。
执行以下命令,以 0.5(50%)作为置信度阈值示例来运行 model_detector 程序:
sudo ./model_detector [model_name] [confidence_threshold] [PC_IP_address] [udp_port]
其中:
[model_name]:量化模型文件的名称。本示例中为yolo11n_cv181x_int8.cvimodel。[confidence_threshold]:用于目标检测的置信度阈值,范围为 0.0 到 1.0。值越高,检测结果越少,但准确率越高。本示例中为0.5。[PC_IP_address]:运行udp_receiver.py脚本的电脑的 IP 地址。本示例中为10.0.0.228。请务必记住要使用你自己电脑的 IP 地址,而不是我的。[udp_port]:用于视频流传输的 UDP 端口号。本示例中为5000。
下面是完整的示例命令:
sudo ./model_detector yolo11n_cv181x_int8.cvimodel 0.5 10.0.0.228 5000

现在,我们将在你的电脑上配置 udp_receiver.py 脚本。请确保你的电脑已安装 Python、OpenCV 和 NumPy 库。然后,从链接 udp_receiver.py 下载 udp_receiver.py 脚本,并在你的电脑上执行它。本示例中是在 Windows Powershell 上运行:
python .\udp_receiver.py --port [udp_port] --scale [scale_factor]
其中:
[udp_port]:从 reCamera 进行视频流传输所使用的 UDP 端口号。本示例中为5000。[scale_factor]:用于调整视频帧大小的缩放系数。本示例中为1.5。
下面是完整的示例命令:
python .\udp_receiver.py --port 5000 --scale 1.5

最后,你将在终端中看到实时检测到的类别信息(例如 Class 0)及其坐标。

同时,你的电脑上会显示实时视频流:

XIAO ESP32S3 + Wio-SX1262(Meshtastic 节点)配置
现在,我们将配置第一个 Mesh 节点。该节点负责接收来自 reCamera 的 IO 输出,并广播一条文本消息:"Human detected"。
固件烧录
设备必须烧录特定的 Mesh 固件。由于 Mesh 网络独特的信道管理机制,在标准固件中,DetectionSensor 模块输出到 Channel 0 的信息通常会被丢弃。这样设计是为了防止高频检测数据堵塞 Mesh 网络信道。请按照以下步骤操作:
在烧录之前,请暂时将 Wio SX1262 扩展板 从 XIAO 上取下。虽然扩展板本身不会影响烧录过程,但它会在物理上挡住 XIAO ESP32S3 上的 BOOT 按钮。
- 首先,下载预编译的 Mesh 固件 Custom Meshtastic Firmware。
- 通过 USB 线将 XIAO ESP32S3 连接到电脑,并进入 Bootloader 模式。你可以参考此指南 XIAO S3 bootloader guide
- 使用基于网页的烧录工具 Meshtastic Web Flasher,选择 Seeed XIAO esp32s3 设备,然后选择你刚刚下载的固件,最后点击 Flash 按钮将固件烧录到 XIAO ESP32S3 上。 有一个视频教程可供参考,但请记得烧录你下载的固件,而不是 Meshtastic 官方固件 Flash Firmware Video。
- 当烧录完成且未报告错误后,拔下 XIAO ESP32S3 以关闭电源。重新安装 Wio SX1262 扩展板,然后重新连接 USB 线到电脑。设备现在将使用新固件启动。
配置 Mesh 节点
配置 Mesh 节点有两种方式。首先,用 USB 线将设备连接到电脑,然后你可以:1:使用另一个 Mesh 网页工具 Meshtastic Web Client 通过串口访问 Mesh 节点;2:在手机上下载 Meshtastic 移动应用,通过蓝牙访问 Mesh 节点。这里我们演示在电脑上使用 Meshtastic Web Client 来配置 esp32s3 和 Wio Tracker。
iOS 和 Android 上 Mesh 应用的 UI,以及 meshtastic web client 工具的 UI 可能有所不同,但具体配置(例如配置 LoRa 频段)都可以在其对应的配置选项中找到。因此,如果你没有 iOS 设备,也不必担心;其他平台上的应用肯定也会有相应的配置选项。
Meshtastic Web Flasher 和 Meshtastic Web Client 是 Meshtastic 提供的两个官方网页工具,分别用于配置 Mesh 节点和烧录 Mesh 固件。请不要将它们混淆。
1.确保你的 XIAO esp32s3 Mesh 节点已通过 USB 线连接到电脑。打开 Meshtastic Web Client,你会看到初始页面。现在点击 "+ New Connection"。

2.点击 "Serial",然后点击 "New Device",并选择你的 Mesh 节点所对应的端口。


3.进入设备配置页面;这里,我的设备名称是 "Meshtastic ff28"。

4.点击 'Config' -> 'Radio config' -> 'LoRa'

5.将 'Region' 和 'Modem Preset' 分别设置为 'US' 和 'Short Turbo':
实际上,对 Region 和 Modem Preset 的配置并没有严格限制,但你必须确保你所拥有的两个 Mesh 节点设备的 Region 和 Modem Preset 设置保持一致。在本文档中,我们以 'US' 和 'Short Turbo' 为示例。


6.现在,让我们进入 'Module Config' 并选择 'DetectionSensor'。

7.启用此模块,然后将发送间隔设置为 15 秒。

8.Friendly Name 设置为 'Human',Monitor Pin 设置为 '3',Detection Triggered Type 设置为 'LOGIC_HIGH'。

9.现在,让我们进入 'Channel Config' 并选择 'Ch1'。

10.将 'Role' 设置为 'SECONDARY',并选择 '128 bit' 作为 Pre-Shared Key 格式。然后点击 'Generate' 生成一个随机的 128 位 Pre-Shared Key。记住这个 Key,并将其保存到一个文本文件中以备后用。 同时,将 Name 设置为 'reCamera'。



11.最后,点击 'Save' 保存配置。等待设备保存配置并重新启动。

SjVzNWwzNTEwQWZUWlo0Yg==
Wio Tracker L1(Meshtastic 节点)配置
Wio Tracker 的配置与上面类似,我们仍然使用 Meshtastic Web Flasher 选择 'Wio Tracker L1',并烧录 Official Meshtastic Firmware,而不是你上面下载的自定义固件。请参考 Wio Tracker L1 Firmware Flashing Tutorial
与上面相同,我们将 Wio Tracker L1 的 Region 和 Modem Preset 设置为 'US' 和 'Short Turbo'。然后,启用其 Channel1,并将 Pre-Shared Key 设置为你上面生成的 128 位 Key。

组装
与上面相同,我们将 reCamera 上的 GPIO490(绿色线)连接到 XIAO esp32s3 上的 D2,将 GND 连接到 GND 引脚。然后,系统就会开始运行。


当连接建立后,你会听到 Wio Tracker L1 发出声音,并且 Wio Tracker L1 的显示屏上会显示“Human detected”文本。

技术支持与产品讨论
感谢你选择我们的产品!如果你在特定定制目标方面需要指导,或希望进一步扩展工作流程,欢迎随时联系我们。我们会为你提供多种支持,确保你在使用我们产品的过程中尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。


