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

本篇文章来自极术社区与聆思科技组织的CSK6 视觉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 等各类外设接口,丰富接口支持各类应用方案的开发。

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

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

二、功能设计

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

(一)硬件连接

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

(二)系统配置

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

具体如下:

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的程序,采用拖拽完成:

四、运行

编译烧录。

(一)YES

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O4fUr1be-1677056240453)(https://pic1.zhimg.com/80/v2-bde255df519ad6af1759417df5ae4afc_1440w.webp)]

(二)STOP

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

猜你喜欢

转载自blog.csdn.net/weixin_47569031/article/details/129166195
今日推荐