一、前言
首先感谢极术社区与聆思科技的信任和支持,有幸参与到CSK6视觉AI开发套件的试用;由于疫情的原因耽搁了不少时间。好吧,我们还是直接入正题,首先这是一套带AI视觉识别的套件,已经带有扩展板和摄像头。并且社区也已经有很多AI摄像头的入门使用教程,我们这次就不走平常路;直接教大家如何通过简单几步调通GPIO控制电磁继电器的工作。
二、开发板介绍
我还是先来简单介绍一下我们的主角:CSK6视觉AI开发套件。它是聆思科技针对CSK6系自研AI芯片推出的开发板与配件组合方案,该套件具有算力强、功耗低、配套算法丰富的特点,特别适用于搭建视觉交互、语音交互等原型产品,显著提升原型验证和效果体验的效率,轻松玩转多种Al应用。说人话就是这套开发板主打的是AI智能运算,而其长处就是AI视觉的识别。
AI视觉识别就好比人的眼睛所看到的,然后再通过运算得出结果,主要应用场景:人脸识别、物体识别、车牌识别等,用途广泛。
上面就是我们主角的简单介绍,感兴趣的小伙伴可以去他们官网深入了解。下面就是我们的配角:电磁继电器。他相信大家平常都经常接触和了解的因为它是系统中关键电子元器件之一;它的主要是通过低电压去控制较大电流闭合和开启的。
三、动手体验
1、找出供电和数据GPIO
刚才都提到电磁继电器是由低电压去控制,所以我们必须先要找到其供电的接口,于是我们就寻找引脚扩展板的电源引脚,我们这里找到56脚是3.3V 58脚是GND,那我们把这个与电磁继电器的电源连接。
这样我们就完成供电的连接,紧接下来就是数据GPIO的连接,这里我们GPIOA17、18引脚。
物理连接线连接完毕,好了万事俱备,只欠代码。我们立即上马。
2、代码编写
首先要先对设备树进行配置,我的理解就是要进行底层的声明和定义。那怎么做呢?很简单,打开boards/目录下的csk6011a\\_nano.overlay,进行编辑。在“aliases”中加入映射,然后绑定。不废话,代码如下:
{
aliases {
switch0= &board_switch0_label;//开关0
switch1= &board_switch1_label;//开关1
};~~~~
switchs{
compatible = "gpio-keys";
board_switch0_label: board_switch0_nodeid {
gpios = <&gpioa 17 GPIO_ACTIVE_LOW>;
label = "User switch1";
};
board_switch1_label: board_switch1_nodeid {
gpios = <&gpioa 18 GPIO_ACTIVE_LOW>;
label = "User switch2";
};
};
};
好了,这样就搞掂设备树,然后我们再来处理一下主程序(main.c)分别加入声明。
#define SWITCH0_NODE DT_ALIAS(switch0)
#define SWITCH1_NODE DT_ALIAS(switch1)
static const struct gpio_dt_spec swit0 = GPIO_DT_SPEC_GET(SWITCH0_NODE, gpios);
static const struct gpio_dt_spec swit1 = GPIO_DT_SPEC_GET(SWITCH1_NODE, gpios);
然后初始化将GPIO配置为输出并将其初始化为逻辑电平1
swt0= gpio_pin_configure_dt(&swit0, GPIO_OUTPUT_ACTIVE);
swt1=gpio_pin_configure_dt(&swit1, GPIO_OUTPUT_ACTIVE);
最后再通过GPIO电平反转控制gpio\\_pin\\_toggle\\_dt,就搞掂了。
四、心得和体会
AI的应用越来越普及由之前的通过大量数据进行建模和调用直到现在已经集成在硬件上实现边缘计算,而聆思科技的CSK6视觉AI开发套件更将AI的应用硬件开发做到极致,再配合一些简单的配件就能做出一个属于入门级的AI应用方案,的确一下子把AI应用方案开发的门槛降低不少。通过这篇简单的入门教程,希望有兴趣的朋友能举一反三期待更好更天马行空的应用。
青山不改,绿水常流;感谢各位支持,期望下次还有机会参与社区的活动。