目前官方给了基础的运行环境,人脸识别、数据库、显示都是现成的,目前缺的轮子就是人脸识别后,如果控制门禁的开关。其实如何控制开关也就是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中
然后在主程序的人脸识别成功后插入函数执行。
编译好后上传到开发板。执行后识别到人脸就可以打开LED灯了。
更多回帖