24

K_b0KBsM · 6月3日 · 广东

创客项目秀|基于Grove Vision AI的面部追踪风扇

今天小编给大家带来的是来自seeed工程师制作面部追踪风扇项目,该项目基于Grove Vision AI模块和XIAO 开发板制作,可以自动追踪人脸实现风扇跟随吹风。

如果你是像我一样的人,喜欢在夏天用风扇来消暑,你可能会像我小时候一样得到这个疯狂的想法。想象一下,一台风扇可以毫不费力地跟踪您的一举一动,确保凉爽的微风始终吹向你。是的,这台风扇不需要任何手动调整,不会因为吹不到风而感到不适。
企业微信截图_17173788023301.png

现在,在一个无代码计算机视觉已经成为可能,是时候让这个风扇拥有一点智慧了。

材料清单

硬件

  • 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 模块的设备。
企业微信截图_1717379791804.png
企业微信截图_17173799093236.png4
上传人脸识别模型。选择并上传适合实时跟踪的人脸识别模型。

预览和测试。使用 SenseCraft AI 中的预览窗口确保模型正确识别和跟踪人脸。
企业微信截图_17173809828632.png

第2步:准备风扇和旋转机构

  • 将舵机组装在底座上。
  • 使用亚克力板构建底座。将伺服电机连接到此底座上,确保它可以自由旋转。\

微信图片_20240603101712.jpg

  • 将风扇连接到舵机底座
  • 使用热熔胶将风扇固定在伺服电机上。确保它稳定和平衡

微信图片_20240603101743.jpg

  • 将舵机连接到 XIAO ESP32S3。
  • 将伺服线连接到 XIAO ESP32S3上的 D6 引脚。使用 5V 连接为舵机供电。
  • 安装 Grove Vision AI V2。
  • 使用 XIAO 扩展板底座上的 Grove 接口将 Grove Vision AI V2 连接到 XIAO。放置相机使其朝前,最好位于风扇的中心。

微信图片_20240603101811.jpg

使用热熔胶或螺钉确保所有组件安装牢固且连接稳定。确保将 Grove Vision AI V2 的摄像头粘在风扇中间。
微信图片_20240603101837.png

所以,系统原理图是这样的。

微信图片_20240603101916.jpg

第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功能中的脉冲宽度以获得最佳性能。

企业微信截图_17173814092938.png

推荐阅读
关注数
9149
内容数
48
深度服务产业的国际化双创平台
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息