今天小编给大家带来的是来自seeed工程师制作面部追踪风扇项目,该项目基于Grove Vision AI模块和XIAO 开发板制作,可以自动追踪人脸实现风扇跟随吹风。
如果你是像我一样的人,喜欢在夏天用风扇来消暑,你可能会像我小时候一样得到这个疯狂的想法。想象一下,一台风扇可以毫不费力地跟踪您的一举一动,确保凉爽的微风始终吹向你。是的,这台风扇不需要任何手动调整,不会因为吹不到风而感到不适。
现在,在一个无代码计算机视觉已经成为可能,是时候让这个风扇拥有一点智慧了。
材料清单
硬件
- Grove Vision AI V2
- OV5647-62 Raspberry Pi FOV摄像头模块
- XIAO ESP32S3
- XIAO扩展板底座
- 伺服电机
软件
- Arduino IDE
第一步:将人脸识别模型上传到Grove Vision AI V2
将 Grove Vision AI V2 连接到计算机。确保设备通过 USB 接口正确连接。
打开 SenseCraft AI。
(https://seeed-studio.github.i...)
SenseCraft AI 是由 Seeed 开发的基于 Web 的平台,允许用户轻松地在 Seeed Edge 设备上部署预训练和自定义 AI 模型。它提供推理结果的即时可视化,以便快速评估性能。目前,SenseCraft AI 原生支持 Seeed reComputer (NVIDIA Jetson)、Seeed Studio XIAO ESP32S3 Sense Board 和 Grove Vision AI 模块的设备。 4
上传人脸识别模型。选择并上传适合实时跟踪的人脸识别模型。
预览和测试。使用 SenseCraft AI 中的预览窗口确保模型正确识别和跟踪人脸。
第2步:准备风扇和旋转机构
- 将舵机组装在底座上。
- 使用亚克力板构建底座。将伺服电机连接到此底座上,确保它可以自由旋转。\
- 将风扇连接到舵机底座
- 使用热熔胶将风扇固定在伺服电机上。确保它稳定和平衡
- 将舵机连接到 XIAO ESP32S3。
- 将伺服线连接到 XIAO ESP32S3上的 D6 引脚。使用 5V 连接为舵机供电。
- 安装 Grove Vision AI V2。
- 使用 XIAO 扩展板底座上的 Grove 接口将 Grove Vision AI V2 连接到 XIAO。放置相机使其朝前,最好位于风扇的中心。
使用热熔胶或螺钉确保所有组件安装牢固且连接稳定。确保将 Grove Vision AI V2 的摄像头粘在风扇中间。
所以,系统原理图是这样的。
第3步:将程序上传到 XIAO
打开 Arduino IDE。将提供的代码复制到新的Arduino草图中。在上传代码之前,请确保在Arduino IDE中选择正确的板(XIAO ESP32S3)和端口。一切确认后,将草图编译并上传到您的 XIAO ESP32S3。
#include <Seeed_Arduino_SSCMA.h>
SSCMA Infer;
void stop_rotate(void)
{
digitalWrite(D6, HIGH);
delayMicroseconds(1500);
digitalWrite(D6, LOW);
}
void servo_rotate(int rtime, bool revers = false)
{
uint32_t sleep;
if (revers)
{
sleep = 2500;
}
else
{
sleep = 500;
}
digitalWrite(D6, HIGH);
delayMicroseconds(sleep);
digitalWrite(D6, LOW);
delay(30 * rtime);
stop_rotate();
}
void setup()
{
Infer.begin();
Serial.begin(9600);
pinMode(D6, OUTPUT);
}
void loop()
{
if (!Infer.invoke())
{
if (Infer.boxes().size() > 0)
{
if (Infer.boxes()[0].x < 80)
{
servo_rotate(1, true);
}
else if (Infer.boxes()[0].x > 140)
{
servo_rotate(1, false);
}
Serial.print("X==>>");
Serial.print(Infer.boxes()[0].x);
Serial.print("Y==>>");
Serial.println(Infer.boxes()[0].y);
}
}
}
代码结构如下:
调用的库文件
Seeed_Arduino_SSCMA.h
它支持使用 Grove Vision AI V2 进行推理。
对象声明:
SSCMA Infer
创建用于推理的 SSCMA 类的实例。
stop_rotate
通过发送特定的脉冲宽度来停止伺服电机的旋转。
servo_rotate
将伺服电机旋转指定的时间和方向。
rtime
以 30 毫秒为单位确定旋转持续时间。
revers
指定旋转方向(true 表示后退,false 表示前进)。
设置功能:
初始化 Grove Vision AI V2 串行通信,并将伺服电机引脚 (D0) 配置为输出。
循环功能:
- 持续调用推理过程。
- 如果检测到物体:1)如果物体的x坐标小于80,则伺服电机在短时间内反向旋转。2)如果物体的x坐标大于140,则伺服电机向前旋转一小段时间。
- 将检测到的对象的 x 和 y 坐标打印到串行监视器。
第4步:测试和调整
- 为系统供电。
- 将 XIAO ESP32S3连接到电源,监视输出。
- 在Arduino IDE中观看串行监视器,查看检测到的人脸的输出坐标。
- 调整风扇的响应。
- 如有必要,请调整代码中的阈值(80 和 140),以优化风扇对面部运动的响应能力。
- 微调舵机设置。
- 根据伺服器的规格,您可能需要调整servo_rotate功能中的脉冲宽度以获得最佳性能。