EASY EAI灵眸科技
直播中

华仔stm32

3年用户 2891经验值
擅长:嵌入式技术
私信 关注
[经验]

【EASY EAI Nano开源套件试用体验】门禁改造之一

目前官方给了基础的运行环境,人脸识别、数据库、显示都是现成的,目前缺的轮子就是人脸识别后,如果控制门禁的开关。其实如何控制开关也就是gpio的控制
【改造切入点】
EASY EAI灵眸科技 | 让边缘AI落地更简单 (easy-eai.com)在官方的人脸识别方案里增加GPIO的“轮子”。
git clone https://github.com/EASY-EAI/EASY-EAI-Toolkit-C-Solution.git克隆仓库下来。
用QT或者其他的代码编辑器增加对GPIO的控制。
控制函数如下:

int setLed(void)
{
    FILE *fp=NULL;
    int i;
    printf("stat led!\n");
    fp = fopen("/sys/class/gpio/export","w");
    if(fp == NULL)
    {
        printf("opne export fial\n");
        return -1;

    }
    else
    {
        fprintf(fp,"%d",107); //Bank*32+PinGround(0、8、16、24)+PinNumP 这里使用GPIO3_B3,最终序号为3*32+8+2=107
        i=fclose(fp);
        if(i==0)
        {
            printf("File close OK!\n");
        }
    }
    fp = fopen("/sys/class/gpio/gpio107/direction","w");
    if(fp == NULL)
    {
        printf("opne direction fial\n");
        return -1;
    }
    else
    {
        fprintf(fp,"out");
        i=fclose(fp);
        if(i==0)
        {
            printf("File close OK!\n");
        }
    }
    fp = fopen("/sys/class/gpio/gpio107/value","w");
    if(fp == NULL)
    {
        printf("opne write val fail\n");
        return -1;
    }
    else
    {
        printf("opend LED\n");
        fprintf(fp,"%d",1);
        i=fclose(fp);
        if(i==0)
        {
            printf("File close OK!\n");
        }
    }
    sleep(1);
    fp = fopen("/sys/class/gpio/gpio107/value","w");
    if(fp == NULL)
    {
        printf("opne write val fail\n");
        return -1;
    }
    else
    {
        printf("close LED\n");
        fprintf(fp,"%d",0);
        i=fclose(fp);
        if(i==0)
        {
            printf("File close OK!\n");
        }
    }
    fp = fopen("/sys/class/gpio/unexport","w");
    if(fp == NULL)
    {
        printf("un export fial\n");
        return -1;

    }
    else
    {
        fprintf(fp, "%d",107);
        i=fclose(fp);
        if(i==0)
        {
            printf("File close OK!\n");
        }
    }
    return 0;
}

把这段代码加入到/EASY-EAI-Toolkit-C-Solution/solu-faceRecognition/src/main.cpp中
image.png
然后在主程序的人脸识别成功后插入函数执行。
image.png

编译好后上传到开发板。执行后识别到人脸就可以打开LED灯了。

门禁1

更多回帖

发帖
×
20
完善资料,
赚取积分