K230 场景实战-智能门锁POC

cover

版权所有©2023北京嘉楠捷思信息技术有限公司

免责声明

您购买的产品、服务或特性等应受北京嘉楠捷思信息技术有限公司(“本公司”,下同)及其关联公司的商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,本公司不对本文档的任何陈述、信息、内容的正确性、可靠性、完整性、适销性、符合特定目的和不侵权提供任何明示或默示的声明或保证。除非另有约定,本文档仅作为使用指导参考。

由于产品版本升级或其他原因,本文档内容将可能在未经任何通知的情况下,不定期进行更新或修改。

商标声明

logo、“嘉楠”和其他嘉楠商标均为北京嘉楠捷思信息技术有限公司及其关联公司的商标。本文档可能提及的其他所有商标或注册商标,由各自的所有人拥有。

版权所有 © 2023北京嘉楠捷思信息技术有限公司。保留一切权利。 非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。

K230 智能门锁

在K230平台开发的一套集成UI、人脸检测、人脸识别、人脸注册功能的程序。

硬件环境

  • K230-USIP-LP3-EVB-V1.0/K230-USIP-LP3-EVB-V1.1/K230-SIP-EVB-V1.0

  • 配套的LCD模组

  • K230-USIP-IMX335-SENSOR-V1.1模组

概述

智能门锁程序作为一个POC项目,提供给客户如何使用lvgl、大小核通信、多媒体pipeline及ai等功能的参考,程序主要分两部分,大核端程序主要完成视频输入输出,AI处理等相关的功能,小核端完成UI及人脸特征值管理的功能,大小核通过IPCMSG进行通信,在开发板通过norflash启动。

备注

1.下电和reset之前,应现在小核串口端输入halt,保护文件系统不被损坏。

源码位置

大核端程序源码路径位于src/reference/business_poc/doorlock/big,目录结构如下:

.
├── anchors_320.cc
├── CMakeLists.txt
├── main.cc
├── mbface.kmodel
├── mobile_face.cc
├── mobile_face.h
├── mobile_retinaface.cc
├── mobile_retinaface.h
├── model.cc
├── model.h
├── retinaface.kmodel
├── util.cc
├── util.h
└── vi_vo.h

小核端程序源码路径位于src/little/buildroot-ext/package/door_lock,目录结构如下:

.
├── Config.in
├── src
│   ├── CMakeLists.txt
│   └── ui
│       ├── CMakeLists.txt
│       ├── data
│          └── img
│              ├── delete.png
│              ├── import.png
│              └── signup.png
│       ├── demo
│          └── main.c
│       ├── lvgl_port
│          ├── CMakeLists.txt
│          ├── k230
│             ├── buf_mgt.cpp
│             ├── buf_mgt.hpp
│             ├── CMakeLists.txt
│             ├── lv_port_disp.cpp
│             └── lv_port_indev.c
│          ├── lv_conf_demo.h
│          ├── lv_conf.h
│          └── lv_port.h
│       └── src
│           ├── db_proc.c
│           ├── db_proc.h
│           ├── main.c
│           ├── msg_proc.cpp
│           ├── msg_proc.h
│           ├── scr_main.c
│           ├── scr_signup.c
│           └── ui_common.h
└── src.mk

编译程序

K230-USIP-LP3-EVB-V1.0/K230-USIP-LP3-EVB-V1.1开发板编译程序: 在k230_sdk目录下执行make CONF=k230_evb_doorlock_defconfigk230_sdk/src/reference/business_poc/doorlock/big/out目录下生成大核程序door_lock.elfk230_sdk/output/k230_evb_doorlock_defconfig/little/buildroot-ext/target下生成小核程序app目录。

K230-SIP-EVB-V1.0开发板编译程序: 在k230_sdk目录下执行make CONF=k230d_doorlock_defconfigk230_sdk/src/reference/business_poc/doorlock/big/out目录下生成大核程序door_lock.elfk230_sdk/output/k230d_doorlock_defconfig/little/buildroot-ext/target下生成小核程序app目录。

备注: 当编译k230d_doorlock_defconfig镜像需要替换k230_sdk\src\big\mpp\kernel\lib\libvo.a。替换方法如下:

1.下载

https://kendryte-download.canaan-creative.com/k230/downloads/mpp_lib/libvo_k230d.a

2.替换

先备份一份libvo.a,然后将下载的libvo_k230d.a 替换成 libvo.a,重新编译即可

运行程序

智能门锁在nor flash镜像中,大小核程序自启,K230-USIP-LP3-EVB-V1.0/K230-USIP-LP3-EVB-V1.1开发板编译完成之后会在output/k230_evb_doorlock_defconfig/images/目录下生成sysimage-spinor32m.img镜像,K230-SIP-LP3-EVB-V1.0开发板编译完成之后会在output/k230d_doorlock_defconfig/images/目录下生成sysimage-spinor32m.img镜像,烧写nor flash镜像,开发板拨码开关设置成nor flash启动

功能演示

  1. 大小核程序启动后界面显示如下:door_lock_menu

  2. sd人脸图片导入功能,必须在/sharefs/pic下放入图片,为保证识别效果,导入图片的格式要求为jpg,分辨率为720*1280,用户把需要导入的人脸图片放到/sharefs/pic下,按下图片导入键,程序会自动完成提取特征值功能,并以图片的文件名为识别成功后的lable,操作效果如下:door_lock_import

  3. 人脸实时注册功能,点击人脸注册按钮,通过UI展示的键盘输入lable,为保证识别效果,注册时人脸应位于图像的中央,操作效果如下:door_lock_singup 识别效果:door_lock_singup_show

  4. 人脸底库删除功能,删除所有通过sd卡和人脸实时注册的人脸,操作效果如下:door_lock_delete

OTA

  1. 参考sdk ota升级功能打包需要更新的flash分区包,因分区文件size在rtt kernel中保存,所以升级norflash其他分区时,必须同时升级rtt_system.bin

  2. 通过升级按钮输入服务器IP地址

  3. 通过串口依次输入命令killall -9 ui,挂载sd卡分区到/tmp目录,例如mount /dev/mmcblk0p2 /tmp

  4. 确保本地网络服务器网络是联通的,执行/usr/bin/ota命令,升级成功后设备重启启动