不爱吃胡萝卜 · 2022年12月11日 · 浙江

【聆思CSK6 视觉AI开发套件试用】简易AI手势控制显示

首先感谢LISTENAI & 极术社区给与的机会!
试用期间正好幸运的赶上清零末班车,被隔离闭关了好几天,出关后又林林总总诸多杂事需要处理,所以一直等到最后才交作业,惨惨惨!

一、芯片介绍

CSK6是聆思科技新一代的 AI 芯片 SoC 产品系列,采用多核异构架构,集成了 ARM Star MCU,HiFi4 DSP,以及聆思全新设计的 AI 神经网络处理内核 NPU,算力达到 128 GOPS。多核异构的设计使芯片能以较低功耗满足音频及图像视频的 AI 应用需求。

CSK6系列芯片集成了 SRAM 与 PSRAM,支持内置或外接Flash,可提供最高 4 入 2 出的 Audio Codec,VGA 像素的 DVP 摄像头接口,多达 6 路的触控检测以及 SPI、UART、USB、SDIO、I2C、I2S 等各类外设接口,丰富接口支持各类应用方案的开发。
CSK.png

拿到的聆思CSK6视觉AI开发套件基于CSK6011A芯片,较之CSK6012,CSK6011A的主要区别在于FLASH是否外置,这能灵活适应于不同资源的应用场景。

CSK6.png

CSK6系列芯片最大的特点在于三核异构AI处理器:
**高达300MHz主频的ARM Star MCU;
高达300MHz主频的HIFI4 DSP;
128G OPS算力的NPU**。

二、功能设计

本次试用计划实现一个简易的AI手势控制显示系统,即通过CSK6视觉AI开发套件识别出具体手势,再连接特定的显示系统予以显示。显示系统试用启鸿QH01开发板的LED点阵显示,通过CSK6视觉AI开发套件的PIN口输出电平信息,由启鸿QH01开发板接收后予以显示,具体架构如下:
CSK01.png

(一)硬件连接

使用CSK6视觉AI开发套件的GPIOA17/GPIOA18,以及一个GND,分别对接启鸿QH01开发板的0号、1号和GND针脚,具体连接如图:

CSK2.jpg

(二)系统配置

Zephyr系统引入了DTS的概念,所以需要参考点亮LED的案例配置GPIOA17/GPIOA18。
CSK3.png

具体如下:

    aliases {            
            pin0= &board_pin0_label;//pin0
            pin1= &board_pin1_label;//pin1
    };
    pins{
           compatible = "gpio-pins";
           board_pin0_label: board_pin0 {
                    gpios = <&gpioa 17 GPIO_ACTIVE_HIGH>;
                    label = "pin0"; 
           };
           board_switch1_label: board_pin1 {
                    gpios = <&gpioa 18 GPIO_ACTIVE_HIGH>;
                    label = "pin1"; 
           };
    }; 
    

三、软件实现

软件基于LISTENAI提供的demo上修改而来

git clone https://cloud.listenai.com/zephyr/applications/app_algo_hsd_sample_for_csk6.git

修改main.c完成设备树初始化,具体如下:

static const struct gpio_dt_spec gPin0 = GPIO_DT_SPEC_GET(DT_ALIAS(pin0), gpios);
    static const struct gpio_dt_spec gPin1 = GPIO_DT_SPEC_GET(DT_ALIAS(pin1), gpios);

在main函数中完成如下:

    //PIN0
    if (device_is_ready(gPin0.port)) 
    {
        gpio_pin_configure_dt(&gPin0, GPIO_OUTPUT_INACTIVE);
    }
    else
    {
        return;
    }

    //PIN1
    if (device_is_ready(gPin1.port)) 
    {
        gpio_pin_configure_dt(&gPin1, GPIO_OUTPUT_INACTIVE);
    }
    else
    {
        return;
    }

并完成业务逻辑,识别YES拉高pin17电平,识别STOP拉高pin18电平:

    while (1) 
    {
        int ret = k_msgq_get(&msg, &msg_data, K_FOREVER);
        if (ret != 0) {
            LOG_WRN("Get video buffer timeout.");
            continue;
        }

        switch (msg_data.event) {
        case HSD_EVENT_GESTURE_RECOGNIZE:
            switch (msg_data.hsd.gesture_state) {
            case GESTURE_YES:
                gpio_pin_set_dt(gPin0, GPIO_ACTIVE_HIGH);
                gpio_pin_set_dt(gPin1, GPIO_ACTIVE_LOW);
                break;
            case GESTURE_STOP:
                gpio_pin_set_dt(gPin1, GPIO_ACTIVE_HIGH);
                gpio_pin_set_dt(gPin0, GPIO_ACTIVE_LOW);
                break;
            default:
                //ignore GESTURE_LIKE GESTURE_OK GESTURE_OTHER GESTURE_SIX
                gpio_pin_set_dt(gPin0, GPIO_ACTIVE_LOW);
                gpio_pin_set_dt(gPin1, GPIO_ACTIVE_LOW);
                break;
            }
            break;
        default:
            break;
        }
    }

最后,来自启鸿QH01的程序,采用拖拽完成:
PY.png

四、运行

编译烧录。

(一)YES

YES.png
YES1.png

(二)STOP

STOP.png
STOP1.png

最后,基于AI控制GPIO仅仅是CSK6芯片的一小部分能力,其他更为丰富的支撑能力用于实现更有想象力的应用,请参考CSK6

推荐阅读
关注数
5175
内容数
100
聆思科技官方专栏,专注AIOT芯片,持续分享有趣的解决方案。商务合作微信:listenai-csk 技术交流QQ群:825206462
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息