本帖最后由 lalala55 于 2022-12-6 18:02 编辑
非常感谢电路城提供了评测的机会,也由衷的感谢arrow电子,使我能够评测二哈识图人工智能视觉传感器。 从外包装上来看,包装的很精美,有条码,文档支持的网页地址,以及硬件的大致结构。看起来就很有科技感。 包装盒里面附带了4根杜邦线,用来连接二哈传感器的串口接口,还有一些螺丝,金属架等元件。 组装好的二哈视觉传感器就是上图显示的那样。从背面的元件布局可以看到,元件接口设计的还比较符合人性化,如果后续可以把安卓接口改成更通用的Type-C接口的话,就更好啦。 二哈视觉传感器的硬件技术规格如下: - 处理器:Kendryte K210
- 图像传感器:
- SEN0305 HuskyLens: OV2640(200W像素)
- 供电电压:3.3~5.0V
- 电流消耗:320mA@3.3V, 230mA@5.0V(电流值为典型值;人脸识别模式;80%背光亮度;补光灯关闭)
- 连线接口:UART,I2C
- 显示屏:2.0寸IPS,分辨率320*240
- 内置功能:人脸识别,物体追踪,物体识别,巡线追踪,颜色识别,标签识别,物体分类
- 尺寸:52mm*44.5mm
二哈视觉传感器的定位是用于青少年创客的教育,很小巧但精度啥的不是很高,如果真的使用这个做产品,那还是需要下番功夫的。我们可以从板子的官网得到一些开发板的信息以及使用的教程。
DFROBOT官方网站文档支持地址: 小结:总的来说,产品的包装以及外观很不错,官网的教程也很详细,下面我将利用官网提供的文档,做一些小项目。
二、人脸识别测试 首先先查看固件版本。 左边滚轮按键是个编码器,可以左右滚动,也可以向下按,向下按代表确定的意思。传感器开机以后滚轮向右滚,找到常规设置,然后滚轮向下按,进入到设置选项,找到版本号,可以看到,显示的是 0.5.1a版本的固件号,以及是官网最新的固件版本。然后设置语言为中文,方便操作。 如下图所示: 首先先使用二哈进行一个人脸识别的操作,看看识别的速度和准确率怎么样。我们找到两张人脸图片。然后人脸识别的选项中打开人脸识别的设置。把识别多个的选项打开,从而开启对多个人脸的学习。 我们识别的为两张人脸图片: 如下图: 把屏幕中的+号对准屏幕上的图片,然后点击右边的按键,进行学习,学习完毕以后会对学习好的人脸进行标签,如下图,看到学习以后的人脸标记为ID1。 如下图:
左边是一个没有学习的人脸,右边是之前已经学习过的人脸,可以看到学习过的人脸已经有标签了,而没有学习的人脸没有贴上标签,下面我们按下右边按键,进行学习,我们可以看到学习以后的结果。可以看到,人脸1和人脸2是准确识别的,速度也非常快。如下图:
然后我们识别一下没有学习过的人脸,看看结果怎么样。 小结:可以看到,对于没有学习过的人脸,没有对应的标签,可以看到二哈识别的准确性还是很高的。
三、物体识别测试从官网文档可知: 本功能可识别这是什么物体,并追踪。目前仅支持20种物体,分别为:飞机、自行车、鸟、船、瓶子、巴士、汽车、猫、椅子、牛、餐桌、狗、马、摩托车、人、盆栽植物、羊、沙发、火车、电视。 下面我们来测试一下官网提供的固件的准确性。 首先我们学习一下猫和瓶子,看看对于这种物体区别较大的是否能识别。测试图片
首先先对瓶子进行学习, 此时已经显示瓶子的标签号,然后点击继续学习猫, 继续点击右键进行学习,得到下图,然后我们来对学习过的标签进行识别。
可以看到,对于猫的识别还算比较准确,下面识别一下瓶子。 小结:不同的瓶子可能由于特征有略微的不同,所以识别到的结果不是很准确,这个希望官方在后面的固件进行更新,增加识别的准确率。
四、串口指令学习 下面,我们来进行串口测试的一些功能,使用二哈当做上位机进行识别,然后将二哈识别的数据通过串发送给下位机,比如单片机啥的,来执行一些操作。
串口指令文档:HuskyLens通信协议文档(PDF)
如下图所示:
我们通过官方的文档可以知道,二哈内置的比特率是9600bps 8N 1,设备地址为0x11。
从数据手册上可以知道,串口的头帧是以0x55 0xAA开始的,对于二哈来说,由于设备地址固定,也就是说前三位数据是固定的,0x55 0xAA 0x11。下面我们来看下命令帧。
命令帧为0x2C时,用来测试与二哈的连接是否建立成功,
发送:55 AA 11 00 2C 3C
收到:55 AA 11 00 2E 3E
此时说明与二哈串口连接成功。
下面我从给二哈发送指令,查看一下二哈已经学习到的东西。
发送 55 AA 11 00 23 33
收到 55 AA 11 0A 29 00 00 02 00 C3 5A 00 00 00 00 62
然后阅读文档可以发现:
可以看到,55 AA 11 0A 29是协议帧
数据帧为:02 00 C3 5A 00 00 00 00
校验: 62
数据帧02 代表目前二哈保存了两个物体的识别的信息,只使用到了低16位,高16位没有使用,所以显示的00。C3代表当前的低16位的帧号,5A代表当前高16位的帧号。
然后我们在识别物体的过程中发送指令,如下图所示
发送 55 AA 11 00 23 33
收到 55 AA 11 0A 29 01 00 02 00 15 09 00 00 00 00 64
55 AA 11 0A 2A B4 00 73 00 92 00 90 00 02 00 8F
此时多了一帧数据,我们查看数据手册得到:
B4 00 73 00 :代表二哈的识别框所在的位置。
92 00 90 00 :代表识别框的长度与宽度。
02 00 :02代表识别到的物体ID,前面学习到的猫的标签为ID:02,与实际吻合。
8F :8F是最后数据的检验位。
小结:官方的串口通信指令以及文档支持很完善,在实际应用的时候,二哈可以当做上位机,把识别的结果通过串口发送给单片机或者执行机构,从而可以执行一些人脸识别、物体识别、巡线等应用。下面将利用二哈做物体识别,后通过串口将识别的结果发送给单片机,然后单片机在屏幕上显示二哈的识别结果。
五、单片机对二哈上位机的识别结果进行解析
单片机在对二哈的结果进行解析时,主要的流程是:
单片机发送查询指令(发包)——>二哈上位机对单片机回复对应指令的结果——>单片机收包,然后解析协议栈,对协议帧中的关键数据进行识别,识别完以后查表得到对应得识别结果。
其实也就是对上位机信息解析的过程,比较简单,这里就不再详述,最后附上单片机在屏幕显示二哈识别结果的视频。
由于视频超过了附件的大小,所以不能当做附件放在贴子的最后,还有一个就是论坛的贴子编辑器不支持直接插入视频,所以放入视频的链接:
|